From 313f9a036ac2383509eb775554acad201cd9218c Mon Sep 17 00:00:00 2001 From: Tiago Gomes Date: Sat, 31 Mar 2012 23:27:37 +0100 Subject: [PATCH 1/5] yay, my first commit --- packages/CLPBN/clpbn/bp.yap | 164 +- packages/CLPBN/clpbn/bp/BayesNet.cpp | 85 +- packages/CLPBN/clpbn/bp/BayesNet.h | 111 +- packages/CLPBN/clpbn/bp/BayesNode.cpp | 56 +- packages/CLPBN/clpbn/bp/BayesNode.h | 74 +- packages/CLPBN/clpbn/bp/BnBpSolver.cpp | 145 +- packages/CLPBN/clpbn/bp/BnBpSolver.h | 136 +- packages/CLPBN/clpbn/bp/CFactorGraph.cpp | 50 +- packages/CLPBN/clpbn/bp/CFactorGraph.h | 72 +- packages/CLPBN/clpbn/bp/CbpSolver.cpp | 51 +- packages/CLPBN/clpbn/bp/CbpSolver.h | 34 +- packages/CLPBN/clpbn/bp/ConstraintTree.cpp | 258 +- packages/CLPBN/clpbn/bp/ConstraintTree.h | 171 +- packages/CLPBN/clpbn/bp/Distribution.h | 45 - packages/CLPBN/clpbn/bp/ElimGraph.cpp | 2 + packages/CLPBN/clpbn/bp/ElimGraph.h | 50 +- packages/CLPBN/clpbn/bp/Factor.cpp | 415 +- packages/CLPBN/clpbn/bp/Factor.h | 297 +- packages/CLPBN/clpbn/bp/FactorGraph.cpp | 29 +- packages/CLPBN/clpbn/bp/FactorGraph.h | 114 +- packages/CLPBN/clpbn/bp/FgBpSolver.cpp | 118 +- packages/CLPBN/clpbn/bp/FgBpSolver.h | 157 +- packages/CLPBN/clpbn/bp/FoveSolver.cpp | 412 +- packages/CLPBN/clpbn/bp/FoveSolver.h | 85 +- packages/CLPBN/clpbn/bp/GraphicalModel.h | 55 +- packages/CLPBN/clpbn/bp/Histogram.cpp | 34 +- packages/CLPBN/clpbn/bp/Histogram.h | 5 +- packages/CLPBN/clpbn/bp/Horus.h | 73 +- packages/CLPBN/clpbn/bp/HorusCli.cpp | 55 +- packages/CLPBN/clpbn/bp/HorusYap.cpp | 411 +- packages/CLPBN/clpbn/bp/Indexer.h | 27 +- packages/CLPBN/clpbn/bp/LiftedUtils.cpp | 28 +- packages/CLPBN/clpbn/bp/LiftedUtils.h | 73 +- packages/CLPBN/clpbn/bp/Makefile | 236 + packages/CLPBN/clpbn/bp/Makefile.in | 1 - packages/CLPBN/clpbn/bp/Parfactor.cpp | 594 +- packages/CLPBN/clpbn/bp/Parfactor.h | 61 +- packages/CLPBN/clpbn/bp/ParfactorList.cpp | 288 +- packages/CLPBN/clpbn/bp/ParfactorList.h | 91 +- packages/CLPBN/clpbn/bp/ProbFormula.cpp | 22 +- packages/CLPBN/clpbn/bp/ProbFormula.h | 65 +- packages/CLPBN/clpbn/bp/Solver.cpp | 4 +- packages/CLPBN/clpbn/bp/Solver.h | 19 +- packages/CLPBN/clpbn/bp/TODO | 5 + packages/CLPBN/clpbn/bp/Util.cpp | 343 +- packages/CLPBN/clpbn/bp/Util.h | 266 +- packages/CLPBN/clpbn/bp/VarElimSolver.cpp | 14 +- packages/CLPBN/clpbn/bp/VarElimSolver.h | 16 +- packages/CLPBN/clpbn/bp/VarNode.cpp | 10 +- packages/CLPBN/clpbn/bp/VarNode.h | 55 +- .../clpbn/bp/benchmarks/city/bn_bp_tests.sh | 6 +- .../clpbn/bp/benchmarks/city/cbp_tests.sh | 8 +- .../clpbn/bp/benchmarks/city/fg_bp_tests.sh | 6 +- .../clpbn/bp/benchmarks/city/ignore.cbp.log | 124 + .../CLPBN/clpbn/bp/benchmarks/city/town_3.yap | 29 + .../bp/benchmarks/school/ignore.results.log | 230 + .../clpbn/bp/benchmarks/school/results.log | 5 + .../clpbn/bp/benchmarks/school/results2.log | 21 + .../bp/benchmarks/school/results_good.log | 32 + .../bp/benchmarks/school/run_school_tests.sh | 21 +- .../CLPBN/clpbn/bp/examples/allopstest.yap | 18 + packages/CLPBN/clpbn/bp/examples/city_test.fg | 78022 ++++++++++++++++ .../clpbn/bp/examples/comp_workshops.yap | 2 + packages/CLPBN/clpbn/bp/examples/fail.yap | 20 + .../CLPBN/clpbn/bp/examples/findleaks.yap | 17 + .../clpbn/bp/examples/workshop_attrs.yap | 32 + packages/CLPBN/clpbn/fove.yap | 130 +- packages/CLPBN/clpbn/horus.yap | 53 +- 68 files changed, 81842 insertions(+), 2916 deletions(-) delete mode 100644 packages/CLPBN/clpbn/bp/Distribution.h create mode 100644 packages/CLPBN/clpbn/bp/Makefile create mode 100644 packages/CLPBN/clpbn/bp/TODO create mode 100644 packages/CLPBN/clpbn/bp/benchmarks/city/ignore.cbp.log create mode 100644 packages/CLPBN/clpbn/bp/benchmarks/city/town_3.yap create mode 100644 packages/CLPBN/clpbn/bp/benchmarks/school/ignore.results.log create mode 100644 packages/CLPBN/clpbn/bp/benchmarks/school/results.log create mode 100644 packages/CLPBN/clpbn/bp/benchmarks/school/results2.log create mode 100644 packages/CLPBN/clpbn/bp/benchmarks/school/results_good.log create mode 100644 packages/CLPBN/clpbn/bp/examples/allopstest.yap create mode 100644 packages/CLPBN/clpbn/bp/examples/city_test.fg create mode 100644 packages/CLPBN/clpbn/bp/examples/fail.yap create mode 100644 packages/CLPBN/clpbn/bp/examples/findleaks.yap create mode 100644 packages/CLPBN/clpbn/bp/examples/workshop_attrs.yap diff --git a/packages/CLPBN/clpbn/bp.yap b/packages/CLPBN/clpbn/bp.yap index 5d0ba074b..028731006 100644 --- a/packages/CLPBN/clpbn/bp.yap +++ b/packages/CLPBN/clpbn/bp.yap @@ -1,14 +1,13 @@ -/************************************************ +/******************************************************* - Belief Propagation in CLP(BN) + Belief Propagation and Variable Elimination Interface -**************************************************/ +********************************************************/ :- module(clpbn_bp, [bp/3, check_if_bp_done/1, - set_horus_flag/2, init_bp_solver/4, run_bp_solver/3, finalize_bp_solver/1 @@ -24,70 +23,60 @@ :- use_module(library('clpbn/display'), - [clpbn_bind_vals/3]). + [clpbn_bind_vals/3]). :- use_module(library('clpbn/aggregates'), - [check_for_agg_vars/2]). + [check_for_agg_vars/2]). :- use_module(library(atts)). -:- use_module(library(lists)). -:- use_module(library(charsio)). -:- use_module(horus). + +:- use_module(library(charsio), + [term_to_atom/2]). + + +:- use_module(horus, + [create_ground_network/2, + set_bayes_net_params/2, + run_ground_solver/3, + set_extra_vars_info/2, + free_bayesian_network/1 + ]). + :- attribute id/1. -%:- set_horus_flag(inf_alg, ve). -:- set_horus_flag(inf_alg, bn_bp). -%:- set_horus_flag(inf_alg, fg_bp). -%: -set_horus_flag(inf_alg, cbp). - -:- set_horus_flag(schedule, seq_fixed). -%:- set_horus_flag(schedule, seq_random). -%:- set_horus_flag(schedule, parallel). -%:- set_horus_flag(schedule, max_residual). - -:- set_horus_flag(accuracy, 0.0001). - -:- set_horus_flag(max_iter, 1000). - -:- set_horus_flag(use_logarithms, false). -%:- set_horus_flag(use_logarithms, true). - -:- set_horus_flag(order_factor_variables, false). -%:- set_horus_flag(order_factor_variables, true). - - - bp([[]],_,_) :- !. bp([QueryVars], AllVars, Output) :- - init_bp_solver(_, AllVars, _, Network), - run_bp_solver([QueryVars], LPs, Network), - finalize_bp_solver(Network), - clpbn_bind_vals([QueryVars], LPs, Output). + init_bp_solver(_, AllVars, _, Network), + run_bp_solver([QueryVars], LPs, Network), + finalize_bp_solver(Network), + clpbn_bind_vals([QueryVars], LPs, Output). init_bp_solver(_, AllVars0, _, bp(BayesNet, DistIds)) :- - check_for_agg_vars(AllVars0, AllVars), - writeln('clpbn_vars:'), - print_clpbn_vars(AllVars), - assign_ids(AllVars, 0), - get_vars_info(AllVars, VarsInfo, DistIds0), - sort(DistIds0, DistIds), - create_ground_network(VarsInfo, BayesNet). - %get_extra_vars_info(AllVars, ExtraVarsInfo), - %set_extra_vars_info(BayesNet, ExtraVarsInfo). + %writeln('init_bp_solver'), + check_for_agg_vars(AllVars0, AllVars), + %writeln('clpbn_vars:'), print_clpbn_vars(AllVars), + assign_ids(AllVars, 0), + get_vars_info(AllVars, VarsInfo, DistIds0), + sort(DistIds0, DistIds), + create_ground_network(VarsInfo, BayesNet), + %get_extra_vars_info(AllVars, ExtraVarsInfo), + %set_extra_vars_info(BayesNet, ExtraVarsInfo), + %writeln(extravarsinfo:ExtraVarsInfo), + true. run_bp_solver(QueryVars, Solutions, bp(Network, DistIds)) :- - get_dists_parameters(DistIds, DistsParams), + %writeln('-> run_bp_solver'), + get_dists_parameters(DistIds, DistsParams), set_bayes_net_params(Network, DistsParams), - flatten_1_element_sublists(QueryVars, QueryVars1), - vars_to_ids(QueryVars1, QueryVarsIds), - run_other_solvers(Network, QueryVarsIds, Solutions). + vars_to_ids(QueryVars, QueryVarsIds), + run_ground_solver(Network, QueryVarsIds, Solutions). finalize_bp_solver(bp(Network, _)) :- @@ -96,82 +85,75 @@ finalize_bp_solver(bp(Network, _)) :- assign_ids([], _). assign_ids([V|Vs], Count) :- - put_atts(V, [id(Count)]), - Count1 is Count + 1, - assign_ids(Vs, Count1). + put_atts(V, [id(Count)]), + Count1 is Count + 1, + assign_ids(Vs, Count1). get_vars_info([], [], []). get_vars_info(V.Vs, - var(VarId,DS,Ev,PIds,DistId).VarsInfo, - DistId.DistIds) :- - clpbn:get_atts(V, [dist(DistId, Parents)]), !, - get_atts(V, [id(VarId)]), - get_dist_domain_size(DistId, DS), - get_evidence(V, Ev), - vars_to_ids(Parents, PIds), - get_vars_info(Vs, VarsInfo, DistIds). + var(VarId,DS,Ev,PIds,DistId).VarsInfo, + DistId.DistIds) :- + clpbn:get_atts(V, [dist(DistId, Parents)]), !, + get_atts(V, [id(VarId)]), + get_dist_domain_size(DistId, DS), + get_evidence(V, Ev), + vars_to_ids(Parents, PIds), + get_vars_info(Vs, VarsInfo, DistIds). get_evidence(V, Ev) :- - clpbn:get_atts(V, [evidence(Ev)]), !. + clpbn:get_atts(V, [evidence(Ev)]), !. get_evidence(_V, -1). % no evidence !!! vars_to_ids([], []). vars_to_ids([L|Vars], [LIds|Ids]) :- - is_list(L), !, - vars_to_ids(L, LIds), - vars_to_ids(Vars, Ids). + is_list(L), !, + vars_to_ids(L, LIds), + vars_to_ids(Vars, Ids). vars_to_ids([V|Vars], [VarId|Ids]) :- - get_atts(V, [id(VarId)]), - vars_to_ids(Vars, Ids). + get_atts(V, [id(VarId)]), + vars_to_ids(Vars, Ids). get_extra_vars_info([], []). get_extra_vars_info([V|Vs], [v(VarId, Label, Domain)|VarsInfo]) :- - get_atts(V, [id(VarId)]), !, - clpbn:get_atts(V, [key(Key),dist(DistId, _)]), - term_to_atom(Key, Label), - get_dist_domain(DistId, Domain0), - numbers_to_atoms(Domain0, Domain), - get_extra_vars_info(Vs, VarsInfo). + get_atts(V, [id(VarId)]), !, + clpbn:get_atts(V, [key(Key), dist(DistId, _)]), + term_to_atom(Key, Label), + get_dist_domain(DistId, Domain0), + numbers_to_atoms(Domain0, Domain), + get_extra_vars_info(Vs, VarsInfo). get_extra_vars_info([_|Vs], VarsInfo) :- - get_extra_vars_info(Vs, VarsInfo). + get_extra_vars_info(Vs, VarsInfo). get_dists_parameters([],[]). get_dists_parameters([Id|Ids], [dist(Id, Params)|DistsInfo]) :- - get_dist_params(Id, Params), - get_dists_parameters(Ids, DistsInfo). + get_dist_params(Id, Params), + get_dists_parameters(Ids, DistsInfo). numbers_to_atoms([], []). numbers_to_atoms([Atom|L0], [Atom|L]) :- - atom(Atom), !, - numbers_to_atoms(L0, L). + atom(Atom), !, + numbers_to_atoms(L0, L). numbers_to_atoms([Number|L0], [Atom|L]) :- - number_atom(Number, Atom), - numbers_to_atoms(L0, L). - - -flatten_1_element_sublists([],[]). -flatten_1_element_sublists([[H|[]]|T],[H|R]) :- !, - flatten_1_element_sublists(T,R). -flatten_1_element_sublists([H|T],[H|R]) :- - flatten_1_element_sublists(T,R). + number_atom(Number, Atom), + numbers_to_atoms(L0, L). print_clpbn_vars(Var.AllVars) :- - clpbn:get_atts(Var, [key(Key),dist(DistId,Parents)]), - parents_to_keys(Parents, ParentKeys), - writeln(Var:Key:ParentKeys:DistId), - print_clpbn_vars(AllVars). + clpbn:get_atts(Var, [key(Key),dist(DistId,Parents)]), + parents_to_keys(Parents, ParentKeys), + writeln(Var:Key:ParentKeys:DistId), + print_clpbn_vars(AllVars). print_clpbn_vars([]). parents_to_keys([], []). parents_to_keys(Var.Parents, Key.Keys) :- - clpbn:get_atts(Var, [key(Key)]), - parents_to_keys(Parents, Keys). + clpbn:get_atts(Var, [key(Key)]), + parents_to_keys(Parents, Keys). diff --git a/packages/CLPBN/clpbn/bp/BayesNet.cpp b/packages/CLPBN/clpbn/bp/BayesNet.cpp index edffae620..3275fa387 100644 --- a/packages/CLPBN/clpbn/bp/BayesNet.cpp +++ b/packages/CLPBN/clpbn/bp/BayesNet.cpp @@ -88,15 +88,22 @@ BayesNet::readFromBifFormat (const char* fileName) abort(); } params = reorderParameters (params, node->nrStates()); - Distribution* dist = new Distribution (params); - node->setDistribution (dist); - addDistribution (dist); + if (Globals::logDomain) { + Util::toLog (params); + } + node->setParams (params); } - setIndexes(); - if (Globals::logDomain) { - distributionsToLogs(); - } +} + + + +BayesNode* +BayesNet::addNode (BayesNode* n) +{ + varMap_.insert (make_pair (n->varId(), nodes_.size())); + nodes_.push_back (n); + return nodes_.back(); } @@ -114,15 +121,6 @@ BayesNet::addNode (string label, const States& states) -BayesNode* -BayesNet::addNode (VarId vid, unsigned dsize, int evidence, Distribution* dist) -{ - varMap_.insert (make_pair (vid, nodes_.size())); - nodes_.push_back (new BayesNode (vid, dsize, evidence, dist)); - return nodes_.back(); -} - - BayesNode* BayesNet::getBayesNode (VarId vid) const @@ -176,29 +174,6 @@ BayesNet::getVariableNodes (void) const -void -BayesNet::addDistribution (Distribution* dist) -{ - dists_.push_back (dist); -} - - - -Distribution* -BayesNet::getDistribution (unsigned distId) const -{ - Distribution* dist = 0; - for (unsigned i = 0; i < dists_.size(); i++) { - if (dists_[i]->id == (int) distId) { - dist = dists_[i]; - break; - } - } - return dist; -} - - - const BnNodeSet& BayesNet::getBayesNodes (void) const { @@ -299,7 +274,7 @@ BayesNet::getMinimalRequesiteNetwork (const VarIds& queryVarIds) const /* cout << "\t\ttop\tbottom" << endl; cout << "variable\t\tmarked\tmarked\tvisited\tobserved" << endl; - cout << "----------------------------------------------------------" ; + Util::printDashedLine(); cout << endl; for (unsigned i = 0; i < states.size(); i++) { cout << nodes_[i]->label() << ":\t\t" ; @@ -350,10 +325,8 @@ BayesNet::constructGraph (BayesNet* bn, } } assert (bn->getBayesNode (nodes_[i]->varId()) == 0); - BayesNode* mrnNode = bn->addNode (nodes_[i]->varId(), - nodes_[i]->nrStates(), - nodes_[i]->getEvidence(), - nodes_[i]->getDistribution()); + BayesNode* mrnNode = new BayesNode (nodes_[i]); + bn->addNode (mrnNode); mrnNodes.push_back (mrnNode); } } @@ -388,26 +361,6 @@ BayesNet::setIndexes (void) -void -BayesNet::distributionsToLogs (void) -{ - for (unsigned i = 0; i < dists_.size(); i++) { - Util::toLog (dists_[i]->params); - } -} - - - -void -BayesNet::freeDistributions (void) -{ - for (unsigned i = 0; i < dists_.size(); i++) { - delete dists_[i]; - } -} - - - void BayesNet::printGraphicalModel (void) const { @@ -504,8 +457,8 @@ BayesNet::exportToBifFormat (const char* fileName) const out << "\t" << parents[j]->label(); out << "" << endl; } - Params params = revertParameterReorder (nodes_[i]->getParameters(), - nodes_[i]->nrStates()); + Params params = revertParameterReorder ( + nodes_[i]->params(), nodes_[i]->nrStates()); out << "\t" ; for (unsigned j = 0; j < params.size(); j++) { out << " " << params[j]; diff --git a/packages/CLPBN/clpbn/bp/BayesNet.h b/packages/CLPBN/clpbn/bp/BayesNet.h index 8615aefa7..ca83a425e 100644 --- a/packages/CLPBN/clpbn/bp/BayesNet.h +++ b/packages/CLPBN/clpbn/bp/BayesNet.h @@ -13,16 +13,11 @@ using namespace std; -class Distribution; struct ScheduleInfo { - ScheduleInfo (BayesNode* n, bool vfp, bool vfc) - { - node = n; - visitedFromParent = vfp; - visitedFromChild = vfc; - } + ScheduleInfo (BayesNode* n, bool vfp, bool vfc) : + node(n), visitedFromParent(vfp), visitedFromChild(vfc) { } BayesNode* node; bool visitedFromParent; bool visitedFromChild; @@ -31,70 +26,84 @@ struct ScheduleInfo struct StateInfo { - StateInfo (void) - { - visited = true; - markedOnTop = false; - markedOnBottom = false; - } + StateInfo (void) : visited(false), markedOnTop(false), + markedOnBottom(false) { } bool visited; bool markedOnTop; bool markedOnBottom; }; -typedef vector DistSet; + typedef queue > Scheduling; class BayesNet : public GraphicalModel { public: - BayesNet (void) {}; + BayesNet (void) { }; + ~BayesNet (void); - void readFromBifFormat (const char*); - BayesNode* addNode (string, const States&); -// BayesNode* addNode (VarId, unsigned, int, BnNodeSet&, Distribution*); - BayesNode* addNode (VarId, unsigned, int, Distribution*); - BayesNode* getBayesNode (VarId) const; - BayesNode* getBayesNode (string) const; - VarNode* getVariableNode (VarId) const; - VarNodes getVariableNodes (void) const; - void addDistribution (Distribution*); - Distribution* getDistribution (unsigned) const; - const BnNodeSet& getBayesNodes (void) const; - unsigned nrNodes (void) const; - BnNodeSet getRootNodes (void) const; - BnNodeSet getLeafNodes (void) const; - BayesNet* getMinimalRequesiteNetwork (VarId) const; - BayesNet* getMinimalRequesiteNetwork (const VarIds&) const; - void constructGraph ( - BayesNet*, const vector&) const; - bool isPolyTree (void) const; - void setIndexes (void); - void distributionsToLogs (void); - void freeDistributions (void); - void printGraphicalModel (void) const; - void exportToGraphViz (const char*, bool = true, - const VarIds& = VarIds()) const; - void exportToBifFormat (const char*) const; + void readFromBifFormat (const char*); + + BayesNode* addNode (BayesNode*); + + BayesNode* addNode (string, const States&); + + BayesNode* getBayesNode (VarId) const; + + BayesNode* getBayesNode (string) const; + + VarNode* getVariableNode (VarId) const; + + VarNodes getVariableNodes (void) const; + + const BnNodeSet& getBayesNodes (void) const; + + unsigned nrNodes (void) const; + + BnNodeSet getRootNodes (void) const; + + BnNodeSet getLeafNodes (void) const; + + BayesNet* getMinimalRequesiteNetwork (VarId) const; + + BayesNet* getMinimalRequesiteNetwork (const VarIds&) const; + + void constructGraph (BayesNet*, const vector&) const; + + bool isPolyTree (void) const; + + void setIndexes (void); + + void printGraphicalModel (void) const; + + void exportToGraphViz (const char*, bool = true, + const VarIds& = VarIds()) const; + + void exportToBifFormat (const char*) const; private: DISALLOW_COPY_AND_ASSIGN (BayesNet); - bool containsUndirectedCycle (void) const; - bool containsUndirectedCycle (int, int, vector&)const; - vector getAdjacentNodes (int) const; - Params reorderParameters (const Params&, unsigned) const; - Params revertParameterReorder (const Params&, unsigned) const; - void scheduleParents (const BayesNode*, Scheduling&) const; - void scheduleChilds (const BayesNode*, Scheduling&) const; + bool containsUndirectedCycle (void) const; - BnNodeSet nodes_; - DistSet dists_; + bool containsUndirectedCycle (int, int, vector&)const; + + vector getAdjacentNodes (int) const; + + Params reorderParameters (const Params&, unsigned) const; + + Params revertParameterReorder (const Params&, unsigned) const; + + void scheduleParents (const BayesNode*, Scheduling&) const; + + void scheduleChilds (const BayesNode*, Scheduling&) const; + + BnNodeSet nodes_; typedef unordered_map IndexMap; - IndexMap varMap_; + IndexMap varMap_; }; diff --git a/packages/CLPBN/clpbn/bp/BayesNode.cpp b/packages/CLPBN/clpbn/bp/BayesNode.cpp index f3af27cdf..2f63f23f2 100644 --- a/packages/CLPBN/clpbn/bp/BayesNode.cpp +++ b/packages/CLPBN/clpbn/bp/BayesNode.cpp @@ -8,29 +8,10 @@ #include "BayesNode.h" -BayesNode::BayesNode (VarId vid, - unsigned dsize, - int evidence, - Distribution* dist) - : VarNode (vid, dsize, evidence) +void +BayesNode::setParams (const Params& params) { - dist_ = dist; -} - - - -BayesNode::BayesNode (VarId vid, - unsigned dsize, - int evidence, - const BnNodeSet& parents, - Distribution* dist) - : VarNode (vid, dsize, evidence) -{ - parents_ = parents; - dist_ = dist; - for (unsigned int i = 0; i < parents.size(); i++) { - parents[i]->addChild (this); - } + params_ = params; } @@ -54,31 +35,6 @@ BayesNode::addChild (BayesNode* node) -void -BayesNode::setDistribution (Distribution* dist) -{ - assert (dist); - dist_ = dist; -} - - - -Distribution* -BayesNode::getDistribution (void) -{ - return dist_; -} - - - -const Params& -BayesNode::getParameters (void) -{ - return dist_->params; -} - - - Params BayesNode::getRow (int rowIndex) const { @@ -86,7 +42,7 @@ BayesNode::getRow (int rowIndex) const int offset = rowSize * rowIndex; Params row (rowSize); for (int i = 0; i < rowSize; i++) { - row[i] = dist_->params[offset + i] ; + row[i] = params_[offset + i] ; } return row; } @@ -119,13 +75,13 @@ BayesNode::hasNeighbors (void) const int BayesNode::getCptSize (void) { - return dist_->params.size(); + return params_.size(); } int -BayesNode::getIndexOfParent (const BayesNode* parent) const +BayesNode::indexOfParent (const BayesNode* parent) const { for (unsigned int i = 0; i < parents_.size(); i++) { if (parents_[i] == parent) { diff --git a/packages/CLPBN/clpbn/bp/BayesNode.h b/packages/CLPBN/clpbn/bp/BayesNode.h index 9a39a1402..2c4a9ae4a 100644 --- a/packages/CLPBN/clpbn/bp/BayesNode.h +++ b/packages/CLPBN/clpbn/bp/BayesNode.h @@ -4,7 +4,6 @@ #include #include "VarNode.h" -#include "Distribution.h" #include "Horus.h" using namespace std; @@ -13,49 +12,70 @@ using namespace std; class BayesNode : public VarNode { public: - BayesNode (const VarNode& v) : VarNode (v) {} - BayesNode (VarId, unsigned, int, Distribution*); - BayesNode (VarId, unsigned, int, const BnNodeSet&, Distribution*); - void setParents (const BnNodeSet&); - void addChild (BayesNode*); - void setDistribution (Distribution*); - Distribution* getDistribution (void); - const Params& getParameters (void); - Params getRow (int) const; - bool isRoot (void); - bool isLeaf (void); - bool hasNeighbors (void) const; - int getCptSize (void); - int getIndexOfParent (const BayesNode*) const; - string cptEntryToString (int, const vector&) const; + BayesNode (const VarNode& v) : VarNode (v) { } - const BnNodeSet& getParents (void) const { return parents_; } - const BnNodeSet& getChilds (void) const { return childs_; } + BayesNode (const BayesNode* n) : + VarNode (n->varId(), n->nrStates(), n->getEvidence()), + params_(n->params()), distId_(n->distId()) { } + + BayesNode (VarId vid, unsigned nrStates, int ev, + const Params& ps, unsigned id) + : VarNode (vid, nrStates, ev) , params_(ps), distId_(id) { } + + const BnNodeSet& getParents (void) const { return parents_; } + + const BnNodeSet& getChilds (void) const { return childs_; } + + const Params& params (void) const { return params_; } + + unsigned distId (void) const { return distId_; } unsigned getRowSize (void) const { - return dist_->params.size() / nrStates(); + return params_.size() / nrStates(); } double getProbability (int row, unsigned col) { int idx = (row * getRowSize()) + col; - return dist_->params[idx]; + return params_[idx]; } + void setParams (const Params& params); + + void setParents (const BnNodeSet&); + + void addChild (BayesNode*); + + const Params& getParameters (void); + + Params getRow (int) const; + + bool isRoot (void); + + bool isLeaf (void); + + bool hasNeighbors (void) const; + + int getCptSize (void); + + int indexOfParent (const BayesNode*) const; + + string cptEntryToString (int, const vector&) const; + + friend ostream& operator << (ostream&, const BayesNode&); + private: DISALLOW_COPY_AND_ASSIGN (BayesNode); - States getDomainHeaders (void) const; - friend ostream& operator << (ostream&, const BayesNode&); + States getDomainHeaders (void) const; - BnNodeSet parents_; - BnNodeSet childs_; - Distribution* dist_; + BnNodeSet parents_; + BnNodeSet childs_; + Params params_; + unsigned distId_; }; -ostream& operator << (ostream&, const BayesNode&); - #endif // HORUS_BAYESNODE_H diff --git a/packages/CLPBN/clpbn/bp/BnBpSolver.cpp b/packages/CLPBN/clpbn/bp/BnBpSolver.cpp index a42ff72a0..c04541e40 100644 --- a/packages/CLPBN/clpbn/bp/BnBpSolver.cpp +++ b/packages/CLPBN/clpbn/bp/BnBpSolver.cpp @@ -34,12 +34,12 @@ void BnBpSolver::runSolver (void) { clock_t start; - if (COLLECT_STATISTICS) { + if (Constants::COLLECT_STATS) { start = clock(); } initializeSolver(); runLoopySolver(); - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << endl; if (nIters_ < BpOptions::maxIter) { cout << "Belief propagation converged in " ; @@ -51,18 +51,13 @@ BnBpSolver::runSolver (void) } unsigned size = bayesNet_->nrNodes(); - if (COLLECT_STATISTICS) { + if (Constants::COLLECT_STATS) { unsigned nIters = 0; bool loopy = bayesNet_->isPolyTree() == false; if (loopy) nIters = nIters_; double time = (double (clock() - start)) / CLOCKS_PER_SEC; Statistics::updateStatistics (size, loopy, nIters, time); } - if (EXPORT_TO_GRAPHVIZ && size > EXPORT_MINIMAL_SIZE) { - stringstream ss; - ss << Statistics::getSolvedNetworksCounting() << "." << size << ".dot" ; - bayesNet_->exportToGraphViz (ss.str().c_str()); - } } @@ -80,7 +75,7 @@ BnBpSolver::getPosterioriOf (VarId vid) Params BnBpSolver::getJointDistributionOf (const VarIds& jointVarIds) { - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << "calculating joint distribution on: " ; for (unsigned i = 0; i < jointVarIds.size(); i++) { VarNode* var = bayesNet_->getBayesNode (jointVarIds[i]); @@ -112,7 +107,7 @@ BnBpSolver::initializeSolver (void) BnNodeSet roots = bayesNet_->getRootNodes(); for (unsigned i = 0; i < roots.size(); i++) { - const Params& params = roots[i]->getParameters(); + const Params& params = roots[i]->params(); Params& piVals = ninf(roots[i])->getPiValues(); for (unsigned ri = 0; ri < roots[i]->nrStates(); ri++) { piVals[ri] = params[ri]; @@ -143,11 +138,11 @@ BnBpSolver::initializeSolver (void) Params& piVals = ninf(nodes[i])->getPiValues(); Params& ldVals = ninf(nodes[i])->getLambdaValues(); for (unsigned xi = 0; xi < nodes[i]->nrStates(); xi++) { - piVals[xi] = Util::noEvidence(); - ldVals[xi] = Util::noEvidence(); + piVals[xi] = LogAware::noEvidence(); + ldVals[xi] = LogAware::noEvidence(); } - piVals[nodes[i]->getEvidence()] = Util::withEvidence(); - ldVals[nodes[i]->getEvidence()] = Util::withEvidence(); + piVals[nodes[i]->getEvidence()] = LogAware::withEvidence(); + ldVals[nodes[i]->getEvidence()] = LogAware::withEvidence(); } } } @@ -161,13 +156,8 @@ BnBpSolver::runLoopySolver() while (!converged() && nIters_ < BpOptions::maxIter) { nIters_++; - if (DL >= 2) { - cout << "****************************************" ; - cout << "****************************************" ; - cout << endl; - cout << " Iteration " << nIters_ << endl; - cout << "****************************************" ; - cout << "****************************************" ; + if (Constants::DEBUG >= 2) { + Util::printHeader ("Iteration " + nIters_); cout << endl; } @@ -199,7 +189,7 @@ BnBpSolver::runLoopySolver() break; } - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << endl; } } @@ -228,7 +218,7 @@ BnBpSolver::converged (void) const } else { for (unsigned i = 0; i < links_.size(); i++) { double residual = links_[i]->getResidual(); - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << links_[i]->toString() + " residual change = " ; cout << residual << endl; } @@ -256,7 +246,7 @@ BnBpSolver::maxResidualSchedule (void) } for (unsigned c = 0; c < sortedOrder_.size(); c++) { - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << "current residuals:" << endl; for (SortedOrder::iterator it = sortedOrder_.begin(); it != sortedOrder_.end(); it ++) { @@ -300,9 +290,8 @@ BnBpSolver::maxResidualSchedule (void) } } - if (DL >= 2) { - cout << "----------------------------------------" ; - cout << "----------------------------------------" << endl; + if (Constants::DEBUG >= 2) { + Util::printDashedLine(); } } } @@ -313,7 +302,7 @@ void BnBpSolver::updatePiValues (BayesNode* x) { // π(Xi) - if (DL >= 3) { + if (Constants::DEBUG >= 3) { cout << "updating " << PI_SYMBOL << " values for " << x->label() << endl; } Params& piValues = ninf(x)->getPiValues(); @@ -329,11 +318,11 @@ BnBpSolver::updatePiValues (BayesNode* x) Params messageProducts (indexer.size()); for (unsigned k = 0; k < indexer.size(); k++) { - if (DL >= 5) { + if (Constants::DEBUG >= 5) { calcs1 = new stringstream; calcs2 = new stringstream; } - double messageProduct = Util::multIdenty(); + double messageProduct = LogAware::multIdenty(); if (Globals::logDomain) { for (unsigned i = 0; i < parentLinks.size(); i++) { messageProduct += parentLinks[i]->getMessage()[indexer[i]]; @@ -341,7 +330,7 @@ BnBpSolver::updatePiValues (BayesNode* x) } else { for (unsigned i = 0; i < parentLinks.size(); i++) { messageProduct *= parentLinks[i]->getMessage()[indexer[i]]; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { if (i != 0) *calcs1 << " + " ; if (i != 0) *calcs2 << " + " ; *calcs1 << parentLinks[i]->toString (indexer[i]); @@ -350,7 +339,7 @@ BnBpSolver::updatePiValues (BayesNode* x) } } messageProducts[k] = messageProduct; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " mp" << k; cout << " = " << (*calcs1).str(); if (parentLinks.size() == 1) { @@ -366,27 +355,27 @@ BnBpSolver::updatePiValues (BayesNode* x) } for (unsigned xi = 0; xi < x->nrStates(); xi++) { - double sum = Util::addIdenty(); - if (DL >= 5) { + double sum = LogAware::addIdenty(); + if (Constants::DEBUG >= 5) { calcs1 = new stringstream; calcs2 = new stringstream; } indexer.reset(); if (Globals::logDomain) { for (unsigned k = 0; k < indexer.size(); k++) { - Util::logSum (sum, - x->getProbability(xi, indexer.linearIndex()) + messageProducts[k]); + sum = Util::logSum (sum, + x->getProbability(xi, indexer) + messageProducts[k]); ++ indexer; } } else { for (unsigned k = 0; k < indexer.size(); k++) { - sum += x->getProbability (xi, indexer.linearIndex()) * messageProducts[k]; - if (DL >= 5) { + sum += x->getProbability (xi, indexer) * messageProducts[k]; + if (Constants::DEBUG >= 5) { if (k != 0) *calcs1 << " + " ; if (k != 0) *calcs2 << " + " ; *calcs1 << x->cptEntryToString (xi, indexer.indices()); *calcs1 << ".mp" << k; - *calcs2 << Util::fl (x->getProbability (xi, indexer.linearIndex())); + *calcs2 << LogAware::fl (x->getProbability (xi, indexer)); *calcs2 << "*" << messageProducts[k]; } ++ indexer; @@ -394,7 +383,7 @@ BnBpSolver::updatePiValues (BayesNode* x) } piValues[xi] = sum; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " " << PI_SYMBOL << "(" << x->label() << ")" ; cout << "[" << x->states()[xi] << "]" ; cout << " = " << (*calcs1).str(); @@ -412,7 +401,7 @@ void BnBpSolver::updateLambdaValues (BayesNode* x) { // λ(Xi) - if (DL >= 3) { + if (Constants::DEBUG >= 3) { cout << "updating " << LD_SYMBOL << " values for " << x->label() << endl; } Params& lambdaValues = ninf(x)->getLambdaValues(); @@ -421,11 +410,11 @@ BnBpSolver::updateLambdaValues (BayesNode* x) stringstream* calcs2 = 0; for (unsigned xi = 0; xi < x->nrStates(); xi++) { - if (DL >= 5) { + if (Constants::DEBUG >= 5) { calcs1 = new stringstream; calcs2 = new stringstream; } - double product = Util::multIdenty(); + double product = LogAware::multIdenty(); if (Globals::logDomain) { for (unsigned i = 0; i < childLinks.size(); i++) { product += childLinks[i]->getMessage()[xi]; @@ -433,7 +422,7 @@ BnBpSolver::updateLambdaValues (BayesNode* x) } else { for (unsigned i = 0; i < childLinks.size(); i++) { product *= childLinks[i]->getMessage()[xi]; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { if (i != 0) *calcs1 << "." ; if (i != 0) *calcs2 << "*" ; *calcs1 << childLinks[i]->toString (xi); @@ -442,7 +431,7 @@ BnBpSolver::updateLambdaValues (BayesNode* x) } } lambdaValues[xi] = product; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " " << LD_SYMBOL << "(" << x->label() << ")" ; cout << "[" << x->states()[xi] << "]" ; cout << " = " << (*calcs1).str(); @@ -474,7 +463,7 @@ BnBpSolver::calculatePiMessage (BpLink* link) const Params& zPiValues = ninf(z)->getPiValues(); for (unsigned zi = 0; zi < z->nrStates(); zi++) { double product = zPiValues[zi]; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { calcs1 = new stringstream; calcs2 = new stringstream; *calcs1 << PI_SYMBOL << "(" << z->label() << ")"; @@ -491,7 +480,7 @@ BnBpSolver::calculatePiMessage (BpLink* link) for (unsigned i = 0; i < zChildLinks.size(); i++) { if (zChildLinks[i]->getSource() != x) { product *= zChildLinks[i]->getMessage()[zi]; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { *calcs1 << "." << zChildLinks[i]->toString (zi); *calcs2 << " * " << zChildLinks[i]->getMessage()[zi]; } @@ -499,7 +488,7 @@ BnBpSolver::calculatePiMessage (BpLink* link) } } zxPiNextMessage[zi] = product; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " " << link->toString(); cout << "[" << z->states()[zi] << "]" ; cout << " = " << (*calcs1).str(); @@ -513,7 +502,7 @@ BnBpSolver::calculatePiMessage (BpLink* link) delete calcs2; } } - Util::normalize (zxPiNextMessage); + LogAware::normalize (zxPiNextMessage); } @@ -527,10 +516,10 @@ BnBpSolver::calculateLambdaMessage (BpLink* link) if (x->hasEvidence()) { return; } - Params& yxLambdaNextMessage = link->getNextMessage(); - const BpLinkSet& yParentLinks = ninf(y)->getIncomingParentLinks(); - const Params& yLambdaValues = ninf(y)->getLambdaValues(); - int parentIndex = y->getIndexOfParent (x); + Params& yxLambdaNextMessage = link->getNextMessage(); + const BpLinkSet& yParentLinks = ninf(y)->getIncomingParentLinks(); + const Params& yLambdaValues = ninf(y)->getLambdaValues(); + int parentIndex = y->indexOfParent (x); stringstream* calcs1 = 0; stringstream* calcs2 = 0; @@ -548,11 +537,11 @@ BnBpSolver::calculateLambdaMessage (BpLink* link) while (indexer[parentIndex] != 0) { ++ indexer; } - if (DL >= 5) { + if (Constants::DEBUG >= 5) { calcs1 = new stringstream; calcs2 = new stringstream; } - double messageProduct = Util::multIdenty(); + double messageProduct = LogAware::multIdenty(); if (Globals::logDomain) { for (unsigned i = 0; i < yParentLinks.size(); i++) { if (yParentLinks[i]->getSource() != x) { @@ -562,9 +551,9 @@ BnBpSolver::calculateLambdaMessage (BpLink* link) } else { for (unsigned i = 0; i < yParentLinks.size(); i++) { if (yParentLinks[i]->getSource() != x) { - if (DL >= 5) { - if (messageProduct != Util::multIdenty()) *calcs1 << "*" ; - if (messageProduct != Util::multIdenty()) *calcs2 << "*" ; + if (Constants::DEBUG >= 5) { + if (messageProduct != LogAware::multIdenty()) *calcs1 << "*" ; + if (messageProduct != LogAware::multIdenty()) *calcs2 << "*" ; *calcs1 << yParentLinks[i]->toString (indexer[i]); *calcs2 << yParentLinks[i]->getMessage()[indexer[i]]; } @@ -574,7 +563,7 @@ BnBpSolver::calculateLambdaMessage (BpLink* link) } messageProducts[k] = messageProduct; ++ indexer; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " mp" << k; cout << " = " << (*calcs1).str(); if (yParentLinks.size() == 1) { @@ -591,55 +580,54 @@ BnBpSolver::calculateLambdaMessage (BpLink* link) } for (unsigned xi = 0; xi < x->nrStates(); xi++) { - if (DL >= 5) { + if (Constants::DEBUG >= 5) { calcs1 = new stringstream; calcs2 = new stringstream; } - double outerSum = Util::addIdenty(); + double outerSum = LogAware::addIdenty(); for (unsigned yi = 0; yi < y->nrStates(); yi++) { - if (DL >= 5) { + if (Constants::DEBUG >= 5) { (yi != 0) ? *calcs1 << " + {" : *calcs1 << "{" ; (yi != 0) ? *calcs2 << " + {" : *calcs2 << "{" ; } - double innerSum = Util::addIdenty(); + double innerSum = LogAware::addIdenty(); indexer.reset(); if (Globals::logDomain) { for (unsigned k = 0; k < N; k++) { while (indexer[parentIndex] != xi) { ++ indexer; } - Util::logSum (innerSum, y->getProbability ( - yi, indexer.linearIndex()) + messageProducts[k]); + innerSum = Util::logSum (innerSum, + y->getProbability (yi, indexer) + messageProducts[k]); ++ indexer; } - Util::logSum (outerSum, innerSum + yLambdaValues[yi]); + outerSum = Util::logSum (outerSum, innerSum + yLambdaValues[yi]); } else { for (unsigned k = 0; k < N; k++) { while (indexer[parentIndex] != xi) { ++ indexer; } - if (DL >= 5) { + if (Constants::DEBUG >= 5) { if (k != 0) *calcs1 << " + " ; if (k != 0) *calcs2 << " + " ; *calcs1 << y->cptEntryToString (yi, indexer.indices()); *calcs1 << ".mp" << k; - *calcs2 << y->getProbability (yi, indexer.linearIndex()); + *calcs2 << y->getProbability (yi, indexer); *calcs2 << "*" << messageProducts[k]; } - innerSum += y->getProbability ( - yi, indexer.linearIndex()) * messageProducts[k]; + innerSum += y->getProbability (yi, indexer) * messageProducts[k]; ++ indexer; } outerSum += innerSum * yLambdaValues[yi]; } - if (DL >= 5) { + if (Constants::DEBUG >= 5) { *calcs1 << "}." << LD_SYMBOL << "(" << y->label() << ")" ; *calcs1 << "[" << y->states()[yi] << "]"; *calcs2 << "}*" << yLambdaValues[yi]; } } yxLambdaNextMessage[xi] = outerSum; - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " " << link->toString(); cout << "[" << x->states()[xi] << "]" ; cout << " = " << (*calcs1).str(); @@ -649,7 +637,7 @@ BnBpSolver::calculateLambdaMessage (BpLink* link) delete calcs2; } } - Util::normalize (yxLambdaNextMessage); + LogAware::normalize (yxLambdaNextMessage); } @@ -674,7 +662,7 @@ BnBpSolver::getJointByConditioning (const VarIds& jointVarIds) const for (unsigned i = 1; i < jointVarIds.size(); i++) { assert (jointVars[i]->hasEvidence() == false); VarIds reqVars = {jointVarIds[i]}; - reqVars.insert (reqVars.end(), observedVids.begin(), observedVids.end()); + Util::addToVector (reqVars, observedVids); mrn = bayesNet_->getMinimalRequesiteNetwork (reqVars); Params newBeliefs; VarNodes observedVars; @@ -720,8 +708,7 @@ BnBpSolver::printPiLambdaValues (const BayesNode* var) const cout << setw (20) << LD_SYMBOL << "(" + var->label() + ")" ; cout << setw (16) << "belief" ; cout << endl; - cout << "--------------------------------" ; - cout << "--------------------------------" ; + Util::printDashedLine(); cout << endl; const States& states = var->states(); const Params& piVals = ninf(var)->getPiValues(); @@ -731,7 +718,7 @@ BnBpSolver::printPiLambdaValues (const BayesNode* var) const cout << setw (10) << states[xi]; cout << setw (19) << piVals[xi]; cout << setw (19) << ldVals[xi]; - cout.precision (PRECISION); + cout.precision (Constants::PRECISION); cout << setw (16) << beliefs[xi]; cout << endl; } @@ -754,8 +741,8 @@ BnBpSolver::printAllMessageStatus (void) const BpNodeInfo::BpNodeInfo (BayesNode* node) { node_ = node; - piVals_.resize (node->nrStates(), Util::one()); - ldVals_.resize (node->nrStates(), Util::one()); + piVals_.resize (node->nrStates(), LogAware::one()); + ldVals_.resize (node->nrStates(), LogAware::one()); } diff --git a/packages/CLPBN/clpbn/bp/BnBpSolver.h b/packages/CLPBN/clpbn/bp/BnBpSolver.h index 3f784ed44..6cf046cf6 100644 --- a/packages/CLPBN/clpbn/bp/BnBpSolver.h +++ b/packages/CLPBN/clpbn/bp/BnBpSolver.h @@ -27,11 +27,11 @@ class BpLink destin_ = d; orientation_ = o; if (orientation_ == LinkOrientation::DOWN) { - v1_.resize (s->nrStates(), Util::tl (1.0 / s->nrStates())); - v2_.resize (s->nrStates(), Util::tl (1.0 / s->nrStates())); + v1_.resize (s->nrStates(), LogAware::tl (1.0 / s->nrStates())); + v2_.resize (s->nrStates(), LogAware::tl (1.0 / s->nrStates())); } else { - v1_.resize (d->nrStates(), Util::tl (1.0 / d->nrStates())); - v2_.resize (d->nrStates(), Util::tl (1.0 / d->nrStates())); + v1_.resize (d->nrStates(), LogAware::tl (1.0 / d->nrStates())); + v2_.resize (d->nrStates(), LogAware::tl (1.0 / d->nrStates())); } currMsg_ = &v1_; nextMsg_ = &v2_; @@ -39,6 +39,22 @@ class BpLink msgSended_ = false; } + BayesNode* getSource (void) const { return source_; } + + BayesNode* getDestination (void) const { return destin_; } + + LinkOrientation getOrientation (void) const { return orientation_; } + + const Params& getMessage (void) const { return *currMsg_; } + + Params& getNextMessage (void) { return *nextMsg_;} + + bool messageWasSended (void) const { return msgSended_; } + + double getResidual (void) const { return residual_; } + + void clearResidual (void) { residual_ = 0;} + void updateMessage (void) { swap (currMsg_, nextMsg_); @@ -47,7 +63,7 @@ class BpLink void updateResidual (void) { - residual_ = Util::getMaxNorm (v1_, v2_); + residual_ = LogAware::getMaxNorm (v1_, v2_); } string toString (void) const @@ -74,29 +90,19 @@ class BpLink } return ss.str(); } - - BayesNode* getSource (void) const { return source_; } - BayesNode* getDestination (void) const { return destin_; } - LinkOrientation getOrientation (void) const { return orientation_; } - const Params& getMessage (void) const { return *currMsg_; } - Params& getNextMessage (void) { return *nextMsg_; } - bool messageWasSended (void) const { return msgSended_; } - double getResidual (void) const { return residual_; } - void clearResidual (void) { residual_ = 0;} private: BayesNode* source_; BayesNode* destin_; LinkOrientation orientation_; - Params v1_; - Params v2_; - Params* currMsg_; - Params* nextMsg_; + Params v1_; + Params v2_; + Params* currMsg_; + Params* nextMsg_; bool msgSended_; double residual_; }; - typedef vector BpLinkSet; @@ -105,32 +111,41 @@ class BpNodeInfo public: BpNodeInfo (BayesNode*); - Params getBeliefs (void) const; - bool receivedBottomInfluence (void) const; + Params& getPiValues (void) { return piVals_; } - Params& getPiValues (void) { return piVals_; } - Params& getLambdaValues (void) { return ldVals_; } + Params& getLambdaValues (void) { return ldVals_; } + + const BpLinkSet& getIncomingParentLinks (void) { return inParentLinks_; } + + const BpLinkSet& getIncomingChildLinks (void) { return inChildLinks_; } - const BpLinkSet& getIncomingParentLinks (void) { return inParentLinks_; } - const BpLinkSet& getIncomingChildLinks (void) { return inChildLinks_; } const BpLinkSet& getOutcomingParentLinks (void) { return outParentLinks_; } - const BpLinkSet& getOutcomingChildLinks (void) { return outChildLinks_; } + + const BpLinkSet& getOutcomingChildLinks (void) { return outChildLinks_; } - void addIncomingParentLink (BpLink* l) { inParentLinks_.push_back (l); } - void addIncomingChildLink (BpLink* l) { inChildLinks_.push_back (l); } + void addIncomingParentLink (BpLink* l) { inParentLinks_.push_back (l); } + + void addIncomingChildLink (BpLink* l) { inChildLinks_.push_back (l); } + void addOutcomingParentLink (BpLink* l) { outParentLinks_.push_back (l); } - void addOutcomingChildLink (BpLink* l) { outChildLinks_.push_back (l); } + + void addOutcomingChildLink (BpLink* l) { outChildLinks_.push_back (l); } + + Params getBeliefs (void) const; + + bool receivedBottomInfluence (void) const; + private: DISALLOW_COPY_AND_ASSIGN (BpNodeInfo); - const BayesNode* node_; - Params piVals_; // pi values - Params ldVals_; // lambda values - BpLinkSet inParentLinks_; - BpLinkSet inChildLinks_; - BpLinkSet outParentLinks_; - BpLinkSet outChildLinks_; + const BayesNode* node_; + Params piVals_; + Params ldVals_; + BpLinkSet inParentLinks_; + BpLinkSet inChildLinks_; + BpLinkSet outParentLinks_; + BpLinkSet outChildLinks_; }; @@ -139,32 +154,43 @@ class BnBpSolver : public Solver { public: BnBpSolver (const BayesNet&); + ~BnBpSolver (void); - void runSolver (void); - Params getPosterioriOf (VarId); - Params getJointDistributionOf (const VarIds&); + void runSolver (void); + Params getPosterioriOf (VarId); + Params getJointDistributionOf (const VarIds&); - private: DISALLOW_COPY_AND_ASSIGN (BnBpSolver); - void initializeSolver (void); - void runLoopySolver (void); - void maxResidualSchedule (void); - bool converged (void) const; - void updatePiValues (BayesNode*); - void updateLambdaValues (BayesNode*); - void calculateLambdaMessage (BpLink*); - void calculatePiMessage (BpLink*); - Params getJointByJunctionNode (const VarIds&); - Params getJointByConditioning (const VarIds&) const; - void printPiLambdaValues (const BayesNode*) const; - void printAllMessageStatus (void) const; + void initializeSolver (void); + + void runLoopySolver (void); + + void maxResidualSchedule (void); + + bool converged (void) const; + + void updatePiValues (BayesNode*); + + void updateLambdaValues (BayesNode*); + + void calculateLambdaMessage (BpLink*); + + void calculatePiMessage (BpLink*); + + Params getJointByJunctionNode (const VarIds&); + + Params getJointByConditioning (const VarIds&) const; + + void printPiLambdaValues (const BayesNode*) const; + + void printAllMessageStatus (void) const; void calculateAndUpdateMessage (BpLink* link, bool calcResidual = true) { - if (DL >= 3) { + if (Constants::DEBUG >= 3) { cout << "calculating & updating " << link->toString() << endl; } if (link->getOrientation() == LinkOrientation::DOWN) { @@ -180,7 +206,7 @@ class BnBpSolver : public Solver void calculateMessage (BpLink* link, bool calcResidual = true) { - if (DL >= 3) { + if (Constants::DEBUG >= 3) { cout << "calculating " << link->toString() << endl; } if (link->getOrientation() == LinkOrientation::DOWN) { @@ -195,7 +221,7 @@ class BnBpSolver : public Solver void updateMessage (BpLink* link) { - if (DL >= 3) { + if (Constants::DEBUG >= 3) { cout << "updating " << link->toString() << endl; } link->updateMessage(); diff --git a/packages/CLPBN/clpbn/bp/CFactorGraph.cpp b/packages/CLPBN/clpbn/bp/CFactorGraph.cpp index 21c1f2062..bdf9410e8 100644 --- a/packages/CLPBN/clpbn/bp/CFactorGraph.cpp +++ b/packages/CLPBN/clpbn/bp/CFactorGraph.cpp @@ -1,7 +1,6 @@ #include "CFactorGraph.h" #include "Factor.h" -#include "Distribution.h" bool CFactorGraph::checkForIdenticalFactors = true; @@ -73,27 +72,34 @@ CFactorGraph::setInitialColors (void) const FgFacSet& facNodes = groundFg_->getFactorNodes(); if (checkForIdenticalFactors) { - for (unsigned i = 0, s = facNodes.size(); i < s; i++) { - Distribution* dist1 = facNodes[i]->getDistribution(); - for (unsigned j = 0; j < i; j++) { - Distribution* dist2 = facNodes[j]->getDistribution(); - if (dist1 != dist2 && dist1->params == dist2->params) { - if (facNodes[i]->factor()->getRanges() == - facNodes[j]->factor()->getRanges()) { - facNodes[i]->factor()->setDistribution (dist2); - } + unsigned groupCount = 1; + for (unsigned i = 0; i < facNodes.size(); i++) { + Factor* f1 = facNodes[i]->factor(); + if (f1->distId() != Util::maxUnsigned()) { + continue; + } + f1->setDistId (groupCount); + for (unsigned j = i + 1; j < facNodes.size(); j++) { + Factor* f2 = facNodes[j]->factor(); + if (f2->distId() != Util::maxUnsigned()) { + continue; + } + if (f1->size() == f2->size() && + f1->ranges() == f2->ranges() && + f1->params() == f2->params()) { + f2->setDistId (groupCount); } } + groupCount ++; } } - // create the initial factor colors DistColorMap distColors; for (unsigned i = 0; i < facNodes.size(); i++) { - const Distribution* dist = facNodes[i]->getDistribution(); - DistColorMap::iterator it = distColors.find (dist); + unsigned distId = facNodes[i]->factor()->distId(); + DistColorMap::iterator it = distColors.find (distId); if (it == distColors.end()) { - it = distColors.insert (make_pair (dist, getFreeColor())).first; + it = distColors.insert (make_pair (distId, getFreeColor())).first; } setColor (facNodes[i], it->second); } @@ -104,11 +110,11 @@ CFactorGraph::setInitialColors (void) void CFactorGraph::createGroups (void) { - VarSignMap varGroups; + VarSignMap varGroups; FacSignMap factorGroups; unsigned nIters = 0; bool groupsHaveChanged = true; - const FgVarSet& varNodes = groundFg_->getVarNodes(); + const FgVarSet& varNodes = groundFg_->getVarNodes(); const FgFacSet& facNodes = groundFg_->getFactorNodes(); while (groupsHaveChanged || nIters == 1) { @@ -164,8 +170,9 @@ CFactorGraph::createGroups (void) void -CFactorGraph::createClusters (const VarSignMap& varGroups, - const FacSignMap& factorGroups) +CFactorGraph::createClusters ( + const VarSignMap& varGroups, + const FacSignMap& factorGroups) { varClusters_.reserve (varGroups.size()); for (VarSignMap::const_iterator it = varGroups.begin(); @@ -249,7 +256,7 @@ CFactorGraph::getCompressedFactorGraph (void) myGroundVars.push_back (v); } Factor* newFactor = new Factor (myGroundVars, - facClusters_[i]->getGroundFactors()[0]->getDistribution()); + facClusters_[i]->getGroundFactors()[0]->params()); FgFacNode* fn = new FgFacNode (newFactor); facClusters_[i]->setRepresentativeFactor (fn); fg->addFactor (fn); @@ -293,8 +300,9 @@ CFactorGraph::getGroundEdgeCount ( void -CFactorGraph::printGroups (const VarSignMap& varGroups, - const FacSignMap& factorGroups) const +CFactorGraph::printGroups ( + const VarSignMap& varGroups, + const FacSignMap& factorGroups) const { unsigned count = 1; cout << "variable groups:" << endl; diff --git a/packages/CLPBN/clpbn/bp/CFactorGraph.h b/packages/CLPBN/clpbn/bp/CFactorGraph.h index a5b556da9..426f13ff3 100644 --- a/packages/CLPBN/clpbn/bp/CFactorGraph.h +++ b/packages/CLPBN/clpbn/bp/CFactorGraph.h @@ -15,23 +15,25 @@ class Signature; class SignatureHash; -typedef long Color; -typedef unordered_map > VarColorMap; -typedef unordered_map DistColorMap; -typedef unordered_map VarId2VarCluster; -typedef vector VarClusterSet; -typedef vector FacClusterSet; -typedef unordered_map VarSignMap; -typedef unordered_map FacSignMap; +typedef long Color; + +typedef unordered_map> VarColorMap; + +typedef unordered_map DistColorMap; +typedef unordered_map VarId2VarCluster; + +typedef vector VarClusterSet; +typedef vector FacClusterSet; + +typedef unordered_map VarSignMap; +typedef unordered_map FacSignMap; struct Signature { - Signature (unsigned size) - { - colors.resize (size); - } + Signature (unsigned size) : colors(size) { } + bool operator< (const Signature& sig) const { if (colors.size() < sig.colors.size()) { @@ -49,6 +51,7 @@ struct Signature } return false; } + bool operator== (const Signature& sig) const { if (colors.size() != sig.colors.size()) { @@ -61,12 +64,14 @@ struct Signature } return true; } + vector colors; }; -struct SignatureHash { +struct SignatureHash +{ size_t operator() (const Signature &sig) const { size_t val = hash()(sig.colors.size()); @@ -141,10 +146,12 @@ class FacCluster { return representFactor_; } + void setRepresentativeFactor (FgFacNode* fn) { representFactor_ = fn; } + const FgFacSet& getGroundFactors (void) const { return groundFactors_; @@ -162,31 +169,28 @@ class CFactorGraph { public: CFactorGraph (const FactorGraph&); + ~CFactorGraph (void); - FactorGraph* getCompressedFactorGraph (void); - unsigned getGroundEdgeCount (const FacCluster*, const VarCluster*) const; + const VarClusterSet& getVarClusters (void) { return varClusters_; } + + const FacClusterSet& getFacClusters (void) { return facClusters_; } FgVarNode* getEquivalentVariable (VarId vid) { VarCluster* vc = vid2VarCluster_.find (vid)->second; return vc->getRepresentativeVariable(); } - - const VarClusterSet& getVarClusters (void) { return varClusters_; } - const FacClusterSet& getFacClusters (void) { return facClusters_; } + FactorGraph* getCompressedFactorGraph (void); + + unsigned getGroundEdgeCount (const FacCluster*, const VarCluster*) const; + static bool checkForIdenticalFactors; private: - void setInitialColors (void); - void createGroups (void); - void createClusters (const VarSignMap&, const FacSignMap&); - const Signature& getSignature (const FgVarNode*); - const Signature& getSignature (const FgFacNode*); - void printGroups (const VarSignMap&, const FacSignMap&) const; - - Color getFreeColor (void) { + Color getFreeColor (void) + { ++ freeColor_; return freeColor_ - 1; } @@ -214,14 +218,26 @@ class CFactorGraph return vid2VarCluster_.find (vid)->second; } + void setInitialColors (void); + + void createGroups (void); + + void createClusters (const VarSignMap&, const FacSignMap&); + + const Signature& getSignature (const FgVarNode*); + + const Signature& getSignature (const FgFacNode*); + + void printGroups (const VarSignMap&, const FacSignMap&) const; + Color freeColor_; vector varColors_; vector factorColors_; vector varSignatures_; vector factorSignatures_; VarClusterSet varClusters_; - FacClusterSet facClusters_; - VarId2VarCluster vid2VarCluster_; + FacClusterSet facClusters_; + VarId2VarCluster vid2VarCluster_; const FactorGraph* groundFg_; }; diff --git a/packages/CLPBN/clpbn/bp/CbpSolver.cpp b/packages/CLPBN/clpbn/bp/CbpSolver.cpp index ab8e4e1c4..01b97f863 100644 --- a/packages/CLPBN/clpbn/bp/CbpSolver.cpp +++ b/packages/CLPBN/clpbn/bp/CbpSolver.cpp @@ -20,24 +20,24 @@ CbpSolver::getPosterioriOf (VarId vid) FgVarNode* var = lfg_->getEquivalentVariable (vid); Params probs; if (var->hasEvidence()) { - probs.resize (var->nrStates(), Util::noEvidence()); - probs[var->getEvidence()] = Util::withEvidence(); + probs.resize (var->nrStates(), LogAware::noEvidence()); + probs[var->getEvidence()] = LogAware::withEvidence(); } else { - probs.resize (var->nrStates(), Util::multIdenty()); + probs.resize (var->nrStates(), LogAware::multIdenty()); const SpLinkSet& links = ninf(var)->getLinks(); if (Globals::logDomain) { for (unsigned i = 0; i < links.size(); i++) { CbpSolverLink* l = static_cast (links[i]); Util::add (probs, l->getPoweredMessage()); } - Util::normalize (probs); + LogAware::normalize (probs); Util::fromLog (probs); } else { for (unsigned i = 0; i < links.size(); i++) { CbpSolverLink* l = static_cast (links[i]); Util::multiply (probs, l->getPoweredMessage()); } - Util::normalize (probs); + LogAware::normalize (probs); } } return probs; @@ -62,7 +62,7 @@ void CbpSolver::initializeSolver (void) { unsigned nGroundVars, nGroundFacs, nWithoutNeighs; - if (COLLECT_STATISTICS) { + if (Constants::COLLECT_STATS) { nGroundVars = factorGraph_->getVarNodes().size(); nGroundFacs = factorGraph_->getFactorNodes().size(); const FgVarSet& vars = factorGraph_->getVarNodes(); @@ -82,7 +82,7 @@ CbpSolver::initializeSolver (void) // factorGraph_->exportToGraphViz ("uncompressed_fg.dot"); factorGraph_ = lfg_->getCompressedFactorGraph(); - if (COLLECT_STATISTICS) { + if (Constants::COLLECT_STATS) { unsigned nClusterVars = factorGraph_->getVarNodes().size(); unsigned nClusterFacs = factorGraph_->getFactorNodes().size(); Statistics::updateCompressingStatistics (nGroundVars, nGroundFacs, @@ -123,7 +123,7 @@ CbpSolver::maxResidualSchedule (void) calculateMessage (links_[i]); SortedOrder::iterator it = sortedOrder_.insert (links_[i]); linkMap_.insert (make_pair (links_[i], it)); - if (DL >= 2 && DL < 5) { + if (Constants::DEBUG >= 2 && Constants::DEBUG < 5) { cout << "calculating " << links_[i]->toString() << endl; } } @@ -131,7 +131,7 @@ CbpSolver::maxResidualSchedule (void) } for (unsigned c = 0; c < links_.size(); c++) { - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << endl << "current residuals:" << endl; for (SortedOrder::iterator it = sortedOrder_.begin(); it != sortedOrder_.end(); it ++) { @@ -142,7 +142,7 @@ CbpSolver::maxResidualSchedule (void) SortedOrder::iterator it = sortedOrder_.begin(); SpLink* link = *it; - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << "updating " << (*sortedOrder_.begin())->toString() << endl; } if (link->getResidual() < BpOptions::accuracy) { @@ -159,7 +159,7 @@ CbpSolver::maxResidualSchedule (void) const SpLinkSet& links = ninf(factorNeighbors[i])->getLinks(); for (unsigned j = 0; j < links.size(); j++) { if (links[j]->getVariable() != link->getVariable()) { - if (DL >= 2 && DL < 5) { + if (Constants::DEBUG >= 2 && Constants::DEBUG < 5) { cout << " calculating " << links[j]->toString() << endl; } calculateMessage (links[j]); @@ -174,7 +174,7 @@ CbpSolver::maxResidualSchedule (void) const SpLinkSet& links = ninf(link->getFactor())->getLinks(); for (unsigned i = 0; i < links.size(); i++) { if (links[i]->getVariable() != link->getVariable()) { - if (DL >= 2 && DL < 5) { + if (Constants::DEBUG >= 2 && Constants::DEBUG < 5) { cout << " calculating " << links[i]->toString() << endl; } calculateMessage (links[i]); @@ -196,15 +196,15 @@ CbpSolver::getVar2FactorMsg (const SpLink* link) const const FgFacNode* dst = link->getFactor(); const CbpSolverLink* l = static_cast (link); if (src->hasEvidence()) { - msg.resize (src->nrStates(), Util::noEvidence()); + msg.resize (src->nrStates(), LogAware::noEvidence()); double value = link->getMessage()[src->getEvidence()]; - msg[src->getEvidence()] = Util::pow (value, l->getNumberOfEdges() - 1); + msg[src->getEvidence()] = LogAware::pow (value, l->getNumberOfEdges() - 1); } else { msg = link->getMessage(); - Util::pow (msg, l->getNumberOfEdges() - 1); + LogAware::pow (msg, l->getNumberOfEdges() - 1); } - if (DL >= 5) { - cout << " " << "init: " << Util::parametersToString (msg) << endl; + if (Constants::DEBUG >= 5) { + cout << " " << "init: " << msg << endl; } const SpLinkSet& links = ninf(src)->getLinks(); if (Globals::logDomain) { @@ -219,16 +219,16 @@ CbpSolver::getVar2FactorMsg (const SpLink* link) const if (links[i]->getFactor() != dst) { CbpSolverLink* l = static_cast (links[i]); Util::multiply (msg, l->getPoweredMessage()); - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " msg from " << l->getFactor()->getLabel() << ": " ; - cout << Util::parametersToString (l->getPoweredMessage()) << endl; + cout << l->getPoweredMessage() << endl; } } } } - if (DL >= 5) { - cout << " result = " << Util::parametersToString (msg) << endl; + if (Constants::DEBUG >= 5) { + cout << " result = " << msg << endl; } return msg; } @@ -241,12 +241,9 @@ CbpSolver::printLinkInformation (void) const for (unsigned i = 0; i < links_.size(); i++) { CbpSolverLink* l = static_cast (links_[i]); cout << l->toString() << ":" << endl; - cout << " curr msg = " ; - cout << Util::parametersToString (l->getMessage()) << endl; - cout << " next msg = " ; - cout << Util::parametersToString (l->getNextMessage()) << endl; - cout << " powered = " ; - cout << Util::parametersToString (l->getPoweredMessage()) << endl; + cout << " curr msg = " << l->getMessage() << endl; + cout << " next msg = " << l->getNextMessage() << endl; + cout << " powered = " << l->getPoweredMessage() << endl; cout << " residual = " << l->getResidual() << endl; } } diff --git a/packages/CLPBN/clpbn/bp/CbpSolver.h b/packages/CLPBN/clpbn/bp/CbpSolver.h index 022457099..e5637e175 100644 --- a/packages/CLPBN/clpbn/bp/CbpSolver.h +++ b/packages/CLPBN/clpbn/bp/CbpSolver.h @@ -12,23 +12,24 @@ class CbpSolverLink : public SpLink CbpSolverLink (FgFacNode* fn, FgVarNode* vn, unsigned c) : SpLink (fn, vn) { edgeCount_ = c; - poweredMsg_.resize (vn->nrStates(), Util::one()); + poweredMsg_.resize (vn->nrStates(), LogAware::one()); } + unsigned getNumberOfEdges (void) const { return edgeCount_; } + + const Params& getPoweredMessage (void) const { return poweredMsg_; } + void updateMessage (void) { poweredMsg_ = *nextMsg_; swap (currMsg_, nextMsg_); msgSended_ = true; - Util::pow (poweredMsg_, edgeCount_); + LogAware::pow (poweredMsg_, edgeCount_); } - unsigned getNumberOfEdges (void) const { return edgeCount_; } - const Params& getPoweredMessage (void) const { return poweredMsg_; } - private: - Params poweredMsg_; - unsigned edgeCount_; + Params poweredMsg_; + unsigned edgeCount_; }; @@ -37,21 +38,22 @@ class CbpSolver : public FgBpSolver { public: CbpSolver (FactorGraph& fg) : FgBpSolver (fg) { } + ~CbpSolver (void); - Params getPosterioriOf (VarId); - Params getJointDistributionOf (const VarIds&); + Params getPosterioriOf (VarId); + + Params getJointDistributionOf (const VarIds&); private: - void initializeSolver (void); - void createLinks (void); + void initializeSolver (void); + void createLinks (void); - void maxResidualSchedule (void); - Params getVar2FactorMsg (const SpLink*) const; - void printLinkInformation (void) const; + void maxResidualSchedule (void); + Params getVar2FactorMsg (const SpLink*) const; + void printLinkInformation (void) const; - - CFactorGraph* lfg_; + CFactorGraph* lfg_; }; #endif // HORUS_CBP_H diff --git a/packages/CLPBN/clpbn/bp/ConstraintTree.cpp b/packages/CLPBN/clpbn/bp/ConstraintTree.cpp index 2d295fb07..cf83863df 100644 --- a/packages/CLPBN/clpbn/bp/ConstraintTree.cpp +++ b/packages/CLPBN/clpbn/bp/ConstraintTree.cpp @@ -1,10 +1,11 @@ #include +#include + #include "ConstraintTree.h" #include "Util.h" - void CTNode::addChild (CTNode* child, bool updateLevels) { @@ -42,6 +43,26 @@ CTNode::removeChild (CTNode* child) +void +CTNode::removeAndDeleteChild (CTNode* child) +{ + removeChild (child); + CTNode::deleteSubtree (child); +} + + + +void +CTNode::removeAndDeleteAllChilds (void) +{ + for (unsigned i = 0; i < childs_.size(); i++) { + deleteSubtree (childs_[i]); + } + childs_.clear(); +} + + + SymbolSet CTNode::childSymbols (void) const { @@ -66,6 +87,32 @@ CTNode::updateChildLevels (CTNode* n, unsigned level) +CTNode* +CTNode::copySubtree (const CTNode* n) +{ + CTNode* newNode = new CTNode (*n); + const CTNodes& childs = n->childs(); + for (unsigned i = 0; i < childs.size(); i++) { + newNode->addChild (copySubtree (childs[i])); + } + return newNode; +} + + + +void +CTNode::deleteSubtree (CTNode* n) +{ + assert (n); + const CTNodes& childs = n->childs(); + for (unsigned i = 0; i < childs.size(); i++) { + deleteSubtree (childs[i]); + } + delete n; +} + + + ostream& operator<< (ostream &out, const CTNode& n) { // out << "(" << n.level() << ") " ; @@ -75,6 +122,17 @@ ostream& operator<< (ostream &out, const CTNode& n) +ConstraintTree::ConstraintTree (unsigned nrLvs) +{ + for (unsigned i = 0; i < nrLvs; i++) { + logVars_.push_back (LogVar (i)); + } + root_ = new CTNode (0, 0); + logVarSet_ = LogVarSet (logVars_); +} + + + ConstraintTree::ConstraintTree (const LogVars& logVars) { root_ = new CTNode (0, 0); @@ -99,7 +157,7 @@ ConstraintTree::ConstraintTree (const LogVars& logVars, ConstraintTree::ConstraintTree (const ConstraintTree& ct) { - root_ = copySubtree (ct.root_); + root_ = CTNode::copySubtree (ct.root_); logVars_ = ct.logVars_; logVarSet_ = ct.logVarSet_; } @@ -108,7 +166,7 @@ ConstraintTree::ConstraintTree (const ConstraintTree& ct) ConstraintTree::~ConstraintTree (void) { - deleteSubtree (root_); + CTNode::deleteSubtree (root_); } @@ -200,21 +258,28 @@ ConstraintTree::moveToBottom (const LogVars& lvs) void ConstraintTree::join (ConstraintTree* ct, bool assertWhenNotFound) -{ +{ + if (logVarSet_.empty()) { + delete root_; + root_ = CTNode::copySubtree (ct->root()); + logVars_ = ct->logVars(); + logVarSet_ = ct->logVarSet(); + return; + } + LogVarSet intersect = logVarSet_ & ct->logVarSet_; if (intersect.empty()) { const CTNodes& childs = ct->root()->childs(); CTNodes leafs = getNodesAtLevel (getLevel (logVars_.back())); for (unsigned i = 0; i < leafs.size(); i++) { for (unsigned j = 0; j < childs.size(); j++) { - leafs[i]->addChild (copySubtree (childs[j])); + leafs[i]->addChild (CTNode::copySubtree (childs[j])); } } - logVars_.insert (logVars_.end(), ct->logVars_.begin(), ct->logVars_.end()); + Util::addToVector (logVars_, ct->logVars_); logVarSet_ |= ct->logVarSet_; } else { - moveToBottom (intersect.elements()); ct->moveToTop (intersect.elements()); @@ -222,25 +287,27 @@ ConstraintTree::join (ConstraintTree* ct, bool assertWhenNotFound) CTNodes nodes = getNodesAtLevel (level); Tuples tuples; - CTNodes continuationNodes; + CTNodes continNodes; getTuples (ct->root(), Tuples(), intersect.size(), tuples, - continuationNodes); + continNodes); for (unsigned i = 0; i < tuples.size(); i++) { bool tupleFounded = false; for (unsigned j = 0; j < nodes.size(); j++) { - tupleFounded |= join (nodes[j], tuples[i], 0, continuationNodes[i]); + tupleFounded |= join (nodes[j], tuples[i], 0, continNodes[i]); } if (assertWhenNotFound) { assert (tupleFounded); } } - LogVarSet newLvs = ct->logVarSet_ - intersect; - logVars_.insert (logVars_.end(), newLvs.begin(), newLvs.end()); - logVarSet_ |= newLvs; + + LogVars newLvs (ct->logVars().begin() + intersect.size(), + ct->logVars().end()); + Util::addToVector (logVars_, newLvs); + logVarSet_ |= LogVarSet (newLvs); } } @@ -308,11 +375,7 @@ ConstraintTree::remove (const LogVarSet& X) unsigned level = getLevel (X.front()) - 1; CTNodes nodes = getNodesAtLevel (level); for (unsigned i = 0; i < nodes.size(); i++) { - CTNodes childs = nodes[i]->childs(); - for (unsigned j = 0; j < childs.size(); j++) { - nodes[i]->removeChild (childs[j]); - deleteSubtree (childs[j]); - } + nodes[i]->removeAndDeleteAllChilds(); } logVars_.resize (logVars_.size() - X.size()); logVarSet_ -= X; @@ -545,16 +608,16 @@ ConstraintTree::split ( for (unsigned i = 0; i < commNodes.size(); i++) { commCt->root()->addChild (commNodes[i]); } - //cout << commCt->tupleSet() << " + " ; - //cout << exclCt->tupleSet() << " = " ; - //cout << tupleSet() << endl << endl; + // cout << commCt->tupleSet() << " + " ; + // cout << exclCt->tupleSet() << " = " ; + // cout << tupleSet() << endl << endl; // if (((commCt->tupleSet() | exclCt->tupleSet()) == tupleSet()) == false) { // exportToGraphViz ("_fail.dot", true); // commCt->exportToGraphViz ("_fail_comm.dot", true); // exclCt->exportToGraphViz ("_fail_excl.dot", true); // } - assert ((commCt->tupleSet() | exclCt->tupleSet()) == tupleSet()); - assert ((exclCt->tupleSet (stopLevel) & ct->tupleSet (stopLevel)).empty()); + // assert ((commCt->tupleSet() | exclCt->tupleSet()) == tupleSet()); + // assert ((exclCt->tupleSet (stopLevel) & ct->tupleSet (stopLevel)).empty()); return {commCt, exclCt}; } @@ -601,36 +664,32 @@ ConstraintTree::jointCountNormalize ( LogVar X_new1, LogVar X_new2) { - exportToGraphViz ("C.dot", true); - commCt->exportToGraphViz ("C_comm.dot", true); - exclCt->exportToGraphViz ("C_exlc.dot", true); unsigned N = getConditionalCount (X); - cout << "My tuples: " << tupleSet() << endl; - cout << "CommCt tuples: " << commCt->tupleSet() << endl; - cout << "ExclCt tuples: " << exclCt->tupleSet() << endl; - cout << "Counted Lv: " << X << endl; - cout << "Original N: " << N << endl; - cout << endl; + // cout << "My tuples: " << tupleSet() << endl; + // cout << "CommCt tuples: " << commCt->tupleSet() << endl; + // cout << "ExclCt tuples: " << exclCt->tupleSet() << endl; + // cout << "Counted Lv: " << X << endl; + // cout << "X_new1: " << X_new1 << endl; + // cout << "X_new2: " << X_new2 << endl; + // cout << "Original N: " << N << endl; + // cout << endl; ConstraintTrees normCts1 = commCt->countNormalize (X); vector counts1 (normCts1.size()); for (unsigned i = 0; i < normCts1.size(); i++) { counts1[i] = normCts1[i]->getConditionalCount (X); - cout << "normCts1[" << i << "] #" << counts1[i] ; - cout << " " << normCts1[i]->tupleSet() << endl; + // cout << "normCts1[" << i << "] #" << counts1[i] ; + // cout << " " << normCts1[i]->tupleSet() << endl; } ConstraintTrees normCts2 = exclCt->countNormalize (X); vector counts2 (normCts2.size()); for (unsigned i = 0; i < normCts2.size(); i++) { counts2[i] = normCts2[i]->getConditionalCount (X); - cout << "normCts2[" << i << "] #" << counts2[i] ; - cout << " " << normCts2[i]->tupleSet() << endl; + // cout << "normCts2[" << i << "] #" << counts2[i] ; + // cout << " " << normCts2[i]->tupleSet() << endl; } - cout << endl; - - cout << "1###### " << normCts1.size() << endl; - cout << "2###### " << normCts2.size() << endl; + // cout << endl; ConstraintTree* excl1 = 0; for (unsigned i = 0; i < normCts1.size(); i++) { @@ -638,7 +697,7 @@ ConstraintTree::jointCountNormalize ( excl1 = normCts1[i]; normCts1.erase (normCts1.begin() + i); counts1.erase (counts1.begin() + i); - cout << ">joint-count(" << N << ",0)" << endl; + // cout << "joint-count(" << N << ",0)" << endl; break; } } @@ -649,22 +708,21 @@ ConstraintTree::jointCountNormalize ( excl2 = normCts2[i]; normCts2.erase (normCts2.begin() + i); counts2.erase (counts2.begin() + i); - cout << ">>joint-count(0," << N << ")" << endl; + // cout << "joint-count(0," << N << ")" << endl; break; } } - cout << "3###### " << normCts1.size() << endl; - cout << "4###### " << normCts2.size() << endl; - for (unsigned i = 0; i < normCts1.size(); i++) { unsigned j; for (j = 0; counts1[i] + counts2[j] != N; j++) ; - cout << "joint-count(" << counts1[i] << "," << counts2[j] << ")" << endl; + // cout << "joint-count(" << counts1[i] ; + // cout << "," << counts2[j] << ")" << endl; const CTNodes& childs = normCts2[j]->root_->childs(); for (unsigned k = 0; k < childs.size(); k++) { - normCts1[i]->root_->addChild (childs[k]); + normCts1[i]->root_->addChild (CTNode::copySubtree (childs[k])); } + delete normCts2[j]; } ConstraintTrees cts = normCts1; @@ -683,11 +741,6 @@ ConstraintTree::jointCountNormalize ( cts.push_back (excl2); } - for (unsigned i = 0; i < cts.size(); i++) { - stringstream ss; - ss << "aaacts_" << i + 1 << ".dot" ; - cts[i]->exportToGraphViz (ss.str().c_str(), true); - } return cts; } @@ -735,11 +788,11 @@ ConstraintTree::expand (LogVar X) unsigned nrSymbols = getConditionalCount (X); for (unsigned i = 0; i < nodes.size(); i++) { Symbols symbols; - CTNodes childs = nodes[i]->childs(); + const CTNodes& childs = nodes[i]->childs(); for (unsigned j = 0; j < childs.size(); j++) { symbols.push_back (childs[j]->symbol()); - nodes[i]->removeChild (childs[j]); } + nodes[i]->removeAndDeleteAllChilds(); CTNode* prev = nodes[i]; assert (symbols.size() == nrSymbols); for (unsigned j = 0; j < nrSymbols; j++) { @@ -768,7 +821,7 @@ ConstraintTree::ground (LogVar X) ConstraintTrees cts; const CTNodes& nodes = root_->childs(); for (unsigned i = 0; i < nodes.size(); i++) { - CTNode* copy = copySubtree (nodes[i]); + CTNode* copy = CTNode::copySubtree (nodes[i]); copy->setSymbol (nodes[i]->symbol()); ConstraintTree* newCt = new ConstraintTree (logVars_); newCt->root()->addChild (copy); @@ -884,7 +937,7 @@ ConstraintTree::join ( if (currIdx == tuple.size() - 1) { const CTNodes& childs = appendNode->childs(); for (unsigned i = 0; i < childs.size(); i++) { - n->addChild (copySubtree (childs[i])); + n->addChild (CTNode::copySubtree (childs[i])); } return true; } @@ -985,7 +1038,7 @@ ConstraintTree::countNormalize ( { if (n->level() == stopLevel) { return vector>() = { - make_pair (copySubtree (n), countTuples (n)) + make_pair (CTNode::copySubtree (n), countTuples (n)) }; } @@ -1004,65 +1057,6 @@ ConstraintTree::countNormalize ( } -/* -void -ConstraintTree::split ( - CTNode* n1, - CTNode* n2, - CTNodes& nodes, - unsigned stopLevel) -{ - CTNodes& childs1 = n1->childs(); - CTNodes& childs2 = n2->childs(); - // cout << string (n1->level() * 8, '-') << "Level = " << n1->level() + 1; - // cout << ", #I = " << childs1.size(); - // cout << ", #J = " << childs2.size() << endl; - for (unsigned i = 0; i < childs1.size(); i++) { - for (unsigned j = 0; j < childs2.size(); j++) { - if (childs1[i]->symbol() != childs2[j]->symbol()) { - continue; - } - if (childs1[i]->level() == stopLevel) { - CTNode* newNode = copySubtree (childs1[i]); - newNode->setSymbol (childs1[i]->symbol()); - nodes.push_back (newNode); - childs1[i]->setSymbol (Symbol::invalid()); - break; - } else { - CTNodes lowerNodes; - split (childs1[i], childs2[j], lowerNodes, stopLevel); - if (lowerNodes.empty() == false) { - CTNode* me = new CTNode (childs1[i]->symbol(), childs1[i]->level()); - for (unsigned k = 0; k < lowerNodes.size(); k++) { - me->addChild (lowerNodes[k]); - } - nodes.push_back (me); - } - if (childs1[i]->isLeaf()) { - break; - } - } - } - } - - for (int i = 0; i < (int)childs1.size(); i++) { - // cout << string (n1->level() * 8, '-') << childs1[i]; - if (childs1[i]->symbol() == Symbol::invalid()) { - // cout << " empty, removing..." ; - n1->removeChild (childs1[i]); - i --; - } else if (childs1[i]->isLeaf() && - childs1[i]->level() != stopLevel) { - // cout << " leaf, removing..." ; - n1->removeChild (childs1[i]); - i --; - } - // cout << endl; - } -} -*/ - - void ConstraintTree::split ( @@ -1085,7 +1079,7 @@ ConstraintTree::split ( continue; } if (childs1[i]->level() == stopLevel) { - CTNode* newNode = copySubtree (childs1[i]); + CTNode* newNode = CTNode::copySubtree (childs1[i]); nodes.push_back (newNode); childs1[i]->setSymbol (Symbol::invalid()); } else { @@ -1103,11 +1097,11 @@ ConstraintTree::split ( for (int i = 0; i < (int)childs1.size(); i++) { if (childs1[i]->symbol() == Symbol::invalid()) { - n1->removeChild (childs1[i]); + n1->removeAndDeleteChild (childs1[i]); i --; } else if (childs1[i]->isLeaf() && childs1[i]->level() != stopLevel) { - n1->removeChild (childs1[i]); + n1->removeAndDeleteChild (childs1[i]); i --; } } @@ -1141,29 +1135,3 @@ ConstraintTree::overlap ( return false; } - - -CTNode* -ConstraintTree::copySubtree (const CTNode* n) -{ - CTNode* newNode = new CTNode (*n); - const CTNodes& childs = n->childs(); - for (unsigned i = 0; i < childs.size(); i++) { - newNode->addChild (copySubtree (childs[i])); - } - return newNode; -} - - - -void -ConstraintTree::deleteSubtree (CTNode* n) -{ - assert (n); - const CTNodes& childs = n->childs(); - for (unsigned i = 0; i < childs.size(); i++) { - deleteSubtree (childs[i]); - } - delete n; -} - diff --git a/packages/CLPBN/clpbn/bp/ConstraintTree.h b/packages/CLPBN/clpbn/bp/ConstraintTree.h index 0ce7eedac..d4e7ceaa0 100644 --- a/packages/CLPBN/clpbn/bp/ConstraintTree.h +++ b/packages/CLPBN/clpbn/bp/ConstraintTree.h @@ -21,7 +21,6 @@ typedef vector ConstraintTrees; - class CTNode { public: @@ -47,29 +46,42 @@ class CTNode bool isLeaf (void) const { return childs_.empty(); } - void addChild (CTNode*, bool = true); - void removeChild (CTNode*); - SymbolSet childSymbols (void) const; + void addChild (CTNode*, bool = true); + + void removeChild (CTNode*); + + void removeAndDeleteChild (CTNode*); + + void removeAndDeleteAllChilds (void); + + SymbolSet childSymbols (void) const; + + static CTNode* copySubtree (const CTNode*); + + static void deleteSubtree (CTNode*); private: - void updateChildLevels (CTNode*, unsigned); + void updateChildLevels (CTNode*, unsigned); - Symbol symbol_; - CTNodes childs_; - unsigned level_; + Symbol symbol_; + CTNodes childs_; + unsigned level_; }; - - ostream& operator<< (ostream &out, const CTNode&); class ConstraintTree { public: + ConstraintTree (unsigned); + ConstraintTree (const LogVars&); + ConstraintTree (const LogVars&, const Tuples&); + ConstraintTree (const ConstraintTree&); + ~ConstraintTree (void); CTNode* root (void) const { return root_; } @@ -94,94 +106,95 @@ class ConstraintTree assert (LogVarSet (logVars_) == logVarSet_); } - void addTuple (const Tuple&); - bool containsTuple (const Tuple&); - void moveToTop (const LogVars&); - void moveToBottom (const LogVars&); - void join (ConstraintTree*, bool = false); - unsigned getLevel (LogVar) const; - void rename (LogVar, LogVar); - void applySubstitution (const Substitution&); - void project (const LogVarSet&); - void remove (const LogVarSet&); - bool isSingleton (LogVar); - LogVarSet singletons (void); - TupleSet tupleSet (unsigned = 0) const; - TupleSet tupleSet (const LogVars&); - unsigned size (void) const; - unsigned nrSymbols (LogVar); - void exportToGraphViz (const char*, bool = false) const; - bool isCountNormalized (const LogVarSet&); - unsigned getConditionalCount (const LogVarSet&); - TinySet getConditionalCounts (const LogVarSet&); - bool isCarteesianProduct (const LogVarSet&) const; + void addTuple (const Tuple&); + + bool containsTuple (const Tuple&); + + void moveToTop (const LogVars&); + + void moveToBottom (const LogVars&); + + void join (ConstraintTree*, bool = false); + + unsigned getLevel (LogVar) const; + + void rename (LogVar, LogVar); + + void applySubstitution (const Substitution&); + + void project (const LogVarSet&); + + void remove (const LogVarSet&); + + bool isSingleton (LogVar); + + LogVarSet singletons (void); + + TupleSet tupleSet (unsigned = 0) const; + + TupleSet tupleSet (const LogVars&); + + unsigned size (void) const; + + unsigned nrSymbols (LogVar); + + void exportToGraphViz (const char*, bool = false) const; + + bool isCountNormalized (const LogVarSet&); + + unsigned getConditionalCount (const LogVarSet&); + + TinySet getConditionalCounts (const LogVarSet&); + + bool isCarteesianProduct (const LogVarSet&) const; std::pair split ( - const Tuple&, - unsigned); + const Tuple&, unsigned); std::pair split ( - const ConstraintTree*, - unsigned) const; + const ConstraintTree*, unsigned) const; - ConstraintTrees countNormalize (const LogVarSet&); + ConstraintTrees countNormalize (const LogVarSet&); ConstraintTrees jointCountNormalize ( - ConstraintTree*, - ConstraintTree*, - LogVar, - LogVar, - LogVar); + ConstraintTree*, ConstraintTree*, LogVar, LogVar, LogVar); - static bool identical ( - const ConstraintTree*, - const ConstraintTree*, - unsigned); + static bool identical ( + const ConstraintTree*, const ConstraintTree*, unsigned); - static bool overlap ( - const ConstraintTree*, - const ConstraintTree*, - unsigned); + static bool overlap ( + const ConstraintTree*, const ConstraintTree*, unsigned); - LogVars expand (LogVar); - ConstraintTrees ground (LogVar); + LogVars expand (LogVar); + ConstraintTrees ground (LogVar); private: - unsigned countTuples (const CTNode*) const; - CTNodes getNodesBelow (CTNode*) const; - CTNodes getNodesAtLevel (unsigned) const; - void swapLogVar (LogVar); - bool join (CTNode*, const Tuple&, unsigned, CTNode*); + unsigned countTuples (const CTNode*) const; - bool indenticalSubtrees ( - const CTNode*, - const CTNode*, - bool) const; + CTNodes getNodesBelow (CTNode*) const; - void getTuples ( - CTNode*, - Tuples, - unsigned, - Tuples&, - CTNodes&) const; + CTNodes getNodesAtLevel (unsigned) const; + + void swapLogVar (LogVar); + + bool join (CTNode*, const Tuple&, unsigned, CTNode*); + + bool indenticalSubtrees ( + const CTNode*, const CTNode*, bool) const; + + void getTuples (CTNode*, Tuples, unsigned, Tuples&, CTNodes&) const; vector> countNormalize ( - const CTNode*, - unsigned); + const CTNode*, unsigned); - static void split ( - CTNode*, - CTNode*, - CTNodes&, - unsigned); + static void split ( + CTNode*, CTNode*, CTNodes&, unsigned); - static bool overlap (const CTNode*, const CTNode*, unsigned); - static CTNode* copySubtree (const CTNode*); - static void deleteSubtree (CTNode*); + static bool overlap (const CTNode*, const CTNode*, unsigned); - CTNode* root_; - LogVars logVars_; - LogVarSet logVarSet_; + CTNode* root_; + LogVars logVars_; + LogVarSet logVarSet_; }; diff --git a/packages/CLPBN/clpbn/bp/Distribution.h b/packages/CLPBN/clpbn/bp/Distribution.h deleted file mode 100644 index 42306b728..000000000 --- a/packages/CLPBN/clpbn/bp/Distribution.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef HORUS_DISTRIBUTION_H -#define HORUS_DISTRIBUTION_H - -#include - -#include "Horus.h" - -//TODO die die die die die - -using namespace std; - - -struct Distribution -{ - public: - Distribution (int id) - { - this->id = id; - } - - Distribution (const Params& params, int id = -1) - { - this->id = id; - this->params = params; - } - - void updateParameters (const Params& params) - { - this->params = params; - } - - bool shared (void) - { - return id != -1; - } - - int id; - Params params; - - private: - DISALLOW_COPY_AND_ASSIGN (Distribution); -}; - -#endif // HORUS_DISTRIBUTION_H - diff --git a/packages/CLPBN/clpbn/bp/ElimGraph.cpp b/packages/CLPBN/clpbn/bp/ElimGraph.cpp index c62a2b0eb..31d88de01 100644 --- a/packages/CLPBN/clpbn/bp/ElimGraph.cpp +++ b/packages/CLPBN/clpbn/bp/ElimGraph.cpp @@ -1,5 +1,7 @@ #include +#include + #include "ElimGraph.h" #include "BayesNet.h" diff --git a/packages/CLPBN/clpbn/bp/ElimGraph.h b/packages/CLPBN/clpbn/bp/ElimGraph.h index 8dbcc3db7..93bf2f8a0 100644 --- a/packages/CLPBN/clpbn/bp/ElimGraph.h +++ b/packages/CLPBN/clpbn/bp/ElimGraph.h @@ -17,15 +17,15 @@ enum ElimHeuristic }; -class EgNode : public VarNode { +class EgNode : public VarNode +{ public: EgNode (VarNode* var) : VarNode (var) { } - void addNeighbor (EgNode* n) - { - neighs_.push_back (n); - } + + void addNeighbor (EgNode* n) { neighs_.push_back (n); } const vector& neighbors (void) const { return neighs_; } + private: vector neighs_; }; @@ -35,6 +35,7 @@ class ElimGraph { public: ElimGraph (const BayesNet&); + ~ElimGraph (void); void addEdge (EgNode* n1, EgNode* n2) @@ -43,13 +44,19 @@ class ElimGraph n1->addNeighbor (n2); n2->addNeighbor (n1); } - void addNode (EgNode*); - EgNode* getEgNode (VarId) const; - VarIds getEliminatingOrder (const VarIds&); - void printGraphicalModel (void) const; - void exportToGraphViz (const char*, bool = true, - const VarIds& = VarIds()) const; - void setIndexes(); + + void addNode (EgNode*); + + EgNode* getEgNode (VarId) const; + + VarIds getEliminatingOrder (const VarIds&); + + void printGraphicalModel (void) const; + + void exportToGraphViz (const char*, bool = true, + const VarIds& = VarIds()) const; + + void setIndexes(); static void setEliminationHeuristic (ElimHeuristic h) { @@ -57,14 +64,19 @@ class ElimGraph } private: - EgNode* getLowestCostNode (void) const; - unsigned getNeighborsCost (const EgNode*) const; - unsigned getWeightCost (const EgNode*) const; - unsigned getFillCost (const EgNode*) const; - unsigned getWeightedFillCost (const EgNode*) const; - void connectAllNeighbors (const EgNode*); - bool neighbors (const EgNode*, const EgNode*) const; + EgNode* getLowestCostNode (void) const; + unsigned getNeighborsCost (const EgNode*) const; + + unsigned getWeightCost (const EgNode*) const; + + unsigned getFillCost (const EgNode*) const; + + unsigned getWeightedFillCost (const EgNode*) const; + + void connectAllNeighbors (const EgNode*); + + bool neighbors (const EgNode*, const EgNode*) const; vector nodes_; vector marked_; diff --git a/packages/CLPBN/clpbn/bp/Factor.cpp b/packages/CLPBN/clpbn/bp/Factor.cpp index 6efb6beb5..1980c2ade 100644 --- a/packages/CLPBN/clpbn/bp/Factor.cpp +++ b/packages/CLPBN/clpbn/bp/Factor.cpp @@ -8,7 +8,7 @@ #include "Factor.h" #include "Indexer.h" -#include "Util.h" + Factor::Factor (const Factor& g) @@ -18,206 +18,73 @@ Factor::Factor (const Factor& g) -Factor::Factor (VarId vid, unsigned nStates) +Factor::Factor (VarId vid, unsigned nrStates) { - varids_.push_back (vid); - ranges_.push_back (nStates); - dist_ = new Distribution (Params (nStates, 1.0)); + args_.push_back (vid); + ranges_.push_back (nrStates); + params_.resize (nrStates, 1.0); + distId_ = Util::maxUnsigned(); + assert (params_.size() == Util::expectedSize (ranges_)); } Factor::Factor (const VarNodes& vars) { - int nParams = 1; + int nrParams = 1; for (unsigned i = 0; i < vars.size(); i++) { - varids_.push_back (vars[i]->varId()); + args_.push_back (vars[i]->varId()); ranges_.push_back (vars[i]->nrStates()); - nParams *= vars[i]->nrStates(); + nrParams *= vars[i]->nrStates(); } - // create a uniform distribution - double val = 1.0 / nParams; - dist_ = new Distribution (Params (nParams, val)); + double val = 1.0 / nrParams; + params_.resize (nrParams, val); + distId_ = Util::maxUnsigned(); + assert (params_.size() == Util::expectedSize (ranges_)); } -Factor::Factor (VarId vid, unsigned nStates, const Params& params) +Factor::Factor ( + VarId vid, + unsigned nrStates, + const Params& params) { - varids_.push_back (vid); - ranges_.push_back (nStates); - dist_ = new Distribution (params); -} - - - -Factor::Factor (VarNodes& vars, Distribution* dist) -{ - for (unsigned i = 0; i < vars.size(); i++) { - varids_.push_back (vars[i]->varId()); - ranges_.push_back (vars[i]->nrStates()); - } - dist_ = dist; -} - - - -Factor::Factor (const VarNodes& vars, const Params& params) -{ - for (unsigned i = 0; i < vars.size(); i++) { - varids_.push_back (vars[i]->varId()); - ranges_.push_back (vars[i]->nrStates()); - } - dist_ = new Distribution (params); -} - - - -Factor::Factor (const VarIds& vids, - const Ranges& ranges, - const Params& params) -{ - varids_ = vids; - ranges_ = ranges; - dist_ = new Distribution (params); -} - - - -Factor::~Factor (void) -{ - if (dist_->shared() == false) { - delete dist_; - } -} - - - -void -Factor::setParameters (const Params& params) -{ - assert (dist_->params.size() == params.size()); - dist_->params = params; -} - - - -void -Factor::copyFromFactor (const Factor& g) -{ - varids_ = g.getVarIds(); - ranges_ = g.getRanges(); - dist_ = new Distribution (g.getParameters()); -} - - - -void -Factor::multiply (const Factor& g) -{ - if (varids_.size() == 0) { - copyFromFactor (g); - return; - } - - const VarIds& g_varids = g.getVarIds(); - const Ranges& g_ranges = g.getRanges(); - const Params& g_params = g.getParameters(); - - if (varids_ == g_varids) { - // optimization: if the factors contain the same set of variables, - // we can do a 1 to 1 operation on the parameters - if (Globals::logDomain) { - Util::add (dist_->params, g_params); - } else { - Util::multiply (dist_->params, g_params); - } - } else { - bool sharedVars = false; - vector gvarpos; - for (unsigned i = 0; i < g_varids.size(); i++) { - int idx = indexOf (g_varids[i]); - if (idx == -1) { - insertVariable (g_varids[i], g_ranges[i]); - gvarpos.push_back (varids_.size() - 1); - } else { - sharedVars = true; - gvarpos.push_back (idx); - } - } - if (sharedVars == false) { - // optimization: if the original factors doesn't have common variables, - // we don't need to marry the states of the common variables - unsigned count = 0; - for (unsigned i = 0; i < dist_->params.size(); i++) { - if (Globals::logDomain) { - dist_->params[i] += g_params[count]; - } else { - dist_->params[i] *= g_params[count]; - } - count ++; - if (count >= g_params.size()) { - count = 0; - } - } - } else { - StatesIndexer indexer (ranges_, false); - while (indexer.valid()) { - unsigned g_li = 0; - unsigned prod = 1; - for (int j = gvarpos.size() - 1; j >= 0; j--) { - g_li += indexer[gvarpos[j]] * prod; - prod *= g_ranges[j]; - } - if (Globals::logDomain) { - dist_->params[indexer] += g_params[g_li]; - } else { - dist_->params[indexer] *= g_params[g_li]; - } - ++ indexer; - } - } - } -} - - - -void -Factor::insertVariable (VarId varId, unsigned nrStates) -{ - assert (indexOf (varId) == -1); - Params oldParams = dist_->params; - dist_->params.clear(); - dist_->params.reserve (oldParams.size() * nrStates); - for (unsigned i = 0; i < oldParams.size(); i++) { - for (unsigned reps = 0; reps < nrStates; reps++) { - dist_->params.push_back (oldParams[i]); - } - } - varids_.push_back (varId); + args_.push_back (vid); ranges_.push_back (nrStates); + params_ = params; + distId_ = Util::maxUnsigned(); + assert (params_.size() == Util::expectedSize (ranges_)); } -void -Factor::insertVariables (const VarIds& varIds, const Ranges& ranges) +Factor::Factor ( + const VarNodes& vars, + const Params& params, + unsigned distId) { - Params oldParams = dist_->params; - unsigned nrStates = 1; - for (unsigned i = 0; i < varIds.size(); i++) { - assert (indexOf (varIds[i]) == -1); - varids_.push_back (varIds[i]); - ranges_.push_back (ranges[i]); - nrStates *= ranges[i]; - } - dist_->params.clear(); - dist_->params.reserve (oldParams.size() * nrStates); - for (unsigned i = 0; i < oldParams.size(); i++) { - for (unsigned reps = 0; reps < nrStates; reps++) { - dist_->params.push_back (oldParams[i]); - } + for (unsigned i = 0; i < vars.size(); i++) { + args_.push_back (vars[i]->varId()); + ranges_.push_back (vars[i]->nrStates()); } + params_ = params; + distId_ = distId; + assert (params_.size() == Util::expectedSize (ranges_)); +} + + + +Factor::Factor ( + const VarIds& vids, + const Ranges& ranges, + const Params& params) +{ + args_ = vids; + ranges_ = ranges; + params_ = params; + distId_ = Util::maxUnsigned(); + assert (params_.size() == Util::expectedSize (ranges_)); } @@ -226,10 +93,10 @@ void Factor::sumOutAllExcept (VarId vid) { assert (indexOf (vid) != -1); - while (varids_.back() != vid) { + while (args_.back() != vid) { sumOutLastVariable(); } - while (varids_.front() != vid) { + while (args_.front() != vid) { sumOutFirstVariable(); } } @@ -239,9 +106,10 @@ Factor::sumOutAllExcept (VarId vid) void Factor::sumOutAllExcept (const VarIds& vids) { - for (unsigned i = 0; i < varids_.size(); i++) { - if (std::find (vids.begin(), vids.end(), varids_[i]) == vids.end()) { - sumOut (varids_[i]); + for (int i = 0; i < (int)args_.size(); i++) { + if (Util::contains (vids, args_[i]) == false) { + sumOut (args_[i]); + i --; } } } @@ -254,11 +122,11 @@ Factor::sumOut (VarId vid) int idx = indexOf (vid); assert (idx != -1); - if (vid == varids_.back()) { + if (vid == args_.back()) { sumOutLastVariable(); // optimization return; } - if (vid == varids_.front()) { + if (vid == args_.front()) { sumOutFirstVariable(); // optimization return; } @@ -271,7 +139,7 @@ Factor::sumOut (VarId vid) // on the left of `var', with the states of the remaining vars fixed unsigned leftVarOffset = 1; - for (int i = varids_.size() - 1; i > idx; i--) { + for (int i = args_.size() - 1; i > idx; i--) { varOffset *= ranges_[i]; leftVarOffset *= ranges_[i]; } @@ -280,25 +148,24 @@ Factor::sumOut (VarId vid) unsigned offset = 0; unsigned count1 = 0; unsigned count2 = 0; - unsigned newpsSize = dist_->params.size() / ranges_[idx]; + unsigned newpsSize = params_.size() / ranges_[idx]; Params newps; newps.reserve (newpsSize); - Params& params = dist_->params; while (newps.size() < newpsSize) { - double sum = Util::addIdenty(); + double sum = LogAware::addIdenty(); for (unsigned i = 0; i < ranges_[idx]; i++) { if (Globals::logDomain) { - Util::logSum (sum, params[offset]); + sum = Util::logSum (sum, params_[offset]); } else { - sum += params[offset]; + sum += params_[offset]; } offset += varOffset; } newps.push_back (sum); count1 ++; - if (idx == (int)varids_.size() - 1) { + if (idx == (int)args_.size() - 1) { offset = count1 * ranges_[idx]; } else { if (((offset - varOffset + 1) % leftVarOffset) == 0) { @@ -308,9 +175,9 @@ Factor::sumOut (VarId vid) offset = (leftVarOffset * count2) + count1; } } - varids_.erase (varids_.begin() + idx); + args_.erase (args_.begin() + idx); ranges_.erase (ranges_.begin() + idx); - dist_->params = newps; + params_ = newps; } @@ -318,20 +185,19 @@ Factor::sumOut (VarId vid) void Factor::sumOutFirstVariable (void) { - Params& params = dist_->params; unsigned nStates = ranges_.front(); - unsigned sep = params.size() / nStates; + unsigned sep = params_.size() / nStates; if (Globals::logDomain) { - for (unsigned i = sep; i < params.size(); i++) { - Util::logSum (params[i % sep], params[i]); + for (unsigned i = sep; i < params_.size(); i++) { + params_[i % sep] = Util::logSum (params_[i % sep], params_[i]); } } else { - for (unsigned i = sep; i < params.size(); i++) { - params[i % sep] += params[i]; + for (unsigned i = sep; i < params_.size(); i++) { + params_[i % sep] += params_[i]; } } - params.resize (sep); - varids_.erase (varids_.begin()); + params_.resize (sep); + args_.erase (args_.begin()); ranges_.erase (ranges_.begin()); } @@ -340,143 +206,56 @@ Factor::sumOutFirstVariable (void) void Factor::sumOutLastVariable (void) { - Params& params = dist_->params; unsigned nStates = ranges_.back(); unsigned idx1 = 0; unsigned idx2 = 0; if (Globals::logDomain) { - while (idx1 < params.size()) { - params[idx2] = params[idx1]; + while (idx1 < params_.size()) { + params_[idx2] = params_[idx1]; idx1 ++; for (unsigned j = 1; j < nStates; j++) { - Util::logSum (params[idx2], params[idx1]); + params_[idx2] = Util::logSum (params_[idx2], params_[idx1]); idx1 ++; } idx2 ++; } } else { - while (idx1 < params.size()) { - params[idx2] = params[idx1]; + while (idx1 < params_.size()) { + params_[idx2] = params_[idx1]; idx1 ++; for (unsigned j = 1; j < nStates; j++) { - params[idx2] += params[idx1]; + params_[idx2] += params_[idx1]; idx1 ++; } idx2 ++; } } - params.resize (idx2); - varids_.pop_back(); + params_.resize (idx2); + args_.pop_back(); ranges_.pop_back(); } void -Factor::orderVariables (void) +Factor::multiply (Factor& g) { - VarIds sortedVarIds = varids_; - sort (sortedVarIds.begin(), sortedVarIds.end()); - reorderVariables (sortedVarIds); -} - - - -void -Factor::reorderVariables (const VarIds& newVarIds) -{ - assert (newVarIds.size() == varids_.size()); - if (newVarIds == varids_) { + if (args_.size() == 0) { + copyFromFactor (g); return; } - - Ranges newRanges; - vector positions; - for (unsigned i = 0; i < newVarIds.size(); i++) { - unsigned idx = indexOf (newVarIds[i]); - newRanges.push_back (ranges_[idx]); - positions.push_back (idx); - } - - unsigned N = ranges_.size(); - Params newParams (dist_->params.size()); - for (unsigned i = 0; i < dist_->params.size(); i++) { - unsigned li = i; - // calculate vector index corresponding to linear index - vector vi (N); - for (int k = N-1; k >= 0; k--) { - vi[k] = li % ranges_[k]; - li /= ranges_[k]; - } - // convert permuted vector index to corresponding linear index - unsigned prod = 1; - unsigned new_li = 0; - for (int k = N-1; k >= 0; k--) { - new_li += vi[positions[k]] * prod; - prod *= ranges_[positions[k]]; - } - newParams[new_li] = dist_->params[i]; - } - varids_ = newVarIds; - ranges_ = newRanges; - dist_->params = newParams; + TFactor::multiply (g); + cout << "Factor mult called" << endl; } void -Factor::absorveEvidence (VarId vid, unsigned evidence) +Factor::reorderAccordingVarIds (void) { - int idx = indexOf (vid); - assert (idx != -1); - - Params oldParams = dist_->params; - dist_->params.clear(); - dist_->params.reserve (oldParams.size() / ranges_[idx]); - StatesIndexer indexer (ranges_); - for (unsigned i = 0; i < evidence; i++) { - indexer.increment (idx); - } - while (indexer.valid()) { - dist_->params.push_back (oldParams[indexer]); - indexer.incrementExcluding (idx); - } - varids_.erase (varids_.begin() + idx); - ranges_.erase (ranges_.begin() + idx); -} - - - -void -Factor::normalize (void) -{ - Util::normalize (dist_->params); -} - - - -bool -Factor::contains (const VarIds& vars) const -{ - for (unsigned i = 0; i < vars.size(); i++) { - if (indexOf (vars[i]) == -1) { - return false; - } - } - return true; -} - - - -int -Factor::indexOf (VarId vid) const -{ - for (unsigned i = 0; i < varids_.size(); i++) { - if (varids_[i] == vid) { - return i; - } - } - return -1; + VarIds sortedVarIds = args_; + sort (sortedVarIds.begin(), sortedVarIds.end()); + reorderArguments (sortedVarIds); } @@ -486,9 +265,9 @@ Factor::getLabel (void) const { stringstream ss; ss << "f(" ; - for (unsigned i = 0; i < varids_.size(); i++) { + for (unsigned i = 0; i < args_.size(); i++) { if (i != 0) ss << "," ; - ss << VarNode (varids_[i], ranges_[i]).label(); + ss << VarNode (args_[i], ranges_[i]).label(); } ss << ")" ; return ss.str(); @@ -500,13 +279,13 @@ void Factor::print (void) const { VarNodes vars; - for (unsigned i = 0; i < varids_.size(); i++) { - vars.push_back (new VarNode (varids_[i], ranges_[i])); + for (unsigned i = 0; i < args_.size(); i++) { + vars.push_back (new VarNode (args_[i], ranges_[i])); } vector jointStrings = Util::getJointStateStrings (vars); - for (unsigned i = 0; i < dist_->params.size(); i++) { + for (unsigned i = 0; i < params_.size(); i++) { cout << "f(" << jointStrings[i] << ")" ; - cout << " = " << dist_->params[i] << endl; + cout << " = " << params_[i] << endl; } cout << endl; for (unsigned i = 0; i < vars.size(); i++) { @@ -515,3 +294,13 @@ Factor::print (void) const } + +void +Factor::copyFromFactor (const Factor& g) +{ + args_ = g.arguments(); + ranges_ = g.ranges(); + params_ = g.params(); + distId_ = g.distId(); +} + diff --git a/packages/CLPBN/clpbn/bp/Factor.h b/packages/CLPBN/clpbn/bp/Factor.h index f5fdc7123..1956eb04a 100644 --- a/packages/CLPBN/clpbn/bp/Factor.h +++ b/packages/CLPBN/clpbn/bp/Factor.h @@ -3,64 +3,287 @@ #include -#include "Distribution.h" #include "VarNode.h" +#include "Indexer.h" +#include "Util.h" using namespace std; -class Distribution; + +template +class TFactor +{ + public: + const vector& arguments (void) const { return args_; } + + vector& arguments (void) { return args_; } + + const Ranges& ranges (void) const { return ranges_; } + + const Params& params (void) const { return params_; } + + Params& params (void) { return params_; } + + unsigned nrArguments (void) const { return args_.size(); } + + unsigned size (void) const { return params_.size(); } + + unsigned distId (void) const { return distId_; } + + void setDistId (unsigned id) { distId_ = id; } + + void setParams (const Params& newParams) + { + params_ = newParams; + assert (params_.size() == Util::expectedSize (ranges_)); + } + + void normalize (void) + { + LogAware::normalize (params_); + } + + int indexOf (const T& t) const + { + int idx = -1; + for (unsigned i = 0; i < args_.size(); i++) { + if (args_[i] == t) { + idx = i; + break; + } + } + return idx; + } + + const T& argument (unsigned idx) const + { + assert (idx < args_.size()); + return args_[idx]; + } + + unsigned range (unsigned idx) const + { + assert (idx < ranges_.size()); + return ranges_[idx]; + } + + void multiply (TFactor& g) + { + const vector& g_args = g.arguments(); + const Ranges& g_ranges = g.ranges(); + const Params& g_params = g.params(); + if (args_ == g_args) { + // optimization: if the factors contain the same set of args, + // we can do a 1 to 1 operation on the parameters + if (Globals::logDomain) { + Util::add (params_, g_params); + } else { + Util::multiply (params_, g_params); + } + } else { + bool sharedArgs = false; + vector gvarpos; + for (unsigned i = 0; i < g_args.size(); i++) { + int idx = indexOf (g_args[i]); + if (idx == -1) { + insertArgument (g_args[i], g_ranges[i]); + gvarpos.push_back (args_.size() - 1); + } else { + sharedArgs = true; + gvarpos.push_back (idx); + } + } + if (sharedArgs == false) { + // optimization: if the original factors doesn't have common args, + // we don't need to marry the states of the common args + unsigned count = 0; + for (unsigned i = 0; i < params_.size(); i++) { + if (Globals::logDomain) { + params_[i] += g_params[count]; + } else { + params_[i] *= g_params[count]; + } + count ++; + if (count >= g_params.size()) { + count = 0; + } + } + } else { + StatesIndexer indexer (ranges_, false); + while (indexer.valid()) { + unsigned g_li = 0; + unsigned prod = 1; + for (int j = gvarpos.size() - 1; j >= 0; j--) { + g_li += indexer[gvarpos[j]] * prod; + prod *= g_ranges[j]; + } + if (Globals::logDomain) { + params_[indexer] += g_params[g_li]; + } else { + params_[indexer] *= g_params[g_li]; + } + ++ indexer; + } + } + } + } + + void absorveEvidence (const T& arg, unsigned evidence) + { + int idx = indexOf (arg); + assert (idx != -1); + assert (evidence < ranges_[idx]); + Params copy = params_; + params_.clear(); + params_.reserve (copy.size() / ranges_[idx]); + StatesIndexer indexer (ranges_); + for (unsigned i = 0; i < evidence; i++) { + indexer.increment (idx); + } + while (indexer.valid()) { + params_.push_back (copy[indexer]); + indexer.incrementExcluding (idx); + } + args_.erase (args_.begin() + idx); + ranges_.erase (ranges_.begin() + idx); + } + + void reorderArguments (const vector newArgs) + { + assert (newArgs.size() == args_.size()); + if (newArgs == args_) { + return; // already in the wanted order + } + Ranges newRanges; + vector positions; + for (unsigned i = 0; i < newArgs.size(); i++) { + unsigned idx = indexOf (newArgs[i]); + newRanges.push_back (ranges_[idx]); + positions.push_back (idx); + } + unsigned N = ranges_.size(); + Params newParams (params_.size()); + for (unsigned i = 0; i < params_.size(); i++) { + unsigned li = i; + // calculate vector index corresponding to linear index + vector vi (N); + for (int k = N-1; k >= 0; k--) { + vi[k] = li % ranges_[k]; + li /= ranges_[k]; + } + // convert permuted vector index to corresponding linear index + unsigned prod = 1; + unsigned new_li = 0; + for (int k = N - 1; k >= 0; k--) { + new_li += vi[positions[k]] * prod; + prod *= ranges_[positions[k]]; + } + newParams[new_li] = params_[i]; + } + args_ = newArgs; + ranges_ = newRanges; + params_ = newParams; + } + + bool contains (const T& arg) const + { + return Util::contains (args_, arg); + } + + bool contains (const vector& args) const + { + for (unsigned i = 0; i < args_.size(); i++) { + if (contains (args[i]) == false) { + return false; + } + } + return true; + } + + protected: + vector args_; + Ranges ranges_; + Params params_; + unsigned distId_; + + private: + void insertArgument (const T& arg, unsigned range) + { + assert (indexOf (arg) == -1); + Params copy = params_; + params_.clear(); + params_.reserve (copy.size() * range); + for (unsigned i = 0; i < copy.size(); i++) { + for (unsigned reps = 0; reps < range; reps++) { + params_.push_back (copy[i]); + } + } + args_.push_back (arg); + ranges_.push_back (range); + } + + void insertArguments (const vector& args, const Ranges& ranges) + { + Params copy = params_; + unsigned nrStates = 1; + for (unsigned i = 0; i < args.size(); i++) { + assert (indexOf (args[i]) == -1); + args_.push_back (args[i]); + ranges_.push_back (ranges[i]); + nrStates *= ranges[i]; + } + params_.clear(); + params_.reserve (copy.size() * nrStates); + for (unsigned i = 0; i < copy.size(); i++) { + for (unsigned reps = 0; reps < nrStates; reps++) { + params_.push_back (copy[i]); + } + } + } +}; -class Factor + +class Factor : public TFactor { public: Factor (void) { } + Factor (const Factor&); + Factor (VarId, unsigned); + Factor (const VarNodes&); + Factor (VarId, unsigned, const Params&); - Factor (VarNodes&, Distribution*); - Factor (const VarNodes&, const Params&); + + Factor (const VarNodes&, const Params&, + unsigned = Util::maxUnsigned()); + Factor (const VarIds&, const Ranges&, const Params&); - ~Factor (void); - void setParameters (const Params&); - void copyFromFactor (const Factor& f); - void multiply (const Factor&); - void insertVariable (VarId, unsigned); - void insertVariables (const VarIds&, const Ranges&); - void sumOutAllExcept (VarId); - void sumOutAllExcept (const VarIds&); - void sumOut (VarId); - void sumOutFirstVariable (void); - void sumOutLastVariable (void); - void orderVariables (void); - void reorderVariables (const VarIds&); - void absorveEvidence (VarId, unsigned); - void normalize (void); - bool contains (const VarIds&) const; - int indexOf (VarId) const; - string getLabel (void) const; - void print (void) const; + void sumOutAllExcept (VarId); - const VarIds& getVarIds (void) const { return varids_; } - const Ranges& getRanges (void) const { return ranges_; } - const Params& getParameters (void) const { return dist_->params; } - Distribution* getDistribution (void) const { return dist_; } - unsigned nrVariables (void) const { return varids_.size(); } - unsigned nrParameters() const { return dist_->params.size(); } + void sumOutAllExcept (const VarIds&); - void setDistribution (Distribution* dist) - { - dist_ = dist; - } + void sumOut (VarId); + + void sumOutFirstVariable (void); + + void sumOutLastVariable (void); + + void multiply (Factor&); + + void reorderAccordingVarIds (void); + + string getLabel (void) const; + + void print (void) const; private: + void copyFromFactor (const Factor& f); - VarIds varids_; - Ranges ranges_; - Distribution* dist_; }; #endif // HORUS_FACTOR_H diff --git a/packages/CLPBN/clpbn/bp/FactorGraph.cpp b/packages/CLPBN/clpbn/bp/FactorGraph.cpp index 995f5dc8e..b9308df61 100644 --- a/packages/CLPBN/clpbn/bp/FactorGraph.cpp +++ b/packages/CLPBN/clpbn/bp/FactorGraph.cpp @@ -53,10 +53,10 @@ FactorGraph::FactorGraph (const BayesNet& bn) neighs.push_back (varNodes_[parents[j]->getIndex()]); } FgFacNode* fn = new FgFacNode ( - new Factor (neighs, nodes[i]->getDistribution())); + new Factor (neighs, nodes[i]->params(), nodes[i]->distId())); if (orderFactorVariables) { sort (neighs.begin(), neighs.end(), CompVarId()); - fn->factor()->orderVariables(); + fn->factor()->reorderAccordingVarIds(); } addFactor (fn); for (unsigned j = 0; j < neighs.size(); j++) { @@ -131,10 +131,10 @@ FactorGraph::readFromUaiFormat (const char* fileName) while (is.peek() == '#' || is.peek() == '\n') getline (is, line); unsigned nParams; is >> nParams; - if (facNodes_[i]->getParameters().size() != nParams) { + if (facNodes_[i]->params().size() != nParams) { cerr << "error: invalid number of parameters for factor " ; cerr << facNodes_[i]->getLabel() ; - cerr << ", expected: " << facNodes_[i]->getParameters().size(); + cerr << ", expected: " << facNodes_[i]->params().size(); cerr << ", given: " << nParams << endl; abort(); } @@ -147,7 +147,7 @@ FactorGraph::readFromUaiFormat (const char* fileName) if (Globals::logDomain) { Util::toLog (params); } - facNodes_[i]->factor()->setParameters (params); + facNodes_[i]->factor()->setParams (params); } is.close(); setIndexes(); @@ -335,21 +335,6 @@ FactorGraph::setIndexes (void) -void -FactorGraph::freeDistributions (void) -{ - set dists; - for (unsigned i = 0; i < facNodes_.size(); i++) { - dists.insert (facNodes_[i]->factor()->getDistribution()); - } - for (set::iterator it = dists.begin(); - it != dists.end(); it++) { - delete *it; - } -} - - - void FactorGraph::printGraphicalModel (void) const { @@ -440,7 +425,7 @@ FactorGraph::exportToUaiFormat (const char* fileName) const } for (unsigned i = 0; i < facNodes_.size(); i++) { - Params params = facNodes_[i]->getParameters(); + Params params = facNodes_[i]->params(); if (Globals::logDomain) { Util::fromLog (params); } @@ -477,7 +462,7 @@ FactorGraph::exportToLibDaiFormat (const char* fileName) const out << factorVars[j]->nrStates() << " " ; } out << endl; - Params params = facNodes_[i]->factor()->getParameters(); + Params params = facNodes_[i]->factor()->params(); if (Globals::logDomain) { Util::fromLog (params); } diff --git a/packages/CLPBN/clpbn/bp/FactorGraph.h b/packages/CLPBN/clpbn/bp/FactorGraph.h index 27b114e8c..a2b009179 100644 --- a/packages/CLPBN/clpbn/bp/FactorGraph.h +++ b/packages/CLPBN/clpbn/bp/FactorGraph.h @@ -4,7 +4,6 @@ #include #include "GraphicalModel.h" -#include "Distribution.h" #include "Factor.h" #include "Horus.h" @@ -13,18 +12,21 @@ using namespace std; class BayesNet; class FgFacNode; + class FgVarNode : public VarNode { public: FgVarNode (VarId varId, unsigned nrStates) : VarNode (varId, nrStates) { } + FgVarNode (const VarNode* v) : VarNode (v) { } - void addNeighbor (FgFacNode* fn) { neighs_.push_back (fn); } - const FgFacSet& neighbors (void) const { return neighs_; } + void addNeighbor (FgFacNode* fn) { neighs_.push_back (fn); } + + const FgFacSet& neighbors (void) const { return neighs_; } private: DISALLOW_COPY_AND_ASSIGN (FgVarNode); - // members + FgFacSet neighs_; }; @@ -32,13 +34,18 @@ class FgVarNode : public VarNode class FgFacNode { public: - FgFacNode (const FgFacNode* fn) { + FgFacNode (const FgFacNode* fn) + { factor_ = new Factor (*fn->factor()); index_ = -1; } + FgFacNode (Factor* f) : factor_(new Factor(*f)), index_(-1) { } - Factor* factor() const { return factor_; } - void addNeighbor (FgVarNode* vn) { neighs_.push_back (vn); } + + Factor* factor() const { return factor_; } + + void addNeighbor (FgVarNode* vn) { neighs_.push_back (vn); } + const FgVarSet& neighbors (void) const { return neighs_; } int getIndex (void) const @@ -46,28 +53,28 @@ class FgFacNode assert (index_ != -1); return index_; } + void setIndex (int index) { index_ = index; } - Distribution* getDistribution (void) + + const Params& params (void) const { - return factor_->getDistribution(); - } - const Params& getParameters (void) const - { - return factor_->getParameters(); + return factor_->params(); } + string getLabel (void) { return factor_->getLabel(); } + private: DISALLOW_COPY_AND_ASSIGN (FgFacNode); - Factor* factor_; - int index_; - FgVarSet neighs_; + Factor* factor_; + FgVarSet neighs_; + int index_; }; @@ -83,29 +90,17 @@ struct CompVarId class FactorGraph : public GraphicalModel { public: - FactorGraph (void) {}; + FactorGraph (void) { }; + FactorGraph (const FactorGraph&); + FactorGraph (const BayesNet&); + ~FactorGraph (void); - void readFromUaiFormat (const char*); - void readFromLibDaiFormat (const char*); - void addVariable (FgVarNode*); - void addFactor (FgFacNode*); - void addEdge (FgVarNode*, FgFacNode*); - void addEdge (FgFacNode*, FgVarNode*); - VarNode* getVariableNode (unsigned) const; - VarNodes getVariableNodes (void) const; - bool isTree (void) const; - void setIndexes (void); - void freeDistributions (void); - void printGraphicalModel (void) const; - void exportToGraphViz (const char*) const; - void exportToUaiFormat (const char*) const; - void exportToLibDaiFormat (const char*) const; - - const FgVarSet& getVarNodes (void) const { return varNodes_; } - const FgFacSet& getFactorNodes (void) const { return facNodes_; } + const FgVarSet& getVarNodes (void) const { return varNodes_; } + + const FgFacSet& getFactorNodes (void) const { return facNodes_; } FgVarNode* getFgVarNode (VarId vid) const { @@ -117,21 +112,52 @@ class FactorGraph : public GraphicalModel } } + void readFromUaiFormat (const char*); + + void readFromLibDaiFormat (const char*); + + void addVariable (FgVarNode*); + + void addFactor (FgFacNode*); + + void addEdge (FgVarNode*, FgFacNode*); + + void addEdge (FgFacNode*, FgVarNode*); + + VarNode* getVariableNode (unsigned) const; + + VarNodes getVariableNodes (void) const; + + bool isTree (void) const; + + void setIndexes (void); + + void printGraphicalModel (void) const; + + void exportToGraphViz (const char*) const; + + void exportToUaiFormat (const char*) const; + + void exportToLibDaiFormat (const char*) const; + static bool orderFactorVariables; private: - //DISALLOW_COPY_AND_ASSIGN (FactorGraph); - bool containsCycle (void) const; - bool containsCycle (const FgVarNode*, const FgFacNode*, - vector&, vector&) const; - bool containsCycle (const FgFacNode*, const FgVarNode*, - vector&, vector&) const; + // DISALLOW_COPY_AND_ASSIGN (FactorGraph); - FgVarSet varNodes_; - FgFacSet facNodes_; + bool containsCycle (void) const; + + bool containsCycle (const FgVarNode*, const FgFacNode*, + vector&, vector&) const; + + bool containsCycle (const FgFacNode*, const FgVarNode*, + vector&, vector&) const; + + FgVarSet varNodes_; + FgFacSet facNodes_; typedef unordered_map IndexMap; - IndexMap varMap_; + IndexMap varMap_; }; #endif // HORUS_FACTORGRAPH_H diff --git a/packages/CLPBN/clpbn/bp/FgBpSolver.cpp b/packages/CLPBN/clpbn/bp/FgBpSolver.cpp index 6fe289edf..eaea65a16 100644 --- a/packages/CLPBN/clpbn/bp/FgBpSolver.cpp +++ b/packages/CLPBN/clpbn/bp/FgBpSolver.cpp @@ -38,11 +38,11 @@ void FgBpSolver::runSolver (void) { clock_t start; - if (COLLECT_STATISTICS) { + if (Constants::COLLECT_STATS) { start = clock(); } runLoopySolver(); - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << endl; if (nIters_ < BpOptions::maxIter) { cout << "Sum-Product converged in " ; @@ -53,18 +53,13 @@ FgBpSolver::runSolver (void) } } unsigned size = factorGraph_->getVarNodes().size(); - if (COLLECT_STATISTICS) { + if (Constants::COLLECT_STATS) { unsigned nIters = 0; bool loopy = factorGraph_->isTree() == false; if (loopy) nIters = nIters_; double time = (double (clock() - start)) / CLOCKS_PER_SEC; Statistics::updateStatistics (size, loopy, nIters, time); } - if (EXPORT_TO_GRAPHVIZ && size > EXPORT_MINIMAL_SIZE) { - stringstream ss; - ss << Statistics::getSolvedNetworksCounting() << "." << size << ".dot" ; - factorGraph_->exportToGraphViz (ss.str().c_str()); - } } @@ -76,22 +71,22 @@ FgBpSolver::getPosterioriOf (VarId vid) FgVarNode* var = factorGraph_->getFgVarNode (vid); Params probs; if (var->hasEvidence()) { - probs.resize (var->nrStates(), Util::noEvidence()); - probs[var->getEvidence()] = Util::withEvidence(); + probs.resize (var->nrStates(), LogAware::noEvidence()); + probs[var->getEvidence()] = LogAware::withEvidence(); } else { - probs.resize (var->nrStates(), Util::multIdenty()); + probs.resize (var->nrStates(), LogAware::multIdenty()); const SpLinkSet& links = ninf(var)->getLinks(); if (Globals::logDomain) { for (unsigned i = 0; i < links.size(); i++) { Util::add (probs, links[i]->getMessage()); } - Util::normalize (probs); + LogAware::normalize (probs); Util::fromLog (probs); } else { for (unsigned i = 0; i < links.size(); i++) { Util::multiply (probs, links[i]->getMessage()); } - Util::normalize (probs); + LogAware::normalize (probs); } } return probs; @@ -102,9 +97,9 @@ FgBpSolver::getPosterioriOf (VarId vid) Params FgBpSolver::getJointDistributionOf (const VarIds& jointVarIds) { + int idx = -1; FgVarNode* vn = factorGraph_->getFgVarNode (jointVarIds[0]); const FgFacSet& factorNodes = vn->neighbors(); - int idx = -1; for (unsigned i = 0; i < factorNodes.size(); i++) { if (factorNodes[i]->factor()->contains (jointVarIds)) { idx = i; @@ -114,18 +109,18 @@ FgBpSolver::getJointDistributionOf (const VarIds& jointVarIds) if (idx == -1) { return getJointByConditioning (jointVarIds); } else { - Factor r (*factorNodes[idx]->factor()); + Factor res (*factorNodes[idx]->factor()); const SpLinkSet& links = ninf(factorNodes[idx])->getLinks(); for (unsigned i = 0; i < links.size(); i++) { Factor msg (links[i]->getVariable()->varId(), links[i]->getVariable()->nrStates(), getVar2FactorMsg (links[i])); - r.multiply (msg); + res.multiply (msg); } - r.sumOutAllExcept (jointVarIds); - r.reorderVariables (jointVarIds); - r.normalize(); - Params jointDist = r.getParameters(); + res.sumOutAllExcept (jointVarIds); + res.reorderArguments (jointVarIds); + res.normalize(); + Params jointDist = res.params(); if (Globals::logDomain) { Util::fromLog (jointDist); } @@ -144,13 +139,8 @@ FgBpSolver::runLoopySolver (void) while (!converged() && nIters_ < BpOptions::maxIter) { nIters_ ++; - if (DL >= 2) { - cout << "****************************************" ; - cout << "****************************************" ; - cout << endl; - cout << " Iteration " << nIters_ << endl; - cout << "****************************************" ; - cout << "****************************************" ; + if (Constants::DEBUG >= 2) { + Util::printHeader (" Iteration " + nIters_); cout << endl; } @@ -178,7 +168,7 @@ FgBpSolver::runLoopySolver (void) maxResidualSchedule(); break; } - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << endl; } } @@ -256,12 +246,12 @@ FgBpSolver::converged (void) } else { for (unsigned i = 0; i < links_.size(); i++) { double residual = links_[i]->getResidual(); - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << links_[i]->toString() + " residual = " << residual << endl; } if (residual > BpOptions::accuracy) { converged = false; - if (DL == 0) break; + if (Constants::DEBUG == 0) break; } } } @@ -283,7 +273,7 @@ FgBpSolver::maxResidualSchedule (void) } for (unsigned c = 0; c < links_.size(); c++) { - if (DL >= 2) { + if (Constants::DEBUG >= 2) { cout << "current residuals:" << endl; for (SortedOrder::iterator it = sortedOrder_.begin(); it != sortedOrder_.end(); it ++) { @@ -317,9 +307,8 @@ FgBpSolver::maxResidualSchedule (void) } } } - if (DL >= 2) { - cout << "----------------------------------------" ; - cout << "----------------------------------------" << endl; + if (Constants::DEBUG >= 2) { + Util::printDashedLine(); } } } @@ -339,7 +328,7 @@ FgBpSolver::calculateFactor2VariableMsg (SpLink* link) const msgSize *= links[i]->getVariable()->nrStates(); } unsigned repetitions = 1; - Params msgProduct (msgSize, Util::multIdenty()); + Params msgProduct (msgSize, LogAware::multIdenty()); if (Globals::logDomain) { for (int i = links.size() - 1; i >= 0; i--) { if (links[i]->getVariable() != dst) { @@ -354,7 +343,7 @@ FgBpSolver::calculateFactor2VariableMsg (SpLink* link) const } else { for (int i = links.size() - 1; i >= 0; i--) { if (links[i]->getVariable() != dst) { - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " message from " << links[i]->getVariable()->label(); cout << ": " << endl; } @@ -368,34 +357,29 @@ FgBpSolver::calculateFactor2VariableMsg (SpLink* link) const } } - Factor result (src->factor()->getVarIds(), - src->factor()->getRanges(), + Factor result (src->factor()->arguments(), + src->factor()->ranges(), msgProduct); result.multiply (*(src->factor())); - if (DL >= 5) { - cout << " message product: " ; - cout << Util::parametersToString (msgProduct) << endl; - cout << " original factor: " ; - cout << Util::parametersToString (src->getParameters()) << endl; - cout << " factor product: " ; - cout << Util::parametersToString (result.getParameters()) << endl; + if (Constants::DEBUG >= 5) { + cout << " message product: " << msgProduct << endl; + cout << " original factor: " << src->params() << endl; + cout << " factor product: " << result.params() << endl; } result.sumOutAllExcept (dst->varId()); - if (DL >= 5) { + if (Constants::DEBUG >= 5) { cout << " marginalized: " ; - cout << Util::parametersToString (result.getParameters()) << endl; + cout << result.params() << endl; } - const Params& resultParams = result.getParameters(); + const Params& resultParams = result.params(); Params& message = link->getNextMessage(); for (unsigned i = 0; i < resultParams.size(); i++) { message[i] = resultParams[i]; } - Util::normalize (message); - if (DL >= 5) { - cout << " curr msg: " ; - cout << Util::parametersToString (link->getMessage()) << endl; - cout << " next msg: " ; - cout << Util::parametersToString (message) << endl; + LogAware::normalize (message); + if (Constants::DEBUG >= 5) { + cout << " curr msg: " << link->getMessage() << endl; + cout << " next msg: " << message << endl; } } @@ -408,16 +392,16 @@ FgBpSolver::getVar2FactorMsg (const SpLink* link) const const FgFacNode* dst = link->getFactor(); Params msg; if (src->hasEvidence()) { - msg.resize (src->nrStates(), Util::noEvidence()); - msg[src->getEvidence()] = Util::withEvidence(); - if (DL >= 5) { - cout << Util::parametersToString (msg); + msg.resize (src->nrStates(), LogAware::noEvidence()); + msg[src->getEvidence()] = LogAware::withEvidence(); + if (Constants::DEBUG >= 5) { + cout << msg; } } else { - msg.resize (src->nrStates(), Util::one()); + msg.resize (src->nrStates(), LogAware::one()); } - if (DL >= 5) { - cout << Util::parametersToString (msg); + if (Constants::DEBUG >= 5) { + cout << msg; } const SpLinkSet& links = ninf (src)->getLinks(); if (Globals::logDomain) { @@ -430,14 +414,14 @@ FgBpSolver::getVar2FactorMsg (const SpLink* link) const for (unsigned i = 0; i < links.size(); i++) { if (links[i]->getFactor() != dst) { Util::multiply (msg, links[i]->getMessage()); - if (DL >= 5) { - cout << " x " << Util::parametersToString (links[i]->getMessage()); + if (Constants::DEBUG >= 5) { + cout << " x " << links[i]->getMessage(); } } } } - if (DL >= 5) { - cout << " = " << Util::parametersToString (msg); + if (Constants::DEBUG >= 5) { + cout << " = " << msg; } return msg; } @@ -503,9 +487,9 @@ FgBpSolver::printLinkInformation (void) const SpLink* l = links_[i]; cout << l->toString() << ":" << endl; cout << " curr msg = " ; - cout << Util::parametersToString (l->getMessage()) << endl; + cout << l->getMessage() << endl; cout << " next msg = " ; - cout << Util::parametersToString (l->getNextMessage()) << endl; + cout << l->getNextMessage() << endl; cout << " residual = " << l->getResidual() << endl; } } diff --git a/packages/CLPBN/clpbn/bp/FgBpSolver.h b/packages/CLPBN/clpbn/bp/FgBpSolver.h index 9b0b07c0e..751572f42 100644 --- a/packages/CLPBN/clpbn/bp/FgBpSolver.h +++ b/packages/CLPBN/clpbn/bp/FgBpSolver.h @@ -13,7 +13,6 @@ using namespace std; - class SpLink { public: @@ -21,15 +20,34 @@ class SpLink { fac_ = fn; var_ = vn; - v1_.resize (vn->nrStates(), Util::tl (1.0 / vn->nrStates())); - v2_.resize (vn->nrStates(), Util::tl (1.0 / vn->nrStates())); + v1_.resize (vn->nrStates(), LogAware::tl (1.0 / vn->nrStates())); + v2_.resize (vn->nrStates(), LogAware::tl (1.0 / vn->nrStates())); currMsg_ = &v1_; nextMsg_ = &v2_; msgSended_ = false; residual_ = 0.0; } - virtual ~SpLink (void) {}; + virtual ~SpLink (void) { }; + + FgFacNode* getFactor (void) const { return fac_; } + + FgVarNode* getVariable (void) const { return var_; } + + const Params& getMessage (void) const { return *currMsg_; } + + Params& getNextMessage (void) { return *nextMsg_; } + + bool messageWasSended (void) const { return msgSended_; } + + double getResidual (void) const { return residual_; } + + void clearResidual (void) { residual_ = 0.0; } + + void updateResidual (void) + { + residual_ = LogAware::getMaxNorm (v1_,v2_); + } virtual void updateMessage (void) { @@ -37,11 +55,6 @@ class SpLink msgSended_ = true; } - void updateResidual (void) - { - residual_ = Util::getMaxNorm (v1_, v2_); - } - string toString (void) const { stringstream ss; @@ -50,38 +63,28 @@ class SpLink ss << var_->label(); return ss.str(); } - - FgFacNode* getFactor (void) const { return fac_; } - FgVarNode* getVariable (void) const { return var_; } - const Params& getMessage (void) const { return *currMsg_; } - Params& getNextMessage (void) { return *nextMsg_; } - bool messageWasSended (void) const { return msgSended_; } - double getResidual (void) const { return residual_; } - void clearResidual (void) { residual_ = 0.0; } protected: - FgFacNode* fac_; - FgVarNode* var_; - Params v1_; - Params v2_; - Params* currMsg_; - Params* nextMsg_; - bool msgSended_; - double residual_; + FgFacNode* fac_; + FgVarNode* var_; + Params v1_; + Params v2_; + Params* currMsg_; + Params* nextMsg_; + bool msgSended_; + double residual_; }; - typedef vector SpLinkSet; class SPNodeInfo { public: - void addSpLink (SpLink* link) { links_.push_back (link); } - const SpLinkSet& getLinks (void) { return links_; } - + void addSpLink (SpLink* link) { links_.push_back (link); } + const SpLinkSet& getLinks (void) { return links_; } private: - SpLinkSet links_; + SpLinkSet links_; }; @@ -89,51 +92,29 @@ class FgBpSolver : public Solver { public: FgBpSolver (const FactorGraph&); + virtual ~FgBpSolver (void); - void runSolver (void); - virtual Params getPosterioriOf (VarId); - virtual Params getJointDistributionOf (const VarIds&); + void runSolver (void); + + virtual Params getPosterioriOf (VarId); + + virtual Params getJointDistributionOf (const VarIds&); protected: - virtual void initializeSolver (void); - virtual void createLinks (void); - virtual void maxResidualSchedule (void); - virtual void calculateFactor2VariableMsg (SpLink*) const; - virtual Params getVar2FactorMsg (const SpLink*) const; - virtual Params getJointByConditioning (const VarIds&) const; - virtual void printLinkInformation (void) const; + virtual void initializeSolver (void); - void calculateAndUpdateMessage (SpLink* link, bool calcResidual = true) - { - if (DL >= 3) { - cout << "calculating & updating " << link->toString() << endl; - } - calculateFactor2VariableMsg (link); - if (calcResidual) { - link->updateResidual(); - } - link->updateMessage(); - } + virtual void createLinks (void); - void calculateMessage (SpLink* link, bool calcResidual = true) - { - if (DL >= 3) { - cout << "calculating " << link->toString() << endl; - } - calculateFactor2VariableMsg (link); - if (calcResidual) { - link->updateResidual(); - } - } + virtual void maxResidualSchedule (void); - void updateMessage (SpLink* link) - { - link->updateMessage(); - if (DL >= 3) { - cout << "updating " << link->toString() << endl; - } - } + virtual void calculateFactor2VariableMsg (SpLink*) const; + + virtual Params getVar2FactorMsg (const SpLink*) const; + + virtual Params getJointByConditioning (const VarIds&) const; + + virtual void printLinkInformation (void) const; SPNodeInfo* ninf (const FgVarNode* var) const { @@ -145,7 +126,39 @@ class FgBpSolver : public Solver return facsI_[fac->getIndex()]; } - struct CompareResidual { + void calculateAndUpdateMessage (SpLink* link, bool calcResidual = true) + { + if (Constants::DEBUG >= 3) { + cout << "calculating & updating " << link->toString() << endl; + } + calculateFactor2VariableMsg (link); + if (calcResidual) { + link->updateResidual(); + } + link->updateMessage(); + } + + void calculateMessage (SpLink* link, bool calcResidual = true) + { + if (Constants::DEBUG >= 3) { + cout << "calculating " << link->toString() << endl; + } + calculateFactor2VariableMsg (link); + if (calcResidual) { + link->updateResidual(); + } + } + + void updateMessage (SpLink* link) + { + link->updateMessage(); + if (Constants::DEBUG >= 3) { + cout << "updating " << link->toString() << endl; + } + } + + struct CompareResidual + { inline bool operator() (const SpLink* link1, const SpLink* link2) { return link1->getResidual() > link2->getResidual(); @@ -165,10 +178,8 @@ class FgBpSolver : public Solver SpLinkMap linkMap_; private: - void runLoopySolver (void); - bool converged (void); - - + void runLoopySolver (void); + bool converged (void); }; #endif // HORUS_FGBPSOLVER_H diff --git a/packages/CLPBN/clpbn/bp/FoveSolver.cpp b/packages/CLPBN/clpbn/bp/FoveSolver.cpp index 45ec109db..854348967 100644 --- a/packages/CLPBN/clpbn/bp/FoveSolver.cpp +++ b/packages/CLPBN/clpbn/bp/FoveSolver.cpp @@ -8,7 +8,9 @@ vector -LiftedOperator::getValidOps (ParfactorList& pfList, const Grounds& query) +LiftedOperator::getValidOps ( + ParfactorList& pfList, + const Grounds& query) { vector validOps; vector sumOutOps; @@ -28,12 +30,15 @@ LiftedOperator::getValidOps (ParfactorList& pfList, const Grounds& query) void -LiftedOperator::printValidOps (ParfactorList& pfList, const Grounds& query) +LiftedOperator::printValidOps ( + ParfactorList& pfList, + const Grounds& query) { vector validOps; validOps = LiftedOperator::getValidOps (pfList, query); for (unsigned i = 0; i < validOps.size(); i++) { cout << "-> " << validOps[i]->toString() << endl; + delete validOps[i]; } } @@ -56,14 +61,14 @@ SumOutOperator::getCost (void) pfIter = pfList_.begin(); while (pfIter != pfList_.end()) { if ((*pfIter)->containsGroup (groupSet[i])) { - int idx = (*pfIter)->indexOfFormulaWithGroup (groupSet[i]); + int idx = (*pfIter)->indexOfGroup (groupSet[i]); cost *= (*pfIter)->range (idx); break; } ++ pfIter; } } - return cost; + return cost; } @@ -77,14 +82,13 @@ SumOutOperator::apply (void) pfList_.remove (iters[0]); for (unsigned i = 1; i < iters.size(); i++) { product->multiply (**(iters[i])); - delete *(iters[i]); - pfList_.remove (iters[i]); + pfList_.removeAndDelete (iters[i]); } - if (product->nrFormulas() == 1) { + if (product->nrArguments() == 1) { delete product; return; } - int fIdx = product->indexOfFormulaWithGroup (group_); + int fIdx = product->indexOfGroup (group_); LogVarSet excl = product->exclusiveLogVars (fIdx); if (product->constr()->isCountNormalized (excl)) { product->sumOut (fIdx); @@ -96,21 +100,21 @@ SumOutOperator::apply (void) pfList_.add (pfs[i]); } delete product; - pfList_.shatter(); } } vector -SumOutOperator::getValidOps (ParfactorList& pfList, const Grounds& query) +SumOutOperator::getValidOps ( + ParfactorList& pfList, + const Grounds& query) { vector validOps; set allGroups; ParfactorList::const_iterator it = pfList.begin(); while (it != pfList.end()) { - assert (*it); - const ProbFormulas& formulas = (*it)->formulas(); + const ProbFormulas& formulas = (*it)->arguments(); for (unsigned i = 0; i < formulas.size(); i++) { allGroups.insert (formulas[i].group()); } @@ -134,8 +138,8 @@ SumOutOperator::toString (void) stringstream ss; vector pfIters; pfIters = parfactorsWithGroup (pfList_, group_); - int idx = (*pfIters[0])->indexOfFormulaWithGroup (group_); - ProbFormula f = (*pfIters[0])->formula (idx); + int idx = (*pfIters[0])->indexOfGroup (group_); + ProbFormula f = (*pfIters[0])->argument (idx); TupleSet tupleSet = (*pfIters[0])->constr()->tupleSet (f.logVars()); ss << "sum out " << f.functor() << "/" << f.arity(); ss << "|" << tupleSet << " (group " << group_ << ")"; @@ -158,9 +162,9 @@ SumOutOperator::validOp ( } unordered_map groupToRange; for (unsigned i = 0; i < pfIters.size(); i++) { - int fIdx = (*pfIters[i])->indexOfFormulaWithGroup (group); - if ((*pfIters[i])->formulas()[fIdx].contains ( - (*pfIters[i])->elimLogVars()) == false) { + int fIdx = (*pfIters[i])->indexOfGroup (group); + if ((*pfIters[i])->argument (fIdx).contains ( + (*pfIters[i])->elimLogVars()) == false) { return false; } vector ranges = (*pfIters[i])->ranges(); @@ -206,8 +210,8 @@ SumOutOperator::isToEliminate ( unsigned group, const Grounds& query) { - int fIdx = g->indexOfFormulaWithGroup (group); - const ProbFormula& formula = g->formula (fIdx); + int fIdx = g->indexOfGroup (group); + const ProbFormula& formula = g->argument (fIdx); bool toElim = true; for (unsigned i = 0; i < query.size(); i++) { if (formula.functor() == query[i].functor() && @@ -228,7 +232,7 @@ unsigned CountingOperator::getCost (void) { unsigned cost = 0; - int fIdx = (*pfIter_)->indexOfFormulaWithLogVar (X_); + int fIdx = (*pfIter_)->indexOfLogVar (X_); unsigned range = (*pfIter_)->range (fIdx); unsigned size = (*pfIter_)->size() / range; TinySet counts; @@ -247,18 +251,19 @@ CountingOperator::apply (void) if ((*pfIter_)->constr()->isCountNormalized (X_)) { (*pfIter_)->countConvert (X_); } else { - Parfactors pfs = FoveSolver::countNormalize (*pfIter_, X_); + Parfactor* pf = *pfIter_; + pfList_.remove (pfIter_); + Parfactors pfs = FoveSolver::countNormalize (pf, X_); for (unsigned i = 0; i < pfs.size(); i++) { unsigned condCount = pfs[i]->constr()->getConditionalCount (X_); bool cartProduct = pfs[i]->constr()->isCarteesianProduct ( - (*pfIter_)->countedLogVars() | X_); + pfs[i]->countedLogVars() | X_); if (condCount > 1 && cartProduct) { pfs[i]->countConvert (X_); } pfList_.add (pfs[i]); } - pfList_.deleteAndRemove (pfIter_); - pfList_.shatter(); + delete pf; } } @@ -289,14 +294,17 @@ CountingOperator::toString (void) { stringstream ss; ss << "count convert " << X_ << " in " ; - ss << (*pfIter_)->getHeaderString(); + ss << (*pfIter_)->getLabel(); ss << " [cost=" << getCost() << "]" << endl; Parfactors pfs = FoveSolver::countNormalize (*pfIter_, X_); if ((*pfIter_)->constr()->isCountNormalized (X_) == false) { for (unsigned i = 0; i < pfs.size(); i++) { - ss << " º " << pfs[i]->getHeaderString() << endl; + ss << " º " << pfs[i]->getLabel() << endl; } } + for (unsigned i = 0; i < pfs.size(); i++) { + delete pfs[i]; + } return ss.str(); } @@ -308,8 +316,8 @@ CountingOperator::validOp (Parfactor* g, LogVar X) if (g->nrFormulas (X) != 1) { return false; } - int fIdx = g->indexOfFormulaWithLogVar (X); - if (g->formulas()[fIdx].isCounting()) { + int fIdx = g->indexOfLogVar (X); + if (g->argument (fIdx).isCounting()) { return false; } bool countNormalized = g->constr()->isCountNormalized (X); @@ -332,10 +340,10 @@ GroundOperator::getCost (void) unsigned cost = 0; bool isCountingLv = (*pfIter_)->countedLogVars().contains (X_); if (isCountingLv) { - int fIdx = (*pfIter_)->indexOfFormulaWithLogVar (X_); + int fIdx = (*pfIter_)->indexOfLogVar (X_); unsigned currSize = (*pfIter_)->size(); unsigned nrHists = (*pfIter_)->range (fIdx); - unsigned range = (*pfIter_)->formula(fIdx).range(); + unsigned range = (*pfIter_)->argument (fIdx).range(); unsigned nrSymbols = (*pfIter_)->constr()->getConditionalCount (X_); cost = (currSize / nrHists) * (std::pow (range, nrSymbols)); } else { @@ -350,18 +358,17 @@ void GroundOperator::apply (void) { bool countedLv = (*pfIter_)->countedLogVars().contains (X_); + Parfactor* pf = *pfIter_; + pfList_.remove (pfIter_); if (countedLv) { - (*pfIter_)->fullExpand (X_); - (*pfIter_)->setNewGroups(); - pfList_.shatter(); + pf->fullExpand (X_); + pfList_.add (pf); } else { - ConstraintTrees cts = (*pfIter_)->constr()->ground (X_); + ConstraintTrees cts = pf->constr()->ground (X_); for (unsigned i = 0; i < cts.size(); i++) { - Parfactor* newPf = new Parfactor (*pfIter_, cts[i]); - pfList_.add (newPf); + pfList_.add (new Parfactor (pf, cts[i])); } - pfList_.deleteAndRemove (pfIter_); - pfList_.shatter(); + delete pf; } } @@ -393,24 +400,13 @@ GroundOperator::toString (void) ((*pfIter_)->countedLogVars().contains (X_)) ? ss << "full expanding " : ss << "grounding " ; - ss << X_ << " in " << (*pfIter_)->getHeaderString(); + ss << X_ << " in " << (*pfIter_)->getLabel(); ss << " [cost=" << getCost() << "]" << endl; return ss.str(); } -FoveSolver::FoveSolver (const ParfactorList* pfList) -{ - for (ParfactorList::const_iterator it = pfList->begin(); - it != pfList->end(); - it ++) { - pfList_.addShattered (new Parfactor (**it)); - } -} - - - Params FoveSolver::getPosterioriOf (const Ground& query) { @@ -422,14 +418,12 @@ FoveSolver::getPosterioriOf (const Ground& query) Params FoveSolver::getJointDistributionOf (const Grounds& query) { - shatterAgainstQuery (query); runSolver (query); (*pfList_.begin())->normalize(); Params params = (*pfList_.begin())->params(); if (Globals::logDomain) { Util::fromLog (params); } - delete *pfList_.begin(); return params; } @@ -438,32 +432,38 @@ FoveSolver::getJointDistributionOf (const Grounds& query) void FoveSolver::absorveEvidence ( ParfactorList& pfList, - const ObservedFormulas& obsFormulas) + ObservedFormulas& obsFormulas) { - ParfactorList::iterator it = pfList.begin(); - while (it != pfList.end()) { - bool increment = true; - for (unsigned i = 0; i < obsFormulas.size(); i++) { - if (absorved (pfList, it, obsFormulas[i])) { - it = pfList.deleteAndRemove (it); - increment = false; - break; - } - } - if (increment) { - ++ it; + for (unsigned i = 0; i < obsFormulas.size(); i++) { + Parfactors newPfs; + ParfactorList::iterator it = pfList.begin(); + while (it != pfList.end()) { + Parfactor* pf = *it; + it = pfList.remove (it); + Parfactors absorvedPfs = absorve (obsFormulas[i], pf); + if (absorvedPfs.empty() == false) { + if (absorvedPfs.size() == 1 && absorvedPfs[0] == 0) { + // just remove pf; + } else { + Util::addToVector (newPfs, absorvedPfs); + } + delete pf; + } else { + it = pfList.insertShattered (it, pf); + ++ it; + } } + pfList.add (newPfs); } - pfList.shatter(); - if (obsFormulas.empty() == false) { - cout << "*******************************************************" << endl; + if (Constants::DEBUG > 1 && obsFormulas.empty() == false) { + Util::printAsteriskLine(); cout << "AFTER EVIDENCE ABSORVED" << endl; for (unsigned i = 0; i < obsFormulas.size(); i++) { - cout << " -> " << *obsFormulas[i] << endl; + cout << " -> " << obsFormulas[i] << endl; } - cout << "*******************************************************" << endl; + Util::printAsteriskLine(); + pfList.print(); } - pfList.print(); } @@ -473,14 +473,14 @@ FoveSolver::countNormalize ( Parfactor* g, const LogVarSet& set) { - if (set.empty()) { - assert (false); // TODO - return {}; - } Parfactors normPfs; - ConstraintTrees normCts = g->constr()->countNormalize (set); - for (unsigned i = 0; i < normCts.size(); i++) { - normPfs.push_back (new Parfactor (g, normCts[i])); + if (set.empty()) { + normPfs.push_back (new Parfactor (*g)); + } else { + ConstraintTrees normCts = g->constr()->countNormalize (set); + for (unsigned i = 0; i < normCts.size(); i++) { + normPfs.push_back (new Parfactor (g, normCts[i])); + } } return normPfs; } @@ -490,17 +490,25 @@ FoveSolver::countNormalize ( void FoveSolver::runSolver (const Grounds& query) { + shatterAgainstQuery (query); + runWeakBayesBall (query); while (true) { - cout << "---------------------------------------------------" << endl; - pfList_.print(); - LiftedOperator::printValidOps (pfList_, query); + if (Constants::DEBUG > 1) { + Util::printDashedLine(); + pfList_.print(); + LiftedOperator::printValidOps (pfList_, query); + } LiftedOperator* op = getBestOperation (query); if (op == 0) { break; } - cout << "best operation: " << op->toString() << endl; + if (Constants::DEBUG > 1) { + cout << "best operation: " << op->toString() << endl; + } op->apply(); + delete op; } + assert (pfList_.size() > 0); if (pfList_.size() > 1) { ParfactorList::iterator pfIter = pfList_.begin(); pfIter ++; @@ -514,26 +522,6 @@ FoveSolver::runSolver (const Grounds& query) -bool -FoveSolver::allEliminated (const Grounds&) -{ - ParfactorList::iterator pfIter = pfList_.begin(); - while (pfIter != pfList_.end()) { - const ProbFormulas formulas = (*pfIter)->formulas(); - for (unsigned i = 0; i < formulas.size(); i++) { - //bool toElim = false; - //for (unsigned j = 0; j < queries.size(); j++) { - // if ((*pfIter)->containsGround (queries[i]) == false) { - // return - // } - } - ++ pfIter; - } - return false; -} - - - LiftedOperator* FoveSolver::getBestOperation (const Grounds& query) { @@ -548,156 +536,170 @@ FoveSolver::getBestOperation (const Grounds& query) bestCost = cost; } } + for (unsigned i = 0; i < validOps.size(); i++) { + if (validOps[i] != bestOp) { + delete validOps[i]; + } + } return bestOp; } +void +FoveSolver::runWeakBayesBall (const Grounds& query) +{ + queue todo; // groups to process + set done; // processed or in queue + for (unsigned i = 0; i < query.size(); i++) { + ParfactorList::iterator it = pfList_.begin(); + while (it != pfList_.end()) { + int group = (*it)->groupWithGround (query[i]); + if (group != -1) { + todo.push (group); + done.insert (group); + break; + } + ++ it; + } + } + + set requiredPfs; + while (todo.empty() == false) { + unsigned group = todo.front(); + ParfactorList::iterator it = pfList_.begin(); + while (it != pfList_.end()) { + if (Util::contains (requiredPfs, *it) == false && + (*it)->containsGroup (group)) { + vector groups = (*it)->getAllGroups(); + for (unsigned i = 0; i < groups.size(); i++) { + if (Util::contains (done, groups[i]) == false) { + todo.push (groups[i]); + done.insert (groups[i]); + } + } + requiredPfs.insert (*it); + } + ++ it; + } + todo.pop(); + } + + ParfactorList::iterator it = pfList_.begin(); + while (it != pfList_.end()) { + if (Util::contains (requiredPfs, *it) == false) { + it = pfList_.removeAndDelete (it); + } else { + ++ it; + } + } + + if (Constants::DEBUG > 1) { + Util::printHeader ("REQUIRED PARFACTORS"); + pfList_.print(); + } +} + + + void FoveSolver::shatterAgainstQuery (const Grounds& query) { - // return; + return ; for (unsigned i = 0; i < query.size(); i++) { if (query[i].isAtom()) { continue; } - ParfactorList pfListCopy = pfList_; - pfList_.clear(); - for (ParfactorList::iterator it = pfListCopy.begin(); - it != pfListCopy.end(); ++ it) { - Parfactor* pf = *it; - if (pf->containsGround (query[i])) { + Parfactors newPfs; + ParfactorList::iterator it = pfList_.begin(); + while (it != pfList_.end()) { + if ((*it)->containsGround (query[i])) { std::pair split = - pf->constr()->split (query[i].args(), query[i].arity()); + (*it)->constr()->split (query[i].args(), query[i].arity()); ConstraintTree* commCt = split.first; ConstraintTree* exclCt = split.second; - pfList_.add (new Parfactor (pf, commCt)); + newPfs.push_back (new Parfactor (*it, commCt)); if (exclCt->empty() == false) { - pfList_.add (new Parfactor (pf, exclCt)); + newPfs.push_back (new Parfactor (*it, exclCt)); } else { delete exclCt; } - delete pf; + it = pfList_.removeAndDelete (it); } else { - pfList_.add (pf); + ++ it; } } - pfList_.shatter(); + pfList_.add (newPfs); } - cout << endl; - cout << "*******************************************************" << endl; - cout << "SHATTERED AGAINST THE QUERY" << endl; - for (unsigned i = 0; i < query.size(); i++) { - cout << " -> " << query[i] << endl; + if (Constants::DEBUG > 1) { + cout << endl; + Util::printAsteriskLine(); + cout << "SHATTERED AGAINST THE QUERY" << endl; + for (unsigned i = 0; i < query.size(); i++) { + cout << " -> " << query[i] << endl; + } + Util::printAsteriskLine(); + pfList_.print(); } - cout << "*******************************************************" << endl; - pfList_.print(); } -bool -FoveSolver::absorved ( - ParfactorList& pfList, - ParfactorList::iterator pfIter, - const ObservedFormula* obsFormula) +Parfactors +FoveSolver::absorve ( + ObservedFormula& obsFormula, + Parfactor* g) { Parfactors absorvedPfs; - Parfactor* g = *pfIter; - const ProbFormulas& formulas = g->formulas(); + const ProbFormulas& formulas = g->arguments(); for (unsigned i = 0; i < formulas.size(); i++) { - if (obsFormula->functor() == formulas[i].functor() && - obsFormula->arity() == formulas[i].arity()) { + if (obsFormula.functor() == formulas[i].functor() && + obsFormula.arity() == formulas[i].arity()) { - if (obsFormula->isAtom()) { + if (obsFormula.isAtom()) { if (formulas.size() > 1) { - g->absorveEvidence (i, obsFormula->evidence()); + g->absorveEvidence (formulas[i], obsFormula.evidence()); } else { - return true; + // hack to erase parfactor g + absorvedPfs.push_back (0); } + break; } g->constr()->moveToTop (formulas[i].logVars()); std::pair res - = g->constr()->split (obsFormula->constr(), formulas[i].arity()); + = g->constr()->split (&(obsFormula.constr()), formulas[i].arity()); ConstraintTree* commCt = res.first; ConstraintTree* exclCt = res.second; - if (commCt->empty()) { - delete commCt; - delete exclCt; - continue; - } - - if (exclCt->empty() == false) { - pfList.add (new Parfactor (g, exclCt)); - } else { - delete exclCt; - } - - if (formulas.size() > 1) { - LogVarSet excl = g->exclusiveLogVars (i); - Parfactors countNormPfs = countNormalize (g, excl); - for (unsigned j = 0; j < countNormPfs.size(); j++) { - countNormPfs[j]->absorveEvidence (i, obsFormula->evidence()); - absorvedPfs.push_back (countNormPfs[j]); + if (commCt->empty() == false) { + if (formulas.size() > 1) { + LogVarSet excl = g->exclusiveLogVars (i); + Parfactors countNormPfs = countNormalize (g, excl); + for (unsigned j = 0; j < countNormPfs.size(); j++) { + countNormPfs[j]->absorveEvidence ( + formulas[i], obsFormula.evidence()); + absorvedPfs.push_back (countNormPfs[j]); + } + } else { + delete commCt; } + if (exclCt->empty() == false) { + absorvedPfs.push_back (new Parfactor (g, exclCt)); + } else { + delete exclCt; + } + if (absorvedPfs.empty()) { + // hack to erase parfactor g + absorvedPfs.push_back (0); + } + break; } else { delete commCt; + delete exclCt; } - return true; - } } - return false; -} - - - -bool -FoveSolver::proper ( - const ProbFormula& f1, - ConstraintTree* c1, - const ProbFormula& f2, - ConstraintTree* c2) -{ - return disjoint (f1, c1, f2, c2) - || identical (f1, c1, f2, c2); -} - - - -bool -FoveSolver::identical ( - const ProbFormula& f1, - ConstraintTree* c1, - const ProbFormula& f2, - ConstraintTree* c2) -{ - if (f1.sameSkeletonAs (f2) == false) { - return false; - } - c1->moveToTop (f1.logVars()); - c2->moveToTop (f2.logVars()); - return ConstraintTree::identical ( - c1, c2, f1.logVars().size()); -} - - - -bool -FoveSolver::disjoint ( - const ProbFormula& f1, - ConstraintTree* c1, - const ProbFormula& f2, - ConstraintTree* c2) -{ - if (f1.sameSkeletonAs (f2) == false) { - return true; - } - c1->moveToTop (f1.logVars()); - c2->moveToTop (f2.logVars()); - return ConstraintTree::overlap ( - c1, c2, f1.arity()) == false; + return absorvedPfs; } diff --git a/packages/CLPBN/clpbn/bp/FoveSolver.h b/packages/CLPBN/clpbn/bp/FoveSolver.h index b3281d2f4..fab388562 100644 --- a/packages/CLPBN/clpbn/bp/FoveSolver.h +++ b/packages/CLPBN/clpbn/bp/FoveSolver.h @@ -9,10 +9,14 @@ class LiftedOperator { public: virtual unsigned getCost (void) = 0; + virtual void apply (void) = 0; + virtual string toString (void) = 0; + static vector getValidOps ( ParfactorList&, const Grounds&); + static void printValidOps (ParfactorList&, const Grounds&); }; @@ -23,18 +27,26 @@ class SumOutOperator : public LiftedOperator public: SumOutOperator (unsigned group, ParfactorList& pfList) : group_(group), pfList_(pfList) { } + unsigned getCost (void); + void apply (void); + static vector getValidOps ( ParfactorList&, const Grounds&); + string toString (void); + private: static bool validOp (unsigned, ParfactorList&, const Grounds&); + static vector parfactorsWithGroup ( ParfactorList& pfList, unsigned group); + static bool isToEliminate (Parfactor*, unsigned, const Grounds&); - unsigned group_; - ParfactorList& pfList_; + + unsigned group_; + ParfactorList& pfList_; }; @@ -47,15 +59,21 @@ class CountingOperator : public LiftedOperator LogVar X, ParfactorList& pfList) : pfIter_(pfIter), X_(X), pfList_(pfList) { } + unsigned getCost (void); + void apply (void); + static vector getValidOps (ParfactorList&); + string toString (void); + private: static bool validOp (Parfactor*, LogVar); - ParfactorList::iterator pfIter_; - LogVar X_; - ParfactorList& pfList_; + + ParfactorList::iterator pfIter_; + LogVar X_; + ParfactorList& pfList_; }; @@ -68,14 +86,19 @@ class GroundOperator : public LiftedOperator LogVar X, ParfactorList& pfList) : pfIter_(pfIter), X_(X), pfList_(pfList) { } + unsigned getCost (void); + void apply (void); + static vector getValidOps (ParfactorList&); + string toString (void); + private: - ParfactorList::iterator pfIter_; - LogVar X_; - ParfactorList& pfList_; + ParfactorList::iterator pfIter_; + LogVar X_; + ParfactorList& pfList_; }; @@ -83,49 +106,29 @@ class GroundOperator : public LiftedOperator class FoveSolver { public: - FoveSolver (const ParfactorList*); + FoveSolver (const ParfactorList& pfList) : pfList_(pfList) { } - Params getPosterioriOf (const Ground&); - Params getJointDistributionOf (const Grounds&); + Params getPosterioriOf (const Ground&); - static void absorveEvidence ( - ParfactorList& pfList, - const ObservedFormulas& obsFormulas); + Params getJointDistributionOf (const Grounds&); - static Parfactors countNormalize (Parfactor*, const LogVarSet&); + static void absorveEvidence ( + ParfactorList& pfList, ObservedFormulas& obsFormulas); + + static Parfactors countNormalize (Parfactor*, const LogVarSet&); private: - void runSolver (const Grounds&); - bool allEliminated (const Grounds&); - LiftedOperator* getBestOperation (const Grounds&); - void shatterAgainstQuery (const Grounds&); + void runSolver (const Grounds&); - static bool absorved ( - ParfactorList& pfList, - ParfactorList::iterator pfIter, - const ObservedFormula*); + LiftedOperator* getBestOperation (const Grounds&); - public: + void runWeakBayesBall (const Grounds&); - static bool proper ( - const ProbFormula&, - ConstraintTree*, - const ProbFormula&, - ConstraintTree*); + void shatterAgainstQuery (const Grounds&); - static bool identical ( - const ProbFormula&, - ConstraintTree*, - const ProbFormula&, - ConstraintTree*); + static Parfactors absorve (ObservedFormula&, Parfactor*); - static bool disjoint ( - const ProbFormula&, - ConstraintTree*, - const ProbFormula&, - ConstraintTree*); - - ParfactorList pfList_; + ParfactorList pfList_; }; #endif // HORUS_FOVESOLVER_H diff --git a/packages/CLPBN/clpbn/bp/GraphicalModel.h b/packages/CLPBN/clpbn/bp/GraphicalModel.h index 9b780f8cb..e0d427b75 100644 --- a/packages/CLPBN/clpbn/bp/GraphicalModel.h +++ b/packages/CLPBN/clpbn/bp/GraphicalModel.h @@ -1,66 +1,63 @@ #ifndef HORUS_GRAPHICALMODEL_H #define HORUS_GRAPHICALMODEL_H +#include + +#include + #include #include "VarNode.h" -#include "Distribution.h" +#include "Util.h" #include "Horus.h" using namespace std; -struct VariableInfo +struct VarInfo { - VariableInfo (string l, const States& sts) - { - label = l; - states = sts; - } - string label; - States states; + VarInfo (string l, const States& sts) : label(l), states(sts) { } + string label; + States states; }; class GraphicalModel { public: - virtual ~GraphicalModel (void) {}; - virtual VarNode* getVariableNode (VarId) const = 0; - virtual VarNodes getVariableNodes (void) const = 0; - virtual void printGraphicalModel (void) const = 0; + virtual ~GraphicalModel (void) { }; + + virtual VarNode* getVariableNode (VarId) const = 0; + + virtual VarNodes getVariableNodes (void) const = 0; + + virtual void printGraphicalModel (void) const = 0; - static void addVariableInformation (VarId vid, string label, - const States& states) + static void addVariableInformation ( + VarId vid, string label, const States& states) { - assert (varsInfo_.find (vid) == varsInfo_.end()); - varsInfo_.insert (make_pair (vid, VariableInfo (label, states))); + assert (Util::contains (varsInfo_, vid) == false); + varsInfo_.insert (make_pair (vid, VarInfo (label, states))); } - static VariableInfo getVariableInformation (VarId vid) + + static VarInfo getVarInformation (VarId vid) { - assert (varsInfo_.find (vid) != varsInfo_.end()); + assert (Util::contains (varsInfo_, vid)); return varsInfo_.find (vid)->second; } + static bool variablesHaveInformation (void) { return varsInfo_.size() != 0; } + static void clearVariablesInformation (void) { varsInfo_.clear(); } - static void addDistribution (unsigned id, Distribution* dist) - { - distsInfo_[id] = dist; - } - static void updateDistribution (unsigned id, const Params& params) - { - distsInfo_[id]->updateParameters (params); - } private: - static unordered_map varsInfo_; - static unordered_map distsInfo_; + static unordered_map varsInfo_; }; #endif // HORUS_GRAPHICALMODEL_H diff --git a/packages/CLPBN/clpbn/bp/Histogram.cpp b/packages/CLPBN/clpbn/bp/Histogram.cpp index 7eb3fdc1e..f51ab425b 100644 --- a/packages/CLPBN/clpbn/bp/Histogram.cpp +++ b/packages/CLPBN/clpbn/bp/Histogram.cpp @@ -84,16 +84,34 @@ HistogramSet::nrHistograms (unsigned N, unsigned R) unsigned HistogramSet::findIndex ( - const Histogram& hist, - const vector& histograms) + const Histogram& h, + const vector& hists) { vector::const_iterator it = std::lower_bound ( - histograms.begin(), - histograms.end(), - hist, - std::greater()); - assert (it != histograms.end() && *it == hist); - return std::distance (histograms.begin(), it); + hists.begin(), hists.end(), h, std::greater()); + assert (it != hists.end() && *it == h); + return std::distance (hists.begin(), it); +} + + + +vector +HistogramSet::getNumAssigns (unsigned N, unsigned R) +{ + HistogramSet hs (N, R); + unsigned N_factorial = Util::factorial (N); + unsigned H = hs.nrHistograms(); + vector numAssigns; + numAssigns.reserve (H); + for (unsigned h = 0; h < H; h++) { + unsigned prod = 1; + for (unsigned r = 0; r < R; r++) { + prod *= Util::factorial (hs[r]); + } + numAssigns.push_back (LogAware::tl (N_factorial / prod)); + hs.nextHistogram(); + } + return numAssigns; } diff --git a/packages/CLPBN/clpbn/bp/Histogram.h b/packages/CLPBN/clpbn/bp/Histogram.h index 9b4fbc656..bbee1b2c9 100644 --- a/packages/CLPBN/clpbn/bp/Histogram.h +++ b/packages/CLPBN/clpbn/bp/Histogram.h @@ -26,8 +26,9 @@ class HistogramSet static unsigned nrHistograms (unsigned, unsigned); static unsigned findIndex ( - const Histogram&, - const vector&); + const Histogram&, const vector&); + + static vector getNumAssigns (unsigned, unsigned); friend std::ostream& operator<< (ostream &os, const HistogramSet& hs); diff --git a/packages/CLPBN/clpbn/bp/Horus.h b/packages/CLPBN/clpbn/bp/Horus.h index c1a5c24e8..a0fbd4a05 100644 --- a/packages/CLPBN/clpbn/bp/Horus.h +++ b/packages/CLPBN/clpbn/bp/Horus.h @@ -1,17 +1,9 @@ #ifndef HORUS_HORUS_H #define HORUS_HORUS_H -#include -#include #include -#include #include -#include - -#include -#include -#include #define DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&); \ @@ -25,49 +17,48 @@ class FgVarNode; class FgFacNode; class Factor; -typedef vector Params; -typedef unsigned VarId; -typedef vector VarIds; -typedef vector VarNodes; -typedef vector BnNodeSet; -typedef vector FgVarSet; -typedef vector FgFacSet; -typedef vector FactorSet; -typedef vector States; -typedef vector Ranges; +typedef vector Params; +typedef unsigned VarId; +typedef vector VarIds; +typedef vector VarNodes; +typedef vector BnNodeSet; +typedef vector FgVarSet; +typedef vector FgFacSet; +typedef vector FactorSet; +typedef vector States; +typedef vector Ranges; -namespace Globals { - extern bool logDomain; +enum InfAlgorithms +{ + VE, // variable elimination + BN_BP, // bayesian network belief propagation + FG_BP, // factor graph belief propagation + CBP // counting bp solver }; -// level of debug information -static const unsigned DL = 1; +namespace Globals { -static const int NO_EVIDENCE = -1; +extern bool logDomain; + +extern InfAlgorithms infAlgorithm; + +}; + + +namespace Constants { + +// level of debug information +const unsigned DEBUG = 2; + +const int NO_EVIDENCE = -1; // number of digits to show when printing a parameter -static const unsigned PRECISION = 5; +const unsigned PRECISION = 5; -static const bool COLLECT_STATISTICS = false; +const bool COLLECT_STATS = false; -static const bool EXPORT_TO_GRAPHVIZ = false; -static const unsigned EXPORT_MINIMAL_SIZE = 100; - -static const double INF = -numeric_limits::infinity(); - - - -namespace InfAlgorithms { - enum InfAlgs - { - VE, // variable elimination - BN_BP, // bayesian network belief propagation - FG_BP, // factor graph belief propagation - CBP // counting bp solver - }; - extern InfAlgs infAlgorithm; }; diff --git a/packages/CLPBN/clpbn/bp/HorusCli.cpp b/packages/CLPBN/clpbn/bp/HorusCli.cpp index 6bf31bea3..34f60bceb 100644 --- a/packages/CLPBN/clpbn/bp/HorusCli.cpp +++ b/packages/CLPBN/clpbn/bp/HorusCli.cpp @@ -10,10 +10,6 @@ #include "FgBpSolver.h" #include "CbpSolver.h" -//#include "TinySet.h" -#include "LiftedUtils.h" - - using namespace std; void processArguments (BayesNet&, int, const char* []); @@ -24,38 +20,9 @@ const string USAGE = "usage: \ ./hcli FILE [VARIABLE | OBSERVED_VARIABLE=EVIDENCE]..." ; -class Cenas -{ - public: - Cenas (int cc) - { - c = cc; - } - //operator int (void) const - //{ - // cout << "return int" << endl; - // return c; - //} - operator double (void) const - { - cout << "return double" << endl; - return 0.0; - } - private: - int c; -}; - - int main (int argc, const char* argv[]) { - LogVar X = 3; - LogVarSet Xs = X; - cout << "set: " << X << endl; - Cenas c1 (1); - Cenas c2 (3); - cout << (c1 < c2) << endl; - return 0; if (!argv[1]) { cerr << "error: no graphical model specified" << endl; cerr << USAGE << endl; @@ -99,7 +66,6 @@ processArguments (BayesNet& bn, int argc, const char* argv[]) cerr << "error: there isn't a variable labeled of " ; cerr << "`" << arg << "'" ; cerr << endl; - bn.freeDistributions(); exit (0); } } else { @@ -109,13 +75,11 @@ processArguments (BayesNet& bn, int argc, const char* argv[]) if (label.empty()) { cerr << "error: missing left argument" << endl; cerr << USAGE << endl; - bn.freeDistributions(); exit (0); } if (state.empty()) { cerr << "error: missing right argument" << endl; cerr << USAGE << endl; - bn.freeDistributions(); exit (0); } BayesNode* node = bn.getBayesNode (label); @@ -127,14 +91,12 @@ processArguments (BayesNet& bn, int argc, const char* argv[]) cerr << "is not a valid state for " ; cerr << "`" << node->label() << "'" ; cerr << endl; - bn.freeDistributions(); exit (0); } } else { cerr << "error: there isn't a variable labeled of " ; cerr << "`" << label << "'" ; cerr << endl; - bn.freeDistributions(); exit (0); } } @@ -142,7 +104,7 @@ processArguments (BayesNet& bn, int argc, const char* argv[]) Solver* solver = 0; FactorGraph* fg = 0; - switch (InfAlgorithms::infAlgorithm) { + switch (Globals::infAlgorithm) { case InfAlgorithms::VE: fg = new FactorGraph (bn); solver = new VarElimSolver (*fg); @@ -163,7 +125,6 @@ processArguments (BayesNet& bn, int argc, const char* argv[]) } runSolver (solver, queryVars); delete fg; - bn.freeDistributions(); } @@ -179,7 +140,6 @@ processArguments (FactorGraph& fg, int argc, const char* argv[]) cerr << "error: `" << arg << "' " ; cerr << "is not a valid variable id" ; cerr << endl; - fg.freeDistributions(); exit (0); } VarId vid; @@ -193,7 +153,6 @@ processArguments (FactorGraph& fg, int argc, const char* argv[]) cerr << "error: there isn't a variable with " ; cerr << "`" << vid << "' as id" ; cerr << endl; - fg.freeDistributions(); exit (0); } } else { @@ -201,20 +160,17 @@ processArguments (FactorGraph& fg, int argc, const char* argv[]) if (arg.substr (0, pos).empty()) { cerr << "error: missing left argument" << endl; cerr << USAGE << endl; - fg.freeDistributions(); exit (0); } if (arg.substr (pos + 1).empty()) { cerr << "error: missing right argument" << endl; cerr << USAGE << endl; - fg.freeDistributions(); exit (0); } if (!Util::isInteger (arg.substr (0, pos))) { cerr << "error: `" << arg.substr (0, pos) << "' " ; cerr << "is not a variable id" ; cerr << endl; - fg.freeDistributions(); exit (0); } VarId vid; @@ -227,7 +183,6 @@ processArguments (FactorGraph& fg, int argc, const char* argv[]) cerr << "error: `" << arg.substr (pos + 1) << "' " ; cerr << "is not a state index" ; cerr << endl; - fg.freeDistributions(); exit (0); } int stateIndex; @@ -241,28 +196,23 @@ processArguments (FactorGraph& fg, int argc, const char* argv[]) cerr << "is not a valid state index for variable " ; cerr << "`" << var->varId() << "'" ; cerr << endl; - fg.freeDistributions(); exit (0); } } else { cerr << "error: there isn't a variable with " ; cerr << "`" << vid << "' as id" ; cerr << endl; - fg.freeDistributions(); exit (0); } } } Solver* solver = 0; - switch (InfAlgorithms::infAlgorithm) { + switch (Globals::infAlgorithm) { case InfAlgorithms::VE: solver = new VarElimSolver (fg); break; case InfAlgorithms::BN_BP: case InfAlgorithms::FG_BP: - //cout << "here!" << endl; - //fg.printGraphicalModel(); - //fg.exportToLibDaiFormat ("net.fg"); solver = new FgBpSolver (fg); break; case InfAlgorithms::CBP: @@ -272,7 +222,6 @@ processArguments (FactorGraph& fg, int argc, const char* argv[]) assert (false); } runSolver (solver, queryVars); - fg.freeDistributions(); } diff --git a/packages/CLPBN/clpbn/bp/HorusYap.cpp b/packages/CLPBN/clpbn/bp/HorusYap.cpp index 4f7c3dadb..6e2f4fd67 100644 --- a/packages/CLPBN/clpbn/bp/HorusYap.cpp +++ b/packages/CLPBN/clpbn/bp/HorusYap.cpp @@ -7,22 +7,26 @@ #include +#include "ParfactorList.h" #include "BayesNet.h" #include "FactorGraph.h" +#include "FoveSolver.h" #include "VarElimSolver.h" #include "BnBpSolver.h" #include "FgBpSolver.h" #include "CbpSolver.h" #include "ElimGraph.h" -#include "FoveSolver.h" -#include "ParfactorList.h" using namespace std; +typedef std::pair LiftedNetwork; + Params readParams (YAP_Term); +void readLiftedEvidence (YAP_Term, ObservedFormulas&); +Parfactor* readParfactor (YAP_Term); int createLiftedNetwork (void) @@ -30,107 +34,124 @@ int createLiftedNetwork (void) Parfactors parfactors; YAP_Term parfactorList = YAP_ARG1; while (parfactorList != YAP_TermNil()) { - YAP_Term parfactor = YAP_HeadOfTerm (parfactorList); - - // read dist id - unsigned distId = YAP_IntOfTerm (YAP_ArgOfTerm (1, parfactor)); - - // read the ranges - Ranges ranges; - YAP_Term rangeList = YAP_ArgOfTerm (3, parfactor); - while (rangeList != YAP_TermNil()) { - unsigned range = (unsigned) YAP_IntOfTerm (YAP_HeadOfTerm (rangeList)); - ranges.push_back (range); - rangeList = YAP_TailOfTerm (rangeList); - } - - // read parametric random vars - ProbFormulas formulas; - unsigned count = 0; - unordered_map lvMap; - YAP_Term pvList = YAP_ArgOfTerm (2, parfactor); - while (pvList != YAP_TermNil()) { - YAP_Term formulaTerm = YAP_HeadOfTerm (pvList); - if (YAP_IsAtomTerm (formulaTerm)) { - string name ((char*) YAP_AtomName (YAP_AtomOfTerm (formulaTerm))); - Symbol functor = LiftedUtils::getSymbol (name); - formulas.push_back (ProbFormula (functor, ranges[count])); - } else { - LogVars logVars; - YAP_Functor yapFunctor = YAP_FunctorOfTerm (formulaTerm); - string name ((char*) YAP_AtomName (YAP_NameOfFunctor (yapFunctor))); - Symbol functor = LiftedUtils::getSymbol (name); - unsigned arity = (unsigned) YAP_ArityOfFunctor (yapFunctor); - for (unsigned i = 1; i <= arity; i++) { - YAP_Term ti = YAP_ArgOfTerm (i, formulaTerm); - unordered_map::iterator it = lvMap.find (ti); - if (it != lvMap.end()) { - logVars.push_back (it->second); - } else { - unsigned newLv = lvMap.size(); - lvMap[ti] = newLv; - logVars.push_back (newLv); - } - } - formulas.push_back (ProbFormula (functor, logVars, ranges[count])); - } - count ++; - pvList = YAP_TailOfTerm (pvList); - } - - // read the parameters - const Params& params = readParams (YAP_ArgOfTerm (4, parfactor)); - - // read the constraint - Tuples tuples; - if (lvMap.size() >= 1) { - YAP_Term tupleList = YAP_ArgOfTerm (5, parfactor); - while (tupleList != YAP_TermNil()) { - YAP_Term term = YAP_HeadOfTerm (tupleList); - assert (YAP_IsApplTerm (term)); - YAP_Functor yapFunctor = YAP_FunctorOfTerm (term); - unsigned arity = (unsigned) YAP_ArityOfFunctor (yapFunctor); - assert (lvMap.size() == arity); - Tuple tuple (arity); - for (unsigned i = 1; i <= arity; i++) { - YAP_Term ti = YAP_ArgOfTerm (i, term); - if (YAP_IsAtomTerm (ti) == false) { - cerr << "error: bad formed constraint" << endl; - abort(); - } - string name ((char*) YAP_AtomName (YAP_AtomOfTerm (ti))); - tuple[i - 1] = LiftedUtils::getSymbol (name); - } - tuples.push_back (tuple); - tupleList = YAP_TailOfTerm (tupleList); - } - } - parfactors.push_back (new Parfactor (formulas, params, tuples, distId)); + YAP_Term pfTerm = YAP_HeadOfTerm (parfactorList); + parfactors.push_back (readParfactor (pfTerm)); parfactorList = YAP_TailOfTerm (parfactorList); } // LiftedUtils::printSymbolDictionary(); - cout << "*******************************************************" << endl; - cout << "INITIAL PARFACTORS" << endl; - cout << "*******************************************************" << endl; - for (unsigned i = 0; i < parfactors.size(); i++) { - parfactors[i]->print(); - cout << endl; + if (Constants::DEBUG > 1) { + // Util::printHeader ("INITIAL PARFACTORS"); + // for (unsigned i = 0; i < parfactors.size(); i++) { + // parfactors[i]->print(); + // cout << endl; + // } + // parfactors[0]->countConvert (LogVar (0)); + //parfactors[1]->fullExpand (LogVar (1)); + Util::printHeader ("SHATTERED PARFACTORS"); } - ParfactorList* pfList = new ParfactorList(); - for (unsigned i = 0; i < parfactors.size(); i++) { - pfList->add (parfactors[i]); - } - cout << endl; - cout << "*******************************************************" << endl; - cout << "SHATTERED PARFACTORS" << endl; - cout << "*******************************************************" << endl; - pfList->shatter(); - pfList->print(); - // insert the evidence - ObservedFormulas obsFormulas; - YAP_Term observedList = YAP_ARG2; + ParfactorList* pfList = new ParfactorList (parfactors); + + if (Constants::DEBUG > 1) { + pfList->print(); + } + + // read evidence + ObservedFormulas* obsFormulas = new ObservedFormulas(); + readLiftedEvidence (YAP_ARG2, *(obsFormulas)); + + LiftedNetwork* net = new LiftedNetwork (pfList, obsFormulas); + YAP_Int p = (YAP_Int) (net); + return YAP_Unify (YAP_MkIntTerm (p), YAP_ARG3); +} + + + +Parfactor* readParfactor (YAP_Term pfTerm) +{ + // read dist id + unsigned distId = YAP_IntOfTerm (YAP_ArgOfTerm (1, pfTerm)); + + // read the ranges + Ranges ranges; + YAP_Term rangeList = YAP_ArgOfTerm (3, pfTerm); + while (rangeList != YAP_TermNil()) { + unsigned range = (unsigned) YAP_IntOfTerm (YAP_HeadOfTerm (rangeList)); + ranges.push_back (range); + rangeList = YAP_TailOfTerm (rangeList); + } + + // read parametric random vars + ProbFormulas formulas; + unsigned count = 0; + unordered_map lvMap; + YAP_Term pvList = YAP_ArgOfTerm (2, pfTerm); + while (pvList != YAP_TermNil()) { + YAP_Term formulaTerm = YAP_HeadOfTerm (pvList); + if (YAP_IsAtomTerm (formulaTerm)) { + string name ((char*) YAP_AtomName (YAP_AtomOfTerm (formulaTerm))); + Symbol functor = LiftedUtils::getSymbol (name); + formulas.push_back (ProbFormula (functor, ranges[count])); + } else { + LogVars logVars; + YAP_Functor yapFunctor = YAP_FunctorOfTerm (formulaTerm); + string name ((char*) YAP_AtomName (YAP_NameOfFunctor (yapFunctor))); + Symbol functor = LiftedUtils::getSymbol (name); + unsigned arity = (unsigned) YAP_ArityOfFunctor (yapFunctor); + for (unsigned i = 1; i <= arity; i++) { + YAP_Term ti = YAP_ArgOfTerm (i, formulaTerm); + unordered_map::iterator it = lvMap.find (ti); + if (it != lvMap.end()) { + logVars.push_back (it->second); + } else { + unsigned newLv = lvMap.size(); + lvMap[ti] = newLv; + logVars.push_back (newLv); + } + } + formulas.push_back (ProbFormula (functor, logVars, ranges[count])); + } + count ++; + pvList = YAP_TailOfTerm (pvList); + } + + // read the parameters + const Params& params = readParams (YAP_ArgOfTerm (4, pfTerm)); + + // read the constraint + Tuples tuples; + if (lvMap.size() >= 1) { + YAP_Term tupleList = YAP_ArgOfTerm (5, pfTerm); + while (tupleList != YAP_TermNil()) { + YAP_Term term = YAP_HeadOfTerm (tupleList); + assert (YAP_IsApplTerm (term)); + YAP_Functor yapFunctor = YAP_FunctorOfTerm (term); + unsigned arity = (unsigned) YAP_ArityOfFunctor (yapFunctor); + assert (lvMap.size() == arity); + Tuple tuple (arity); + for (unsigned i = 1; i <= arity; i++) { + YAP_Term ti = YAP_ArgOfTerm (i, term); + if (YAP_IsAtomTerm (ti) == false) { + cerr << "error: constraint has free variables" << endl; + abort(); + } + string name ((char*) YAP_AtomName (YAP_AtomOfTerm (ti))); + tuple[i - 1] = LiftedUtils::getSymbol (name); + } + tuples.push_back (tuple); + tupleList = YAP_TailOfTerm (tupleList); + } + } + return new Parfactor (formulas, params, tuples, distId); +} + + + +void readLiftedEvidence ( + YAP_Term observedList, + ObservedFormulas& obsFormulas) +{ while (observedList != YAP_TermNil()) { YAP_Term pair = YAP_HeadOfTerm (observedList); YAP_Term ground = YAP_ArgOfTerm (1, pair); @@ -155,22 +176,18 @@ int createLiftedNetwork (void) unsigned evidence = (unsigned) YAP_IntOfTerm (YAP_ArgOfTerm (2, pair)); bool found = false; for (unsigned i = 0; i < obsFormulas.size(); i++) { - if (obsFormulas[i]->functor() == functor && - obsFormulas[i]->arity() == args.size() && - obsFormulas[i]->evidence() == evidence) { - obsFormulas[i]->addTuple (args); + if (obsFormulas[i].functor() == functor && + obsFormulas[i].arity() == args.size() && + obsFormulas[i].evidence() == evidence) { + obsFormulas[i].addTuple (args); found = true; } } if (found == false) { - obsFormulas.push_back (new ObservedFormula (functor, evidence, args)); + obsFormulas.push_back (ObservedFormula (functor, evidence, args)); } observedList = YAP_TailOfTerm (observedList); - } - FoveSolver::absorveEvidence (*pfList, obsFormulas); - - YAP_Int p = (YAP_Int) (pfList); - return YAP_Unify (YAP_MkIntTerm (p), YAP_ARG3); + } } @@ -186,7 +203,6 @@ createGroundNetwork (void) // } BayesNet* bn = new BayesNet(); YAP_Term varList = YAP_ARG1; - BnNodeSet nodes; vector parents; while (varList != YAP_TermNil()) { YAP_Term var = YAP_HeadOfTerm (varList); @@ -201,15 +217,13 @@ createGroundNetwork (void) parents.back().push_back (parentId); parentL = YAP_TailOfTerm (parentL); } - Distribution* dist = bn->getDistribution (distId); - if (!dist) { - dist = new Distribution (distId); - bn->addDistribution (dist); - } assert (bn->getBayesNode (vid) == 0); - nodes.push_back (bn->addNode (vid, dsize, evidence, dist)); + BayesNode* newNode = new BayesNode ( + vid, dsize, evidence, Params(), distId); + bn->addNode (newNode); varList = YAP_TailOfTerm (varList); } + const BnNodeSet& nodes = bn->getBayesNodes(); for (unsigned i = 0; i < nodes.size(); i++) { BnNodeSet ps; for (unsigned j = 0; j < parents[i].size(); j++) { @@ -225,41 +239,6 @@ createGroundNetwork (void) -int -setBayesNetParams (void) -{ - BayesNet* bn = (BayesNet*) YAP_IntOfTerm (YAP_ARG1); - YAP_Term distList = YAP_ARG2; - while (distList != YAP_TermNil()) { - YAP_Term dist = YAP_HeadOfTerm (distList); - unsigned distId = (unsigned) YAP_IntOfTerm (YAP_ArgOfTerm (1, dist)); - const Params params = readParams (YAP_ArgOfTerm (2, dist)); - bn->getDistribution(distId)->updateParameters (params); - distList = YAP_TailOfTerm (distList); - } - return TRUE; -} - - - -int -setParfactorGraphParams (void) -{ - // FIXME - // ParfactorGraph* pfg = (ParfactorGraph*) YAP_IntOfTerm (YAP_ARG1); - YAP_Term distList = YAP_ARG2; - while (distList != YAP_TermNil()) { - // YAP_Term dist = YAP_HeadOfTerm (distList); - // unsigned distId = (unsigned) YAP_IntOfTerm (YAP_ArgOfTerm (1, dist)); - // const Params params = readParams (YAP_ArgOfTerm (2, dist)); - // pfg->getDistribution(distId)->setData (params); - distList = YAP_TailOfTerm (distList); - } - return TRUE; -} - - - Params readParams (YAP_Term paramL) { @@ -279,15 +258,14 @@ readParams (YAP_Term paramL) int runLiftedSolver (void) { - ParfactorList* pfList = (ParfactorList*) YAP_IntOfTerm (YAP_ARG1); + LiftedNetwork* network = (LiftedNetwork*) YAP_IntOfTerm (YAP_ARG1); YAP_Term taskList = YAP_ARG2; vector results; - + ParfactorList pfListCopy (*network->first); + FoveSolver::absorveEvidence (pfListCopy, *network->second); while (taskList != YAP_TermNil()) { - YAP_Term jointList = YAP_HeadOfTerm (taskList); Grounds queryVars; - assert (YAP_IsPairTerm (taskList)); - assert (YAP_IsPairTerm (jointList)); + YAP_Term jointList = YAP_HeadOfTerm (taskList); while (jointList != YAP_TermNil()) { YAP_Term ground = YAP_HeadOfTerm (jointList); if (YAP_IsAtomTerm (ground)) { @@ -310,11 +288,11 @@ runLiftedSolver (void) } jointList = YAP_TailOfTerm (jointList); } - FoveSolver solver (pfList); + FoveSolver solver (pfListCopy); if (queryVars.size() == 1) { results.push_back (solver.getPosterioriOf (queryVars[0])); } else { - assert (false); // TODO joint dist + results.push_back (solver.getJointDistributionOf (queryVars)); } taskList = YAP_TailOfTerm (taskList); } @@ -339,46 +317,40 @@ runLiftedSolver (void) int -runOtherSolvers (void) +runGroundSolver (void) { BayesNet* bn = (BayesNet*) YAP_IntOfTerm (YAP_ARG1); YAP_Term taskList = YAP_ARG2; vector tasks; std::set vids; while (taskList != YAP_TermNil()) { - if (YAP_IsPairTerm (YAP_HeadOfTerm (taskList))) { - tasks.push_back (VarIds()); - YAP_Term jointList = YAP_HeadOfTerm (taskList); - while (jointList != YAP_TermNil()) { - VarId vid = (unsigned) YAP_IntOfTerm (YAP_HeadOfTerm (jointList)); - assert (bn->getBayesNode (vid)); - tasks.back().push_back (vid); - vids.insert (vid); - jointList = YAP_TailOfTerm (jointList); - } - } else { - VarId vid = (unsigned) YAP_IntOfTerm (YAP_HeadOfTerm (taskList)); + VarIds queryVars; + YAP_Term jointList = YAP_HeadOfTerm (taskList); + while (jointList != YAP_TermNil()) { + VarId vid = (unsigned) YAP_IntOfTerm (YAP_HeadOfTerm (jointList)); assert (bn->getBayesNode (vid)); - tasks.push_back (VarIds() = {vid}); + queryVars.push_back (vid); vids.insert (vid); + jointList = YAP_TailOfTerm (jointList); } + tasks.push_back (queryVars); taskList = YAP_TailOfTerm (taskList); } Solver* bpSolver = 0; GraphicalModel* graphicalModel = 0; CFactorGraph::checkForIdenticalFactors = false; - if (InfAlgorithms::infAlgorithm != InfAlgorithms::VE) { + if (Globals::infAlgorithm != InfAlgorithms::VE) { BayesNet* mrn = bn->getMinimalRequesiteNetwork ( VarIds (vids.begin(), vids.end())); - if (InfAlgorithms::infAlgorithm == InfAlgorithms::BN_BP) { + if (Globals::infAlgorithm == InfAlgorithms::BN_BP) { graphicalModel = mrn; bpSolver = new BnBpSolver (*static_cast (graphicalModel)); - } else if (InfAlgorithms::infAlgorithm == InfAlgorithms::FG_BP) { + } else if (Globals::infAlgorithm == InfAlgorithms::FG_BP) { graphicalModel = new FactorGraph (*mrn); bpSolver = new FgBpSolver (*static_cast (graphicalModel)); delete mrn; - } else if (InfAlgorithms::infAlgorithm == InfAlgorithms::CBP) { + } else if (Globals::infAlgorithm == InfAlgorithms::CBP) { graphicalModel = new FactorGraph (*mrn); bpSolver = new CbpSolver (*static_cast (graphicalModel)); delete mrn; @@ -389,8 +361,7 @@ runOtherSolvers (void) vector results; results.reserve (tasks.size()); for (unsigned i = 0; i < tasks.size(); i++) { - //if (i == 1) exit (0); - if (InfAlgorithms::infAlgorithm == InfAlgorithms::VE) { + if (Globals::infAlgorithm == InfAlgorithms::VE) { BayesNet* mrn = bn->getMinimalRequesiteNetwork (tasks[i]); VarElimSolver* veSolver = new VarElimSolver (*mrn); if (tasks[i].size() == 1) { @@ -430,6 +401,54 @@ runOtherSolvers (void) +int +setParfactorsParams (void) +{ + LiftedNetwork* network = (LiftedNetwork*) YAP_IntOfTerm (YAP_ARG1); + ParfactorList* pfList = network->first; + YAP_Term distList = YAP_ARG2; + unordered_map paramsMap; + while (distList != YAP_TermNil()) { + YAP_Term dist = YAP_HeadOfTerm (distList); + unsigned distId = (unsigned) YAP_IntOfTerm (YAP_ArgOfTerm (1, dist)); + assert (Util::contains (paramsMap, distId) == false); + paramsMap[distId] = readParams (YAP_ArgOfTerm (2, dist)); + distList = YAP_TailOfTerm (distList); + } + ParfactorList::iterator it = pfList->begin(); + while (it != pfList->end()) { + assert (Util::contains (paramsMap, (*it)->distId())); + // (*it)->setParams (paramsMap[(*it)->distId()]); + ++ it; + } + return TRUE; +} + + + +int +setBayesNetParams (void) +{ + BayesNet* bn = (BayesNet*) YAP_IntOfTerm (YAP_ARG1); + YAP_Term distList = YAP_ARG2; + unordered_map paramsMap; + while (distList != YAP_TermNil()) { + YAP_Term dist = YAP_HeadOfTerm (distList); + unsigned distId = (unsigned) YAP_IntOfTerm (YAP_ArgOfTerm (1, dist)); + assert (Util::contains (paramsMap, distId) == false); + paramsMap[distId] = readParams (YAP_ArgOfTerm (2, dist)); + distList = YAP_TailOfTerm (distList); + } + const BnNodeSet& nodes = bn->getBayesNodes(); + for (unsigned i = 0; i < nodes.size(); i++) { + assert (Util::contains (paramsMap, nodes[i]->distId())); + nodes[i]->setParams (paramsMap[nodes[i]->distId()]); + } + return TRUE; +} + + + int setExtraVarsInfo (void) { @@ -463,13 +482,13 @@ setHorusFlag (void) if (key == "inf_alg") { string value ((char*) YAP_AtomName (YAP_AtomOfTerm (YAP_ARG2))); if ( value == "ve") { - InfAlgorithms::infAlgorithm = InfAlgorithms::VE; + Globals::infAlgorithm = InfAlgorithms::VE; } else if (value == "bn_bp") { - InfAlgorithms::infAlgorithm = InfAlgorithms::BN_BP; + Globals::infAlgorithm = InfAlgorithms::BN_BP; } else if (value == "fg_bp") { - InfAlgorithms::infAlgorithm = InfAlgorithms::FG_BP; + Globals::infAlgorithm = InfAlgorithms::FG_BP; } else if (value == "cbp") { - InfAlgorithms::infAlgorithm = InfAlgorithms::CBP; + Globals::infAlgorithm = InfAlgorithms::CBP; } else { cerr << "warning: invalid value `" << value << "' " ; cerr << "for `" << key << "'" << endl; @@ -543,19 +562,19 @@ setHorusFlag (void) int freeBayesNetwork (void) { - //Statistics::writeStatisticsToFile ("stats.txt"); - BayesNet* bn = (BayesNet*) YAP_IntOfTerm (YAP_ARG1); - bn->freeDistributions(); - delete bn; + delete (BayesNet*) YAP_IntOfTerm (YAP_ARG1); return TRUE; } int -freeParfactorGraph (void) +freeParfactors (void) { - delete (ParfactorList*) YAP_IntOfTerm (YAP_ARG1); + LiftedNetwork* network = (LiftedNetwork*) YAP_IntOfTerm (YAP_ARG1); + delete network->first; + delete network->second; + delete network; return TRUE; } @@ -564,15 +583,15 @@ freeParfactorGraph (void) extern "C" void init_predicates (void) { - YAP_UserCPredicate ("create_lifted_network", createLiftedNetwork, 3); - YAP_UserCPredicate ("create_ground_network", createGroundNetwork, 2); - YAP_UserCPredicate ("set_parfactor_graph_params", setParfactorGraphParams, 2); - YAP_UserCPredicate ("set_bayes_net_params", setBayesNetParams, 2); - YAP_UserCPredicate ("run_lifted_solver", runLiftedSolver, 3); - YAP_UserCPredicate ("run_other_solvers", runOtherSolvers, 3); - YAP_UserCPredicate ("set_extra_vars_info", setExtraVarsInfo, 2); - YAP_UserCPredicate ("set_horus_flag", setHorusFlag, 2); - YAP_UserCPredicate ("free_bayesian_network", freeBayesNetwork, 1); - YAP_UserCPredicate ("free_parfactor_graph", freeParfactorGraph, 1); + YAP_UserCPredicate ("create_lifted_network", createLiftedNetwork, 3); + YAP_UserCPredicate ("create_ground_network", createGroundNetwork, 2); + YAP_UserCPredicate ("run_lifted_solver", runLiftedSolver, 3); + YAP_UserCPredicate ("run_ground_solver", runGroundSolver, 3); + YAP_UserCPredicate ("set_parfactors_params", setParfactorsParams, 2); + YAP_UserCPredicate ("set_bayes_net_params", setBayesNetParams, 2); + YAP_UserCPredicate ("set_extra_vars_info", setExtraVarsInfo, 2); + YAP_UserCPredicate ("set_horus_flag", setHorusFlag, 2); + YAP_UserCPredicate ("free_parfactors", freeParfactors, 1); + YAP_UserCPredicate ("free_bayesian_network", freeBayesNetwork, 1); } diff --git a/packages/CLPBN/clpbn/bp/Indexer.h b/packages/CLPBN/clpbn/bp/Indexer.h index f0314ee96..a8b2170bd 100644 --- a/packages/CLPBN/clpbn/bp/Indexer.h +++ b/packages/CLPBN/clpbn/bp/Indexer.h @@ -12,7 +12,9 @@ #include "Util.h" -class StatesIndexer { + +class StatesIndexer +{ public: StatesIndexer (const Ranges& ranges, bool calcOffsets = true) @@ -134,11 +136,11 @@ class StatesIndexer { return size_ ; } - friend ostream& operator<< (ostream &out, const StatesIndexer& idx) + friend ostream& operator<< (ostream &os, const StatesIndexer& idx) { - out << "(" << std::setw (2) << std::setfill('0') << idx.li_ << ") " ; - out << idx.indices_; - return out; + os << "(" << std::setw (2) << std::setfill('0') << idx.li_ << ") " ; + os << idx.indices_; + return os; } private: @@ -274,21 +276,14 @@ class MapIndexer index_ = 0; } - friend ostream& operator<< (ostream &out, const MapIndexer& idx) + friend ostream& operator<< (ostream &os, const MapIndexer& idx) { - out << "(" << std::setw (2) << std::setfill('0') << idx.index_ << ") " ; - out << idx.indices_; - return out; + os << "(" << std::setw (2) << std::setfill('0') << idx.index_ << ") " ; + os << idx.indices_; + return os; } private: - MapIndexer (const Ranges& ranges) : - ranges_(ranges), - indices_(ranges.size(), 0), - offsets_(ranges.size()) - { - index_ = 0; - } unsigned index_; bool valid_; vector ranges_; diff --git a/packages/CLPBN/clpbn/bp/LiftedUtils.cpp b/packages/CLPBN/clpbn/bp/LiftedUtils.cpp index cf953d7b0..7ab70fd81 100644 --- a/packages/CLPBN/clpbn/bp/LiftedUtils.cpp +++ b/packages/CLPBN/clpbn/bp/LiftedUtils.cpp @@ -95,26 +95,18 @@ ostream& operator<< (ostream &os, const Ground& gr) -void -ObservedFormula::addTuple (const Tuple& t) + +ostream& operator<< (ostream &os, const Substitution& theta) { - if (constr_ == 0) { - LogVars lvs (arity_); - for (unsigned i = 0; i < arity_; i++) { - lvs[i] = i; - } - constr_ = new ConstraintTree (lvs); + unordered_map::const_iterator it; + os << "[" ; + it = theta.subs_.begin(); + while (it != theta.subs_.end()) { + if (it != theta.subs_.begin()) os << ", " ; + os << it->first << "->" << it->second ; + ++ it; } - constr_->addTuple (t); -} - - - -ostream& operator<< (ostream &os, const ObservedFormula of) -{ - os << of.functor_ << "/" << of.arity_; - os << "|" << of.constr_->tupleSet(); - os << " [evidence=" << of.evidence_ << "]"; + os << "]" ; return os; } diff --git a/packages/CLPBN/clpbn/bp/LiftedUtils.h b/packages/CLPBN/clpbn/bp/LiftedUtils.h index 838e3134e..38c540779 100644 --- a/packages/CLPBN/clpbn/bp/LiftedUtils.h +++ b/packages/CLPBN/clpbn/bp/LiftedUtils.h @@ -18,11 +18,17 @@ class Symbol { public: Symbol (void) : id_(numeric_limits::max()) { } + Symbol (unsigned id) : id_(id) { } + operator unsigned (void) const { return id_; } + bool valid (void) const { return id_ != numeric_limits::max(); } + static Symbol invalid (void) { return Symbol(); } + friend ostream& operator<< (ostream &os, const Symbol& s); + private: unsigned id_; }; @@ -32,7 +38,9 @@ class LogVar { public: LogVar (void) : id_(numeric_limits::max()) { } + LogVar (unsigned id) : id_(id) { } + operator unsigned (void) const { return id_; } LogVar& operator++ (void) @@ -48,6 +56,7 @@ class LogVar } friend ostream& operator<< (ostream &os, const LogVar& X); + private: unsigned id_; }; @@ -79,8 +88,8 @@ ostream& operator<< (ostream &os, const Tuple& t); namespace LiftedUtils { -Symbol getSymbol (const string&); -void printSymbolDictionary (void); +Symbol getSymbol (const string&); +void printSymbolDictionary (void); } @@ -89,69 +98,51 @@ class Ground { public: Ground (Symbol f) : functor_(f) { } + Ground (Symbol f, const Symbols& args) : functor_(f), args_(args) { } - Symbol functor (void) const { return functor_; } - Symbols args (void) const { return args_; } - unsigned arity (void) const { return args_.size(); } - bool isAtom (void) const { return args_.size() == 0; } + Symbol functor (void) const { return functor_; } + + Symbols args (void) const { return args_; } + + unsigned arity (void) const { return args_.size(); } + + bool isAtom (void) const { return args_.size() == 0; } + friend ostream& operator<< (ostream &os, const Ground& gr); + private: - Symbol functor_; - Symbols args_; + Symbol functor_; + Symbols args_; }; + typedef vector Grounds; -class ConstraintTree; -class ObservedFormula -{ - public: - ObservedFormula (Symbol f, unsigned a, unsigned ev) - : functor_(f), arity_(a), evidence_(ev), constr_(0) { } - - ObservedFormula (Symbol f, unsigned ev, const Tuple& tuple) - : functor_(f), arity_(tuple.size()), evidence_(ev), constr_(0) - { - addTuple (tuple); - } - - Symbol functor (void) const { return functor_; } - unsigned arity (void) const { return arity_; } - unsigned evidence (void) const { return evidence_; } - ConstraintTree* constr (void) const { return constr_; } - bool isAtom (void) const { return arity_ == 0; } - - void addTuple (const Tuple& t); - friend ostream& operator<< (ostream &os, const ObservedFormula opv); - private: - Symbol functor_; - unsigned arity_; - unsigned evidence_; - ConstraintTree* constr_; -}; -typedef vector ObservedFormulas; - - - class Substitution { public: void add (LogVar X_old, LogVar X_new) { + assert (Util::contains (subs_, X_old) == false); subs_.insert (make_pair (X_old, X_new)); } + void rename (LogVar X_old, LogVar X_new) { - assert (subs_.find (X_old) != subs_.end()); + assert (Util::contains (subs_, X_old)); subs_.find (X_old)->second = X_new; } + LogVar newNameFor (LogVar X) const { - assert (subs_.find (X) != subs_.end()); + assert (Util::contains (subs_, X)); return subs_.find (X)->second; } + + friend ostream& operator<< (ostream &os, const Substitution& theta); + private: unordered_map subs_; }; diff --git a/packages/CLPBN/clpbn/bp/Makefile b/packages/CLPBN/clpbn/bp/Makefile new file mode 100644 index 000000000..6432f77a6 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/Makefile @@ -0,0 +1,236 @@ +# +# default base directory for YAP installation +# (EROOT for architecture-dependent files) +# +GCC = yes +prefix = /home/tgomes +exec_prefix = ${prefix} +ROOTDIR = $(prefix) +EROOTDIR = ${prefix} +abs_top_builddir = /home/tgomes/yap-6.3 +# +# where the binary should be +# +BINDIR = $(EROOTDIR)/bin +# +# where YAP should look for libraries +# +LIBDIR=${exec_prefix}/lib +YAPLIBDIR=${exec_prefix}/lib/Yap +# +# +CC=gcc +CXX=g++ + +# normal +#CXXFLAGS= -std=c++0x -shared -fPIC -O3 -fomit-frame-pointer -Wall -g -O2 $(YAP_EXTRAS) $(DEFS) -D_YAP_NOT_INSTALLED_=1 -I$(srcdir) -I../../../.. -I$(srcdir)/../../../../include -DNDEBUG + +# debug +CXXFLAGS= -std=c++0x -shared -fPIC -O3 -fomit-frame-pointer -Wall -g -O2 $(YAP_EXTRAS) $(DEFS) -D_YAP_NOT_INSTALLED_=1 -I$(srcdir) -I../../../.. -I$(srcdir)/../../../../include -g -O0 -Wextra + + +# +# +# You shouldn't need to change what follows. +# +INSTALL=/usr/bin/install -c +INSTALL_DATA=${INSTALL} -m 644 +INSTALL_PROGRAM=${INSTALL} +SHELL=/bin/sh +RANLIB=ranlib +srcdir=. +SO=so +#4.1VPATH=.:./OPTYap +CWD=$(PWD) + + +HEADERS = \ + $(srcdir)/GraphicalModel.h \ + $(srcdir)/BayesNet.h \ + $(srcdir)/BayesNode.h \ + $(srcdir)/ElimGraph.h \ + $(srcdir)/FactorGraph.h \ + $(srcdir)/Factor.h \ + $(srcdir)/CFactorGraph.h \ + $(srcdir)/ConstraintTree.h \ + $(srcdir)/Solver.h \ + $(srcdir)/VarElimSolver.h \ + $(srcdir)/BnBpSolver.h \ + $(srcdir)/FgBpSolver.h \ + $(srcdir)/CbpSolver.h \ + $(srcdir)/FoveSolver.h \ + $(srcdir)/VarNode.h \ + $(srcdir)/Indexer.h \ + $(srcdir)/Parfactor.h \ + $(srcdir)/ProbFormula.h \ + $(srcdir)/Histogram.h \ + $(srcdir)/ParfactorList.h \ + $(srcdir)/LiftedUtils.h \ + $(srcdir)/TinySet.h \ + $(srcdir)/Util.h \ + $(srcdir)/Horus.h \ + $(srcdir)/xmlParser/xmlParser.h + +CPP_SOURCES = \ + $(srcdir)/BayesNet.cpp \ + $(srcdir)/BayesNode.cpp \ + $(srcdir)/ElimGraph.cpp \ + $(srcdir)/FactorGraph.cpp \ + $(srcdir)/Factor.cpp \ + $(srcdir)/CFactorGraph.cpp \ + $(srcdir)/ConstraintTree.cpp \ + $(srcdir)/VarNode.cpp \ + $(srcdir)/Solver.cpp \ + $(srcdir)/VarElimSolver.cpp \ + $(srcdir)/BnBpSolver.cpp \ + $(srcdir)/FgBpSolver.cpp \ + $(srcdir)/CbpSolver.cpp \ + $(srcdir)/FoveSolver.cpp \ + $(srcdir)/Parfactor.cpp \ + $(srcdir)/ProbFormula.cpp \ + $(srcdir)/Histogram.cpp \ + $(srcdir)/ParfactorList.cpp \ + $(srcdir)/LiftedUtils.cpp \ + $(srcdir)/Util.cpp \ + $(srcdir)/HorusYap.cpp \ + $(srcdir)/HorusCli.cpp \ + $(srcdir)/xmlParser/xmlParser.cpp + +OBJS = \ + BayesNet.o \ + BayesNode.o \ + ElimGraph.o \ + FactorGraph.o \ + Factor.o \ + CFactorGraph.o \ + ConstraintTree.o \ + VarNode.o \ + Solver.o \ + VarElimSolver.o \ + BnBpSolver.o \ + FgBpSolver.o \ + CbpSolver.o \ + FoveSolver.o \ + Parfactor.o \ + ProbFormula.o \ + Histogram.o \ + ParfactorList.o \ + LiftedUtils.o \ + Util.o \ + HorusYap.o + +HCLI_OBJS = \ + BayesNet.o \ + BayesNode.o \ + ElimGraph.o \ + FactorGraph.o \ + Factor.o \ + CFactorGraph.o \ + ConstraintTree.o \ + VarNode.o \ + Solver.o \ + VarElimSolver.o \ + BnBpSolver.o \ + FgBpSolver.o \ + CbpSolver.o \ + FoveSolver.o \ + Parfactor.o \ + ProbFormula.o \ + Histogram.o \ + ParfactorList.o \ + LiftedUtils.o \ + Util.o \ + xmlParser/xmlParser.o \ + HorusCli.o + +SOBJS=horus.so + + +all: $(SOBJS) hcli + +# default rule +%.o : $(srcdir)/%.cpp + $(CXX) -c $(CXXFLAGS) $< -o $@ + + +xmlParser/xmlParser.o : $(srcdir)/xmlParser/xmlParser.cpp + $(CXX) -c $(CXXFLAGS) $< -o $@ + + +horus.so: $(OBJS) + g++ -shared -export-dynamic -o horus.so $(OBJS) -Wl,-R,$(YAPLIBDIR) -Wl,-R,$(LIBDIR) + + +hcli: $(HCLI_OBJS) + $(CXX) -o hcli $(HCLI_OBJS) + + +install: all + $(INSTALL_PROGRAM) $(SOBJS) $(DESTDIR) $(YAPLIBDIR) + + +clean: + rm -f *.o *~ $(OBJS) $(SOBJS) *.BAK hcli xmlParser/*.o + + +erase_dots: + rm -f *.dot *.png + + +depend: $(HEADERS) $(CPP_SOURCES) + -@if test "$(GCC)" = yes; then\ + $(CC) -std=c++0x -MM -MG $(CFLAGS) -I$(srcdir) -I$(srcdir)/../../../../include -I$(srcdir)/../../../../H $(CPP_SOURCES) >> Makefile;\ + else\ + makedepend -f - -- $(CFLAGS) -I$(srcdir)/../../../../H -I$(srcdir)/../../../../include -- $(CPP_SOURCES) |\ + sed 's|.*/\([^:]*\):|\1:|' >> Makefile ;\ + fi + +# DO NOT DELETE THIS LINE -- make depend depends on it. + +BayesNet.o: BayesNet.cpp xmlParser/xmlParser.h BayesNet.h \ + GraphicalModel.h VarNode.h Horus.h BayesNode.h Util.h +BayesNode.o: BayesNode.cpp BayesNode.h VarNode.h Horus.h +ElimGraph.o: ElimGraph.cpp ElimGraph.h FactorGraph.h GraphicalModel.h \ + VarNode.h Horus.h Factor.h Util.h BayesNet.h BayesNode.h +FactorGraph.o: FactorGraph.cpp FactorGraph.h GraphicalModel.h VarNode.h \ + Horus.h Factor.h Util.h BayesNet.h BayesNode.h +Factor.o: Factor.cpp Factor.h VarNode.h Horus.h Util.h Indexer.h +CFactorGraph.o: CFactorGraph.cpp CFactorGraph.h FactorGraph.h \ + GraphicalModel.h VarNode.h Horus.h Factor.h Util.h +ConstraintTree.o: ConstraintTree.cpp ConstraintTree.h TinySet.h \ + LiftedUtils.h Util.h Horus.h +VarNode.o: VarNode.cpp VarNode.h Horus.h GraphicalModel.h +Solver.o: Solver.cpp Solver.h GraphicalModel.h VarNode.h Horus.h Util.h +VarElimSolver.o: VarElimSolver.cpp VarElimSolver.h Solver.h \ + GraphicalModel.h VarNode.h Horus.h FactorGraph.h Factor.h Util.h \ + BayesNet.h BayesNode.h ElimGraph.h +BnBpSolver.o: BnBpSolver.cpp BnBpSolver.h Solver.h GraphicalModel.h \ + VarNode.h Horus.h BayesNet.h BayesNode.h Util.h Indexer.h +FgBpSolver.o: FgBpSolver.cpp FgBpSolver.h Solver.h GraphicalModel.h \ + VarNode.h Horus.h Factor.h Util.h FactorGraph.h Indexer.h +CbpSolver.o: CbpSolver.cpp CbpSolver.h FgBpSolver.h Solver.h \ + GraphicalModel.h VarNode.h Horus.h Factor.h Util.h FactorGraph.h \ + CFactorGraph.h +FoveSolver.o: FoveSolver.cpp FoveSolver.h ParfactorList.h Parfactor.h \ + ProbFormula.h ConstraintTree.h TinySet.h LiftedUtils.h Util.h Horus.h \ + Histogram.h +Parfactor.o: Parfactor.cpp Parfactor.h ProbFormula.h ConstraintTree.h \ + TinySet.h LiftedUtils.h Util.h Horus.h Histogram.h Indexer.h VarNode.h +ProbFormula.o: ProbFormula.cpp ProbFormula.h ConstraintTree.h TinySet.h \ + LiftedUtils.h Util.h Horus.h +Histogram.o: Histogram.cpp Histogram.h Util.h Horus.h +ParfactorList.o: ParfactorList.cpp ParfactorList.h Parfactor.h \ + ProbFormula.h ConstraintTree.h TinySet.h LiftedUtils.h Util.h Horus.h +LiftedUtils.o: LiftedUtils.cpp LiftedUtils.h TinySet.h Util.h Horus.h \ + ConstraintTree.h +Util.o: Util.cpp Util.h Horus.h Indexer.h VarNode.h GraphicalModel.h +HorusYap.o: HorusYap.cpp ../../../../include/YapInterface.h \ + ../../../../include/yap_structs.h ParfactorList.h Parfactor.h \ + ProbFormula.h ConstraintTree.h TinySet.h LiftedUtils.h Util.h Horus.h \ + BayesNet.h GraphicalModel.h VarNode.h BayesNode.h FactorGraph.h Factor.h \ + FoveSolver.h VarElimSolver.h Solver.h BnBpSolver.h FgBpSolver.h \ + CbpSolver.h CFactorGraph.h ElimGraph.h +HorusCli.o: HorusCli.cpp BayesNet.h GraphicalModel.h VarNode.h Horus.h \ + BayesNode.h FactorGraph.h Factor.h Util.h VarElimSolver.h Solver.h \ + BnBpSolver.h FgBpSolver.h CbpSolver.h CFactorGraph.h +xmlParser.o: xmlParser/xmlParser.cpp xmlParser/xmlParser.h diff --git a/packages/CLPBN/clpbn/bp/Makefile.in b/packages/CLPBN/clpbn/bp/Makefile.in index 5d13e23cf..e9b7c46ae 100644 --- a/packages/CLPBN/clpbn/bp/Makefile.in +++ b/packages/CLPBN/clpbn/bp/Makefile.in @@ -60,7 +60,6 @@ HEADERS = \ $(srcdir)/CbpSolver.h \ $(srcdir)/FoveSolver.h \ $(srcdir)/VarNode.h \ - $(srcdir)/Distribution.h \ $(srcdir)/Indexer.h \ $(srcdir)/Parfactor.h \ $(srcdir)/ProbFormula.h \ diff --git a/packages/CLPBN/clpbn/bp/Parfactor.cpp b/packages/CLPBN/clpbn/bp/Parfactor.cpp index 5db1e29ff..96c5b8f0e 100644 --- a/packages/CLPBN/clpbn/bp/Parfactor.cpp +++ b/packages/CLPBN/clpbn/bp/Parfactor.cpp @@ -2,6 +2,7 @@ #include "Parfactor.h" #include "Histogram.h" #include "Indexer.h" +#include "Util.h" #include "Horus.h" @@ -11,55 +12,58 @@ Parfactor::Parfactor ( const Tuples& tuples, unsigned distId) { - formulas_ = formulas; - params_ = params; - distId_ = distId; + args_ = formulas; + params_ = params; + distId_ = distId; LogVars logVars; - for (unsigned i = 0; i < formulas_.size(); i++) { - ranges_.push_back (formulas_[i].range()); - const LogVars& lvs = formulas_[i].logVars(); + for (unsigned i = 0; i < args_.size(); i++) { + ranges_.push_back (args_[i].range()); + const LogVars& lvs = args_[i].logVars(); for (unsigned j = 0; j < lvs.size(); j++) { - if (std::find (logVars.begin(), logVars.end(), lvs[j]) == - logVars.end()) { + if (Util::contains (logVars, lvs[j]) == false) { logVars.push_back (lvs[j]); } } } constr_ = new ConstraintTree (logVars, tuples); + assert (params_.size() == Util::expectedSize (ranges_)); } Parfactor::Parfactor (const Parfactor* g, const Tuple& tuple) { - formulas_ = g->formulas(); - params_ = g->params(); - ranges_ = g->ranges(); - distId_ = g->distId(); - constr_ = new ConstraintTree (g->logVars(), {tuple}); + args_ = g->arguments(); + params_ = g->params(); + ranges_ = g->ranges(); + distId_ = g->distId(); + constr_ = new ConstraintTree (g->logVars(), {tuple}); + assert (params_.size() == Util::expectedSize (ranges_)); } Parfactor::Parfactor (const Parfactor* g, ConstraintTree* constr) { - formulas_ = g->formulas(); - params_ = g->params(); - ranges_ = g->ranges(); - distId_ = g->distId(); - constr_ = constr; + args_ = g->arguments(); + params_ = g->params(); + ranges_ = g->ranges(); + distId_ = g->distId(); + constr_ = constr; + assert (params_.size() == Util::expectedSize (ranges_)); } Parfactor::Parfactor (const Parfactor& g) { - formulas_ = g.formulas(); - params_ = g.params(); - ranges_ = g.ranges(); - distId_ = g.distId(); - constr_ = new ConstraintTree (*g.constr()); + args_ = g.arguments(); + params_ = g.params(); + ranges_ = g.ranges(); + distId_ = g.distId(); + constr_ = new ConstraintTree (*g.constr()); + assert (params_.size() == Util::expectedSize (ranges_)); } @@ -75,9 +79,9 @@ LogVarSet Parfactor::countedLogVars (void) const { LogVarSet set; - for (unsigned i = 0; i < formulas_.size(); i++) { - if (formulas_[i].isCounting()) { - set.insert (formulas_[i].countedLogVar()); + for (unsigned i = 0; i < args_.size(); i++) { + if (args_[i].isCounting()) { + set.insert (args_[i].countedLogVar()); } } return set; @@ -107,14 +111,14 @@ Parfactor::elimLogVars (void) const LogVarSet Parfactor::exclusiveLogVars (unsigned fIdx) const { - assert (fIdx < formulas_.size()); + assert (fIdx < args_.size()); LogVarSet remaining; - for (unsigned i = 0; i < formulas_.size(); i++) { + for (unsigned i = 0; i < args_.size(); i++) { if (i != fIdx) { - remaining |= formulas_[i].logVarSet(); + remaining |= args_[i].logVarSet(); } } - return formulas_[fIdx].logVarSet() - remaining; + return args_[fIdx].logVarSet() - remaining; } @@ -131,44 +135,51 @@ Parfactor::setConstraintTree (ConstraintTree* newTree) void Parfactor::sumOut (unsigned fIdx) { - assert (fIdx < formulas_.size()); - assert (formulas_[fIdx].contains (elimLogVars())); + assert (fIdx < args_.size()); + assert (args_[fIdx].contains (elimLogVars())); LogVarSet excl = exclusiveLogVars (fIdx); - unsigned condCount = constr_->getConditionalCount (excl); - Util::pow (params_, condCount); + if (args_[fIdx].isCounting()) { + LogAware::pow (params_, constr_->getConditionalCount ( + excl - args_[fIdx].countedLogVar())); + } else { + LogAware::pow (params_, constr_->getConditionalCount (excl)); + } - vector numAssigns (ranges_[fIdx], 1); - if (formulas_[fIdx].isCounting()) { + if (args_[fIdx].isCounting()) { unsigned N = constr_->getConditionalCount ( - formulas_[fIdx].countedLogVar()); - unsigned R = formulas_[fIdx].range(); - unsigned H = ranges_[fIdx]; - HistogramSet hs (N, R); - unsigned N_factorial = Util::factorial (N); - for (unsigned h = 0; h < H; h++) { - unsigned prod = 1; - for (unsigned r = 0; r < R; r++) { - prod *= Util::factorial (hs[r]); + args_[fIdx].countedLogVar()); + unsigned R = args_[fIdx].range(); + vector numAssigns = HistogramSet::getNumAssigns (N, R); + StatesIndexer sindexer (ranges_, fIdx); + while (sindexer.valid()) { + unsigned h = sindexer[fIdx]; + if (Globals::logDomain) { + params_[sindexer] += numAssigns[h]; + } else { + params_[sindexer] *= numAssigns[h]; } - numAssigns[h] = N_factorial / prod; - hs.nextHistogram(); + ++ sindexer; } - cout << endl; } Params copy = params_; params_.clear(); - params_.resize (copy.size() / ranges_[fIdx], 0.0); - + params_.resize (copy.size() / ranges_[fIdx], LogAware::addIdenty()); MapIndexer indexer (ranges_, fIdx); - for (unsigned i = 0; i < copy.size(); i++) { - unsigned h = indexer[fIdx]; - // TODO NOT LOG DOMAIN AWARE :( - params_[indexer] += numAssigns[h] * copy[i]; - ++ indexer; + if (Globals::logDomain) { + for (unsigned i = 0; i < copy.size(); i++) { + params_[indexer] = Util::logSum (params_[indexer], copy[i]); + ++ indexer; + } + } else { + for (unsigned i = 0; i < copy.size(); i++) { + params_[indexer] += copy[i]; + ++ indexer; + } } - formulas_.erase (formulas_.begin() + fIdx); + + args_.erase (args_.begin() + fIdx); ranges_.erase (ranges_.begin() + fIdx); constr_->remove (excl); } @@ -179,55 +190,8 @@ void Parfactor::multiply (Parfactor& g) { alignAndExponentiate (this, &g); - bool sharedVars = false; - vector g_varpos; - const ProbFormulas& g_formulas = g.formulas(); - const Params& g_params = g.params(); - const Ranges& g_ranges = g.ranges(); - - for (unsigned i = 0; i < g_formulas.size(); i++) { - int group = g_formulas[i].group(); - if (indexOfFormulaWithGroup (group) == -1) { - insertDimension (g.ranges()[i]); - formulas_.push_back (g_formulas[i]); - g_varpos.push_back (formulas_.size() - 1); - } else { - sharedVars = true; - g_varpos.push_back (indexOfFormulaWithGroup (group)); - } - } - - if (sharedVars == false) { - unsigned count = 0; - for (unsigned i = 0; i < params_.size(); i++) { - if (Globals::logDomain) { - params_[i] += g_params[count]; - } else { - params_[i] *= g_params[count]; - } - count ++; - if (count >= g_params.size()) { - count = 0; - } - } - } else { - StatesIndexer indexer (ranges_, false); - while (indexer.valid()) { - unsigned g_li = 0; - unsigned prod = 1; - for (int j = g_varpos.size() - 1; j >= 0; j--) { - g_li += indexer[g_varpos[j]] * prod; - prod *= g_ranges[j]; - } - if (Globals::logDomain) { - params_[indexer] += g_params[g_li]; - } else { - params_[indexer] *= g_params[g_li]; - } - ++ indexer; - } - } - + TFactor::multiply (g); + cout << "calling lifted mult" << endl; constr_->join (g.constr(), true); } @@ -236,7 +200,7 @@ Parfactor::multiply (Parfactor& g) void Parfactor::countConvert (LogVar X) { - int fIdx = indexOfFormulaWithLogVar (X); + int fIdx = indexOfLogVar (X); assert (fIdx != -1); assert (constr_->isCountNormalized (X)); assert (constr_->getConditionalCount (X) > 1); @@ -248,12 +212,12 @@ Parfactor::countConvert (LogVar X) vector histograms = HistogramSet::getHistograms (N, R); StatesIndexer indexer (ranges_); - vector summout (params_.size() / R); + vector sumout (params_.size() / R); unsigned count = 0; while (indexer.valid()) { - summout[count].reserve (R); + sumout[count].reserve (R); for (unsigned r = 0; r < R; r++) { - summout[count].push_back (params_[indexer]); + sumout[count].push_back (params_[indexer]); indexer.increment (fIdx); } count ++; @@ -262,45 +226,42 @@ Parfactor::countConvert (LogVar X) } params_.clear(); - params_.reserve (summout.size() * H); + params_.reserve (sumout.size() * H); - vector mapDims (ranges_.size(), true); ranges_[fIdx] = H; - mapDims[fIdx] = false; - MapIndexer mapIndexer (ranges_, mapDims); + MapIndexer mapIndexer (ranges_, fIdx); while (mapIndexer.valid()) { - double prod = 1.0; + double prod = LogAware::multIdenty(); unsigned i = mapIndexer.mappedIndex(); unsigned h = mapIndexer[fIdx]; for (unsigned r = 0; r < R; r++) { - // TODO not log domain aware - prod *= Util::pow (summout[i][r], histograms[h][r]); + if (Globals::logDomain) { + prod += LogAware::pow (sumout[i][r], histograms[h][r]); + } else { + prod *= LogAware::pow (sumout[i][r], histograms[h][r]); + } } params_.push_back (prod); ++ mapIndexer; } - formulas_[fIdx].setCountedLogVar (X); + args_[fIdx].setCountedLogVar (X); } void -Parfactor::expandPotential ( - LogVar X, - LogVar X_new1, - LogVar X_new2) +Parfactor::expand (LogVar X, LogVar X_new1, LogVar X_new2) { - int fIdx = indexOfFormulaWithLogVar (X); + int fIdx = indexOfLogVar (X); assert (fIdx != -1); - assert (formulas_[fIdx].isCounting()); + assert (args_[fIdx].isCounting()); unsigned N1 = constr_->getConditionalCount (X_new1); unsigned N2 = constr_->getConditionalCount (X_new2); unsigned N = N1 + N2; - unsigned R = formulas_[fIdx].range(); + unsigned R = args_[fIdx].range(); unsigned H1 = HistogramSet::nrHistograms (N1, R); unsigned H2 = HistogramSet::nrHistograms (N2, R); - unsigned H = ranges_[fIdx]; vector histograms = HistogramSet::getHistograms (N, R); vector histograms1 = HistogramSet::getHistograms (N1, R); @@ -320,48 +281,11 @@ Parfactor::expandPotential ( } } - unsigned size = (params_.size() / H) * H1 * H2; - Params copy = params_; - params_.clear(); - params_.reserve (size); + expandPotential (fIdx, H1 * H2, sumIndexes); - unsigned prod = 1; - vector offsets_ (ranges_.size()); - for (int i = ranges_.size() - 1; i >= 0; i--) { - offsets_[i] = prod; - prod *= ranges_[i]; - } - - unsigned index = 0; - ranges_[fIdx] = H1 * H2; - vector indices (ranges_.size(), 0); - for (unsigned k = 0; k < size; k++) { - params_.push_back (copy[index]); - for (int i = ranges_.size() - 1; i >= 0; i--) { - indices[i] ++; - if (i == fIdx) { - int diff = sumIndexes[indices[i]] - sumIndexes[indices[i] - 1]; - index += diff * offsets_[i]; - } else { - index += offsets_[i]; - } - if (indices[i] != ranges_[i]) { - break; - } else { - if (i == fIdx) { - int diff = sumIndexes[0] - sumIndexes[indices[i]]; - index += diff * offsets_[i]; - } else { - index -= offsets_[i] * ranges_[i]; - } - indices[i] = 0; - } - } - } - - formulas_.insert (formulas_.begin() + fIdx + 1, formulas_[fIdx]); - formulas_[fIdx].rename (X, X_new1); - formulas_[fIdx + 1].rename (X, X_new2); + args_.insert (args_.begin() + fIdx + 1, args_[fIdx]); + args_[fIdx].rename (X, X_new1); + args_[fIdx + 1].rename (X, X_new2); ranges_.insert (ranges_.begin() + fIdx + 1, H2); ranges_[fIdx] = H1; } @@ -371,13 +295,12 @@ Parfactor::expandPotential ( void Parfactor::fullExpand (LogVar X) { - int fIdx = indexOfFormulaWithLogVar (X); + int fIdx = indexOfLogVar (X); assert (fIdx != -1); - assert (formulas_[fIdx].isCounting()); + assert (args_[fIdx].isCounting()); unsigned N = constr_->getConditionalCount (X); - unsigned R = formulas_[fIdx].range(); - unsigned H = ranges_[fIdx]; + unsigned R = args_[fIdx].range(); vector originHists = HistogramSet::getHistograms (N, R); vector expandHists = HistogramSet::getHistograms (1, R); @@ -400,54 +323,17 @@ Parfactor::fullExpand (LogVar X) ++ indexer; } - unsigned size = (params_.size() / H) * std::pow (R, N); - Params copy = params_; - params_.clear(); - params_.reserve (size); + expandPotential (fIdx, std::pow (R, N), sumIndexes); - unsigned prod = 1; - vector offsets_ (ranges_.size()); - for (int i = ranges_.size() - 1; i >= 0; i--) { - offsets_[i] = prod; - prod *= ranges_[i]; - } - - unsigned index = 0; - ranges_[fIdx] = std::pow (R, N); - vector indices (ranges_.size(), 0); - for (unsigned k = 0; k < size; k++) { - params_.push_back (copy[index]); - for (int i = ranges_.size() - 1; i >= 0; i--) { - indices[i] ++; - if (i == fIdx) { - int diff = sumIndexes[indices[i]] - sumIndexes[indices[i] - 1]; - index += diff * offsets_[i]; - } else { - index += offsets_[i]; - } - if (indices[i] != ranges_[i]) { - break; - } else { - if (i == fIdx) { - int diff = sumIndexes[0] - sumIndexes[indices[i]]; - index += diff * offsets_[i]; - } else { - index -= offsets_[i] * ranges_[i]; - } - indices[i] = 0; - } - } - } - - ProbFormula f = formulas_[fIdx]; - formulas_.erase (formulas_.begin() + fIdx); + ProbFormula f = args_[fIdx]; + args_.erase (args_.begin() + fIdx); ranges_.erase (ranges_.begin() + fIdx); LogVars newLvs = constr_->expand (X); assert (newLvs.size() == N); for (unsigned i = 0 ; i < N; i++) { ProbFormula newFormula (f.functor(), f.logVars(), f.range()); newFormula.rename (X, newLvs[i]); - formulas_.insert (formulas_.begin() + fIdx + i, newFormula); + args_.insert (args_.begin() + fIdx + i, newFormula); ranges_.insert (ranges_.begin() + fIdx + i, R); } } @@ -459,108 +345,43 @@ Parfactor::reorderAccordingGrounds (const Grounds& grounds) { ProbFormulas newFormulas; for (unsigned i = 0; i < grounds.size(); i++) { - for (unsigned j = 0; j < formulas_.size(); j++) { - if (grounds[i].functor() == formulas_[j].functor() && - grounds[i].arity() == formulas_[j].arity()) { - constr_->moveToTop (formulas_[j].logVars()); + for (unsigned j = 0; j < args_.size(); j++) { + if (grounds[i].functor() == args_[j].functor() && + grounds[i].arity() == args_[j].arity()) { + constr_->moveToTop (args_[j].logVars()); if (constr_->containsTuple (grounds[i].args())) { - newFormulas.push_back (formulas_[j]); + newFormulas.push_back (args_[j]); break; } } } assert (newFormulas.size() == i + 1); } - reorderFormulas (newFormulas); + reorderArguments (newFormulas); } void -Parfactor::reorderFormulas (const ProbFormulas& newFormulas) -{ - assert (newFormulas.size() == formulas_.size()); - if (newFormulas == formulas_) { - return; - } - - Ranges newRanges; - vector positions; - for (unsigned i = 0; i < newFormulas.size(); i++) { - unsigned idx = indexOf (newFormulas[i]); - newRanges.push_back (ranges_[idx]); - positions.push_back (idx); - } - - unsigned N = ranges_.size(); - Params newParams (params_.size()); - for (unsigned i = 0; i < params_.size(); i++) { - unsigned li = i; - // calculate vector index corresponding to linear index - vector vi (N); - for (int k = N-1; k >= 0; k--) { - vi[k] = li % ranges_[k]; - li /= ranges_[k]; - } - // convert permuted vector index to corresponding linear index - unsigned prod = 1; - unsigned new_li = 0; - for (int k = N - 1; k >= 0; k--) { - new_li += vi[positions[k]] * prod; - prod *= ranges_[positions[k]]; - } - newParams[new_li] = params_[i]; - } - formulas_ = newFormulas; - ranges_ = newRanges; - params_ = newParams; -} - - - -void -Parfactor::absorveEvidence (unsigned fIdx, unsigned evidence) +Parfactor::absorveEvidence (const ProbFormula& formula, unsigned evidence) { + int fIdx = indexOf (formula); + assert (fIdx != -1); LogVarSet excl = exclusiveLogVars (fIdx); - assert (fIdx < formulas_.size()); - assert (evidence < formulas_[fIdx].range()); - assert (formulas_[fIdx].isCounting() == false); + assert (args_[fIdx].isCounting() == false); assert (constr_->isCountNormalized (excl)); - - Util::pow (params_, constr_->getConditionalCount (excl)); - - Params copy = params_; - params_.clear(); - params_.reserve (copy.size() / formulas_[fIdx].range()); - - StatesIndexer indexer (ranges_); - for (unsigned i = 0; i < evidence; i++) { - indexer.increment (fIdx); - } - while (indexer.valid()) { - params_.push_back (copy[indexer]); - indexer.incrementExcluding (fIdx); - } - formulas_.erase (formulas_.begin() + fIdx); - ranges_.erase (ranges_.begin() + fIdx); + LogAware::pow (params_, constr_->getConditionalCount (excl)); + TFactor::absorveEvidence (formula, evidence); constr_->remove (excl); } -void -Parfactor::normalize (void) -{ - Util::normalize (params_); -} - - - void Parfactor::setFormulaGroup (const ProbFormula& f, int group) { assert (indexOf (f) != -1); - formulas_[indexOf (f)].setGroup (group); + args_[indexOf (f)].setGroup (group); } @@ -568,8 +389,8 @@ Parfactor::setFormulaGroup (const ProbFormula& f, int group) void Parfactor::setNewGroups (void) { - for (unsigned i = 0; i < formulas_.size(); i++) { - formulas_[i].setGroup (ProbFormula::getNewGroup()); + for (unsigned i = 0; i < args_.size(); i++) { + args_[i].setGroup (ProbFormula::getNewGroup()); } } @@ -578,14 +399,14 @@ Parfactor::setNewGroups (void) void Parfactor::applySubstitution (const Substitution& theta) { - for (unsigned i = 0; i < formulas_.size(); i++) { - LogVars& lvs = formulas_[i].logVars(); + for (unsigned i = 0; i < args_.size(); i++) { + LogVars& lvs = args_[i].logVars(); for (unsigned j = 0; j < lvs.size(); j++) { lvs[j] = theta.newNameFor (lvs[j]); } - if (formulas_[i].isCounting()) { - LogVar clv = formulas_[i].countedLogVar(); - formulas_[i].setCountedLogVar (theta.newNameFor (clv)); + if (args_[i].isCounting()) { + LogVar clv = args_[i].countedLogVar(); + args_[i].setCountedLogVar (theta.newNameFor (clv)); } } constr_->applySubstitution (theta); @@ -593,19 +414,29 @@ Parfactor::applySubstitution (const Substitution& theta) -bool -Parfactor::containsGround (const Ground& ground) const +int +Parfactor::groupWithGround (const Ground& ground) const { - for (unsigned i = 0; i < formulas_.size(); i++) { - if (formulas_[i].functor() == ground.functor() && - formulas_[i].arity() == ground.arity()) { - constr_->moveToTop (formulas_[i].logVars()); + int group = -1; + for (unsigned i = 0; i < args_.size(); i++) { + if (args_[i].functor() == ground.functor() && + args_[i].arity() == ground.arity()) { + constr_->moveToTop (args_[i].logVars()); if (constr_->containsTuple (ground.args())) { - return true; + group = args_[i].group(); + break; } } } - return false; + return group; +} + + + +bool +Parfactor::containsGround (const Ground& ground) const +{ + return groupWithGround (ground) != -1; } @@ -613,8 +444,8 @@ Parfactor::containsGround (const Ground& ground) const bool Parfactor::containsGroup (unsigned group) const { - for (unsigned i = 0; i < formulas_.size(); i++) { - if (formulas_[i].group() == group) { + for (unsigned i = 0; i < args_.size(); i++) { + if (args_[i].group() == group) { return true; } } @@ -623,30 +454,12 @@ Parfactor::containsGroup (unsigned group) const -const ProbFormula& -Parfactor::formula (unsigned fIdx) const -{ - assert (fIdx < formulas_.size()); - return formulas_[fIdx]; -} - - - -unsigned -Parfactor::range (unsigned fIdx) const -{ - assert (fIdx < ranges_.size()); - return ranges_[fIdx]; -} - - - unsigned Parfactor::nrFormulas (LogVar X) const { unsigned count = 0; - for (unsigned i = 0; i < formulas_.size(); i++) { - if (formulas_[i].contains (X)) { + for (unsigned i = 0; i < args_.size(); i++) { + if (args_[i].contains (X)) { count ++; } } @@ -656,27 +469,12 @@ Parfactor::nrFormulas (LogVar X) const int -Parfactor::indexOf (const ProbFormula& f) const -{ - int idx = -1; - for (unsigned i = 0; i < formulas_.size(); i++) { - if (f == formulas_[i]) { - idx = i; - break; - } - } - return idx; -} - - - -int -Parfactor::indexOfFormulaWithLogVar (LogVar X) const +Parfactor::indexOfLogVar (LogVar X) const { int idx = -1; assert (nrFormulas (X) == 1); - for (unsigned i = 0; i < formulas_.size(); i++) { - if (formulas_[i].contains (X)) { + for (unsigned i = 0; i < args_.size(); i++) { + if (args_[i].contains (X)) { idx = i; break; } @@ -687,11 +485,11 @@ Parfactor::indexOfFormulaWithLogVar (LogVar X) const int -Parfactor::indexOfFormulaWithGroup (unsigned group) const +Parfactor::indexOfGroup (unsigned group) const { int pos = -1; - for (unsigned i = 0; i < formulas_.size(); i++) { - if (formulas_[i].group() == group) { + for (unsigned i = 0; i < args_.size(); i++) { + if (args_[i].group() == group) { pos = i; break; } @@ -704,9 +502,9 @@ Parfactor::indexOfFormulaWithGroup (unsigned group) const vector Parfactor::getAllGroups (void) const { - vector groups (formulas_.size()); - for (unsigned i = 0; i < formulas_.size(); i++) { - groups[i] = formulas_[i].group(); + vector groups (args_.size()); + for (unsigned i = 0; i < args_.size(); i++) { + groups[i] = args_[i].group(); } return groups; } @@ -714,13 +512,13 @@ Parfactor::getAllGroups (void) const string -Parfactor::getHeaderString (void) const +Parfactor::getLabel (void) const { stringstream ss; ss << "phi(" ; - for (unsigned i = 0; i < formulas_.size(); i++) { + for (unsigned i = 0; i < args_.size(); i++) { if (i != 0) ss << "," ; - ss << formulas_[i]; + ss << args_[i]; } ss << ")" ; ConstraintTree copy (*constr_); @@ -735,32 +533,35 @@ void Parfactor::print (bool printParams) const { cout << "Formulas: " ; - for (unsigned i = 0; i < formulas_.size(); i++) { + for (unsigned i = 0; i < args_.size(); i++) { if (i != 0) cout << ", " ; - cout << formulas_[i]; + cout << args_[i]; } cout << endl; vector groups; - for (unsigned i = 0; i < formulas_.size(); i++) { - groups.push_back (string ("g") + Util::toString (formulas_[i].group())); + for (unsigned i = 0; i < args_.size(); i++) { + groups.push_back (string ("g") + Util::toString (args_[i].group())); } cout << "Groups: " << groups << endl; - cout << "LogVars: " << constr_->logVars() << endl; + cout << "LogVars: " << constr_->logVarSet() << endl; cout << "Ranges: " << ranges_ << endl; if (printParams == false) { cout << "Params: " << params_ << endl; } - cout << "Tuples: " << constr_->tupleSet() << endl; + ConstraintTree copy (*constr_); + copy.moveToTop (copy.logVarSet().elements()); + cout << "Tuples: " << copy.tupleSet() << endl; if (printParams) { vector jointStrings; StatesIndexer indexer (ranges_); while (indexer.valid()) { stringstream ss; - for (unsigned i = 0; i < formulas_.size(); i++) { + for (unsigned i = 0; i < args_.size(); i++) { if (i != 0) ss << ", " ; - if (formulas_[i].isCounting()) { - unsigned N = constr_->getConditionalCount (formulas_[i].countedLogVar()); - HistogramSet hs (N, formulas_[i].range()); + if (args_[i].isCounting()) { + unsigned N = constr_->getConditionalCount ( + args_[i].countedLogVar()); + HistogramSet hs (N, args_[i].range()); unsigned c = 0; while (c < indexer[i]) { hs.nextHistogram(); @@ -784,17 +585,50 @@ Parfactor::print (bool printParams) const void -Parfactor::insertDimension (unsigned range) +Parfactor::expandPotential ( + int fIdx, + unsigned newRange, + const vector& sumIndexes) { + unsigned size = (params_.size() / ranges_[fIdx]) * newRange; Params copy = params_; params_.clear(); - params_.reserve (copy.size() * range); - for (unsigned i = 0; i < copy.size(); i++) { - for (unsigned reps = 0; reps < range; reps++) { - params_.push_back (copy[i]); + params_.reserve (size); + + unsigned prod = 1; + vector offsets_ (ranges_.size()); + for (int i = ranges_.size() - 1; i >= 0; i--) { + offsets_[i] = prod; + prod *= ranges_[i]; + } + + unsigned index = 0; + ranges_[fIdx] = newRange; + vector indices (ranges_.size(), 0); + for (unsigned k = 0; k < size; k++) { + params_.push_back (copy[index]); + for (int i = ranges_.size() - 1; i >= 0; i--) { + indices[i] ++; + if (i == fIdx) { + assert (indices[i] - 1 < sumIndexes.size()); + int diff = sumIndexes[indices[i]] - sumIndexes[indices[i] - 1]; + index += diff * offsets_[i]; + } else { + index += offsets_[i]; + } + if (indices[i] != ranges_[i]) { + break; + } else { + if (i == fIdx) { + int diff = sumIndexes[0] - sumIndexes[indices[i]]; + index += diff * offsets_[i]; + } else { + index -= offsets_[i] * ranges_[i]; + } + indices[i] = 0; + } } } - ranges_.push_back (range); } @@ -803,29 +637,27 @@ void Parfactor::alignAndExponentiate (Parfactor* g1, Parfactor* g2) { LogVars X_1, X_2; - const ProbFormulas& formulas1 = g1->formulas(); - const ProbFormulas& formulas2 = g2->formulas(); + const ProbFormulas& formulas1 = g1->arguments(); + const ProbFormulas& formulas2 = g2->arguments(); for (unsigned i = 0; i < formulas1.size(); i++) { for (unsigned j = 0; j < formulas2.size(); j++) { if (formulas1[i].group() == formulas2[j].group()) { - X_1.insert (X_1.end(), - formulas1[i].logVars().begin(), - formulas1[i].logVars().end()); - X_2.insert (X_2.end(), - formulas2[j].logVars().begin(), - formulas2[j].logVars().end()); + Util::addToVector (X_1, formulas1[i].logVars()); + Util::addToVector (X_2, formulas2[j].logVars()); } } } - align (g1, X_1, g2, X_2); LogVarSet Y_1 = g1->logVarSet() - LogVarSet (X_1); LogVarSet Y_2 = g2->logVarSet() - LogVarSet (X_2); assert (g1->constr()->isCountNormalized (Y_1)); assert (g2->constr()->isCountNormalized (Y_2)); unsigned condCount1 = g1->constr()->getConditionalCount (Y_1); unsigned condCount2 = g2->constr()->getConditionalCount (Y_2); - Util::pow (g1->params(), 1.0 / condCount2); - Util::pow (g2->params(), 1.0 / condCount1); + LogAware::pow (g1->params(), 1.0 / condCount2); + LogAware::pow (g2->params(), 1.0 / condCount1); + // this must be done in the end or else X_1 and X_2 + // will refer the old log var names in the code above + align (g1, X_1, g2, X_2); } @@ -850,7 +682,7 @@ Parfactor::align ( theta2.add (allLvs2[i], freeLogVar); ++ freeLogVar; } - + assert (alignLvs1.size() == alignLvs2.size()); for (unsigned i = 0; i < alignLvs1.size(); i++) { theta1.rename (alignLvs1[i], theta2.newNameFor (alignLvs2[i])); diff --git a/packages/CLPBN/clpbn/bp/Parfactor.h b/packages/CLPBN/clpbn/bp/Parfactor.h index 90cbe1d18..c26707aeb 100644 --- a/packages/CLPBN/clpbn/bp/Parfactor.h +++ b/packages/CLPBN/clpbn/bp/Parfactor.h @@ -9,8 +9,9 @@ #include "LiftedUtils.h" #include "Horus.h" +#include "Factor.h" -class Parfactor +class Parfactor : public TFactor { public: Parfactor ( @@ -18,27 +19,15 @@ class Parfactor const Params&, const Tuples&, unsigned); + Parfactor (const Parfactor*, const Tuple&); + Parfactor (const Parfactor*, ConstraintTree*); + Parfactor (const Parfactor&); + ~Parfactor (void); - ProbFormulas& formulas (void) { return formulas_; } - - const ProbFormulas& formulas (void) const { return formulas_; } - - unsigned nrFormulas (void) const { return formulas_.size(); } - - Params& params (void) { return params_; } - - const Params& params (void) const { return params_; } - - unsigned size (void) const { return params_.size(); } - - const Ranges& ranges (void) const { return ranges_; } - - unsigned distId (void) const { return distId_; } - ConstraintTree* constr (void) { return constr_; } const ConstraintTree* constr (void) const { return constr_; } @@ -57,23 +46,19 @@ class Parfactor void setConstraintTree (ConstraintTree*); - void sumOut (unsigned); + void sumOut (unsigned fIdx); void multiply (Parfactor&); void countConvert (LogVar); - void expandPotential (LogVar, LogVar, LogVar); + void expand (LogVar, LogVar, LogVar); void fullExpand (LogVar); void reorderAccordingGrounds (const Grounds&); - void reorderFormulas (const ProbFormulas&); - - void absorveEvidence (unsigned, unsigned); - - void normalize (void); + void absorveEvidence (const ProbFormula&, unsigned); void setFormulaGroup (const ProbFormula&, int); @@ -81,40 +66,34 @@ class Parfactor void applySubstitution (const Substitution&); + int groupWithGround (const Ground&) const; + bool containsGround (const Ground&) const; bool containsGroup (unsigned) const; - - const ProbFormula& formula (unsigned) const; - - unsigned range (unsigned) const; - + unsigned nrFormulas (LogVar) const; - int indexOf (const ProbFormula&) const; + int indexOfLogVar (LogVar) const; - int indexOfFormulaWithLogVar (LogVar) const; - - int indexOfFormulaWithGroup (unsigned) const; + int indexOfGroup (unsigned) const; vector getAllGroups (void) const; void print (bool = false) const; - string getHeaderString (void) const; + string getLabel (void) const; private: + void expandPotential (int fIdx, unsigned newRange, + const vector& sumIndexes); + static void alignAndExponentiate (Parfactor*, Parfactor*); + static void align ( Parfactor*, const LogVars&, Parfactor*, const LogVars&); - - void insertDimension (unsigned); - ProbFormulas formulas_; - Ranges ranges_; - Params params_; - unsigned distId_; - ConstraintTree* constr_; + ConstraintTree* constr_; }; diff --git a/packages/CLPBN/clpbn/bp/ParfactorList.cpp b/packages/CLPBN/clpbn/bp/ParfactorList.cpp index 54ae62014..abdb29c00 100644 --- a/packages/CLPBN/clpbn/bp/ParfactorList.cpp +++ b/packages/CLPBN/clpbn/bp/ParfactorList.cpp @@ -3,9 +3,32 @@ #include "ParfactorList.h" -ParfactorList::ParfactorList (Parfactors& pfs) +ParfactorList::ParfactorList (const ParfactorList& pfList) { - pfList_.insert (pfList_.end(), pfs.begin(), pfs.end()); + ParfactorList::const_iterator it = pfList.begin(); + while (it != pfList.end()) { + addShattered (new Parfactor (**it)); + ++ it; + } + +} + + + +ParfactorList::ParfactorList (const Parfactors& pfs) +{ + add (pfs); +} + + + +ParfactorList::~ParfactorList (void) +{ + ParfactorList::const_iterator it = pfList_.begin(); + while (it != pfList_.end()) { + delete *it; + ++ it; + } } @@ -14,17 +37,17 @@ void ParfactorList::add (Parfactor* pf) { pf->setNewGroups(); - pfList_.push_back (pf); + addToShatteredList (pf); } void -ParfactorList::add (Parfactors& pfs) +ParfactorList::add (const Parfactors& pfs) { for (unsigned i = 0; i < pfs.size(); i++) { pfs[i]->setNewGroups(); - pfList_.push_back (pfs[i]); + addToShatteredList (pfs[i]); } } @@ -33,7 +56,20 @@ ParfactorList::add (Parfactors& pfs) void ParfactorList::addShattered (Parfactor* pf) { + assert (isAllShattered()); pfList_.push_back (pf); + assert (isAllShattered()); +} + + + +list::iterator +ParfactorList::insertShattered ( + list::iterator it, + Parfactor* pf) +{ + return pfList_.insert (it, pf); + assert (isAllShattered()); } @@ -47,7 +83,7 @@ ParfactorList::remove (list::iterator it) list::iterator -ParfactorList::deleteAndRemove (list::iterator it) +ParfactorList::removeAndDelete (list::iterator it) { delete *it; return pfList_.erase (it); @@ -55,58 +91,21 @@ ParfactorList::deleteAndRemove (list::iterator it) -void -ParfactorList::shatter (void) +bool +ParfactorList::isAllShattered (void) const { - list tempList; - Parfactors newPfs; - newPfs.insert (newPfs.end(), pfList_.begin(), pfList_.end()); - while (newPfs.empty() == false) { - tempList.insert (tempList.end(), newPfs.begin(), newPfs.end()); - newPfs.clear(); - list::iterator iter1 = tempList.begin(); - while (tempList.size() > 1 && iter1 != -- tempList.end()) { - list::iterator iter2 = iter1; - ++ iter2; - bool incIter1 = true; - while (iter2 != tempList.end()) { - assert (iter1 != iter2); - std::pair res = shatter ( - (*iter1)->formulas(), *iter1, (*iter2)->formulas(), *iter2); - bool incIter2 = true; - if (res.second.empty() == false) { - // cout << "second unshattered" << endl; - delete *iter2; - iter2 = tempList.erase (iter2); - incIter2 = false; - newPfs.insert ( - newPfs.begin(), res.second.begin(), res.second.end()); - } - if (res.first.empty() == false) { - // cout << "first unshattered" << endl; - delete *iter1; - iter1 = tempList.erase (iter1); - newPfs.insert ( - newPfs.begin(), res.first.begin(), res.first.end()); - incIter1 = false; - break; - } - if (incIter2) { - ++ iter2; - } - } - if (incIter1) { - ++ iter1; + if (pfList_.size() <= 1) { + return true; + } + vector pfs (pfList_.begin(), pfList_.end()); + for (unsigned i = 0; i < pfs.size() - 1; i++) { + for (unsigned j = i + 1; j < pfs.size(); j++) { + if (isShattered (pfs[i], pfs[j]) == false) { + return false; } } - // cout << "|||||||||||||||||||||||||||||||||||||||||||||||||" << endl; - // cout << "||||||||||||| SHATTERING ITERATION ||||||||||||||" << endl; - // cout << "|||||||||||||||||||||||||||||||||||||||||||||||||" << endl; - // printParfactors (newPfs); - // cout << "|||||||||||||||||||||||||||||||||||||||||||||||||" << endl; } - pfList_.clear(); - pfList_.insert (pfList_.end(), tempList.begin(), tempList.end()); + return true; } @@ -123,13 +122,77 @@ ParfactorList::print (void) const -std::pair -ParfactorList::shatter ( - ProbFormulas& formulas1, - Parfactor* g1, - ProbFormulas& formulas2, - Parfactor* g2) +bool +ParfactorList::isShattered ( + const Parfactor* g1, + const Parfactor* g2) const { + assert (g1 != g2); + const ProbFormulas& fms1 = g1->arguments(); + const ProbFormulas& fms2 = g2->arguments(); + for (unsigned i = 0; i < fms1.size(); i++) { + for (unsigned j = 0; j < fms2.size(); j++) { + if (fms1[i].group() == fms2[j].group()) { + if (identical ( + fms1[i], *(g1->constr()), + fms2[j], *(g2->constr())) == false) { + return false; + } + } else { + if (disjoint ( + fms1[i], *(g1->constr()), + fms2[j], *(g2->constr())) == false) { + return false; + } + } + } + } + return true; +} + + + +void +ParfactorList::addToShatteredList (Parfactor* g) +{ + queue residuals; + residuals.push (g); + while (residuals.empty() == false) { + Parfactor* pf = residuals.front(); + bool pfSplitted = false; + list::iterator pfIter; + pfIter = pfList_.begin(); + while (pfIter != pfList_.end()) { + std::pair shattRes; + shattRes = shatter (*pfIter, pf); + if (shattRes.first.empty() == false) { + pfIter = removeAndDelete (pfIter); + Util::addToQueue (residuals, shattRes.first); + } else { + ++ pfIter; + } + if (shattRes.second.empty() == false) { + delete pf; + Util::addToQueue (residuals, shattRes.second); + pfSplitted = true; + break; + } + } + residuals.pop(); + if (pfSplitted == false) { + addShattered (pf); + } + } + assert (isAllShattered()); +} + + + +std::pair +ParfactorList::shatter (Parfactor* g1, Parfactor* g2) +{ + ProbFormulas& formulas1 = g1->arguments(); + ProbFormulas& formulas2 = g2->arguments(); assert (g1 != 0 && g2 != 0 && g1 != g2); for (unsigned i = 0; i < formulas1.size(); i++) { for (unsigned j = 0; j < formulas2.size(); j++) { @@ -150,21 +213,20 @@ ParfactorList::shatter ( std::pair ParfactorList::shatter ( - ProbFormula& f1, - Parfactor* g1, - ProbFormula& f2, - Parfactor* g2) + ProbFormula& f1, Parfactor* g1, + ProbFormula& f2, Parfactor* g2) { // cout << endl; - // cout << "-------------------------------------------------" << endl; + // Util::printDashLine(); // cout << "-> SHATTERING (#" << g1 << ", #" << g2 << ")" << endl; // g1->print(); // cout << "-> WITH" << endl; // g2->print(); - // cout << "-> ON: " << f1.toString (g1->constr()) << endl; - // cout << "-> ON: " << f2.toString (g2->constr()) << endl; - // cout << "-------------------------------------------------" << endl; - + // cout << "-> ON: " << f1 << "|" ; + // cout << g1->constr()->tupleSet (f1.logVars()) << endl; + // cout << "-> ON: " << f2 << "|" ; + // cout << g2->constr()->tupleSet (f2.logVars()) << endl; + // Util::printDashLine(); if (f1.isAtom()) { unsigned group = (f1.group() < f2.group()) ? f1.group() : f2.group(); f1.setGroup (group); @@ -174,7 +236,7 @@ ParfactorList::shatter ( assert (g1->constr()->empty() == false); assert (g2->constr()->empty() == false); if (f1.group() == f2.group()) { - // assert (identical (f1, g1->constr(), f2, g2->constr())); + assert (identical (f1, *(g1->constr()), f2, *(g2->constr()))); return { }; } @@ -215,7 +277,9 @@ ParfactorList::shatter ( // exclCt2->exportToGraphViz (ss6.str().c_str(), true); if (exclCt1->empty() && exclCt2->empty()) { - unsigned group = (f1.group() < f2.group()) ? f1.group() : f2.group(); + unsigned group = (f1.group() < f2.group()) + ? f1.group() + : f2.group(); // identical f1.setGroup (group); f2.setGroup (group); @@ -250,6 +314,13 @@ ParfactorList::shatter ( ConstraintTree* exclCt, unsigned commGroup) { + if (exclCt->empty()) { + delete commCt; + delete exclCt; + g->setFormulaGroup (f, commGroup); + return { }; + } + Parfactors result; if (f.isCounting()) { LogVar X_new1 = g->constr()->logVarSet().back() + 1; @@ -259,7 +330,7 @@ ParfactorList::shatter ( for (unsigned i = 0; i < cts.size(); i++) { Parfactor* newPf = new Parfactor (g, cts[i]); if (cts[i]->nrLogVars() == g->constr()->nrLogVars() + 1) { - newPf->expandPotential (f.countedLogVar(), X_new1, X_new2); + newPf->expand (f.countedLogVar(), X_new1, X_new2); assert (g->constr()->getConditionalCount (f.countedLogVar()) == cts[i]->getConditionalCount (X_new1) + cts[i]->getConditionalCount (X_new2)); @@ -270,20 +341,16 @@ ParfactorList::shatter ( newPf->setNewGroups(); result.push_back (newPf); } + delete commCt; + delete exclCt; } else { - if (exclCt->empty()) { - delete commCt; - delete exclCt; - g->setFormulaGroup (f, commGroup); - } else { - Parfactor* newPf = new Parfactor (g, commCt); - newPf->setNewGroups(); - newPf->setFormulaGroup (f, commGroup); - result.push_back (newPf); - newPf = new Parfactor (g, exclCt); - newPf->setNewGroups(); - result.push_back (newPf); - } + Parfactor* newPf = new Parfactor (g, commCt); + newPf->setNewGroups(); + newPf->setFormulaGroup (f, commGroup); + result.push_back (newPf); + newPf = new Parfactor (g, exclCt); + newPf->setNewGroups(); + result.push_back (newPf); } return result; } @@ -296,7 +363,7 @@ ParfactorList::unifyGroups (unsigned group1, unsigned group2) unsigned newGroup = ProbFormula::getNewGroup(); for (ParfactorList::iterator it = pfList_.begin(); it != pfList_.end(); it++) { - ProbFormulas& formulas = (*it)->formulas(); + ProbFormulas& formulas = (*it)->arguments(); for (unsigned i = 0; i < formulas.size(); i++) { if (formulas[i].group() == group1 || formulas[i].group() == group2) { @@ -306,3 +373,52 @@ ParfactorList::unifyGroups (unsigned group1, unsigned group2) } } + + +bool +ParfactorList::proper ( + const ProbFormula& f1, ConstraintTree c1, + const ProbFormula& f2, ConstraintTree c2) const +{ + return disjoint (f1, c1, f2, c2) + || identical (f1, c1, f2, c2); +} + + + +bool +ParfactorList::identical ( + const ProbFormula& f1, ConstraintTree c1, + const ProbFormula& f2, ConstraintTree c2) const +{ + if (f1.sameSkeletonAs (f2) == false) { + return false; + } + if (f1.isAtom()) { + return true; + } + c1.moveToTop (f1.logVars()); + c2.moveToTop (f2.logVars()); + return ConstraintTree::identical ( + &c1, &c2, f1.logVars().size()); +} + + + +bool +ParfactorList::disjoint ( + const ProbFormula& f1, ConstraintTree c1, + const ProbFormula& f2, ConstraintTree c2) const +{ + if (f1.sameSkeletonAs (f2) == false) { + return true; + } + if (f1.isAtom()) { + return true; + } + c1.moveToTop (f1.logVars()); + c2.moveToTop (f2.logVars()); + return ConstraintTree::overlap ( + &c1, &c2, f1.arity()) == false; +} + diff --git a/packages/CLPBN/clpbn/bp/ParfactorList.h b/packages/CLPBN/clpbn/bp/ParfactorList.h index 1da26ae56..e6350a90c 100644 --- a/packages/CLPBN/clpbn/bp/ParfactorList.h +++ b/packages/CLPBN/clpbn/bp/ParfactorList.h @@ -2,6 +2,7 @@ #define HORUS_PARFACTORLIST_H #include +#include #include "Parfactor.h" #include "ProbFormula.h" @@ -14,56 +15,82 @@ class ParfactorList { public: ParfactorList (void) { } - ParfactorList (Parfactors&); - list& getParfactors (void) { return pfList_; } - const list& getParfactors (void) const { return pfList_; } - void add (Parfactor* pf); - void add (Parfactors& pfs); - void addShattered (Parfactor* pf); - list::iterator remove (list::iterator); - list::iterator deleteAndRemove (list::iterator); + ParfactorList (const ParfactorList&); - void clear (void) { pfList_.clear(); } - unsigned size (void) const { return pfList_.size(); } - + ParfactorList (const Parfactors&); - void shatter (void); + ~ParfactorList (void); + + const list& parfactors (void) const { return pfList_; } + + void clear (void) { pfList_.clear(); } + + unsigned size (void) const { return pfList_.size(); } typedef std::list::iterator iterator; + iterator begin (void) { return pfList_.begin(); } - iterator end (void) { return pfList_.end(); } + + iterator end (void) { return pfList_.end(); } typedef std::list::const_iterator const_iterator; + const_iterator begin (void) const { return pfList_.begin(); } - const_iterator end (void) const { return pfList_.end(); } + + const_iterator end (void) const { return pfList_.end(); } + + void add (Parfactor* pf); + + void add (const Parfactors& pfs); + + void addShattered (Parfactor* pf); + + list::iterator insertShattered ( + list::iterator, Parfactor*); + + list::iterator remove (list::iterator); + + list::iterator removeAndDelete (list::iterator); + + bool isAllShattered (void) const; void print (void) const; private: + + bool isShattered (const Parfactor*, const Parfactor*) const; - static std::pair shatter ( - ProbFormulas&, - Parfactor*, - ProbFormulas&, - Parfactor*); + void addToShatteredList (Parfactor*); + + std::pair shatter ( + Parfactor*, Parfactor*); - static std::pair shatter ( - ProbFormula&, - Parfactor*, - ProbFormula&, - Parfactor*); + std::pair shatter ( + ProbFormula&, Parfactor*, ProbFormula&, Parfactor*); - static Parfactors shatter ( - Parfactor*, - const ProbFormula&, - ConstraintTree*, - ConstraintTree*, - unsigned); + Parfactors shatter ( + Parfactor*, + const ProbFormula&, + ConstraintTree*, + ConstraintTree*, + unsigned); - void unifyGroups (unsigned group1, unsigned group2); + void unifyGroups (unsigned group1, unsigned group2); - list pfList_; + bool proper ( + const ProbFormula&, ConstraintTree, + const ProbFormula&, ConstraintTree) const; + + bool identical ( + const ProbFormula&, ConstraintTree, + const ProbFormula&, ConstraintTree) const; + + bool disjoint ( + const ProbFormula&, ConstraintTree, + const ProbFormula&, ConstraintTree) const; + + list pfList_; }; #endif // HORUS_PARFACTORLIST_H diff --git a/packages/CLPBN/clpbn/bp/ProbFormula.cpp b/packages/CLPBN/clpbn/bp/ProbFormula.cpp index 39c92bb49..68c857285 100644 --- a/packages/CLPBN/clpbn/bp/ProbFormula.cpp +++ b/packages/CLPBN/clpbn/bp/ProbFormula.cpp @@ -16,8 +16,7 @@ ProbFormula::sameSkeletonAs (const ProbFormula& f) const bool ProbFormula::contains (LogVar lv) const { - return std::find (logVars_.begin(), logVars_.end(), lv) != - logVars_.end(); + return Util::contains (logVars_, lv); } @@ -77,16 +76,15 @@ ProbFormula::rename (LogVar oldName, LogVar newName) } - -bool -ProbFormula::operator== (const ProbFormula& f) const +bool operator== (const ProbFormula& f1, const ProbFormula& f2) { - return functor_ == f.functor_ && logVars_ == f.logVars_ ; + return f1.group_ == f2.group_; + //return functor_ == f.functor_ && logVars_ == f.logVars_ ; } -ostream& operator<< (ostream &os, const ProbFormula& f) +std::ostream& operator<< (ostream &os, const ProbFormula& f) { os << f.functor_; if (f.isAtom() == false) { @@ -113,3 +111,13 @@ ProbFormula::getNewGroup (void) return freeGroup_; } + + +ostream& operator<< (ostream &os, const ObservedFormula& of) +{ + os << of.functor_ << "/" << of.arity_; + os << "|" << of.constr_.tupleSet(); + os << " [evidence=" << of.evidence_ << "]"; + return os; +} + diff --git a/packages/CLPBN/clpbn/bp/ProbFormula.h b/packages/CLPBN/clpbn/bp/ProbFormula.h index 394fc2133..793183ba7 100644 --- a/packages/CLPBN/clpbn/bp/ProbFormula.h +++ b/packages/CLPBN/clpbn/bp/ProbFormula.h @@ -8,14 +8,16 @@ #include "Horus.h" + class ProbFormula { public: ProbFormula (Symbol f, const LogVars& lvs, unsigned range) : functor_(f), logVars_(lvs), range_(range), - countedLogVar_() { } + countedLogVar_(), group_(Util::maxUnsigned()) { } - ProbFormula (Symbol f, unsigned r) : functor_(f), range_(r) { } + ProbFormula (Symbol f, unsigned r) + : functor_(f), range_(r), group_(Util::maxUnsigned()) { } Symbol functor (void) const { return functor_; } @@ -29,9 +31,9 @@ class ProbFormula LogVarSet logVarSet (void) const { return LogVarSet (logVars_); } - unsigned group (void) const { return groupId_; } + unsigned group (void) const { return group_; } - void setGroup (unsigned g) { groupId_ = g; } + void setGroup (unsigned g) { group_ = g; } bool sameSkeletonAs (const ProbFormula&) const; @@ -49,23 +51,58 @@ class ProbFormula void rename (LogVar, LogVar); - bool operator== (const ProbFormula& f) const; - - friend ostream& operator<< (ostream &out, const ProbFormula& f); - static unsigned getNewGroup (void); + friend std::ostream& operator<< (ostream &os, const ProbFormula& f); + + friend bool operator== (const ProbFormula& f1, const ProbFormula& f2); + private: - Symbol functor_; - LogVars logVars_; - unsigned range_; - LogVar countedLogVar_; - unsigned groupId_; - static int freeGroup_; + Symbol functor_; + LogVars logVars_; + unsigned range_; + LogVar countedLogVar_; + unsigned group_; + static int freeGroup_; }; typedef vector ProbFormulas; +class ObservedFormula +{ + public: + ObservedFormula (Symbol f, unsigned a, unsigned ev) + : functor_(f), arity_(a), evidence_(ev), constr_(a) { } + + ObservedFormula (Symbol f, unsigned ev, const Tuple& tuple) + : functor_(f), arity_(tuple.size()), evidence_(ev), constr_(arity_) + { + constr_.addTuple (tuple); + } + + Symbol functor (void) const { return functor_; } + + unsigned arity (void) const { return arity_; } + + unsigned evidence (void) const { return evidence_; } + + ConstraintTree& constr (void) { return constr_; } + + bool isAtom (void) const { return arity_ == 0; } + + void addTuple (const Tuple& tuple) { constr_.addTuple (tuple); } + + friend ostream& operator<< (ostream &os, const ObservedFormula& of); + + private: + Symbol functor_; + unsigned arity_; + unsigned evidence_; + ConstraintTree constr_; +}; + +typedef vector ObservedFormulas; + #endif // HORUS_PROBFORMULA_H diff --git a/packages/CLPBN/clpbn/bp/Solver.cpp b/packages/CLPBN/clpbn/bp/Solver.cpp index d3c722786..65a46238f 100644 --- a/packages/CLPBN/clpbn/bp/Solver.cpp +++ b/packages/CLPBN/clpbn/bp/Solver.cpp @@ -21,7 +21,7 @@ Solver::printPosterioriOf (VarId vid) const States& states = var->states(); for (unsigned i = 0; i < states.size(); i++) { cout << "P(" << var->label() << "=" << states[i] << ") = " ; - cout << setprecision (PRECISION) << posterioriDist[i]; + cout << setprecision (Constants::PRECISION) << posterioriDist[i]; cout << endl; } cout << endl; @@ -45,7 +45,7 @@ Solver::printJointDistributionOf (const VarIds& vids) vector jointStrings = Util::getJointStateStrings (vars); for (unsigned i = 0; i < jointDist.size(); i++) { cout << "P(" << jointStrings[i] << ") = " ; - cout << setprecision (PRECISION) << jointDist[i]; + cout << setprecision (Constants::PRECISION) << jointDist[i]; cout << endl; } cout << endl; diff --git a/packages/CLPBN/clpbn/bp/Solver.h b/packages/CLPBN/clpbn/bp/Solver.h index f48e52627..e4351ab3d 100644 --- a/packages/CLPBN/clpbn/bp/Solver.h +++ b/packages/CLPBN/clpbn/bp/Solver.h @@ -11,17 +11,20 @@ using namespace std; class Solver { public: - Solver (const GraphicalModel* gm) - { - gm_ = gm; - } - virtual ~Solver() {} // to ensure that subclass destructor is called - virtual void runSolver (void) = 0; - virtual Params getPosterioriOf (VarId) = 0; - virtual Params getJointDistributionOf (const VarIds&) = 0; + Solver (const GraphicalModel* gm) : gm_(gm) { } + + virtual ~Solver() { } // ensure that subclass destructor is called + + virtual void runSolver (void) = 0; + + virtual Params getPosterioriOf (VarId) = 0; + + virtual Params getJointDistributionOf (const VarIds&) = 0; void printAllPosterioris (void); + void printPosterioriOf (VarId vid); + void printJointDistributionOf (const VarIds& vids); private: diff --git a/packages/CLPBN/clpbn/bp/TODO b/packages/CLPBN/clpbn/bp/TODO new file mode 100644 index 000000000..a80571e8e --- /dev/null +++ b/packages/CLPBN/clpbn/bp/TODO @@ -0,0 +1,5 @@ +TODO + - add way to calculate combinations and factorials with large numbers + - refactor sumOut in parfactor -> is really ugly code + - Indexer: start receiving ranges as constant reference + diff --git a/packages/CLPBN/clpbn/bp/Util.cpp b/packages/CLPBN/clpbn/bp/Util.cpp index 2b80548e1..2a5c15100 100644 --- a/packages/CLPBN/clpbn/bp/Util.cpp +++ b/packages/CLPBN/clpbn/bp/Util.cpp @@ -1,4 +1,7 @@ +#include + #include +#include #include "Util.h" #include "Indexer.h" @@ -6,16 +9,15 @@ namespace Globals { - bool logDomain = false; +bool logDomain = false; + +//InfAlgs infAlgorithm = InfAlgorithms::VE; +//InfAlgs infAlgorithm = InfAlgorithms::BN_BP; +//InfAlgs infAlgorithm = InfAlgorithms::FG_BP; +InfAlgorithms infAlgorithm = InfAlgorithms::CBP; }; -namespace InfAlgorithms { -//InfAlgs infAlgorithm = InfAlgorithms::VE; -//InfAlgs infAlgorithm = InfAlgorithms::BN_BP; -InfAlgs infAlgorithm = InfAlgorithms::FG_BP; -//InfAlgs infAlgorithm = InfAlgorithms::CBP; -} namespace BpOptions { @@ -28,8 +30,7 @@ unsigned maxIter = 1000; } -unordered_map GraphicalModel::varsInfo_; -unordered_map GraphicalModel::distsInfo_; +unordered_map GraphicalModel::varsInfo_; vector Statistics::netInfo_; vector Statistics::compressInfo_; @@ -58,76 +59,6 @@ fromLog (Params& v) -void -normalize (Params& v) -{ - double sum; - if (Globals::logDomain) { - sum = addIdenty(); - for (unsigned i = 0; i < v.size(); i++) { - logSum (sum, v[i]); - } - assert (sum != -numeric_limits::infinity()); - for (unsigned i = 0; i < v.size(); i++) { - v[i] -= sum; - } - } else { - sum = 0.0; - for (unsigned i = 0; i < v.size(); i++) { - sum += v[i]; - } - assert (sum != 0.0); - for (unsigned i = 0; i < v.size(); i++) { - v[i] /= sum; - } - } -} - - - -void -pow (Params& v, double expoent) -{ - if (Globals::logDomain) { - for (unsigned i = 0; i < v.size(); i++) { - v[i] *= expoent; - } - } else { - for (unsigned i = 0; i < v.size(); i++) { - v[i] = std::pow (v[i], expoent); - } - } -} - - - -void -pow (Params& v, unsigned expoent) -{ - if (expoent == 1) { - return; - } - if (Globals::logDomain) { - for (unsigned i = 0; i < v.size(); i++) { - v[i] *= expoent; - } - } else { - for (unsigned i = 0; i < v.size(); i++) { - v[i] = std::pow (v[i], expoent); - } - } -} - - - -double -pow (double p, unsigned expoent) -{ - return Globals::logDomain ? p * expoent : std::pow (p, expoent); -} - - - double factorial (double num) { @@ -153,52 +84,21 @@ nrCombinations (unsigned n, unsigned r) -double -getL1Distance (const Params& v1, const Params& v2) +unsigned +expectedSize (const Ranges& ranges) { - assert (v1.size() == v2.size()); - double dist = 0.0; - if (Globals::logDomain) { - for (unsigned i = 0; i < v1.size(); i++) { - dist += abs (exp(v1[i]) - exp(v2[i])); - } - } else { - for (unsigned i = 0; i < v1.size(); i++) { - dist += abs (v1[i] - v2[i]); - } + unsigned prod = 1; + for (unsigned i = 0; i < ranges.size(); i++) { + prod *= ranges[i]; } - return dist; -} - - - -double -getMaxNorm (const Params& v1, const Params& v2) -{ - assert (v1.size() == v2.size()); - double max = 0.0; - if (Globals::logDomain) { - for (unsigned i = 0; i < v1.size(); i++) { - double diff = abs (exp(v1[i]) - exp(v2[i])); - if (diff > max) { - max = diff; - } - } - } else { - for (unsigned i = 0; i < v1.size(); i++) { - double diff = abs (v1[i] - v2[i]); - if (diff > max) { - max = diff; - } - } - } - return max; + return prod; } unsigned -getNumberOfDigits (int number) { +getNumberOfDigits (int number) +{ unsigned count = 1; while (number >= 10) { number /= 10; @@ -257,6 +157,168 @@ getJointStateStrings (const VarNodes& vars) +void printHeader (string header, std::ostream& os) +{ + printAsteriskLine (os); + os << header << endl; + printAsteriskLine (os); +} + + + +void printSubHeader (string header, std::ostream& os) +{ + printDashedLine (os); + os << header << endl; + printDashedLine (os); +} + + + +void printAsteriskLine (std::ostream& os) +{ + os << "********************************" ; + os << "********************************" ; + os << endl; +} + + + +void printDashedLine (std::ostream& os) +{ + os << "--------------------------------" ; + os << "--------------------------------" ; + os << endl; +} + + +} + + + +namespace LogAware { + +void +normalize (Params& v) +{ + double sum; + if (Globals::logDomain) { + sum = LogAware::addIdenty(); + for (unsigned i = 0; i < v.size(); i++) { + sum = Util::logSum (sum, v[i]); + } + assert (sum != -numeric_limits::infinity()); + for (unsigned i = 0; i < v.size(); i++) { + v[i] -= sum; + } + } else { + sum = 0.0; + for (unsigned i = 0; i < v.size(); i++) { + sum += v[i]; + } + assert (sum != 0.0); + for (unsigned i = 0; i < v.size(); i++) { + v[i] /= sum; + } + } +} + + + +double +getL1Distance (const Params& v1, const Params& v2) +{ + assert (v1.size() == v2.size()); + double dist = 0.0; + if (Globals::logDomain) { + for (unsigned i = 0; i < v1.size(); i++) { + dist += abs (exp(v1[i]) - exp(v2[i])); + } + } else { + for (unsigned i = 0; i < v1.size(); i++) { + dist += abs (v1[i] - v2[i]); + } + } + return dist; +} + + + +double +getMaxNorm (const Params& v1, const Params& v2) +{ + assert (v1.size() == v2.size()); + double max = 0.0; + if (Globals::logDomain) { + for (unsigned i = 0; i < v1.size(); i++) { + double diff = abs (exp(v1[i]) - exp(v2[i])); + if (diff > max) { + max = diff; + } + } + } else { + for (unsigned i = 0; i < v1.size(); i++) { + double diff = abs (v1[i] - v2[i]); + if (diff > max) { + max = diff; + } + } + } + return max; +} + + +double +pow (double p, unsigned expoent) +{ + return Globals::logDomain ? p * expoent : std::pow (p, expoent); +} + + + +double +pow (double p, double expoent) +{ + // assumes that `expoent' is never in log domain + return Globals::logDomain ? p * expoent : std::pow (p, expoent); +} + + + +void +pow (Params& v, unsigned expoent) +{ + if (expoent == 1) { + return; + } + if (Globals::logDomain) { + for (unsigned i = 0; i < v.size(); i++) { + v[i] *= expoent; + } + } else { + for (unsigned i = 0; i < v.size(); i++) { + v[i] = std::pow (v[i], expoent); + } + } +} + + + +void +pow (Params& v, double expoent) +{ + // assumes that `expoent' is never in log domain + if (Globals::logDomain) { + for (unsigned i = 0; i < v.size(); i++) { + v[i] *= expoent; + } + } else { + for (unsigned i = 0; i < v.size(); i++) { + v[i] = std::pow (v[i], expoent); + } + } +} + } @@ -286,8 +348,11 @@ Statistics::getPrimaryNetworksCounting (void) void -Statistics::updateStatistics (unsigned size, bool loopy, - unsigned nIters, double time) +Statistics::updateStatistics ( + unsigned size, + bool loopy, + unsigned nIters, + double time) { netInfo_.push_back (NetInfo (size, loopy, nIters, time)); } @@ -318,11 +383,12 @@ Statistics::writeStatisticsToFile (const char* fileName) void -Statistics::updateCompressingStatistics (unsigned nGroundVars, - unsigned nGroundFactors, - unsigned nClusterVars, - unsigned nClusterFactors, - unsigned nWithoutNeighs) { +Statistics::updateCompressingStatistics ( + unsigned nGroundVars, + unsigned nGroundFactors, + unsigned nClusterVars, + unsigned nClusterFactors, + unsigned nWithoutNeighs) { compressInfo_.push_back (CompressInfo (nGroundVars, nGroundFactors, nClusterVars, nClusterFactors, nWithoutNeighs)); } @@ -334,7 +400,7 @@ Statistics::getStatisticString (void) { stringstream ss2, ss3, ss4, ss1; ss1 << "running mode: " ; - switch (InfAlgorithms::infAlgorithm) { + switch (Globals::infAlgorithm) { case InfAlgorithms::VE: ss1 << "ve" << endl; break; case InfAlgorithms::BN_BP: ss1 << "bn_bp" << endl; break; case InfAlgorithms::FG_BP: ss1 << "fg_bp" << endl; break; @@ -342,18 +408,23 @@ Statistics::getStatisticString (void) } ss1 << "message schedule: " ; switch (BpOptions::schedule) { - case BpOptions::Schedule::SEQ_FIXED: ss1 << "sequential fixed" << endl; break; - case BpOptions::Schedule::SEQ_RANDOM: ss1 << "sequential random" << endl; break; - case BpOptions::Schedule::PARALLEL: ss1 << "parallel" << endl; break; - case BpOptions::Schedule::MAX_RESIDUAL: ss1 << "max residual" << endl; break; + case BpOptions::Schedule::SEQ_FIXED: + ss1 << "sequential fixed" << endl; + break; + case BpOptions::Schedule::SEQ_RANDOM: + ss1 << "sequential random" << endl; + break; + case BpOptions::Schedule::PARALLEL: + ss1 << "parallel" << endl; + break; + case BpOptions::Schedule::MAX_RESIDUAL: + ss1 << "max residual" << endl; + break; } ss1 << "max iterations: " << BpOptions::maxIter << endl; ss1 << "accuracy " << BpOptions::accuracy << endl; ss1 << endl << endl; - - ss2 << "---------------------------------------------------" << endl; - ss2 << " Network information" << endl; - ss2 << "---------------------------------------------------" << endl; + Util::printSubHeader ("Network information", ss2); ss2 << left; ss2 << setw (15) << "Network Size" ; ss2 << setw (9) << "Loopy" ; @@ -387,9 +458,7 @@ Statistics::getStatisticString (void) unsigned c1 = 0, c2 = 0, c3 = 0, c4 = 0; if (compressInfo_.size() > 0) { - ss3 << "---------------------------------------------------" << endl; - ss3 << " Compression information" << endl; - ss3 << "---------------------------------------------------" << endl; + Util::printSubHeader ("Compress information", ss3); ss3 << left; ss3 << "Ground Cluster Ground Cluster Neighborless" << endl; ss3 << "Vars Vars Factors Factors Vars" << endl; diff --git a/packages/CLPBN/clpbn/bp/Util.h b/packages/CLPBN/clpbn/bp/Util.h index 8f94af093..ad368f8c1 100644 --- a/packages/CLPBN/clpbn/bp/Util.h +++ b/packages/CLPBN/clpbn/bp/Util.h @@ -1,53 +1,131 @@ #ifndef HORUS_UTIL_H #define HORUS_UTIL_H +#include +#include +#include + #include +#include +#include +#include + +#include +#include #include "Horus.h" using namespace std; + namespace Util { -void toLog (Params&); -void fromLog (Params&); -void normalize (Params&); -void logSum (double&, double); -void multiply (Params&, const Params&); -void multiply (Params&, const Params&, unsigned); -void add (Params&, const Params&); -void add (Params&, const Params&, unsigned); -void pow (Params&, double); -void pow (Params&, unsigned); -double pow (double, unsigned); -double factorial (double); -unsigned nrCombinations (unsigned, unsigned); -double getL1Distance (const Params&, const Params&); -double getMaxNorm (const Params&, const Params&); -unsigned getNumberOfDigits (int); -bool isInteger (const string&); -string parametersToString (const Params&, unsigned = PRECISION); -vector getJointStateStrings (const VarNodes&); -double tl (double); -double fl (double); -double multIdenty(); -double addIdenty(); -double withEvidence(); -double noEvidence(); -double one(); -double zero(); +template void addToVector (vector&, const vector&); + +template void addToQueue (queue&, const vector&); + +template bool contains (const vector&, const T&); + +template bool contains (const set&, const T&); + +template bool contains ( + const unordered_map&, const K&); + +template std::string toString (const T&); + +void toLog (Params&); + +void fromLog (Params&); + +double logSum (double, double); + +void multiply (Params&, const Params&); + +void multiply (Params&, const Params&, unsigned); + +void add (Params&, const Params&); + +void add (Params&, const Params&, unsigned); + +double factorial (double); + +unsigned nrCombinations (unsigned, unsigned); + +unsigned expectedSize (const Ranges&); + +unsigned getNumberOfDigits (int); + +bool isInteger (const string&); + +string parametersToString (const Params&, unsigned = Constants::PRECISION); + +vector getJointStateStrings (const VarNodes&); + +void printHeader (string, std::ostream& os = std::cout); + +void printSubHeader (string, std::ostream& os = std::cout); + +void printAsteriskLine (std::ostream& os = std::cout); + +void printDashedLine (std::ostream& os = std::cout); + +unsigned maxUnsigned (void); + +}; -template -std::string toString (const T& t) + +template void +Util::addToVector (vector& v, const vector& elements) +{ + v.insert (v.end(), elements.begin(), elements.end()); +} + + + +template void +Util::addToQueue (queue& q, const vector& elements) +{ + for (unsigned i = 0; i < elements.size(); i++) { + q.push (elements[i]); + } +} + + + +template bool +Util::contains (const vector& v, const T& e) +{ + return std::find (v.begin(), v.end(), e) != v.end(); +} + + + +template bool +Util::contains (const set& s, const T& e) +{ + return s.find (e) != s.end(); +} + + + +template bool +Util::contains ( + const unordered_map& m, const K& k) +{ + return m.find (k) != m.end(); +} + + + +template std::string +Util::toString (const T& t) { std::stringstream ss; ss << t; return ss.str(); } -}; - template @@ -62,28 +140,31 @@ std::ostream& operator << (std::ostream& os, const vector& v) } +namespace { +const double INF = -numeric_limits::infinity(); +}; -inline void -Util::logSum (double& x, double y) +inline double +Util::logSum (double x, double y) { - x = log (exp (x) + exp (y)); return; + return log (exp (x) + exp (y)); assert (isfinite (x) && isfinite (y)); // If one value is much smaller than the other, keep the larger value. if (x < (y - log (1e200))) { - x = y; - return; + return y; } if (y < (x - log (1e200))) { - return; + return x; } double diff = x - y; assert (isfinite (diff) && isfinite (x) && isfinite (y)); - if (!isfinite (exp (diff))) { // difference is too large - x = x > y ? x : y; - } else { // otherwise return the sum. - x = y + log (static_cast(1.0) + exp (diff)); + if (!isfinite (exp (diff))) { + // difference is too large + return x > y ? x : y; } + // otherwise return the sum. + return y + log (static_cast(1.0) + exp (diff)); } @@ -140,52 +221,87 @@ Util::add (Params& v1, const Params& v2, unsigned repetitions) -inline double -Util::tl (double v) +inline unsigned +Util::maxUnsigned (void) { - return Globals::logDomain ? log(v) : v; + return numeric_limits::max(); } -inline double -Util::fl (double v) -{ - return Globals::logDomain ? exp(v) : v; -} + + +namespace LogAware { inline double -Util::multIdenty() { - return Globals::logDomain ? 0.0 : 1.0; -} - -inline double -Util::addIdenty() -{ - return Globals::logDomain ? INF : 0.0; -} - -inline double -Util::withEvidence() +one() { return Globals::logDomain ? 0.0 : 1.0; } -inline double -Util::noEvidence() { - return Globals::logDomain ? INF : 0.0; -} inline double -Util::one() -{ - return Globals::logDomain ? 0.0 : 1.0; -} - -inline double -Util::zero() { +zero() { return Globals::logDomain ? INF : 0.0 ; } +inline double +addIdenty() +{ + return Globals::logDomain ? INF : 0.0; +} + + +inline double +multIdenty() +{ + return Globals::logDomain ? 0.0 : 1.0; +} + + +inline double +withEvidence() +{ + return Globals::logDomain ? 0.0 : 1.0; +} + + +inline double +noEvidence() { + return Globals::logDomain ? INF : 0.0; +} + + +inline double +tl (double v) +{ + return Globals::logDomain ? log (v) : v; +} + + +inline double +fl (double v) +{ + return Globals::logDomain ? exp (v) : v; +} + + +void normalize (Params&); + +double getL1Distance (const Params&, const Params&); + +double getMaxNorm (const Params&, const Params&); + +double pow (double, unsigned); + +double pow (double, double); + +void pow (Params&, unsigned); + +void pow (Params&, double); + +}; + + struct NetInfo { NetInfo (unsigned size, bool loopy, unsigned nIters, double time) @@ -224,11 +340,17 @@ class Statistics { public: static unsigned getSolvedNetworksCounting (void); + static void incrementPrimaryNetworksCounting (void); + static unsigned getPrimaryNetworksCounting (void); + static void updateStatistics (unsigned, bool, unsigned, double); + static void printStatistics (void); + static void writeStatisticsToFile (const char*); + static void updateCompressingStatistics ( unsigned, unsigned, unsigned, unsigned, unsigned); diff --git a/packages/CLPBN/clpbn/bp/VarElimSolver.cpp b/packages/CLPBN/clpbn/bp/VarElimSolver.cpp index 58df3c148..6bb49359e 100644 --- a/packages/CLPBN/clpbn/bp/VarElimSolver.cpp +++ b/packages/CLPBN/clpbn/bp/VarElimSolver.cpp @@ -56,7 +56,7 @@ VarElimSolver::getJointDistributionOf (const VarIds& vids) introduceEvidence(); chooseEliminationOrder (vids); processFactorList (vids); - Params params = factorList_.back()->getParameters(); + Params params = factorList_.back()->params(); if (Globals::logDomain) { Util::fromLog (params); } @@ -98,7 +98,7 @@ VarElimSolver::introduceEvidence (void) varFactors_.find (varNodes[i]->varId())->second; for (unsigned j = 0; j < idxs.size(); j++) { Factor* factor = factorList_[idxs[j]]; - if (factor->nrVariables() == 1) { + if (factor->nrArguments() == 1) { factorList_[idxs[j]] = 0; } else { factorList_[idxs[j]]->absorveEvidence ( @@ -121,8 +121,8 @@ VarElimSolver::chooseEliminationOrder (const VarIds& vids) const FgVarSet& varNodes = factorGraph_->getVarNodes(); for (unsigned i = 0; i < varNodes.size(); i++) { VarId vid = varNodes[i]->varId(); - if (std::find (vids.begin(), vids.end(), vid) == vids.end() - && !varNodes[i]->hasEvidence()) { + if (Util::contains (vids, vid) == false && + varNodes[i]->hasEvidence() == false) { elimOrder_.push_back (vid); } } @@ -154,7 +154,7 @@ VarElimSolver::processFactorList (const VarIds& vids) } } - finalFactor->reorderVariables (unobservedVids); + finalFactor->reorderArguments (unobservedVids); finalFactor->normalize(); factorList_.push_back (finalFactor); } @@ -179,10 +179,10 @@ VarElimSolver::eliminate (VarId elimVar) factorList_[idx] = 0; } } - if (result != 0 && result->nrVariables() != 1) { + if (result != 0 && result->nrArguments() != 1) { result->sumOut (vn->varId()); factorList_.push_back (result); - const VarIds& resultVarIds = result->getVarIds(); + const VarIds& resultVarIds = result->arguments(); for (unsigned i = 0; i < resultVarIds.size(); i++) { vector& idxs = varFactors_.find (resultVarIds[i])->second; diff --git a/packages/CLPBN/clpbn/bp/VarElimSolver.h b/packages/CLPBN/clpbn/bp/VarElimSolver.h index e0087e7bf..dcd58dd3f 100644 --- a/packages/CLPBN/clpbn/bp/VarElimSolver.h +++ b/packages/CLPBN/clpbn/bp/VarElimSolver.h @@ -16,18 +16,28 @@ class VarElimSolver : public Solver { public: VarElimSolver (const BayesNet&); + VarElimSolver (const FactorGraph&); + ~VarElimSolver (void); - void runSolver (void) { } - Params getPosterioriOf (VarId); - Params getJointDistributionOf (const VarIds&); + + void runSolver (void) { } + + Params getPosterioriOf (VarId); + + Params getJointDistributionOf (const VarIds&); private: void createFactorList (void); + void introduceEvidence (void); + void chooseEliminationOrder (const VarIds&); + void processFactorList (const VarIds&); + void eliminate (VarId); + void printActiveFactors (void); const BayesNet* bayesNet_; diff --git a/packages/CLPBN/clpbn/bp/VarNode.cpp b/packages/CLPBN/clpbn/bp/VarNode.cpp index 452befb4a..80326e791 100644 --- a/packages/CLPBN/clpbn/bp/VarNode.cpp +++ b/packages/CLPBN/clpbn/bp/VarNode.cpp @@ -40,8 +40,8 @@ VarNode::isValidState (int stateIndex) bool VarNode::isValidState (const string& stateName) { - States states = GraphicalModel::getVariableInformation (varId_).states; - return find (states.begin(), states.end(), stateName) != states.end(); + States states = GraphicalModel::getVarInformation (varId_).states; + return Util::contains (states, stateName); } @@ -58,7 +58,7 @@ VarNode::setEvidence (int ev) void VarNode::setEvidence (const string& ev) { - States states = GraphicalModel::getVariableInformation (varId_).states; + States states = GraphicalModel::getVarInformation (varId_).states; for (unsigned i = 0; i < states.size(); i++) { if (states[i] == ev) { evidence_ = i; @@ -74,7 +74,7 @@ string VarNode::label (void) const { if (GraphicalModel::variablesHaveInformation()) { - return GraphicalModel::getVariableInformation (varId_).label; + return GraphicalModel::getVarInformation (varId_).label; } stringstream ss; ss << "x" << varId_; @@ -87,7 +87,7 @@ States VarNode::states (void) const { if (GraphicalModel::variablesHaveInformation()) { - return GraphicalModel::getVariableInformation (varId_).states; + return GraphicalModel::getVarInformation (varId_).states; } States states; for (unsigned i = 0; i < nrStates_; i++) { diff --git a/packages/CLPBN/clpbn/bp/VarNode.h b/packages/CLPBN/clpbn/bp/VarNode.h index fb2d958a2..2f158771a 100644 --- a/packages/CLPBN/clpbn/bp/VarNode.h +++ b/packages/CLPBN/clpbn/bp/VarNode.h @@ -1,6 +1,10 @@ #ifndef HORUS_VARNODE_H #define HORUS_VARNODE_H +#include + +#include + #include "Horus.h" using namespace std; @@ -9,25 +13,28 @@ class VarNode { public: VarNode (const VarNode*); - VarNode (VarId, unsigned, int = NO_EVIDENCE); - virtual ~VarNode (void) {}; - bool isValidState (int); - bool isValidState (const string&); - void setEvidence (int); - void setEvidence (const string&); - string label (void) const; - States states (void) const; + VarNode (VarId, unsigned, int = Constants::NO_EVIDENCE); - unsigned varId (void) const { return varId_; } - unsigned nrStates (void) const { return nrStates_; } - bool hasEvidence (void) const { return evidence_ != NO_EVIDENCE; } - int getEvidence (void) const { return evidence_; } - unsigned getIndex (void) const { return index_; } - void setIndex (unsigned idx) { index_ = idx; } + virtual ~VarNode (void) { }; + + unsigned varId (void) const { return varId_; } + + unsigned nrStates (void) const { return nrStates_; } + + int getEvidence (void) const { return evidence_; } + + unsigned getIndex (void) const { return index_; } + + void setIndex (unsigned idx) { index_ = idx; } operator unsigned () const { return index_; } + bool hasEvidence (void) const + { + return evidence_ != Constants::NO_EVIDENCE; + } + bool operator== (const VarNode& var) const { cout << "equal operator called" << endl; @@ -42,11 +49,23 @@ class VarNode return varId_ != var.varId(); } + bool isValidState (int); + + bool isValidState (const string&); + + void setEvidence (int); + + void setEvidence (const string&); + + string label (void) const; + + States states (void) const; + private: - VarId varId_; - unsigned nrStates_; - int evidence_; - unsigned index_; + VarId varId_; + unsigned nrStates_; + int evidence_; + unsigned index_; }; diff --git a/packages/CLPBN/clpbn/bp/benchmarks/city/bn_bp_tests.sh b/packages/CLPBN/clpbn/bp/benchmarks/city/bn_bp_tests.sh index f2da8ebc5..740df4cf3 100755 --- a/packages/CLPBN/clpbn/bp/benchmarks/city/bn_bp_tests.sh +++ b/packages/CLPBN/clpbn/bp/benchmarks/city/bn_bp_tests.sh @@ -13,8 +13,8 @@ function run_solver { if [ $2 = bp ] then - extra_flag1=clpbn_bp:set_horus_flag\(inf_alg,$4\) - extra_flag2=clpbn_bp:set_horus_flag\(schedule,$5\) + extra_flag1=clpbn_horus:set_horus_flag\(inf_alg,$4\) + extra_flag2=clpbn_horus:set_horus_flag\(schedule,$5\) else extra_flag1=true extra_flag2=true @@ -22,7 +22,7 @@ fi /usr/bin/time -o $OUT_FILE_NAME -a -f "real:%E\tuser:%U\tsys:%S" $YAP << EOF >> $OUT_FILE_NAME 2>> ignore.$OUT_FILE_NAME [$1]. clpbn:set_clpbn_flag(solver,$2), - clpbn_bp:set_horus_flag(use_logarithms, true), + clpbn_horus:set_horus_flag(use_logarithms, true), $extra_flag1, $extra_flag2, run_query(_R), open("$OUT_FILE_NAME", 'append',S), diff --git a/packages/CLPBN/clpbn/bp/benchmarks/city/cbp_tests.sh b/packages/CLPBN/clpbn/bp/benchmarks/city/cbp_tests.sh index 139fed01f..e4e80a762 100755 --- a/packages/CLPBN/clpbn/bp/benchmarks/city/cbp_tests.sh +++ b/packages/CLPBN/clpbn/bp/benchmarks/city/cbp_tests.sh @@ -13,8 +13,8 @@ function run_solver { if [ $2 = bp ] then - extra_flag1=clpbn_bp:set_horus_flag\(inf_alg,$4\) - extra_flag2=clpbn_bp:set_horus_flag\(schedule,$5\) + extra_flag1=clpbn_horus:set_horus_flag\(inf_alg,$4\) + extra_flag2=clpbn_horus:set_horus_flag\(schedule,$5\) else extra_flag1=true extra_flag2=true @@ -22,7 +22,7 @@ fi /usr/bin/time -o $OUT_FILE_NAME -a -f "real:%E\tuser:%U\tsys:%S" $YAP << EOF >> $OUT_FILE_NAME 2>> ignore.$OUT_FILE_NAME [$1]. clpbn:set_clpbn_flag(solver,$2), - clpbn_bp:set_horus_flag(use_logarithms, true), + clpbn_horus:set_horus_flag(use_logarithms, true), $extra_flag1, $extra_flag2, run_query(_R), open("$OUT_FILE_NAME", 'append',S), @@ -37,6 +37,8 @@ function run_all_graphs echo "*******************************************************************" >> "$OUT_FILE_NAME" echo "results for solver $2" >> $OUT_FILE_NAME echo "*******************************************************************" >> "$OUT_FILE_NAME" + run_solver town_3 $1 town_3 $3 $4 $5 + return run_solver town_1000 $1 town_1000 $3 $4 $5 run_solver town_5000 $1 town_5000 $3 $4 $5 run_solver town_10000 $1 town_10000 $3 $4 $5 diff --git a/packages/CLPBN/clpbn/bp/benchmarks/city/fg_bp_tests.sh b/packages/CLPBN/clpbn/bp/benchmarks/city/fg_bp_tests.sh index c67e1db47..9c478e1be 100755 --- a/packages/CLPBN/clpbn/bp/benchmarks/city/fg_bp_tests.sh +++ b/packages/CLPBN/clpbn/bp/benchmarks/city/fg_bp_tests.sh @@ -13,8 +13,8 @@ function run_solver { if [ $2 = bp ] then - extra_flag1=clpbn_bp:set_horus_flag\(inf_alg,$4\) - extra_flag2=clpbn_bp:set_horus_flag\(schedule,$5\) + extra_flag1=clpbn_horus:set_horus_flag\(inf_alg,$4\) + extra_flag2=clpbn_horus:set_horus_flag\(schedule,$5\) else extra_flag1=true extra_flag2=true @@ -22,7 +22,7 @@ fi /usr/bin/time -o $OUT_FILE_NAME -a -f "real:%E\tuser:%U\tsys:%S" $YAP << EOF >> $OUT_FILE_NAME 2>> ignore.$OUT_FILE_NAME [$1]. clpbn:set_clpbn_flag(solver,$2), - clpbn_bp:set_horus_flag(use_logarithms, true), + clpbn_horus:set_horus_flag(use_logarithms, true), $extra_flag1, $extra_flag2, run_query(_R), open("$OUT_FILE_NAME", 'append',S), diff --git a/packages/CLPBN/clpbn/bp/benchmarks/city/ignore.cbp.log b/packages/CLPBN/clpbn/bp/benchmarks/city/ignore.cbp.log new file mode 100644 index 000000000..d24e7552a --- /dev/null +++ b/packages/CLPBN/clpbn/bp/benchmarks/city/ignore.cbp.log @@ -0,0 +1,124 @@ +YAP 6.3.2 (i686-linux): Sex Mar 23 14:21:24 WET 2012 + % consulting /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/town_3.yap... + % reconsulting /home/tiago/share/Yap/clpbn.yap... + % reconsulting /home/tiago/share/Yap/atts.yap... + % reconsulting /home/tiago/share/Yap/lists.yap... + % reconsulting /home/tiago/share/Yap/error.pl... + % reconsulted /home/tiago/share/Yap/error.pl in module error, 4 msec 31312 bytes + % reconsulted /home/tiago/share/Yap/lists.yap in module lists, 8 msec 73816 bytes + % reconsulted /home/tiago/share/Yap/atts.yap in module attributes, 8 msec 99072 bytes + % reconsulting /home/tiago/share/Yap/terms.yap... + % reconsulted /home/tiago/share/Yap/terms.yap in module terms, 0 msec 2016 bytes + % reconsulting /home/tiago/share/Yap/clpbn/ve.yap... + % reconsulting /home/tiago/share/Yap/ordsets.yap... + % reconsulted /home/tiago/share/Yap/ordsets.yap in module ordsets, 0 msec 30264 bytes + % reconsulting /home/tiago/share/Yap/clpbn/xbif.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulting /home/tiago/share/Yap/matrix.yap... + % reconsulted /home/tiago/share/Yap/matrix.yap in module matrix, 0 msec 22232 bytes + % reconsulting /home/tiago/share/Yap/clpbn/matrix_cpt_utils.yap... + % reconsulted /home/tiago/share/Yap/clpbn/matrix_cpt_utils.yap in module clpbn_matrix_utils, 4 msec 39456 bytes + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module xbif, 8 msec 110696 bytes + % reconsulted /home/tiago/share/Yap/clpbn/xbif.yap in module xbif, 8 msec 123296 bytes + % reconsulting /home/tiago/share/Yap/clpbn/graphviz.yap... + % reconsulted /home/tiago/share/Yap/clpbn/graphviz.yap in module clpbn_gviz, 0 msec 10920 bytes + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_ve, 4 msec 38888 bytes + % reconsulting /home/tiago/share/Yap/clpbn/utils.yap... + % reconsulted /home/tiago/share/Yap/clpbn/utils.yap in module clpbn_utils, 4 msec 15784 bytes + % reconsulting /home/tiago/share/Yap/clpbn/display.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_display, 4 msec 39392 bytes + % reconsulted /home/tiago/share/Yap/clpbn/display.yap in module clpbn_display, 4 msec 52016 bytes + % reconsulting /home/tiago/share/Yap/clpbn/connected.yap... + % reconsulting /home/tiago/share/Yap/dgraphs.yap... + % reconsulting /home/tiago/share/Yap/rbtrees.yap... + % reconsulted /home/tiago/share/Yap/rbtrees.yap in module rbtrees, 8 msec 130768 bytes + % reconsulting /home/tiago/share/Yap/wdgraphs.yap... + % reconsulting /home/tiago/share/Yap/heaps.yap... + % reconsulted /home/tiago/share/Yap/heaps.yap in module heaps, 0 msec 16696 bytes + % reconsulted /home/tiago/share/Yap/wdgraphs.yap in module wdgraphs, 4 msec 82176 bytes + % reconsulted /home/tiago/share/Yap/dgraphs.yap in module dgraphs, 20 msec 276632 bytes + % reconsulted /home/tiago/share/Yap/clpbn/connected.yap in module clpbn_connected, 24 msec 301216 bytes + % reconsulting /home/tiago/share/Yap/clpbn/aggregates.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_aggregates, 0 msec 39168 bytes + % reconsulted /home/tiago/share/Yap/clpbn/aggregates.yap in module clpbn_aggregates, 4 msec 78560 bytes + % reconsulted /home/tiago/share/Yap/clpbn/ve.yap in module clpbn_ve, 52 msec 689720 bytes + % reconsulting /home/tiago/share/Yap/clpbn/bp.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_bp, 4 msec 39272 bytes + % reconsulting /home/tiago/share/Yap/charsio.yap... + % reconsulted /home/tiago/share/Yap/charsio.yap in module charsio, 0 msec 13088 bytes + % reconsulting /home/tiago/share/Yap/clpbn/horus.yap... + % reconsulted /home/tiago/share/Yap/clpbn/horus.yap in module clpbn_horus, 4 msec 9304 bytes + % reconsulted /home/tiago/share/Yap/clpbn/bp.yap in module clpbn_bp, 8 msec 93888 bytes + % reconsulting /home/tiago/share/Yap/clpbn/fove.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_fove, 4 msec 39136 bytes + % reconsulting /home/tiago/share/Yap/pfl.yap... + ERROR!! (/home/tiago/share/Yap/pfl.yap:31). + EXISTENCE ERROR- procedure set_pfl_flag/2 is undefined, called from context prolog:$system_catch/4 + Goal was pfl:set_pfl_flag(use_factors,on) + ERROR!! (/home/tiago/share/Yap/pfl.yap:33). + EXISTENCE ERROR- procedure pfl_not_clpbn/0 is undefined, called from context prolog:$system_catch/4 + Goal was pfl:pfl_not_clpbn + % reconsulted /home/tiago/share/Yap/pfl.yap in module pfl, 0 msec 22656 bytes + % reconsulted /home/tiago/share/Yap/clpbn/fove.yap in module clpbn_fove, 8 msec 80616 bytes + % reconsulting /home/tiago/share/Yap/clpbn/jt.yap... + % reconsulting /home/tiago/share/Yap/undgraphs.yap... + % reconsulting /home/tiago/share/Yap/wundgraphs.yap... + % reconsulted /home/tiago/share/Yap/wundgraphs.yap in module wundgraphs, 0 msec 37888 bytes + % reconsulted /home/tiago/share/Yap/undgraphs.yap in module undgraphs, 0 msec 66592 bytes + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module jt, 4 msec 38616 bytes + % reconsulted /home/tiago/share/Yap/clpbn/jt.yap in module jt, 12 msec 182952 bytes + % reconsulting /home/tiago/share/Yap/clpbn/bdd.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_bdd, 4 msec 39384 bytes + ERROR!! (/home/tiago/share/Yap/clpbn/bdd.yap:50). + PERMISSION ERROR- use_module(library(bdd)): cannot read from library(bdd) + % reconsulted /home/tiago/share/Yap/clpbn/bdd.yap in module clpbn_bdd, 12 msec 107616 bytes + % reconsulting /home/tiago/share/Yap/clpbn/bnt.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module bnt, 4 msec 39240 bytes + % reconsulting /home/tiago/share/Yap/clpbn/discrete_utils.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module discrete_utils, 4 msec 39104 bytes + % reconsulted /home/tiago/share/Yap/clpbn/discrete_utils.yap in module discrete_utils, 8 msec 59424 bytes + % reconsulting /home/tiago/share/Yap/matlab.yap... +% Warning: (/home/tiago/share/Yap/matlab.yap:31). +% matlab not available + % reconsulted /home/tiago/share/Yap/matlab.yap in module matlab, 0 msec 23616 bytes + % reconsulted /home/tiago/share/Yap/clpbn/bnt.yap in module bnt, 20 msec 181472 bytes + % reconsulting /home/tiago/share/Yap/clpbn/gibbs.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_gibbs, 4 msec 38464 bytes + % reconsulting /home/tiago/share/Yap/clpbn/topsort.yap... + % reconsulted /home/tiago/share/Yap/clpbn/topsort.yap in module topsort, 0 msec 5384 bytes + % reconsulted /home/tiago/share/Yap/clpbn/gibbs.yap in module clpbn_gibbs, 12 msec 117352 bytes + % reconsulting /home/tiago/share/Yap/clpbn/pgrammar.yap... + % reconsulted /home/tiago/share/Yap/clpbn/pgrammar.yap in module clpbn_pgrammar, 0 msec 52936 bytes + % reconsulting /home/tiago/share/Yap/clpbn/graphs.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn2graph, 4 msec 42024 bytes + % reconsulted /home/tiago/share/Yap/clpbn/graphs.yap in module clpbn2graph, 4 msec 47160 bytes + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn, 0 msec 40000 bytes + % reconsulting /home/tiago/share/Yap/clpbn/evidence.yap... + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_evidence, 4 msec 38728 bytes + % reconsulted /home/tiago/share/Yap/clpbn/evidence.yap in module clpbn_evidence, 8 msec 60296 bytes + % reconsulting /home/tiago/share/Yap/clpbn/ground_factors.yap... + % reconsulting /home/tiago/share/Yap/bhash.yap... + % reconsulted /home/tiago/share/Yap/bhash.yap in module b_hash, 0 msec 28256 bytes + % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... + % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_ground_factors, 4 msec 38872 bytes + % reconsulted /home/tiago/share/Yap/clpbn/ground_factors.yap in module clpbn_ground_factors, 8 msec 98440 bytes + % reconsulted /home/tiago/share/Yap/clpbn.yap in module clpbn, 168 msec 1942360 bytes + % reconsulting /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/schema.yap... + % reconsulting /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/tables.yap... + % reconsulted /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/tables.yap in module user, 0 msec 3768 bytes + % reconsulted /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/schema.yap in module user, 4 msec 14344 bytes + % consulted /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/town_3.yap in module user, 172 msec 1973368 bytes +yes diff --git a/packages/CLPBN/clpbn/bp/benchmarks/city/town_3.yap b/packages/CLPBN/clpbn/bp/benchmarks/city/town_3.yap new file mode 100644 index 000000000..aa395ba48 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/benchmarks/city/town_3.yap @@ -0,0 +1,29 @@ +:- source. +:- style_check(all). +:- yap_flag(unknown,error). +:- yap_flag(write_strings,on). +:- use_module(library(clpbn)). +:- set_clpbn_flag(solver, bp). +:- [-schema]. + +lives(_joe, nyc). + +run_query(Guilty) :- + guilty(joe, Guilty), + witness(nyc, t), + runall(X, ev(X)). + + +runall(G, Wrapper) :- + findall(G, Wrapper, L), + execute_all(L). + + +execute_all([]). +execute_all(G.L) :- + call(G), + execute_all(L). + + +ev(descn(p2, t)). +ev(descn(p3, t)). diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/ignore.results.log b/packages/CLPBN/clpbn/bp/benchmarks/school/ignore.results.log new file mode 100644 index 000000000..5f65b2022 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/benchmarks/school/ignore.results.log @@ -0,0 +1,230 @@ +YAP 6.3.2 (x86_64-linux): Qui Mar 29 01:31:18 WEST 2012 +MYDDAS version MYDDAS-0.9.1 + ERROR!! + PERMISSION ERROR- consult(pos:train): cannot read from train + % consulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/sch32.yap... + % reconsulting /home/tgomes/share/Yap/clpbn.yap... + % reconsulting /home/tgomes/share/Yap/atts.yap... + % reconsulting /home/tgomes/share/Yap/lists.yap... + % reconsulting /home/tgomes/share/Yap/error.pl... + % reconsulted /home/tgomes/share/Yap/error.pl in module error, 2 msec 53424 bytes + % reconsulted /home/tgomes/share/Yap/lists.yap in module lists, 4 msec 117168 bytes + % reconsulted /home/tgomes/share/Yap/atts.yap in module attributes, 5 msec 163104 bytes + % reconsulting /home/tgomes/share/Yap/terms.yap... + % reconsulted /home/tgomes/share/Yap/terms.yap in module terms, 0 msec 3312 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/ve.yap... + % reconsulting /home/tgomes/share/Yap/ordsets.yap... + % reconsulted /home/tgomes/share/Yap/ordsets.yap in module ordsets, 1 msec 46688 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/xbif.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/dists.yap... + % reconsulting /home/tgomes/share/Yap/matrix.yap... + % reconsulted /home/tgomes/share/Yap/matrix.yap in module matrix, 0 msec 39104 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/matrix_cpt_utils.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/matrix_cpt_utils.yap in module clpbn_matrix_utils, 2 msec 65616 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/dists.yap in module clpbn_dist, 5 msec 189008 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/xbif.yap in module xbif, 5 msec 209440 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/graphviz.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/graphviz.yap in module clpbn_gviz, 0 msec 14912 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/utils.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/utils.yap in module clpbn_utils, 1 msec 27360 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/display.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/display.yap in module clpbn_display, 1 msec 19312 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/connected.yap... + % reconsulting /home/tgomes/share/Yap/dgraphs.yap... + % reconsulting /home/tgomes/share/Yap/rbtrees.yap... + % reconsulted /home/tgomes/share/Yap/rbtrees.yap in module rbtrees, 6 msec 230208 bytes + % reconsulting /home/tgomes/share/Yap/wdgraphs.yap... + % reconsulting /home/tgomes/share/Yap/heaps.yap... + % reconsulted /home/tgomes/share/Yap/heaps.yap in module heaps, 1 msec 26512 bytes + % reconsulted /home/tgomes/share/Yap/wdgraphs.yap in module wdgraphs, 5 msec 141520 bytes + % reconsulted /home/tgomes/share/Yap/dgraphs.yap in module dgraphs, 13 msec 474800 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/connected.yap in module clpbn_connected, 15 msec 510400 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/aggregates.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/aggregates.yap in module clpbn_aggregates, 2 msec 70864 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/ve.yap in module clpbn_ve, 30 msec 969024 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/bp.yap... + % reconsulting /home/tgomes/share/Yap/charsio.yap... + % reconsulted /home/tgomes/share/Yap/charsio.yap in module charsio, 1 msec 20240 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/horus.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/horus.yap in module clpbn_horus, 1 msec 7744 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/bp.yap in module clpbn_bp, 4 msec 59760 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/fove.yap... + % reconsulting /home/tgomes/share/Yap/pfl.yap... + ERROR!! (/home/tgomes/share/Yap/pfl.yap:31). + EXISTENCE ERROR- procedure set_pfl_flag/2 is undefined, called from context prolog:$system_catch/4 + Goal was pfl:set_pfl_flag(use_factors,on) + ERROR!! (/home/tgomes/share/Yap/pfl.yap:33). + EXISTENCE ERROR- procedure pfl_not_clpbn/0 is undefined, called from context prolog:$system_catch/4 + Goal was pfl:pfl_not_clpbn + % reconsulted /home/tgomes/share/Yap/pfl.yap in module pfl, 2 msec 38176 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/fove.yap in module clpbn_fove, 3 msec 67168 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/jt.yap... + % reconsulting /home/tgomes/share/Yap/undgraphs.yap... + % reconsulting /home/tgomes/share/Yap/wundgraphs.yap... + % reconsulted /home/tgomes/share/Yap/wundgraphs.yap in module wundgraphs, 2 msec 67872 bytes + % reconsulted /home/tgomes/share/Yap/undgraphs.yap in module undgraphs, 4 msec 116624 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/jt.yap in module jt, 10 msec 254144 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/bdd.yap... + % reconsulting /home/tgomes/share/Yap/hacks.yap... + % reconsulted /home/tgomes/share/Yap/hacks.yap in module yap_hacks, 0 msec 8112 bytes + ERROR!! (/home/tgomes/share/Yap/clpbn/bdd.yap:52). + PERMISSION ERROR- use_module(library(bdd)): cannot read from library(bdd) + % reconsulted /home/tgomes/share/Yap/clpbn/bdd.yap in module clpbn_bdd, 6 msec 189952 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/bnt.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/discrete_utils.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/discrete_utils.yap in module discrete_utils, 1 msec 35200 bytes + % reconsulting /home/tgomes/share/Yap/matlab.yap... +% Warning: (/home/tgomes/share/Yap/matlab.yap:31). +% matlab not available + % reconsulted /home/tgomes/share/Yap/matlab.yap in module matlab, 1 msec 42640 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/bnt.yap in module bnt, 6 msec 179408 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/gibbs.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/topsort.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/topsort.yap in module topsort, 0 msec 9328 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/gibbs.yap in module clpbn_gibbs, 4 msec 135264 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/pgrammar.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/pgrammar.yap in module clpbn_pgrammar, 2 msec 90624 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/graphs.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/graphs.yap in module clpbn2graph, 0 msec 15088 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/evidence.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/evidence.yap in module clpbn_evidence, 2 msec 42688 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/ground_factors.yap... + % reconsulting /home/tgomes/share/Yap/bhash.yap... + % reconsulted /home/tgomes/share/Yap/bhash.yap in module b_hash, 1 msec 55600 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/ground_factors.yap in module clpbn_ground_factors, 4 msec 116144 bytes + % reconsulted /home/tgomes/share/Yap/clpbn.yap in module clpbn, 87 msec 2459328 bytes + % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/schema.yap... + % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/tables.yap... + % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/tables.yap in module user, 1 msec 14016 bytes + % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/schema.yap in module user, 2 msec 37168 bytes + % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/school32_data.yap... + % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/school32_data.yap in module user, 14 msec 168240 bytes + % consulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/sch32.yap in module user, 104 msec 2693456 bytes +yes + % reconsulting /home/tgomes/share/Yap/clpbn/learning/em.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/learning/learn_utils.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/table.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/table.yap in module clpbn_table, 3 msec 106128 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/learning/learn_utils.yap in module clpbn_learn_utils, 5 msec 135168 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/learning/em.yap in module clpbn_em, 7 msec 201712 bytes +yes +yes + % consulting /home/tgomes/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/school/missing5.yap... + % consulted /home/tgomes/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/school/missing5.yap in module user, 2 msec 219344 bytes +yes +no +YAP 6.3.2 (x86_64-linux): Qui Mar 29 01:31:18 WEST 2012 +MYDDAS version MYDDAS-0.9.1 + ERROR!! + PERMISSION ERROR- consult(pos:train): cannot read from train + % consulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/sch32.yap... + % reconsulting /home/tgomes/share/Yap/clpbn.yap... + % reconsulting /home/tgomes/share/Yap/atts.yap... + % reconsulting /home/tgomes/share/Yap/lists.yap... + % reconsulting /home/tgomes/share/Yap/error.pl... + % reconsulted /home/tgomes/share/Yap/error.pl in module error, 2 msec 53424 bytes + % reconsulted /home/tgomes/share/Yap/lists.yap in module lists, 4 msec 117168 bytes + % reconsulted /home/tgomes/share/Yap/atts.yap in module attributes, 5 msec 163104 bytes + % reconsulting /home/tgomes/share/Yap/terms.yap... + % reconsulted /home/tgomes/share/Yap/terms.yap in module terms, 0 msec 3312 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/ve.yap... + % reconsulting /home/tgomes/share/Yap/ordsets.yap... + % reconsulted /home/tgomes/share/Yap/ordsets.yap in module ordsets, 1 msec 46688 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/xbif.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/dists.yap... + % reconsulting /home/tgomes/share/Yap/matrix.yap... + % reconsulted /home/tgomes/share/Yap/matrix.yap in module matrix, 0 msec 39104 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/matrix_cpt_utils.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/matrix_cpt_utils.yap in module clpbn_matrix_utils, 1 msec 65616 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/dists.yap in module clpbn_dist, 5 msec 189008 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/xbif.yap in module xbif, 5 msec 209440 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/graphviz.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/graphviz.yap in module clpbn_gviz, 0 msec 14912 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/utils.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/utils.yap in module clpbn_utils, 0 msec 27360 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/display.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/display.yap in module clpbn_display, 1 msec 19312 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/connected.yap... + % reconsulting /home/tgomes/share/Yap/dgraphs.yap... + % reconsulting /home/tgomes/share/Yap/rbtrees.yap... + % reconsulted /home/tgomes/share/Yap/rbtrees.yap in module rbtrees, 6 msec 230208 bytes + % reconsulting /home/tgomes/share/Yap/wdgraphs.yap... + % reconsulting /home/tgomes/share/Yap/heaps.yap... + % reconsulted /home/tgomes/share/Yap/heaps.yap in module heaps, 1 msec 26512 bytes + % reconsulted /home/tgomes/share/Yap/wdgraphs.yap in module wdgraphs, 3 msec 141520 bytes + % reconsulted /home/tgomes/share/Yap/dgraphs.yap in module dgraphs, 12 msec 474800 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/connected.yap in module clpbn_connected, 14 msec 510400 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/aggregates.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/aggregates.yap in module clpbn_aggregates, 2 msec 70864 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/ve.yap in module clpbn_ve, 28 msec 969024 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/bp.yap... + % reconsulting /home/tgomes/share/Yap/charsio.yap... + % reconsulted /home/tgomes/share/Yap/charsio.yap in module charsio, 0 msec 20240 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/horus.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/horus.yap in module clpbn_horus, 1 msec 7744 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/bp.yap in module clpbn_bp, 2 msec 59760 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/fove.yap... + % reconsulting /home/tgomes/share/Yap/pfl.yap... + ERROR!! (/home/tgomes/share/Yap/pfl.yap:31). + EXISTENCE ERROR- procedure set_pfl_flag/2 is undefined, called from context prolog:$system_catch/4 + Goal was pfl:set_pfl_flag(use_factors,on) + ERROR!! (/home/tgomes/share/Yap/pfl.yap:33). + EXISTENCE ERROR- procedure pfl_not_clpbn/0 is undefined, called from context prolog:$system_catch/4 + Goal was pfl:pfl_not_clpbn + % reconsulted /home/tgomes/share/Yap/pfl.yap in module pfl, 1 msec 38176 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/fove.yap in module clpbn_fove, 3 msec 67168 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/jt.yap... + % reconsulting /home/tgomes/share/Yap/undgraphs.yap... + % reconsulting /home/tgomes/share/Yap/wundgraphs.yap... + % reconsulted /home/tgomes/share/Yap/wundgraphs.yap in module wundgraphs, 2 msec 67872 bytes + % reconsulted /home/tgomes/share/Yap/undgraphs.yap in module undgraphs, 3 msec 116624 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/jt.yap in module jt, 9 msec 254144 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/bdd.yap... + % reconsulting /home/tgomes/share/Yap/hacks.yap... + % reconsulted /home/tgomes/share/Yap/hacks.yap in module yap_hacks, 1 msec 8112 bytes + ERROR!! (/home/tgomes/share/Yap/clpbn/bdd.yap:52). + PERMISSION ERROR- use_module(library(bdd)): cannot read from library(bdd) + % reconsulted /home/tgomes/share/Yap/clpbn/bdd.yap in module clpbn_bdd, 5 msec 189952 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/bnt.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/discrete_utils.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/discrete_utils.yap in module discrete_utils, 1 msec 35200 bytes + % reconsulting /home/tgomes/share/Yap/matlab.yap... +% Warning: (/home/tgomes/share/Yap/matlab.yap:31). +% matlab not available + % reconsulted /home/tgomes/share/Yap/matlab.yap in module matlab, 1 msec 42640 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/bnt.yap in module bnt, 8 msec 179408 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/gibbs.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/topsort.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/topsort.yap in module topsort, 0 msec 9328 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/gibbs.yap in module clpbn_gibbs, 6 msec 135264 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/pgrammar.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/pgrammar.yap in module clpbn_pgrammar, 2 msec 90624 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/graphs.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/graphs.yap in module clpbn2graph, 0 msec 15088 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/evidence.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/evidence.yap in module clpbn_evidence, 2 msec 42688 bytes + % reconsulting /home/tgomes/share/Yap/clpbn/ground_factors.yap... + % reconsulting /home/tgomes/share/Yap/bhash.yap... + % reconsulted /home/tgomes/share/Yap/bhash.yap in module b_hash, 2 msec 55600 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/ground_factors.yap in module clpbn_ground_factors, 5 msec 116144 bytes + % reconsulted /home/tgomes/share/Yap/clpbn.yap in module clpbn, 85 msec 2459328 bytes + % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/schema.yap... + % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/tables.yap... + % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/tables.yap in module user, 1 msec 14016 bytes + % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/schema.yap in module user, 2 msec 37168 bytes + % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/school32_data.yap... + % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/school32_data.yap in module user, 14 msec 168240 bytes + % consulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/sch32.yap in module user, 103 msec 2693456 bytes +yes + % reconsulting /home/tgomes/share/Yap/clpbn/learning/em.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/learning/learn_utils.yap... + % reconsulting /home/tgomes/share/Yap/clpbn/table.yap... + % reconsulted /home/tgomes/share/Yap/clpbn/table.yap in module clpbn_table, 3 msec 106128 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/learning/learn_utils.yap in module clpbn_learn_utils, 6 msec 135168 bytes + % reconsulted /home/tgomes/share/Yap/clpbn/learning/em.yap in module clpbn_em, 10 msec 201712 bytes +yes +yes + % consulting /home/tgomes/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/school/missing10.yap... + % consulted /home/tgomes/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/school/missing10.yap in module user, 2 msec 219344 bytes +yes +no diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/results.log b/packages/CLPBN/clpbn/bp/benchmarks/school/results.log new file mode 100644 index 000000000..6113e9ccc --- /dev/null +++ b/packages/CLPBN/clpbn/bp/benchmarks/school/results.log @@ -0,0 +1,5 @@ +************************************************************************ +results for solver fg_bp(seq_fixed) +************************************************************************ +real:0:00.17 user:0.13 sys:0.03 +real:0:00.16 user:0.14 sys:0.02 diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/results2.log b/packages/CLPBN/clpbn/bp/benchmarks/school/results2.log new file mode 100644 index 000000000..a62018947 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/benchmarks/school/results2.log @@ -0,0 +1,21 @@ +************************************************************************ +results for solver hve(min_neighbors) +************************************************************************ +missing5: Lik = -2093.451, real:0:01.67 user:0.44 sys:0.25 +missing10: Lik = -2097.389, real:0:00.90 user:0.66 sys:0.20 +missing20: Lik = -2091.625, real:0:14.76 user:13.98 sys:0.54 +missing30: Lik = -2112.989, real:0:19.22 user:18.30 sys:0.66 +************************************************************************ +results for solver fg_bp(seq_fixed) +************************************************************************ +missing5: Lik = -2093.451, real:0:00.79 user:0.56 sys:0.22 +missing10: Lik = -2097.389, real:0:00.93 user:0.66 sys:0.24 +missing20: Lik = -2091.625, real:0:01.49 user:1.26 sys:0.22 +missing30: Lik = -2112.989, real:0:01.97 user:1.70 sys:0.24 +************************************************************************ +results for solver cbp(seq_fixed) +************************************************************************ +missing5: Lik = -2093.451, real:0:00.82 user:0.55 sys:0.25 +missing10: Lik = -2097.389, real:0:00.98 user:0.73 sys:0.23 +missing20: Lik = -2091.625, real:0:01.66 user:1.40 sys:0.24 +missing30: Lik = -2112.989, real:0:02.18 user:1.83 sys:0.24 diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/results_good.log b/packages/CLPBN/clpbn/bp/benchmarks/school/results_good.log new file mode 100644 index 000000000..64ddb9b27 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/benchmarks/school/results_good.log @@ -0,0 +1,32 @@ +************************************************************************ +results for solver hve(min_neighbors) +************************************************************************ +missing5: Lik = -2093.451, real:0:00.62 user:0.42 sys:0.19 +missing10: Lik = -2097.389, real:0:00.80 user:0.60 sys:0.19 +missing20: Lik = -2091.625, real:0:12.75 user:12.43 sys:0.28 +missing30: Lik = -2112.989, real:0:16.22 user:15.82 sys:0.36 +missing40: Lik = -2079.566, real:0:51.03 user:50.15 sys:0.75 +************************************************************************ +results for solver bn_bp(seq_fixed) +************************************************************************ +missing5: Lik = -2093.451, real:0:01.03 user:0.57 sys:0.22 +missing10: Lik = -2097.389, real:0:01.42 user:1.19 sys:0.23 +missing20: Lik = -2091.625, real:1:16.10 user:75.79 sys:0.24 +missing30: Lik = -2112.989, real:1:57.71 user:117.32 sys:0.30 +missing40: Lik = -2079.566, real:6:44.03 user:403.24 sys:0.49 +************************************************************************ +results for solver fg_bp(seq_fixed) +************************************************************************ +missing5: Lik = -2093.451, real:0:00.85 user:0.54 sys:0.28 +missing10: Lik = -2097.389, real:0:00.92 user:0.64 sys:0.28 +missing20: Lik = -2091.625, real:0:01.33 user:1.05 sys:0.27 +missing30: Lik = -2112.989, real:0:01.65 user:1.35 sys:0.29 +missing40: Lik = -2079.566, real:0:01.92 user:1.57 sys:0.34 +************************************************************************ +results for solver cbp(seq_fixed) +************************************************************************ +missing5: Lik = -2093.451, real:0:00.98 user:0.62 sys:0.32 +missing10: Lik = -2097.389, real:0:01.07 user:0.76 sys:0.31 +missing20: Lik = -2091.625, real:0:01.60 user:1.31 sys:0.29 +missing30: Lik = -2112.989, real:0:01.99 user:1.67 sys:0.32 +missing40: Lik = -2079.566, real:0:02.11 user:1.82 sys:0.29 diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/run_school_tests.sh b/packages/CLPBN/clpbn/bp/benchmarks/school/run_school_tests.sh index 8dcc860c9..123c29468 100755 --- a/packages/CLPBN/clpbn/bp/benchmarks/school/run_school_tests.sh +++ b/packages/CLPBN/clpbn/bp/benchmarks/school/run_school_tests.sh @@ -9,7 +9,7 @@ OUT_FILE_NAME=results.log rm -f $OUT_FILE_NAME rm -f ignore.$OUT_FILE_NAME -# yap -g "['../../../../examples/School/school_32'], [missing5], use_module(library(clpbn/learning/em)), graph(L), clpbn:set_clpbn_flag(em_solver,bp), clpbn_bp:set_horus_flag(inf_alg,ve), statistics(runtime, _), em(L,0.01,10,_,Lik), statistics(runtime, [T,_])." +# yap -g "['../../../../examples/School/sch32'], [missing5], use_module(library(clpbn/learning/em)), graph(L), clpbn:set_clpbn_flag(em_solver,bp), clpbn_horus:set_horus_flag(inf_alg,fg_bp), statistics(runtime, _), em(L,0.01,10,_,Lik), statistics(runtime, [T,_])." function run_solver { @@ -17,11 +17,11 @@ if [ $2 = bp ] then if [ $4 = ve ] then - extra_flag1=clpbn_bp:set_horus_flag\(inf_alg,$4\) - extra_flag2=clpbn_bp:set_horus_flag\(elim_heuristic,$5\) + extra_flag1=clpbn_horus:set_horus_flag\(inf_alg,$4\) + extra_flag2=clpbn_horus:set_horus_flag\(elim_heuristic,$5\) else - extra_flag1=clpbn_bp:set_horus_flag\(inf_alg,$4\) - extra_flag2=clpbn_bp:set_horus_flag\(schedule,$5\) + extra_flag1=clpbn_horus:set_horus_flag\(inf_alg,$4\) + extra_flag2=clpbn_horus:set_horus_flag\(schedule,$5\) fi else extra_flag1=true @@ -29,7 +29,7 @@ else fi /usr/bin/time -o "$OUT_FILE_NAME" -a -f "real:%E\tuser:%U\tsys:%S" $YAP << EOF &>> "ignore.$OUT_FILE_NAME" :- [pos:train]. -:- ['../../../../examples/School/school_32']. +:- ['../../../../examples/School/sch32']. :- use_module(library(clpbn/learning/em)). :- use_module(library(clpbn/bp)). [$1]. @@ -57,12 +57,11 @@ function run_all_graphs #run_solver missing50 $1 missing50 $3 $4 $5 } -run_solver missing5 ve missing5 $3 $4 $5 -exit -run_all_graphs bp "hve(min_neighbors) " ve min_neighbors + +#run_all_graphs bp "hve(min_neighbors) " ve min_neighbors #run_all_graphs bp "bn_bp(seq_fixed) " bn_bp seq_fixed -#run_all_graphs bp "fg_bp(seq_fixed) " fg_bp seq_fixed -#run_all_graphs bp "cbp(seq_fixed) " cbp seq_fixed +run_all_graphs bp "fg_bp(seq_fixed) " fg_bp seq_fixed +#run_all_graphs bp "cbp(seq_fixed) " cbp seq_fixed exit diff --git a/packages/CLPBN/clpbn/bp/examples/allopstest.yap b/packages/CLPBN/clpbn/bp/examples/allopstest.yap new file mode 100644 index 000000000..5763d7494 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/examples/allopstest.yap @@ -0,0 +1,18 @@ + +:- use_module(library(pfl)). + +:- set_clpbn_flag(solver,fove). + + +c(x1,y1,z1). +c(x1,y1,z2). +c(x2,y2,z1). +c(x3,y2,z1). + +bayes p(X)::[t,f] ; [0.2, 0.4] ; [c(X,_,_)]. + +bayes q(Y)::[t,f] ; [0.5, 0.6] ; [c(_,Y,_)]. + +bayes s(Z)::[t,f] , p(X) , q(Y) ; [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8] ; [c(X,Y,Z)]. + +% bayes series::[t,f] , attends(X) ; [0.5, 0.6, 0.7, 0.8] ; [c(X,_)]. diff --git a/packages/CLPBN/clpbn/bp/examples/city_test.fg b/packages/CLPBN/clpbn/bp/examples/city_test.fg new file mode 100644 index 000000000..7665a1969 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/examples/city_test.fg @@ -0,0 +1,78022 @@ +6002 + +2 +4001 0 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4002 1 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4003 2 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4004 3 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4005 4 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4006 5 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4007 6 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4008 7 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4009 8 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4010 9 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4011 10 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4012 11 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4013 12 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4014 13 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4015 14 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4016 15 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4017 16 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4018 17 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4019 18 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4020 19 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4021 20 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4022 21 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4023 22 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4024 23 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4025 24 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4026 25 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4027 26 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4028 27 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4029 28 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4030 29 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4031 30 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4032 31 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4033 32 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4034 33 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4035 34 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4036 35 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4037 36 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4038 37 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4039 38 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4040 39 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4041 40 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4042 41 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4043 42 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4044 43 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4045 44 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4046 45 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4047 46 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4048 47 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4049 48 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4050 49 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4051 50 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4052 51 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4053 52 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4054 53 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4055 54 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4056 55 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4057 56 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4058 57 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4059 58 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4060 59 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4061 60 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4062 61 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4063 62 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4064 63 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4065 64 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4066 65 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4067 66 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4068 67 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4069 68 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4070 69 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4071 70 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4072 71 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4073 72 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4074 73 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4075 74 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4076 75 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4077 76 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4078 77 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4079 78 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4080 79 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4081 80 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4082 81 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4083 82 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4084 83 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4085 84 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4086 85 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4087 86 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4088 87 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4089 88 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4090 89 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4091 90 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4092 91 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4093 92 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4094 93 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4095 94 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4096 95 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4097 96 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4098 97 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4099 98 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4100 99 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4101 100 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4102 101 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4103 102 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4104 103 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4105 104 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4106 105 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4107 106 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4108 107 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4109 108 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4110 109 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4111 110 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4112 111 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4113 112 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4114 113 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4115 114 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4116 115 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4117 116 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4118 117 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4119 118 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4120 119 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4121 120 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4122 121 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4123 122 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4124 123 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4125 124 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4126 125 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4127 126 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4128 127 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4129 128 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4130 129 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4131 130 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4132 131 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4133 132 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4134 133 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4135 134 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4136 135 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4137 136 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4138 137 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4139 138 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4140 139 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4141 140 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4142 141 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4143 142 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4144 143 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4145 144 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4146 145 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4147 146 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4148 147 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4149 148 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4150 149 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4151 150 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4152 151 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4153 152 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4154 153 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4155 154 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4156 155 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4157 156 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4158 157 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4159 158 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4160 159 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4161 160 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4162 161 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4163 162 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4164 163 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4165 164 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4166 165 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4167 166 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4168 167 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4169 168 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4170 169 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4171 170 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4172 171 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4173 172 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4174 173 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4175 174 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4176 175 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4177 176 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4178 177 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4179 178 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4180 179 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4181 180 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4182 181 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4183 182 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4184 183 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4185 184 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4186 185 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4187 186 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4188 187 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4189 188 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4190 189 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4191 190 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4192 191 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4193 192 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4194 193 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4195 194 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4196 195 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4197 196 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4198 197 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4199 198 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4200 199 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4201 200 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4202 201 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4203 202 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4204 203 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4205 204 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4206 205 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4207 206 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4208 207 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4209 208 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4210 209 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4211 210 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4212 211 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4213 212 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4214 213 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4215 214 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4216 215 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4217 216 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4218 217 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4219 218 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4220 219 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4221 220 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4222 221 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4223 222 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4224 223 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4225 224 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4226 225 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4227 226 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4228 227 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4229 228 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4230 229 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4231 230 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4232 231 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4233 232 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4234 233 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4235 234 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4236 235 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4237 236 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4238 237 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4239 238 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4240 239 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4241 240 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4242 241 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4243 242 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4244 243 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4245 244 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4246 245 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4247 246 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4248 247 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4249 248 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4250 249 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4251 250 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4252 251 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4253 252 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4254 253 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4255 254 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4256 255 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4257 256 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4258 257 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4259 258 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4260 259 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4261 260 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4262 261 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4263 262 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4264 263 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4265 264 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4266 265 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4267 266 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4268 267 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4269 268 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4270 269 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4271 270 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4272 271 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4273 272 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4274 273 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4275 274 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4276 275 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4277 276 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4278 277 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4279 278 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4280 279 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4281 280 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4282 281 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4283 282 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4284 283 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4285 284 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4286 285 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4287 286 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4288 287 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4289 288 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4290 289 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4291 290 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4292 291 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4293 292 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4294 293 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4295 294 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4296 295 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4297 296 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4298 297 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4299 298 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4300 299 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4301 300 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4302 301 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4303 302 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4304 303 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4305 304 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4306 305 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4307 306 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4308 307 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4309 308 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4310 309 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4311 310 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4312 311 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4313 312 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4314 313 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4315 314 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4316 315 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4317 316 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4318 317 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4319 318 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4320 319 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4321 320 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4322 321 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4323 322 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4324 323 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4325 324 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4326 325 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4327 326 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4328 327 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4329 328 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4330 329 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4331 330 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4332 331 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4333 332 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4334 333 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4335 334 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4336 335 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4337 336 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4338 337 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4339 338 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4340 339 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4341 340 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4342 341 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4343 342 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4344 343 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4345 344 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4346 345 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4347 346 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4348 347 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4349 348 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4350 349 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4351 350 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4352 351 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4353 352 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4354 353 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4355 354 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4356 355 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4357 356 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4358 357 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4359 358 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4360 359 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4361 360 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4362 361 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4363 362 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4364 363 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4365 364 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4366 365 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4367 366 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4368 367 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4369 368 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4370 369 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4371 370 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4372 371 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4373 372 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4374 373 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4375 374 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4376 375 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4377 376 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4378 377 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4379 378 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4380 379 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4381 380 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4382 381 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4383 382 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4384 383 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4385 384 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4386 385 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4387 386 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4388 387 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4389 388 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4390 389 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4391 390 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4392 391 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4393 392 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4394 393 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4395 394 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4396 395 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4397 396 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4398 397 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4399 398 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4400 399 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4401 400 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4402 401 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4403 402 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4404 403 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4405 404 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4406 405 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4407 406 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4408 407 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4409 408 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4410 409 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4411 410 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4412 411 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4413 412 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4414 413 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4415 414 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4416 415 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4417 416 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4418 417 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4419 418 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4420 419 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4421 420 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4422 421 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4423 422 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4424 423 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4425 424 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4426 425 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4427 426 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4428 427 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4429 428 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4430 429 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4431 430 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4432 431 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4433 432 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4434 433 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4435 434 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4436 435 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4437 436 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4438 437 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4439 438 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4440 439 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4441 440 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4442 441 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4443 442 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4444 443 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4445 444 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4446 445 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4447 446 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4448 447 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4449 448 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4450 449 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4451 450 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4452 451 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4453 452 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4454 453 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4455 454 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4456 455 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4457 456 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4458 457 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4459 458 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4460 459 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4461 460 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4462 461 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4463 462 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4464 463 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4465 464 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4466 465 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4467 466 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4468 467 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4469 468 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4470 469 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4471 470 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4472 471 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4473 472 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4474 473 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4475 474 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4476 475 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4477 476 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4478 477 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4479 478 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4480 479 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4481 480 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4482 481 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4483 482 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4484 483 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4485 484 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4486 485 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4487 486 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4488 487 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4489 488 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4490 489 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4491 490 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4492 491 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4493 492 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4494 493 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4495 494 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4496 495 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4497 496 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4498 497 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4499 498 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4500 499 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4501 500 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4502 501 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4503 502 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4504 503 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4505 504 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4506 505 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4507 506 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4508 507 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4509 508 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4510 509 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4511 510 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4512 511 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4513 512 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4514 513 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4515 514 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4516 515 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4517 516 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4518 517 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4519 518 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4520 519 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4521 520 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4522 521 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4523 522 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4524 523 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4525 524 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4526 525 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4527 526 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4528 527 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4529 528 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4530 529 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4531 530 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4532 531 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4533 532 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4534 533 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4535 534 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4536 535 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4537 536 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4538 537 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4539 538 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4540 539 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4541 540 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4542 541 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4543 542 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4544 543 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4545 544 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4546 545 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4547 546 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4548 547 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4549 548 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4550 549 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4551 550 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4552 551 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4553 552 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4554 553 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4555 554 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4556 555 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4557 556 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4558 557 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4559 558 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4560 559 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4561 560 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4562 561 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4563 562 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4564 563 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4565 564 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4566 565 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4567 566 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4568 567 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4569 568 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4570 569 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4571 570 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4572 571 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4573 572 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4574 573 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4575 574 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4576 575 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4577 576 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4578 577 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4579 578 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4580 579 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4581 580 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4582 581 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4583 582 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4584 583 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4585 584 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4586 585 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4587 586 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4588 587 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4589 588 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4590 589 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4591 590 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4592 591 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4593 592 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4594 593 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4595 594 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4596 595 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4597 596 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4598 597 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4599 598 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4600 599 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4601 600 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4602 601 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4603 602 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4604 603 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4605 604 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4606 605 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4607 606 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4608 607 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4609 608 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4610 609 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4611 610 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4612 611 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4613 612 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4614 613 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4615 614 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4616 615 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4617 616 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4618 617 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4619 618 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4620 619 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4621 620 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4622 621 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4623 622 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4624 623 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4625 624 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4626 625 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4627 626 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4628 627 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4629 628 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4630 629 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4631 630 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4632 631 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4633 632 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4634 633 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4635 634 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4636 635 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4637 636 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4638 637 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4639 638 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4640 639 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4641 640 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4642 641 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4643 642 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4644 643 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4645 644 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4646 645 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4647 646 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4648 647 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4649 648 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4650 649 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4651 650 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4652 651 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4653 652 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4654 653 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4655 654 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4656 655 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4657 656 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4658 657 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4659 658 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4660 659 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4661 660 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4662 661 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4663 662 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4664 663 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4665 664 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4666 665 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4667 666 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4668 667 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4669 668 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4670 669 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4671 670 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4672 671 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4673 672 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4674 673 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4675 674 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4676 675 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4677 676 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4678 677 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4679 678 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4680 679 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4681 680 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4682 681 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4683 682 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4684 683 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4685 684 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4686 685 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4687 686 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4688 687 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4689 688 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4690 689 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4691 690 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4692 691 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4693 692 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4694 693 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4695 694 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4696 695 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4697 696 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4698 697 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4699 698 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4700 699 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4701 700 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4702 701 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4703 702 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4704 703 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4705 704 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4706 705 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4707 706 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4708 707 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4709 708 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4710 709 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4711 710 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4712 711 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4713 712 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4714 713 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4715 714 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4716 715 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4717 716 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4718 717 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4719 718 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4720 719 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4721 720 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4722 721 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4723 722 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4724 723 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4725 724 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4726 725 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4727 726 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4728 727 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4729 728 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4730 729 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4731 730 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4732 731 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4733 732 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4734 733 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4735 734 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4736 735 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4737 736 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4738 737 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4739 738 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4740 739 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4741 740 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4742 741 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4743 742 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4744 743 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4745 744 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4746 745 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4747 746 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4748 747 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4749 748 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4750 749 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4751 750 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4752 751 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4753 752 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4754 753 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4755 754 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4756 755 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4757 756 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4758 757 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4759 758 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4760 759 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4761 760 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4762 761 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4763 762 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4764 763 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4765 764 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4766 765 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4767 766 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4768 767 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4769 768 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4770 769 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4771 770 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4772 771 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4773 772 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4774 773 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4775 774 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4776 775 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4777 776 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4778 777 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4779 778 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4780 779 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4781 780 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4782 781 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4783 782 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4784 783 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4785 784 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4786 785 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4787 786 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4788 787 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4789 788 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4790 789 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4791 790 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4792 791 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4793 792 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4794 793 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4795 794 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4796 795 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4797 796 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4798 797 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4799 798 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4800 799 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4801 800 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4802 801 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4803 802 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4804 803 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4805 804 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4806 805 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4807 806 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4808 807 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4809 808 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4810 809 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4811 810 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4812 811 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4813 812 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4814 813 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4815 814 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4816 815 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4817 816 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4818 817 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4819 818 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4820 819 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4821 820 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4822 821 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4823 822 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4824 823 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4825 824 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4826 825 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4827 826 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4828 827 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4829 828 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4830 829 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4831 830 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4832 831 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4833 832 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4834 833 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4835 834 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4836 835 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4837 836 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4838 837 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4839 838 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4840 839 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4841 840 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4842 841 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4843 842 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4844 843 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4845 844 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4846 845 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4847 846 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4848 847 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4849 848 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4850 849 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4851 850 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4852 851 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4853 852 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4854 853 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4855 854 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4856 855 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4857 856 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4858 857 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4859 858 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4860 859 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4861 860 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4862 861 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4863 862 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4864 863 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4865 864 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4866 865 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4867 866 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4868 867 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4869 868 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4870 869 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4871 870 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4872 871 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4873 872 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4874 873 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4875 874 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4876 875 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4877 876 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4878 877 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4879 878 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4880 879 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4881 880 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4882 881 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4883 882 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4884 883 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4885 884 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4886 885 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4887 886 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4888 887 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4889 888 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4890 889 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4891 890 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4892 891 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4893 892 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4894 893 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4895 894 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4896 895 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4897 896 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4898 897 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4899 898 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4900 899 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4901 900 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4902 901 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4903 902 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4904 903 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4905 904 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4906 905 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4907 906 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4908 907 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4909 908 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4910 909 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4911 910 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4912 911 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4913 912 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4914 913 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4915 914 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4916 915 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4917 916 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4918 917 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4919 918 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4920 919 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4921 920 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4922 921 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4923 922 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4924 923 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4925 924 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4926 925 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4927 926 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4928 927 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4929 928 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4930 929 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4931 930 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4932 931 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4933 932 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4934 933 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4935 934 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4936 935 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4937 936 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4938 937 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4939 938 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4940 939 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4941 940 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4942 941 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4943 942 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4944 943 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4945 944 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4946 945 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4947 946 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4948 947 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4949 948 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4950 949 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4951 950 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4952 951 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4953 952 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4954 953 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4955 954 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4956 955 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4957 956 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4958 957 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4959 958 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4960 959 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4961 960 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4962 961 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4963 962 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4964 963 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4965 964 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4966 965 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4967 966 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4968 967 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4969 968 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4970 969 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4971 970 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4972 971 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4973 972 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4974 973 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4975 974 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4976 975 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4977 976 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4978 977 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4979 978 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4980 979 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4981 980 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4982 981 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4983 982 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4984 983 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4985 984 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4986 985 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4987 986 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4988 987 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4989 988 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4990 989 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4991 990 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4992 991 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4993 992 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4994 993 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4995 994 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4996 995 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4997 996 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4998 997 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +4999 998 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +2 +5000 999 +2 2 +4 +0 0.9 +1 0.2 +2 0.1 +3 0.8 + +1 +1000 +2 +2 +0 0.8 +1 0.2 + +5 +3001 5001 4001 0 1001 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3002 5002 4002 1 1002 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3003 5003 4003 2 1003 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3004 5004 4004 3 1004 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3005 5005 4005 4 1005 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3006 5006 4006 5 1006 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3007 5007 4007 6 1007 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3008 5008 4008 7 1008 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3009 5009 4009 8 1009 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3010 5010 4010 9 1010 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3011 5011 4011 10 1011 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3012 5012 4012 11 1012 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3013 5013 4013 12 1013 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3014 5014 4014 13 1014 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3015 5015 4015 14 1015 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3016 5016 4016 15 1016 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3017 5017 4017 16 1017 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3018 5018 4018 17 1018 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3019 5019 4019 18 1019 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3020 5020 4020 19 1020 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3021 5021 4021 20 1021 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3022 5022 4022 21 1022 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3023 5023 4023 22 1023 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3024 5024 4024 23 1024 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3025 5025 4025 24 1025 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3026 5026 4026 25 1026 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3027 5027 4027 26 1027 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3028 5028 4028 27 1028 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3029 5029 4029 28 1029 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3030 5030 4030 29 1030 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3031 5031 4031 30 1031 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3032 5032 4032 31 1032 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3033 5033 4033 32 1033 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3034 5034 4034 33 1034 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3035 5035 4035 34 1035 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3036 5036 4036 35 1036 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3037 5037 4037 36 1037 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3038 5038 4038 37 1038 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3039 5039 4039 38 1039 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3040 5040 4040 39 1040 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3041 5041 4041 40 1041 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3042 5042 4042 41 1042 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3043 5043 4043 42 1043 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3044 5044 4044 43 1044 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3045 5045 4045 44 1045 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3046 5046 4046 45 1046 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3047 5047 4047 46 1047 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3048 5048 4048 47 1048 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3049 5049 4049 48 1049 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3050 5050 4050 49 1050 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3051 5051 4051 50 1051 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3052 5052 4052 51 1052 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3053 5053 4053 52 1053 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3054 5054 4054 53 1054 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3055 5055 4055 54 1055 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3056 5056 4056 55 1056 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3057 5057 4057 56 1057 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3058 5058 4058 57 1058 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3059 5059 4059 58 1059 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3060 5060 4060 59 1060 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3061 5061 4061 60 1061 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3062 5062 4062 61 1062 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3063 5063 4063 62 1063 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3064 5064 4064 63 1064 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3065 5065 4065 64 1065 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3066 5066 4066 65 1066 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3067 5067 4067 66 1067 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3068 5068 4068 67 1068 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3069 5069 4069 68 1069 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3070 5070 4070 69 1070 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3071 5071 4071 70 1071 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3072 5072 4072 71 1072 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3073 5073 4073 72 1073 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3074 5074 4074 73 1074 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3075 5075 4075 74 1075 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3076 5076 4076 75 1076 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3077 5077 4077 76 1077 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3078 5078 4078 77 1078 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3079 5079 4079 78 1079 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3080 5080 4080 79 1080 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3081 5081 4081 80 1081 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3082 5082 4082 81 1082 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3083 5083 4083 82 1083 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3084 5084 4084 83 1084 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3085 5085 4085 84 1085 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3086 5086 4086 85 1086 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3087 5087 4087 86 1087 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3088 5088 4088 87 1088 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3089 5089 4089 88 1089 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3090 5090 4090 89 1090 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3091 5091 4091 90 1091 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3092 5092 4092 91 1092 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3093 5093 4093 92 1093 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3094 5094 4094 93 1094 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3095 5095 4095 94 1095 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3096 5096 4096 95 1096 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3097 5097 4097 96 1097 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3098 5098 4098 97 1098 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3099 5099 4099 98 1099 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3100 5100 4100 99 1100 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3101 5101 4101 100 1101 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3102 5102 4102 101 1102 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3103 5103 4103 102 1103 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3104 5104 4104 103 1104 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3105 5105 4105 104 1105 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3106 5106 4106 105 1106 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3107 5107 4107 106 1107 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3108 5108 4108 107 1108 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3109 5109 4109 108 1109 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3110 5110 4110 109 1110 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3111 5111 4111 110 1111 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3112 5112 4112 111 1112 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3113 5113 4113 112 1113 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3114 5114 4114 113 1114 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3115 5115 4115 114 1115 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3116 5116 4116 115 1116 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3117 5117 4117 116 1117 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3118 5118 4118 117 1118 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3119 5119 4119 118 1119 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3120 5120 4120 119 1120 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3121 5121 4121 120 1121 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3122 5122 4122 121 1122 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3123 5123 4123 122 1123 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3124 5124 4124 123 1124 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3125 5125 4125 124 1125 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3126 5126 4126 125 1126 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3127 5127 4127 126 1127 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3128 5128 4128 127 1128 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3129 5129 4129 128 1129 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3130 5130 4130 129 1130 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3131 5131 4131 130 1131 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3132 5132 4132 131 1132 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3133 5133 4133 132 1133 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3134 5134 4134 133 1134 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3135 5135 4135 134 1135 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3136 5136 4136 135 1136 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3137 5137 4137 136 1137 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3138 5138 4138 137 1138 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3139 5139 4139 138 1139 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3140 5140 4140 139 1140 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3141 5141 4141 140 1141 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3142 5142 4142 141 1142 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3143 5143 4143 142 1143 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3144 5144 4144 143 1144 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3145 5145 4145 144 1145 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3146 5146 4146 145 1146 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3147 5147 4147 146 1147 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3148 5148 4148 147 1148 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3149 5149 4149 148 1149 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3150 5150 4150 149 1150 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3151 5151 4151 150 1151 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3152 5152 4152 151 1152 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3153 5153 4153 152 1153 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3154 5154 4154 153 1154 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3155 5155 4155 154 1155 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3156 5156 4156 155 1156 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3157 5157 4157 156 1157 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3158 5158 4158 157 1158 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3159 5159 4159 158 1159 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3160 5160 4160 159 1160 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3161 5161 4161 160 1161 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3162 5162 4162 161 1162 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3163 5163 4163 162 1163 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3164 5164 4164 163 1164 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3165 5165 4165 164 1165 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3166 5166 4166 165 1166 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3167 5167 4167 166 1167 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3168 5168 4168 167 1168 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3169 5169 4169 168 1169 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3170 5170 4170 169 1170 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3171 5171 4171 170 1171 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3172 5172 4172 171 1172 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3173 5173 4173 172 1173 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3174 5174 4174 173 1174 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3175 5175 4175 174 1175 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3176 5176 4176 175 1176 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3177 5177 4177 176 1177 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3178 5178 4178 177 1178 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3179 5179 4179 178 1179 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3180 5180 4180 179 1180 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3181 5181 4181 180 1181 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3182 5182 4182 181 1182 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3183 5183 4183 182 1183 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3184 5184 4184 183 1184 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3185 5185 4185 184 1185 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3186 5186 4186 185 1186 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3187 5187 4187 186 1187 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3188 5188 4188 187 1188 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3189 5189 4189 188 1189 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3190 5190 4190 189 1190 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3191 5191 4191 190 1191 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3192 5192 4192 191 1192 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3193 5193 4193 192 1193 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3194 5194 4194 193 1194 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3195 5195 4195 194 1195 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3196 5196 4196 195 1196 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3197 5197 4197 196 1197 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3198 5198 4198 197 1198 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3199 5199 4199 198 1199 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3200 5200 4200 199 1200 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3201 5201 4201 200 1201 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3202 5202 4202 201 1202 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3203 5203 4203 202 1203 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3204 5204 4204 203 1204 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3205 5205 4205 204 1205 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3206 5206 4206 205 1206 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3207 5207 4207 206 1207 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3208 5208 4208 207 1208 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3209 5209 4209 208 1209 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3210 5210 4210 209 1210 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3211 5211 4211 210 1211 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3212 5212 4212 211 1212 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3213 5213 4213 212 1213 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3214 5214 4214 213 1214 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3215 5215 4215 214 1215 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3216 5216 4216 215 1216 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3217 5217 4217 216 1217 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3218 5218 4218 217 1218 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3219 5219 4219 218 1219 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3220 5220 4220 219 1220 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3221 5221 4221 220 1221 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3222 5222 4222 221 1222 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3223 5223 4223 222 1223 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3224 5224 4224 223 1224 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3225 5225 4225 224 1225 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3226 5226 4226 225 1226 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3227 5227 4227 226 1227 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3228 5228 4228 227 1228 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3229 5229 4229 228 1229 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3230 5230 4230 229 1230 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3231 5231 4231 230 1231 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3232 5232 4232 231 1232 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3233 5233 4233 232 1233 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3234 5234 4234 233 1234 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3235 5235 4235 234 1235 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3236 5236 4236 235 1236 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3237 5237 4237 236 1237 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3238 5238 4238 237 1238 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3239 5239 4239 238 1239 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3240 5240 4240 239 1240 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3241 5241 4241 240 1241 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3242 5242 4242 241 1242 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3243 5243 4243 242 1243 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3244 5244 4244 243 1244 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3245 5245 4245 244 1245 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3246 5246 4246 245 1246 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3247 5247 4247 246 1247 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3248 5248 4248 247 1248 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3249 5249 4249 248 1249 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3250 5250 4250 249 1250 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3251 5251 4251 250 1251 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3252 5252 4252 251 1252 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3253 5253 4253 252 1253 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3254 5254 4254 253 1254 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3255 5255 4255 254 1255 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3256 5256 4256 255 1256 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3257 5257 4257 256 1257 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3258 5258 4258 257 1258 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3259 5259 4259 258 1259 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3260 5260 4260 259 1260 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3261 5261 4261 260 1261 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3262 5262 4262 261 1262 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3263 5263 4263 262 1263 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3264 5264 4264 263 1264 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3265 5265 4265 264 1265 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3266 5266 4266 265 1266 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3267 5267 4267 266 1267 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3268 5268 4268 267 1268 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3269 5269 4269 268 1269 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3270 5270 4270 269 1270 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3271 5271 4271 270 1271 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3272 5272 4272 271 1272 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3273 5273 4273 272 1273 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3274 5274 4274 273 1274 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3275 5275 4275 274 1275 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3276 5276 4276 275 1276 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3277 5277 4277 276 1277 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3278 5278 4278 277 1278 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3279 5279 4279 278 1279 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3280 5280 4280 279 1280 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3281 5281 4281 280 1281 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3282 5282 4282 281 1282 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3283 5283 4283 282 1283 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3284 5284 4284 283 1284 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3285 5285 4285 284 1285 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3286 5286 4286 285 1286 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3287 5287 4287 286 1287 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3288 5288 4288 287 1288 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3289 5289 4289 288 1289 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3290 5290 4290 289 1290 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3291 5291 4291 290 1291 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3292 5292 4292 291 1292 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3293 5293 4293 292 1293 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3294 5294 4294 293 1294 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3295 5295 4295 294 1295 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3296 5296 4296 295 1296 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3297 5297 4297 296 1297 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3298 5298 4298 297 1298 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3299 5299 4299 298 1299 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3300 5300 4300 299 1300 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3301 5301 4301 300 1301 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3302 5302 4302 301 1302 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3303 5303 4303 302 1303 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3304 5304 4304 303 1304 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3305 5305 4305 304 1305 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3306 5306 4306 305 1306 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3307 5307 4307 306 1307 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3308 5308 4308 307 1308 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3309 5309 4309 308 1309 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3310 5310 4310 309 1310 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3311 5311 4311 310 1311 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3312 5312 4312 311 1312 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3313 5313 4313 312 1313 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3314 5314 4314 313 1314 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3315 5315 4315 314 1315 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3316 5316 4316 315 1316 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3317 5317 4317 316 1317 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3318 5318 4318 317 1318 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3319 5319 4319 318 1319 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3320 5320 4320 319 1320 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3321 5321 4321 320 1321 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3322 5322 4322 321 1322 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3323 5323 4323 322 1323 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3324 5324 4324 323 1324 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3325 5325 4325 324 1325 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3326 5326 4326 325 1326 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3327 5327 4327 326 1327 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3328 5328 4328 327 1328 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3329 5329 4329 328 1329 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3330 5330 4330 329 1330 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3331 5331 4331 330 1331 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3332 5332 4332 331 1332 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3333 5333 4333 332 1333 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3334 5334 4334 333 1334 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3335 5335 4335 334 1335 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3336 5336 4336 335 1336 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3337 5337 4337 336 1337 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3338 5338 4338 337 1338 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3339 5339 4339 338 1339 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3340 5340 4340 339 1340 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3341 5341 4341 340 1341 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3342 5342 4342 341 1342 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3343 5343 4343 342 1343 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3344 5344 4344 343 1344 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3345 5345 4345 344 1345 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3346 5346 4346 345 1346 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3347 5347 4347 346 1347 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3348 5348 4348 347 1348 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3349 5349 4349 348 1349 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3350 5350 4350 349 1350 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3351 5351 4351 350 1351 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3352 5352 4352 351 1352 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3353 5353 4353 352 1353 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3354 5354 4354 353 1354 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3355 5355 4355 354 1355 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3356 5356 4356 355 1356 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3357 5357 4357 356 1357 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3358 5358 4358 357 1358 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3359 5359 4359 358 1359 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3360 5360 4360 359 1360 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3361 5361 4361 360 1361 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3362 5362 4362 361 1362 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3363 5363 4363 362 1363 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3364 5364 4364 363 1364 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3365 5365 4365 364 1365 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3366 5366 4366 365 1366 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3367 5367 4367 366 1367 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3368 5368 4368 367 1368 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3369 5369 4369 368 1369 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3370 5370 4370 369 1370 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3371 5371 4371 370 1371 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3372 5372 4372 371 1372 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3373 5373 4373 372 1373 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3374 5374 4374 373 1374 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3375 5375 4375 374 1375 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3376 5376 4376 375 1376 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3377 5377 4377 376 1377 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3378 5378 4378 377 1378 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3379 5379 4379 378 1379 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3380 5380 4380 379 1380 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3381 5381 4381 380 1381 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3382 5382 4382 381 1382 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3383 5383 4383 382 1383 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3384 5384 4384 383 1384 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3385 5385 4385 384 1385 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3386 5386 4386 385 1386 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3387 5387 4387 386 1387 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3388 5388 4388 387 1388 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3389 5389 4389 388 1389 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3390 5390 4390 389 1390 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3391 5391 4391 390 1391 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3392 5392 4392 391 1392 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3393 5393 4393 392 1393 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3394 5394 4394 393 1394 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3395 5395 4395 394 1395 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3396 5396 4396 395 1396 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3397 5397 4397 396 1397 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3398 5398 4398 397 1398 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3399 5399 4399 398 1399 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3400 5400 4400 399 1400 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3401 5401 4401 400 1401 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3402 5402 4402 401 1402 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3403 5403 4403 402 1403 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3404 5404 4404 403 1404 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3405 5405 4405 404 1405 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3406 5406 4406 405 1406 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3407 5407 4407 406 1407 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3408 5408 4408 407 1408 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3409 5409 4409 408 1409 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3410 5410 4410 409 1410 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3411 5411 4411 410 1411 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3412 5412 4412 411 1412 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3413 5413 4413 412 1413 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3414 5414 4414 413 1414 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3415 5415 4415 414 1415 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3416 5416 4416 415 1416 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3417 5417 4417 416 1417 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3418 5418 4418 417 1418 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3419 5419 4419 418 1419 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3420 5420 4420 419 1420 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3421 5421 4421 420 1421 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3422 5422 4422 421 1422 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3423 5423 4423 422 1423 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3424 5424 4424 423 1424 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3425 5425 4425 424 1425 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3426 5426 4426 425 1426 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3427 5427 4427 426 1427 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3428 5428 4428 427 1428 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3429 5429 4429 428 1429 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3430 5430 4430 429 1430 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3431 5431 4431 430 1431 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3432 5432 4432 431 1432 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3433 5433 4433 432 1433 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3434 5434 4434 433 1434 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3435 5435 4435 434 1435 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3436 5436 4436 435 1436 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3437 5437 4437 436 1437 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3438 5438 4438 437 1438 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3439 5439 4439 438 1439 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3440 5440 4440 439 1440 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3441 5441 4441 440 1441 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3442 5442 4442 441 1442 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3443 5443 4443 442 1443 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3444 5444 4444 443 1444 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3445 5445 4445 444 1445 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3446 5446 4446 445 1446 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3447 5447 4447 446 1447 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3448 5448 4448 447 1448 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3449 5449 4449 448 1449 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3450 5450 4450 449 1450 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3451 5451 4451 450 1451 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3452 5452 4452 451 1452 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3453 5453 4453 452 1453 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3454 5454 4454 453 1454 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3455 5455 4455 454 1455 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3456 5456 4456 455 1456 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3457 5457 4457 456 1457 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3458 5458 4458 457 1458 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3459 5459 4459 458 1459 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3460 5460 4460 459 1460 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3461 5461 4461 460 1461 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3462 5462 4462 461 1462 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3463 5463 4463 462 1463 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3464 5464 4464 463 1464 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3465 5465 4465 464 1465 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3466 5466 4466 465 1466 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3467 5467 4467 466 1467 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3468 5468 4468 467 1468 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3469 5469 4469 468 1469 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3470 5470 4470 469 1470 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3471 5471 4471 470 1471 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3472 5472 4472 471 1472 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3473 5473 4473 472 1473 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3474 5474 4474 473 1474 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3475 5475 4475 474 1475 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3476 5476 4476 475 1476 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3477 5477 4477 476 1477 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3478 5478 4478 477 1478 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3479 5479 4479 478 1479 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3480 5480 4480 479 1480 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3481 5481 4481 480 1481 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3482 5482 4482 481 1482 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3483 5483 4483 482 1483 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3484 5484 4484 483 1484 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3485 5485 4485 484 1485 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3486 5486 4486 485 1486 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3487 5487 4487 486 1487 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3488 5488 4488 487 1488 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3489 5489 4489 488 1489 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3490 5490 4490 489 1490 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3491 5491 4491 490 1491 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3492 5492 4492 491 1492 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3493 5493 4493 492 1493 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3494 5494 4494 493 1494 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3495 5495 4495 494 1495 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3496 5496 4496 495 1496 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3497 5497 4497 496 1497 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3498 5498 4498 497 1498 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3499 5499 4499 498 1499 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3500 5500 4500 499 1500 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3501 5501 4501 500 1501 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3502 5502 4502 501 1502 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3503 5503 4503 502 1503 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3504 5504 4504 503 1504 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3505 5505 4505 504 1505 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3506 5506 4506 505 1506 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3507 5507 4507 506 1507 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3508 5508 4508 507 1508 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3509 5509 4509 508 1509 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3510 5510 4510 509 1510 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3511 5511 4511 510 1511 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3512 5512 4512 511 1512 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3513 5513 4513 512 1513 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3514 5514 4514 513 1514 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3515 5515 4515 514 1515 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3516 5516 4516 515 1516 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3517 5517 4517 516 1517 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3518 5518 4518 517 1518 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3519 5519 4519 518 1519 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3520 5520 4520 519 1520 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3521 5521 4521 520 1521 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3522 5522 4522 521 1522 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3523 5523 4523 522 1523 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3524 5524 4524 523 1524 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3525 5525 4525 524 1525 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3526 5526 4526 525 1526 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3527 5527 4527 526 1527 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3528 5528 4528 527 1528 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3529 5529 4529 528 1529 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3530 5530 4530 529 1530 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3531 5531 4531 530 1531 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3532 5532 4532 531 1532 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3533 5533 4533 532 1533 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3534 5534 4534 533 1534 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3535 5535 4535 534 1535 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3536 5536 4536 535 1536 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3537 5537 4537 536 1537 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3538 5538 4538 537 1538 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3539 5539 4539 538 1539 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3540 5540 4540 539 1540 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3541 5541 4541 540 1541 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3542 5542 4542 541 1542 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3543 5543 4543 542 1543 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3544 5544 4544 543 1544 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3545 5545 4545 544 1545 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3546 5546 4546 545 1546 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3547 5547 4547 546 1547 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3548 5548 4548 547 1548 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3549 5549 4549 548 1549 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3550 5550 4550 549 1550 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3551 5551 4551 550 1551 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3552 5552 4552 551 1552 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3553 5553 4553 552 1553 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3554 5554 4554 553 1554 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3555 5555 4555 554 1555 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3556 5556 4556 555 1556 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3557 5557 4557 556 1557 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3558 5558 4558 557 1558 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3559 5559 4559 558 1559 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3560 5560 4560 559 1560 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3561 5561 4561 560 1561 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3562 5562 4562 561 1562 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3563 5563 4563 562 1563 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3564 5564 4564 563 1564 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3565 5565 4565 564 1565 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3566 5566 4566 565 1566 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3567 5567 4567 566 1567 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3568 5568 4568 567 1568 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3569 5569 4569 568 1569 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3570 5570 4570 569 1570 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3571 5571 4571 570 1571 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3572 5572 4572 571 1572 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3573 5573 4573 572 1573 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3574 5574 4574 573 1574 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3575 5575 4575 574 1575 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3576 5576 4576 575 1576 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3577 5577 4577 576 1577 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3578 5578 4578 577 1578 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3579 5579 4579 578 1579 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3580 5580 4580 579 1580 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3581 5581 4581 580 1581 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3582 5582 4582 581 1582 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3583 5583 4583 582 1583 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3584 5584 4584 583 1584 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3585 5585 4585 584 1585 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3586 5586 4586 585 1586 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3587 5587 4587 586 1587 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3588 5588 4588 587 1588 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3589 5589 4589 588 1589 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3590 5590 4590 589 1590 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3591 5591 4591 590 1591 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3592 5592 4592 591 1592 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3593 5593 4593 592 1593 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3594 5594 4594 593 1594 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3595 5595 4595 594 1595 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3596 5596 4596 595 1596 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3597 5597 4597 596 1597 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3598 5598 4598 597 1598 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3599 5599 4599 598 1599 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3600 5600 4600 599 1600 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3601 5601 4601 600 1601 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3602 5602 4602 601 1602 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3603 5603 4603 602 1603 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3604 5604 4604 603 1604 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3605 5605 4605 604 1605 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3606 5606 4606 605 1606 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3607 5607 4607 606 1607 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3608 5608 4608 607 1608 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3609 5609 4609 608 1609 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3610 5610 4610 609 1610 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3611 5611 4611 610 1611 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3612 5612 4612 611 1612 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3613 5613 4613 612 1613 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3614 5614 4614 613 1614 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3615 5615 4615 614 1615 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3616 5616 4616 615 1616 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3617 5617 4617 616 1617 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3618 5618 4618 617 1618 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3619 5619 4619 618 1619 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3620 5620 4620 619 1620 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3621 5621 4621 620 1621 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3622 5622 4622 621 1622 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3623 5623 4623 622 1623 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3624 5624 4624 623 1624 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3625 5625 4625 624 1625 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3626 5626 4626 625 1626 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3627 5627 4627 626 1627 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3628 5628 4628 627 1628 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3629 5629 4629 628 1629 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3630 5630 4630 629 1630 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3631 5631 4631 630 1631 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3632 5632 4632 631 1632 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3633 5633 4633 632 1633 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3634 5634 4634 633 1634 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3635 5635 4635 634 1635 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3636 5636 4636 635 1636 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3637 5637 4637 636 1637 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3638 5638 4638 637 1638 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3639 5639 4639 638 1639 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3640 5640 4640 639 1640 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3641 5641 4641 640 1641 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3642 5642 4642 641 1642 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3643 5643 4643 642 1643 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3644 5644 4644 643 1644 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3645 5645 4645 644 1645 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3646 5646 4646 645 1646 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3647 5647 4647 646 1647 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3648 5648 4648 647 1648 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3649 5649 4649 648 1649 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3650 5650 4650 649 1650 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3651 5651 4651 650 1651 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3652 5652 4652 651 1652 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3653 5653 4653 652 1653 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3654 5654 4654 653 1654 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3655 5655 4655 654 1655 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3656 5656 4656 655 1656 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3657 5657 4657 656 1657 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3658 5658 4658 657 1658 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3659 5659 4659 658 1659 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3660 5660 4660 659 1660 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3661 5661 4661 660 1661 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3662 5662 4662 661 1662 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3663 5663 4663 662 1663 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3664 5664 4664 663 1664 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3665 5665 4665 664 1665 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3666 5666 4666 665 1666 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3667 5667 4667 666 1667 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3668 5668 4668 667 1668 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3669 5669 4669 668 1669 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3670 5670 4670 669 1670 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3671 5671 4671 670 1671 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3672 5672 4672 671 1672 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3673 5673 4673 672 1673 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3674 5674 4674 673 1674 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3675 5675 4675 674 1675 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3676 5676 4676 675 1676 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3677 5677 4677 676 1677 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3678 5678 4678 677 1678 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3679 5679 4679 678 1679 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3680 5680 4680 679 1680 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3681 5681 4681 680 1681 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3682 5682 4682 681 1682 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3683 5683 4683 682 1683 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3684 5684 4684 683 1684 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3685 5685 4685 684 1685 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3686 5686 4686 685 1686 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3687 5687 4687 686 1687 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3688 5688 4688 687 1688 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3689 5689 4689 688 1689 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3690 5690 4690 689 1690 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3691 5691 4691 690 1691 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3692 5692 4692 691 1692 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3693 5693 4693 692 1693 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3694 5694 4694 693 1694 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3695 5695 4695 694 1695 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3696 5696 4696 695 1696 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3697 5697 4697 696 1697 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3698 5698 4698 697 1698 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3699 5699 4699 698 1699 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3700 5700 4700 699 1700 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3701 5701 4701 700 1701 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3702 5702 4702 701 1702 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3703 5703 4703 702 1703 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3704 5704 4704 703 1704 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3705 5705 4705 704 1705 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3706 5706 4706 705 1706 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3707 5707 4707 706 1707 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3708 5708 4708 707 1708 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3709 5709 4709 708 1709 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3710 5710 4710 709 1710 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3711 5711 4711 710 1711 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3712 5712 4712 711 1712 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3713 5713 4713 712 1713 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3714 5714 4714 713 1714 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3715 5715 4715 714 1715 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3716 5716 4716 715 1716 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3717 5717 4717 716 1717 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3718 5718 4718 717 1718 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3719 5719 4719 718 1719 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3720 5720 4720 719 1720 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3721 5721 4721 720 1721 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3722 5722 4722 721 1722 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3723 5723 4723 722 1723 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3724 5724 4724 723 1724 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3725 5725 4725 724 1725 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3726 5726 4726 725 1726 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3727 5727 4727 726 1727 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3728 5728 4728 727 1728 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3729 5729 4729 728 1729 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3730 5730 4730 729 1730 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3731 5731 4731 730 1731 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3732 5732 4732 731 1732 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3733 5733 4733 732 1733 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3734 5734 4734 733 1734 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3735 5735 4735 734 1735 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3736 5736 4736 735 1736 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3737 5737 4737 736 1737 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3738 5738 4738 737 1738 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3739 5739 4739 738 1739 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3740 5740 4740 739 1740 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3741 5741 4741 740 1741 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3742 5742 4742 741 1742 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3743 5743 4743 742 1743 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3744 5744 4744 743 1744 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3745 5745 4745 744 1745 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3746 5746 4746 745 1746 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3747 5747 4747 746 1747 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3748 5748 4748 747 1748 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3749 5749 4749 748 1749 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3750 5750 4750 749 1750 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3751 5751 4751 750 1751 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3752 5752 4752 751 1752 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3753 5753 4753 752 1753 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3754 5754 4754 753 1754 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3755 5755 4755 754 1755 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3756 5756 4756 755 1756 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3757 5757 4757 756 1757 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3758 5758 4758 757 1758 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3759 5759 4759 758 1759 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3760 5760 4760 759 1760 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3761 5761 4761 760 1761 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3762 5762 4762 761 1762 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3763 5763 4763 762 1763 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3764 5764 4764 763 1764 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3765 5765 4765 764 1765 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3766 5766 4766 765 1766 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3767 5767 4767 766 1767 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3768 5768 4768 767 1768 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3769 5769 4769 768 1769 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3770 5770 4770 769 1770 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3771 5771 4771 770 1771 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3772 5772 4772 771 1772 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3773 5773 4773 772 1773 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3774 5774 4774 773 1774 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3775 5775 4775 774 1775 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3776 5776 4776 775 1776 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3777 5777 4777 776 1777 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3778 5778 4778 777 1778 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3779 5779 4779 778 1779 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3780 5780 4780 779 1780 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3781 5781 4781 780 1781 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3782 5782 4782 781 1782 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3783 5783 4783 782 1783 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3784 5784 4784 783 1784 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3785 5785 4785 784 1785 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3786 5786 4786 785 1786 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3787 5787 4787 786 1787 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3788 5788 4788 787 1788 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3789 5789 4789 788 1789 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3790 5790 4790 789 1790 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3791 5791 4791 790 1791 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3792 5792 4792 791 1792 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3793 5793 4793 792 1793 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3794 5794 4794 793 1794 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3795 5795 4795 794 1795 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3796 5796 4796 795 1796 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3797 5797 4797 796 1797 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3798 5798 4798 797 1798 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3799 5799 4799 798 1799 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3800 5800 4800 799 1800 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3801 5801 4801 800 1801 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3802 5802 4802 801 1802 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3803 5803 4803 802 1803 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3804 5804 4804 803 1804 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3805 5805 4805 804 1805 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3806 5806 4806 805 1806 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3807 5807 4807 806 1807 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3808 5808 4808 807 1808 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3809 5809 4809 808 1809 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3810 5810 4810 809 1810 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3811 5811 4811 810 1811 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3812 5812 4812 811 1812 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3813 5813 4813 812 1813 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3814 5814 4814 813 1814 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3815 5815 4815 814 1815 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3816 5816 4816 815 1816 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3817 5817 4817 816 1817 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3818 5818 4818 817 1818 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3819 5819 4819 818 1819 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3820 5820 4820 819 1820 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3821 5821 4821 820 1821 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3822 5822 4822 821 1822 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3823 5823 4823 822 1823 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3824 5824 4824 823 1824 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3825 5825 4825 824 1825 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3826 5826 4826 825 1826 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3827 5827 4827 826 1827 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3828 5828 4828 827 1828 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3829 5829 4829 828 1829 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3830 5830 4830 829 1830 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3831 5831 4831 830 1831 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3832 5832 4832 831 1832 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3833 5833 4833 832 1833 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3834 5834 4834 833 1834 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3835 5835 4835 834 1835 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3836 5836 4836 835 1836 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3837 5837 4837 836 1837 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3838 5838 4838 837 1838 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3839 5839 4839 838 1839 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3840 5840 4840 839 1840 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3841 5841 4841 840 1841 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3842 5842 4842 841 1842 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3843 5843 4843 842 1843 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3844 5844 4844 843 1844 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3845 5845 4845 844 1845 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3846 5846 4846 845 1846 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3847 5847 4847 846 1847 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3848 5848 4848 847 1848 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3849 5849 4849 848 1849 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3850 5850 4850 849 1850 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3851 5851 4851 850 1851 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3852 5852 4852 851 1852 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3853 5853 4853 852 1853 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3854 5854 4854 853 1854 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3855 5855 4855 854 1855 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3856 5856 4856 855 1856 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3857 5857 4857 856 1857 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3858 5858 4858 857 1858 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3859 5859 4859 858 1859 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3860 5860 4860 859 1860 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3861 5861 4861 860 1861 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3862 5862 4862 861 1862 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3863 5863 4863 862 1863 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3864 5864 4864 863 1864 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3865 5865 4865 864 1865 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3866 5866 4866 865 1866 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3867 5867 4867 866 1867 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3868 5868 4868 867 1868 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3869 5869 4869 868 1869 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3870 5870 4870 869 1870 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3871 5871 4871 870 1871 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3872 5872 4872 871 1872 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3873 5873 4873 872 1873 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3874 5874 4874 873 1874 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3875 5875 4875 874 1875 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3876 5876 4876 875 1876 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3877 5877 4877 876 1877 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3878 5878 4878 877 1878 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3879 5879 4879 878 1879 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3880 5880 4880 879 1880 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3881 5881 4881 880 1881 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3882 5882 4882 881 1882 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3883 5883 4883 882 1883 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3884 5884 4884 883 1884 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3885 5885 4885 884 1885 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3886 5886 4886 885 1886 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3887 5887 4887 886 1887 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3888 5888 4888 887 1888 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3889 5889 4889 888 1889 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3890 5890 4890 889 1890 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3891 5891 4891 890 1891 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3892 5892 4892 891 1892 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3893 5893 4893 892 1893 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3894 5894 4894 893 1894 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3895 5895 4895 894 1895 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3896 5896 4896 895 1896 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3897 5897 4897 896 1897 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3898 5898 4898 897 1898 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3899 5899 4899 898 1899 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3900 5900 4900 899 1900 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3901 5901 4901 900 1901 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3902 5902 4902 901 1902 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3903 5903 4903 902 1903 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3904 5904 4904 903 1904 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3905 5905 4905 904 1905 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3906 5906 4906 905 1906 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3907 5907 4907 906 1907 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3908 5908 4908 907 1908 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3909 5909 4909 908 1909 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3910 5910 4910 909 1910 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3911 5911 4911 910 1911 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3912 5912 4912 911 1912 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3913 5913 4913 912 1913 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3914 5914 4914 913 1914 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3915 5915 4915 914 1915 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3916 5916 4916 915 1916 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3917 5917 4917 916 1917 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3918 5918 4918 917 1918 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3919 5919 4919 918 1919 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3920 5920 4920 919 1920 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3921 5921 4921 920 1921 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3922 5922 4922 921 1922 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3923 5923 4923 922 1923 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3924 5924 4924 923 1924 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3925 5925 4925 924 1925 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3926 5926 4926 925 1926 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3927 5927 4927 926 1927 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3928 5928 4928 927 1928 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3929 5929 4929 928 1929 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3930 5930 4930 929 1930 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3931 5931 4931 930 1931 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3932 5932 4932 931 1932 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3933 5933 4933 932 1933 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3934 5934 4934 933 1934 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3935 5935 4935 934 1935 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3936 5936 4936 935 1936 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3937 5937 4937 936 1937 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3938 5938 4938 937 1938 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3939 5939 4939 938 1939 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3940 5940 4940 939 1940 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3941 5941 4941 940 1941 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3942 5942 4942 941 1942 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3943 5943 4943 942 1943 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3944 5944 4944 943 1944 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3945 5945 4945 944 1945 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3946 5946 4946 945 1946 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3947 5947 4947 946 1947 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3948 5948 4948 947 1948 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3949 5949 4949 948 1949 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3950 5950 4950 949 1950 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3951 5951 4951 950 1951 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3952 5952 4952 951 1952 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3953 5953 4953 952 1953 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3954 5954 4954 953 1954 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3955 5955 4955 954 1955 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3956 5956 4956 955 1956 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3957 5957 4957 956 1957 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3958 5958 4958 957 1958 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3959 5959 4959 958 1959 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3960 5960 4960 959 1960 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3961 5961 4961 960 1961 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3962 5962 4962 961 1962 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3963 5963 4963 962 1963 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3964 5964 4964 963 1964 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3965 5965 4965 964 1965 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3966 5966 4966 965 1966 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3967 5967 4967 966 1967 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3968 5968 4968 967 1968 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3969 5969 4969 968 1969 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3970 5970 4970 969 1970 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3971 5971 4971 970 1971 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3972 5972 4972 971 1972 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3973 5973 4973 972 1973 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3974 5974 4974 973 1974 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3975 5975 4975 974 1975 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3976 5976 4976 975 1976 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3977 5977 4977 976 1977 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3978 5978 4978 977 1978 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3979 5979 4979 978 1979 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3980 5980 4980 979 1980 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3981 5981 4981 980 1981 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3982 5982 4982 981 1982 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3983 5983 4983 982 1983 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3984 5984 4984 983 1984 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3985 5985 4985 984 1985 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3986 5986 4986 985 1986 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3987 5987 4987 986 1987 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3988 5988 4988 987 1988 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3989 5989 4989 988 1989 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3990 5990 4990 989 1990 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3991 5991 4991 990 1991 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3992 5992 4992 991 1992 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3993 5993 4993 992 1993 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3994 5994 4994 993 1994 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3995 5995 4995 994 1995 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3996 5996 4996 995 1996 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3997 5997 4997 996 1997 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3998 5998 4998 997 1998 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +3999 5999 4999 998 1999 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +5 +4000 6000 5000 999 2000 +2 2 2 2 2 +32 +0 0.99 +1 0.5 +2 0.23 +3 0.88 +4 0.41 +5 0.3 +6 0.76 +7 0.87 +8 0.44 +9 0.43 +10 0.29 +11 0.72 +12 0.33 +13 0.91 +14 0.95 +15 0.92 +16 0.01 +17 0.5 +18 0.77 +19 0.12 +20 0.59 +21 0.7 +22 0.24 +23 0.13 +24 0.56 +25 0.57 +26 0.61 +27 0.28 +28 0.77 +29 0.09 +30 0.05 +31 0.08 + +1 +2001 +2 +2 +0 0.55 +1 0.44 + +1 +2002 +2 +2 +0 0.55 +1 0.44 + +1 +2003 +2 +2 +0 0.55 +1 0.44 + +1 +2004 +2 +2 +0 0.55 +1 0.44 + +1 +2005 +2 +2 +0 0.55 +1 0.44 + +1 +2006 +2 +2 +0 0.55 +1 0.44 + +1 +2007 +2 +2 +0 0.55 +1 0.44 + +1 +2008 +2 +2 +0 0.55 +1 0.44 + +1 +2009 +2 +2 +0 0.55 +1 0.44 + +1 +2010 +2 +2 +0 0.55 +1 0.44 + +1 +2011 +2 +2 +0 0.55 +1 0.44 + +1 +2012 +2 +2 +0 0.55 +1 0.44 + +1 +2013 +2 +2 +0 0.55 +1 0.44 + +1 +2014 +2 +2 +0 0.55 +1 0.44 + +1 +2015 +2 +2 +0 0.55 +1 0.44 + +1 +2016 +2 +2 +0 0.55 +1 0.44 + +1 +2017 +2 +2 +0 0.55 +1 0.44 + +1 +2018 +2 +2 +0 0.55 +1 0.44 + +1 +2019 +2 +2 +0 0.55 +1 0.44 + +1 +2020 +2 +2 +0 0.55 +1 0.44 + +1 +2021 +2 +2 +0 0.55 +1 0.44 + +1 +2022 +2 +2 +0 0.55 +1 0.44 + +1 +2023 +2 +2 +0 0.55 +1 0.44 + +1 +2024 +2 +2 +0 0.55 +1 0.44 + +1 +2025 +2 +2 +0 0.55 +1 0.44 + +1 +2026 +2 +2 +0 0.55 +1 0.44 + +1 +2027 +2 +2 +0 0.55 +1 0.44 + +1 +2028 +2 +2 +0 0.55 +1 0.44 + +1 +2029 +2 +2 +0 0.55 +1 0.44 + +1 +2030 +2 +2 +0 0.55 +1 0.44 + +1 +2031 +2 +2 +0 0.55 +1 0.44 + +1 +2032 +2 +2 +0 0.55 +1 0.44 + +1 +2033 +2 +2 +0 0.55 +1 0.44 + +1 +2034 +2 +2 +0 0.55 +1 0.44 + +1 +2035 +2 +2 +0 0.55 +1 0.44 + +1 +2036 +2 +2 +0 0.55 +1 0.44 + +1 +2037 +2 +2 +0 0.55 +1 0.44 + +1 +2038 +2 +2 +0 0.55 +1 0.44 + +1 +2039 +2 +2 +0 0.55 +1 0.44 + +1 +2040 +2 +2 +0 0.55 +1 0.44 + +1 +2041 +2 +2 +0 0.55 +1 0.44 + +1 +2042 +2 +2 +0 0.55 +1 0.44 + +1 +2043 +2 +2 +0 0.55 +1 0.44 + +1 +2044 +2 +2 +0 0.55 +1 0.44 + +1 +2045 +2 +2 +0 0.55 +1 0.44 + +1 +2046 +2 +2 +0 0.55 +1 0.44 + +1 +2047 +2 +2 +0 0.55 +1 0.44 + +1 +2048 +2 +2 +0 0.55 +1 0.44 + +1 +2049 +2 +2 +0 0.55 +1 0.44 + +1 +2050 +2 +2 +0 0.55 +1 0.44 + +1 +2051 +2 +2 +0 0.55 +1 0.44 + +1 +2052 +2 +2 +0 0.55 +1 0.44 + +1 +2053 +2 +2 +0 0.55 +1 0.44 + +1 +2054 +2 +2 +0 0.55 +1 0.44 + +1 +2055 +2 +2 +0 0.55 +1 0.44 + +1 +2056 +2 +2 +0 0.55 +1 0.44 + +1 +2057 +2 +2 +0 0.55 +1 0.44 + +1 +2058 +2 +2 +0 0.55 +1 0.44 + +1 +2059 +2 +2 +0 0.55 +1 0.44 + +1 +2060 +2 +2 +0 0.55 +1 0.44 + +1 +2061 +2 +2 +0 0.55 +1 0.44 + +1 +2062 +2 +2 +0 0.55 +1 0.44 + +1 +2063 +2 +2 +0 0.55 +1 0.44 + +1 +2064 +2 +2 +0 0.55 +1 0.44 + +1 +2065 +2 +2 +0 0.55 +1 0.44 + +1 +2066 +2 +2 +0 0.55 +1 0.44 + +1 +2067 +2 +2 +0 0.55 +1 0.44 + +1 +2068 +2 +2 +0 0.55 +1 0.44 + +1 +2069 +2 +2 +0 0.55 +1 0.44 + +1 +2070 +2 +2 +0 0.55 +1 0.44 + +1 +2071 +2 +2 +0 0.55 +1 0.44 + +1 +2072 +2 +2 +0 0.55 +1 0.44 + +1 +2073 +2 +2 +0 0.55 +1 0.44 + +1 +2074 +2 +2 +0 0.55 +1 0.44 + +1 +2075 +2 +2 +0 0.55 +1 0.44 + +1 +2076 +2 +2 +0 0.55 +1 0.44 + +1 +2077 +2 +2 +0 0.55 +1 0.44 + +1 +2078 +2 +2 +0 0.55 +1 0.44 + +1 +2079 +2 +2 +0 0.55 +1 0.44 + +1 +2080 +2 +2 +0 0.55 +1 0.44 + +1 +2081 +2 +2 +0 0.55 +1 0.44 + +1 +2082 +2 +2 +0 0.55 +1 0.44 + +1 +2083 +2 +2 +0 0.55 +1 0.44 + +1 +2084 +2 +2 +0 0.55 +1 0.44 + +1 +2085 +2 +2 +0 0.55 +1 0.44 + +1 +2086 +2 +2 +0 0.55 +1 0.44 + +1 +2087 +2 +2 +0 0.55 +1 0.44 + +1 +2088 +2 +2 +0 0.55 +1 0.44 + +1 +2089 +2 +2 +0 0.55 +1 0.44 + +1 +2090 +2 +2 +0 0.55 +1 0.44 + +1 +2091 +2 +2 +0 0.55 +1 0.44 + +1 +2092 +2 +2 +0 0.55 +1 0.44 + +1 +2093 +2 +2 +0 0.55 +1 0.44 + +1 +2094 +2 +2 +0 0.55 +1 0.44 + +1 +2095 +2 +2 +0 0.55 +1 0.44 + +1 +2096 +2 +2 +0 0.55 +1 0.44 + +1 +2097 +2 +2 +0 0.55 +1 0.44 + +1 +2098 +2 +2 +0 0.55 +1 0.44 + +1 +2099 +2 +2 +0 0.55 +1 0.44 + +1 +2100 +2 +2 +0 0.55 +1 0.44 + +1 +2101 +2 +2 +0 0.55 +1 0.44 + +1 +2102 +2 +2 +0 0.55 +1 0.44 + +1 +2103 +2 +2 +0 0.55 +1 0.44 + +1 +2104 +2 +2 +0 0.55 +1 0.44 + +1 +2105 +2 +2 +0 0.55 +1 0.44 + +1 +2106 +2 +2 +0 0.55 +1 0.44 + +1 +2107 +2 +2 +0 0.55 +1 0.44 + +1 +2108 +2 +2 +0 0.55 +1 0.44 + +1 +2109 +2 +2 +0 0.55 +1 0.44 + +1 +2110 +2 +2 +0 0.55 +1 0.44 + +1 +2111 +2 +2 +0 0.55 +1 0.44 + +1 +2112 +2 +2 +0 0.55 +1 0.44 + +1 +2113 +2 +2 +0 0.55 +1 0.44 + +1 +2114 +2 +2 +0 0.55 +1 0.44 + +1 +2115 +2 +2 +0 0.55 +1 0.44 + +1 +2116 +2 +2 +0 0.55 +1 0.44 + +1 +2117 +2 +2 +0 0.55 +1 0.44 + +1 +2118 +2 +2 +0 0.55 +1 0.44 + +1 +2119 +2 +2 +0 0.55 +1 0.44 + +1 +2120 +2 +2 +0 0.55 +1 0.44 + +1 +2121 +2 +2 +0 0.55 +1 0.44 + +1 +2122 +2 +2 +0 0.55 +1 0.44 + +1 +2123 +2 +2 +0 0.55 +1 0.44 + +1 +2124 +2 +2 +0 0.55 +1 0.44 + +1 +2125 +2 +2 +0 0.55 +1 0.44 + +1 +2126 +2 +2 +0 0.55 +1 0.44 + +1 +2127 +2 +2 +0 0.55 +1 0.44 + +1 +2128 +2 +2 +0 0.55 +1 0.44 + +1 +2129 +2 +2 +0 0.55 +1 0.44 + +1 +2130 +2 +2 +0 0.55 +1 0.44 + +1 +2131 +2 +2 +0 0.55 +1 0.44 + +1 +2132 +2 +2 +0 0.55 +1 0.44 + +1 +2133 +2 +2 +0 0.55 +1 0.44 + +1 +2134 +2 +2 +0 0.55 +1 0.44 + +1 +2135 +2 +2 +0 0.55 +1 0.44 + +1 +2136 +2 +2 +0 0.55 +1 0.44 + +1 +2137 +2 +2 +0 0.55 +1 0.44 + +1 +2138 +2 +2 +0 0.55 +1 0.44 + +1 +2139 +2 +2 +0 0.55 +1 0.44 + +1 +2140 +2 +2 +0 0.55 +1 0.44 + +1 +2141 +2 +2 +0 0.55 +1 0.44 + +1 +2142 +2 +2 +0 0.55 +1 0.44 + +1 +2143 +2 +2 +0 0.55 +1 0.44 + +1 +2144 +2 +2 +0 0.55 +1 0.44 + +1 +2145 +2 +2 +0 0.55 +1 0.44 + +1 +2146 +2 +2 +0 0.55 +1 0.44 + +1 +2147 +2 +2 +0 0.55 +1 0.44 + +1 +2148 +2 +2 +0 0.55 +1 0.44 + +1 +2149 +2 +2 +0 0.55 +1 0.44 + +1 +2150 +2 +2 +0 0.55 +1 0.44 + +1 +2151 +2 +2 +0 0.55 +1 0.44 + +1 +2152 +2 +2 +0 0.55 +1 0.44 + +1 +2153 +2 +2 +0 0.55 +1 0.44 + +1 +2154 +2 +2 +0 0.55 +1 0.44 + +1 +2155 +2 +2 +0 0.55 +1 0.44 + +1 +2156 +2 +2 +0 0.55 +1 0.44 + +1 +2157 +2 +2 +0 0.55 +1 0.44 + +1 +2158 +2 +2 +0 0.55 +1 0.44 + +1 +2159 +2 +2 +0 0.55 +1 0.44 + +1 +2160 +2 +2 +0 0.55 +1 0.44 + +1 +2161 +2 +2 +0 0.55 +1 0.44 + +1 +2162 +2 +2 +0 0.55 +1 0.44 + +1 +2163 +2 +2 +0 0.55 +1 0.44 + +1 +2164 +2 +2 +0 0.55 +1 0.44 + +1 +2165 +2 +2 +0 0.55 +1 0.44 + +1 +2166 +2 +2 +0 0.55 +1 0.44 + +1 +2167 +2 +2 +0 0.55 +1 0.44 + +1 +2168 +2 +2 +0 0.55 +1 0.44 + +1 +2169 +2 +2 +0 0.55 +1 0.44 + +1 +2170 +2 +2 +0 0.55 +1 0.44 + +1 +2171 +2 +2 +0 0.55 +1 0.44 + +1 +2172 +2 +2 +0 0.55 +1 0.44 + +1 +2173 +2 +2 +0 0.55 +1 0.44 + +1 +2174 +2 +2 +0 0.55 +1 0.44 + +1 +2175 +2 +2 +0 0.55 +1 0.44 + +1 +2176 +2 +2 +0 0.55 +1 0.44 + +1 +2177 +2 +2 +0 0.55 +1 0.44 + +1 +2178 +2 +2 +0 0.55 +1 0.44 + +1 +2179 +2 +2 +0 0.55 +1 0.44 + +1 +2180 +2 +2 +0 0.55 +1 0.44 + +1 +2181 +2 +2 +0 0.55 +1 0.44 + +1 +2182 +2 +2 +0 0.55 +1 0.44 + +1 +2183 +2 +2 +0 0.55 +1 0.44 + +1 +2184 +2 +2 +0 0.55 +1 0.44 + +1 +2185 +2 +2 +0 0.55 +1 0.44 + +1 +2186 +2 +2 +0 0.55 +1 0.44 + +1 +2187 +2 +2 +0 0.55 +1 0.44 + +1 +2188 +2 +2 +0 0.55 +1 0.44 + +1 +2189 +2 +2 +0 0.55 +1 0.44 + +1 +2190 +2 +2 +0 0.55 +1 0.44 + +1 +2191 +2 +2 +0 0.55 +1 0.44 + +1 +2192 +2 +2 +0 0.55 +1 0.44 + +1 +2193 +2 +2 +0 0.55 +1 0.44 + +1 +2194 +2 +2 +0 0.55 +1 0.44 + +1 +2195 +2 +2 +0 0.55 +1 0.44 + +1 +2196 +2 +2 +0 0.55 +1 0.44 + +1 +2197 +2 +2 +0 0.55 +1 0.44 + +1 +2198 +2 +2 +0 0.55 +1 0.44 + +1 +2199 +2 +2 +0 0.55 +1 0.44 + +1 +2200 +2 +2 +0 0.55 +1 0.44 + +1 +2201 +2 +2 +0 0.55 +1 0.44 + +1 +2202 +2 +2 +0 0.55 +1 0.44 + +1 +2203 +2 +2 +0 0.55 +1 0.44 + +1 +2204 +2 +2 +0 0.55 +1 0.44 + +1 +2205 +2 +2 +0 0.55 +1 0.44 + +1 +2206 +2 +2 +0 0.55 +1 0.44 + +1 +2207 +2 +2 +0 0.55 +1 0.44 + +1 +2208 +2 +2 +0 0.55 +1 0.44 + +1 +2209 +2 +2 +0 0.55 +1 0.44 + +1 +2210 +2 +2 +0 0.55 +1 0.44 + +1 +2211 +2 +2 +0 0.55 +1 0.44 + +1 +2212 +2 +2 +0 0.55 +1 0.44 + +1 +2213 +2 +2 +0 0.55 +1 0.44 + +1 +2214 +2 +2 +0 0.55 +1 0.44 + +1 +2215 +2 +2 +0 0.55 +1 0.44 + +1 +2216 +2 +2 +0 0.55 +1 0.44 + +1 +2217 +2 +2 +0 0.55 +1 0.44 + +1 +2218 +2 +2 +0 0.55 +1 0.44 + +1 +2219 +2 +2 +0 0.55 +1 0.44 + +1 +2220 +2 +2 +0 0.55 +1 0.44 + +1 +2221 +2 +2 +0 0.55 +1 0.44 + +1 +2222 +2 +2 +0 0.55 +1 0.44 + +1 +2223 +2 +2 +0 0.55 +1 0.44 + +1 +2224 +2 +2 +0 0.55 +1 0.44 + +1 +2225 +2 +2 +0 0.55 +1 0.44 + +1 +2226 +2 +2 +0 0.55 +1 0.44 + +1 +2227 +2 +2 +0 0.55 +1 0.44 + +1 +2228 +2 +2 +0 0.55 +1 0.44 + +1 +2229 +2 +2 +0 0.55 +1 0.44 + +1 +2230 +2 +2 +0 0.55 +1 0.44 + +1 +2231 +2 +2 +0 0.55 +1 0.44 + +1 +2232 +2 +2 +0 0.55 +1 0.44 + +1 +2233 +2 +2 +0 0.55 +1 0.44 + +1 +2234 +2 +2 +0 0.55 +1 0.44 + +1 +2235 +2 +2 +0 0.55 +1 0.44 + +1 +2236 +2 +2 +0 0.55 +1 0.44 + +1 +2237 +2 +2 +0 0.55 +1 0.44 + +1 +2238 +2 +2 +0 0.55 +1 0.44 + +1 +2239 +2 +2 +0 0.55 +1 0.44 + +1 +2240 +2 +2 +0 0.55 +1 0.44 + +1 +2241 +2 +2 +0 0.55 +1 0.44 + +1 +2242 +2 +2 +0 0.55 +1 0.44 + +1 +2243 +2 +2 +0 0.55 +1 0.44 + +1 +2244 +2 +2 +0 0.55 +1 0.44 + +1 +2245 +2 +2 +0 0.55 +1 0.44 + +1 +2246 +2 +2 +0 0.55 +1 0.44 + +1 +2247 +2 +2 +0 0.55 +1 0.44 + +1 +2248 +2 +2 +0 0.55 +1 0.44 + +1 +2249 +2 +2 +0 0.55 +1 0.44 + +1 +2250 +2 +2 +0 0.55 +1 0.44 + +1 +2251 +2 +2 +0 0.55 +1 0.44 + +1 +2252 +2 +2 +0 0.55 +1 0.44 + +1 +2253 +2 +2 +0 0.55 +1 0.44 + +1 +2254 +2 +2 +0 0.55 +1 0.44 + +1 +2255 +2 +2 +0 0.55 +1 0.44 + +1 +2256 +2 +2 +0 0.55 +1 0.44 + +1 +2257 +2 +2 +0 0.55 +1 0.44 + +1 +2258 +2 +2 +0 0.55 +1 0.44 + +1 +2259 +2 +2 +0 0.55 +1 0.44 + +1 +2260 +2 +2 +0 0.55 +1 0.44 + +1 +2261 +2 +2 +0 0.55 +1 0.44 + +1 +2262 +2 +2 +0 0.55 +1 0.44 + +1 +2263 +2 +2 +0 0.55 +1 0.44 + +1 +2264 +2 +2 +0 0.55 +1 0.44 + +1 +2265 +2 +2 +0 0.55 +1 0.44 + +1 +2266 +2 +2 +0 0.55 +1 0.44 + +1 +2267 +2 +2 +0 0.55 +1 0.44 + +1 +2268 +2 +2 +0 0.55 +1 0.44 + +1 +2269 +2 +2 +0 0.55 +1 0.44 + +1 +2270 +2 +2 +0 0.55 +1 0.44 + +1 +2271 +2 +2 +0 0.55 +1 0.44 + +1 +2272 +2 +2 +0 0.55 +1 0.44 + +1 +2273 +2 +2 +0 0.55 +1 0.44 + +1 +2274 +2 +2 +0 0.55 +1 0.44 + +1 +2275 +2 +2 +0 0.55 +1 0.44 + +1 +2276 +2 +2 +0 0.55 +1 0.44 + +1 +2277 +2 +2 +0 0.55 +1 0.44 + +1 +2278 +2 +2 +0 0.55 +1 0.44 + +1 +2279 +2 +2 +0 0.55 +1 0.44 + +1 +2280 +2 +2 +0 0.55 +1 0.44 + +1 +2281 +2 +2 +0 0.55 +1 0.44 + +1 +2282 +2 +2 +0 0.55 +1 0.44 + +1 +2283 +2 +2 +0 0.55 +1 0.44 + +1 +2284 +2 +2 +0 0.55 +1 0.44 + +1 +2285 +2 +2 +0 0.55 +1 0.44 + +1 +2286 +2 +2 +0 0.55 +1 0.44 + +1 +2287 +2 +2 +0 0.55 +1 0.44 + +1 +2288 +2 +2 +0 0.55 +1 0.44 + +1 +2289 +2 +2 +0 0.55 +1 0.44 + +1 +2290 +2 +2 +0 0.55 +1 0.44 + +1 +2291 +2 +2 +0 0.55 +1 0.44 + +1 +2292 +2 +2 +0 0.55 +1 0.44 + +1 +2293 +2 +2 +0 0.55 +1 0.44 + +1 +2294 +2 +2 +0 0.55 +1 0.44 + +1 +2295 +2 +2 +0 0.55 +1 0.44 + +1 +2296 +2 +2 +0 0.55 +1 0.44 + +1 +2297 +2 +2 +0 0.55 +1 0.44 + +1 +2298 +2 +2 +0 0.55 +1 0.44 + +1 +2299 +2 +2 +0 0.55 +1 0.44 + +1 +2300 +2 +2 +0 0.55 +1 0.44 + +1 +2301 +2 +2 +0 0.55 +1 0.44 + +1 +2302 +2 +2 +0 0.55 +1 0.44 + +1 +2303 +2 +2 +0 0.55 +1 0.44 + +1 +2304 +2 +2 +0 0.55 +1 0.44 + +1 +2305 +2 +2 +0 0.55 +1 0.44 + +1 +2306 +2 +2 +0 0.55 +1 0.44 + +1 +2307 +2 +2 +0 0.55 +1 0.44 + +1 +2308 +2 +2 +0 0.55 +1 0.44 + +1 +2309 +2 +2 +0 0.55 +1 0.44 + +1 +2310 +2 +2 +0 0.55 +1 0.44 + +1 +2311 +2 +2 +0 0.55 +1 0.44 + +1 +2312 +2 +2 +0 0.55 +1 0.44 + +1 +2313 +2 +2 +0 0.55 +1 0.44 + +1 +2314 +2 +2 +0 0.55 +1 0.44 + +1 +2315 +2 +2 +0 0.55 +1 0.44 + +1 +2316 +2 +2 +0 0.55 +1 0.44 + +1 +2317 +2 +2 +0 0.55 +1 0.44 + +1 +2318 +2 +2 +0 0.55 +1 0.44 + +1 +2319 +2 +2 +0 0.55 +1 0.44 + +1 +2320 +2 +2 +0 0.55 +1 0.44 + +1 +2321 +2 +2 +0 0.55 +1 0.44 + +1 +2322 +2 +2 +0 0.55 +1 0.44 + +1 +2323 +2 +2 +0 0.55 +1 0.44 + +1 +2324 +2 +2 +0 0.55 +1 0.44 + +1 +2325 +2 +2 +0 0.55 +1 0.44 + +1 +2326 +2 +2 +0 0.55 +1 0.44 + +1 +2327 +2 +2 +0 0.55 +1 0.44 + +1 +2328 +2 +2 +0 0.55 +1 0.44 + +1 +2329 +2 +2 +0 0.55 +1 0.44 + +1 +2330 +2 +2 +0 0.55 +1 0.44 + +1 +2331 +2 +2 +0 0.55 +1 0.44 + +1 +2332 +2 +2 +0 0.55 +1 0.44 + +1 +2333 +2 +2 +0 0.55 +1 0.44 + +1 +2334 +2 +2 +0 0.55 +1 0.44 + +1 +2335 +2 +2 +0 0.55 +1 0.44 + +1 +2336 +2 +2 +0 0.55 +1 0.44 + +1 +2337 +2 +2 +0 0.55 +1 0.44 + +1 +2338 +2 +2 +0 0.55 +1 0.44 + +1 +2339 +2 +2 +0 0.55 +1 0.44 + +1 +2340 +2 +2 +0 0.55 +1 0.44 + +1 +2341 +2 +2 +0 0.55 +1 0.44 + +1 +2342 +2 +2 +0 0.55 +1 0.44 + +1 +2343 +2 +2 +0 0.55 +1 0.44 + +1 +2344 +2 +2 +0 0.55 +1 0.44 + +1 +2345 +2 +2 +0 0.55 +1 0.44 + +1 +2346 +2 +2 +0 0.55 +1 0.44 + +1 +2347 +2 +2 +0 0.55 +1 0.44 + +1 +2348 +2 +2 +0 0.55 +1 0.44 + +1 +2349 +2 +2 +0 0.55 +1 0.44 + +1 +2350 +2 +2 +0 0.55 +1 0.44 + +1 +2351 +2 +2 +0 0.55 +1 0.44 + +1 +2352 +2 +2 +0 0.55 +1 0.44 + +1 +2353 +2 +2 +0 0.55 +1 0.44 + +1 +2354 +2 +2 +0 0.55 +1 0.44 + +1 +2355 +2 +2 +0 0.55 +1 0.44 + +1 +2356 +2 +2 +0 0.55 +1 0.44 + +1 +2357 +2 +2 +0 0.55 +1 0.44 + +1 +2358 +2 +2 +0 0.55 +1 0.44 + +1 +2359 +2 +2 +0 0.55 +1 0.44 + +1 +2360 +2 +2 +0 0.55 +1 0.44 + +1 +2361 +2 +2 +0 0.55 +1 0.44 + +1 +2362 +2 +2 +0 0.55 +1 0.44 + +1 +2363 +2 +2 +0 0.55 +1 0.44 + +1 +2364 +2 +2 +0 0.55 +1 0.44 + +1 +2365 +2 +2 +0 0.55 +1 0.44 + +1 +2366 +2 +2 +0 0.55 +1 0.44 + +1 +2367 +2 +2 +0 0.55 +1 0.44 + +1 +2368 +2 +2 +0 0.55 +1 0.44 + +1 +2369 +2 +2 +0 0.55 +1 0.44 + +1 +2370 +2 +2 +0 0.55 +1 0.44 + +1 +2371 +2 +2 +0 0.55 +1 0.44 + +1 +2372 +2 +2 +0 0.55 +1 0.44 + +1 +2373 +2 +2 +0 0.55 +1 0.44 + +1 +2374 +2 +2 +0 0.55 +1 0.44 + +1 +2375 +2 +2 +0 0.55 +1 0.44 + +1 +2376 +2 +2 +0 0.55 +1 0.44 + +1 +2377 +2 +2 +0 0.55 +1 0.44 + +1 +2378 +2 +2 +0 0.55 +1 0.44 + +1 +2379 +2 +2 +0 0.55 +1 0.44 + +1 +2380 +2 +2 +0 0.55 +1 0.44 + +1 +2381 +2 +2 +0 0.55 +1 0.44 + +1 +2382 +2 +2 +0 0.55 +1 0.44 + +1 +2383 +2 +2 +0 0.55 +1 0.44 + +1 +2384 +2 +2 +0 0.55 +1 0.44 + +1 +2385 +2 +2 +0 0.55 +1 0.44 + +1 +2386 +2 +2 +0 0.55 +1 0.44 + +1 +2387 +2 +2 +0 0.55 +1 0.44 + +1 +2388 +2 +2 +0 0.55 +1 0.44 + +1 +2389 +2 +2 +0 0.55 +1 0.44 + +1 +2390 +2 +2 +0 0.55 +1 0.44 + +1 +2391 +2 +2 +0 0.55 +1 0.44 + +1 +2392 +2 +2 +0 0.55 +1 0.44 + +1 +2393 +2 +2 +0 0.55 +1 0.44 + +1 +2394 +2 +2 +0 0.55 +1 0.44 + +1 +2395 +2 +2 +0 0.55 +1 0.44 + +1 +2396 +2 +2 +0 0.55 +1 0.44 + +1 +2397 +2 +2 +0 0.55 +1 0.44 + +1 +2398 +2 +2 +0 0.55 +1 0.44 + +1 +2399 +2 +2 +0 0.55 +1 0.44 + +1 +2400 +2 +2 +0 0.55 +1 0.44 + +1 +2401 +2 +2 +0 0.55 +1 0.44 + +1 +2402 +2 +2 +0 0.55 +1 0.44 + +1 +2403 +2 +2 +0 0.55 +1 0.44 + +1 +2404 +2 +2 +0 0.55 +1 0.44 + +1 +2405 +2 +2 +0 0.55 +1 0.44 + +1 +2406 +2 +2 +0 0.55 +1 0.44 + +1 +2407 +2 +2 +0 0.55 +1 0.44 + +1 +2408 +2 +2 +0 0.55 +1 0.44 + +1 +2409 +2 +2 +0 0.55 +1 0.44 + +1 +2410 +2 +2 +0 0.55 +1 0.44 + +1 +2411 +2 +2 +0 0.55 +1 0.44 + +1 +2412 +2 +2 +0 0.55 +1 0.44 + +1 +2413 +2 +2 +0 0.55 +1 0.44 + +1 +2414 +2 +2 +0 0.55 +1 0.44 + +1 +2415 +2 +2 +0 0.55 +1 0.44 + +1 +2416 +2 +2 +0 0.55 +1 0.44 + +1 +2417 +2 +2 +0 0.55 +1 0.44 + +1 +2418 +2 +2 +0 0.55 +1 0.44 + +1 +2419 +2 +2 +0 0.55 +1 0.44 + +1 +2420 +2 +2 +0 0.55 +1 0.44 + +1 +2421 +2 +2 +0 0.55 +1 0.44 + +1 +2422 +2 +2 +0 0.55 +1 0.44 + +1 +2423 +2 +2 +0 0.55 +1 0.44 + +1 +2424 +2 +2 +0 0.55 +1 0.44 + +1 +2425 +2 +2 +0 0.55 +1 0.44 + +1 +2426 +2 +2 +0 0.55 +1 0.44 + +1 +2427 +2 +2 +0 0.55 +1 0.44 + +1 +2428 +2 +2 +0 0.55 +1 0.44 + +1 +2429 +2 +2 +0 0.55 +1 0.44 + +1 +2430 +2 +2 +0 0.55 +1 0.44 + +1 +2431 +2 +2 +0 0.55 +1 0.44 + +1 +2432 +2 +2 +0 0.55 +1 0.44 + +1 +2433 +2 +2 +0 0.55 +1 0.44 + +1 +2434 +2 +2 +0 0.55 +1 0.44 + +1 +2435 +2 +2 +0 0.55 +1 0.44 + +1 +2436 +2 +2 +0 0.55 +1 0.44 + +1 +2437 +2 +2 +0 0.55 +1 0.44 + +1 +2438 +2 +2 +0 0.55 +1 0.44 + +1 +2439 +2 +2 +0 0.55 +1 0.44 + +1 +2440 +2 +2 +0 0.55 +1 0.44 + +1 +2441 +2 +2 +0 0.55 +1 0.44 + +1 +2442 +2 +2 +0 0.55 +1 0.44 + +1 +2443 +2 +2 +0 0.55 +1 0.44 + +1 +2444 +2 +2 +0 0.55 +1 0.44 + +1 +2445 +2 +2 +0 0.55 +1 0.44 + +1 +2446 +2 +2 +0 0.55 +1 0.44 + +1 +2447 +2 +2 +0 0.55 +1 0.44 + +1 +2448 +2 +2 +0 0.55 +1 0.44 + +1 +2449 +2 +2 +0 0.55 +1 0.44 + +1 +2450 +2 +2 +0 0.55 +1 0.44 + +1 +2451 +2 +2 +0 0.55 +1 0.44 + +1 +2452 +2 +2 +0 0.55 +1 0.44 + +1 +2453 +2 +2 +0 0.55 +1 0.44 + +1 +2454 +2 +2 +0 0.55 +1 0.44 + +1 +2455 +2 +2 +0 0.55 +1 0.44 + +1 +2456 +2 +2 +0 0.55 +1 0.44 + +1 +2457 +2 +2 +0 0.55 +1 0.44 + +1 +2458 +2 +2 +0 0.55 +1 0.44 + +1 +2459 +2 +2 +0 0.55 +1 0.44 + +1 +2460 +2 +2 +0 0.55 +1 0.44 + +1 +2461 +2 +2 +0 0.55 +1 0.44 + +1 +2462 +2 +2 +0 0.55 +1 0.44 + +1 +2463 +2 +2 +0 0.55 +1 0.44 + +1 +2464 +2 +2 +0 0.55 +1 0.44 + +1 +2465 +2 +2 +0 0.55 +1 0.44 + +1 +2466 +2 +2 +0 0.55 +1 0.44 + +1 +2467 +2 +2 +0 0.55 +1 0.44 + +1 +2468 +2 +2 +0 0.55 +1 0.44 + +1 +2469 +2 +2 +0 0.55 +1 0.44 + +1 +2470 +2 +2 +0 0.55 +1 0.44 + +1 +2471 +2 +2 +0 0.55 +1 0.44 + +1 +2472 +2 +2 +0 0.55 +1 0.44 + +1 +2473 +2 +2 +0 0.55 +1 0.44 + +1 +2474 +2 +2 +0 0.55 +1 0.44 + +1 +2475 +2 +2 +0 0.55 +1 0.44 + +1 +2476 +2 +2 +0 0.55 +1 0.44 + +1 +2477 +2 +2 +0 0.55 +1 0.44 + +1 +2478 +2 +2 +0 0.55 +1 0.44 + +1 +2479 +2 +2 +0 0.55 +1 0.44 + +1 +2480 +2 +2 +0 0.55 +1 0.44 + +1 +2481 +2 +2 +0 0.55 +1 0.44 + +1 +2482 +2 +2 +0 0.55 +1 0.44 + +1 +2483 +2 +2 +0 0.55 +1 0.44 + +1 +2484 +2 +2 +0 0.55 +1 0.44 + +1 +2485 +2 +2 +0 0.55 +1 0.44 + +1 +2486 +2 +2 +0 0.55 +1 0.44 + +1 +2487 +2 +2 +0 0.55 +1 0.44 + +1 +2488 +2 +2 +0 0.55 +1 0.44 + +1 +2489 +2 +2 +0 0.55 +1 0.44 + +1 +2490 +2 +2 +0 0.55 +1 0.44 + +1 +2491 +2 +2 +0 0.55 +1 0.44 + +1 +2492 +2 +2 +0 0.55 +1 0.44 + +1 +2493 +2 +2 +0 0.55 +1 0.44 + +1 +2494 +2 +2 +0 0.55 +1 0.44 + +1 +2495 +2 +2 +0 0.55 +1 0.44 + +1 +2496 +2 +2 +0 0.55 +1 0.44 + +1 +2497 +2 +2 +0 0.55 +1 0.44 + +1 +2498 +2 +2 +0 0.55 +1 0.44 + +1 +2499 +2 +2 +0 0.55 +1 0.44 + +1 +2500 +2 +2 +0 0.55 +1 0.44 + +1 +2501 +2 +2 +0 0.55 +1 0.44 + +1 +2502 +2 +2 +0 0.55 +1 0.44 + +1 +2503 +2 +2 +0 0.55 +1 0.44 + +1 +2504 +2 +2 +0 0.55 +1 0.44 + +1 +2505 +2 +2 +0 0.55 +1 0.44 + +1 +2506 +2 +2 +0 0.55 +1 0.44 + +1 +2507 +2 +2 +0 0.55 +1 0.44 + +1 +2508 +2 +2 +0 0.55 +1 0.44 + +1 +2509 +2 +2 +0 0.55 +1 0.44 + +1 +2510 +2 +2 +0 0.55 +1 0.44 + +1 +2511 +2 +2 +0 0.55 +1 0.44 + +1 +2512 +2 +2 +0 0.55 +1 0.44 + +1 +2513 +2 +2 +0 0.55 +1 0.44 + +1 +2514 +2 +2 +0 0.55 +1 0.44 + +1 +2515 +2 +2 +0 0.55 +1 0.44 + +1 +2516 +2 +2 +0 0.55 +1 0.44 + +1 +2517 +2 +2 +0 0.55 +1 0.44 + +1 +2518 +2 +2 +0 0.55 +1 0.44 + +1 +2519 +2 +2 +0 0.55 +1 0.44 + +1 +2520 +2 +2 +0 0.55 +1 0.44 + +1 +2521 +2 +2 +0 0.55 +1 0.44 + +1 +2522 +2 +2 +0 0.55 +1 0.44 + +1 +2523 +2 +2 +0 0.55 +1 0.44 + +1 +2524 +2 +2 +0 0.55 +1 0.44 + +1 +2525 +2 +2 +0 0.55 +1 0.44 + +1 +2526 +2 +2 +0 0.55 +1 0.44 + +1 +2527 +2 +2 +0 0.55 +1 0.44 + +1 +2528 +2 +2 +0 0.55 +1 0.44 + +1 +2529 +2 +2 +0 0.55 +1 0.44 + +1 +2530 +2 +2 +0 0.55 +1 0.44 + +1 +2531 +2 +2 +0 0.55 +1 0.44 + +1 +2532 +2 +2 +0 0.55 +1 0.44 + +1 +2533 +2 +2 +0 0.55 +1 0.44 + +1 +2534 +2 +2 +0 0.55 +1 0.44 + +1 +2535 +2 +2 +0 0.55 +1 0.44 + +1 +2536 +2 +2 +0 0.55 +1 0.44 + +1 +2537 +2 +2 +0 0.55 +1 0.44 + +1 +2538 +2 +2 +0 0.55 +1 0.44 + +1 +2539 +2 +2 +0 0.55 +1 0.44 + +1 +2540 +2 +2 +0 0.55 +1 0.44 + +1 +2541 +2 +2 +0 0.55 +1 0.44 + +1 +2542 +2 +2 +0 0.55 +1 0.44 + +1 +2543 +2 +2 +0 0.55 +1 0.44 + +1 +2544 +2 +2 +0 0.55 +1 0.44 + +1 +2545 +2 +2 +0 0.55 +1 0.44 + +1 +2546 +2 +2 +0 0.55 +1 0.44 + +1 +2547 +2 +2 +0 0.55 +1 0.44 + +1 +2548 +2 +2 +0 0.55 +1 0.44 + +1 +2549 +2 +2 +0 0.55 +1 0.44 + +1 +2550 +2 +2 +0 0.55 +1 0.44 + +1 +2551 +2 +2 +0 0.55 +1 0.44 + +1 +2552 +2 +2 +0 0.55 +1 0.44 + +1 +2553 +2 +2 +0 0.55 +1 0.44 + +1 +2554 +2 +2 +0 0.55 +1 0.44 + +1 +2555 +2 +2 +0 0.55 +1 0.44 + +1 +2556 +2 +2 +0 0.55 +1 0.44 + +1 +2557 +2 +2 +0 0.55 +1 0.44 + +1 +2558 +2 +2 +0 0.55 +1 0.44 + +1 +2559 +2 +2 +0 0.55 +1 0.44 + +1 +2560 +2 +2 +0 0.55 +1 0.44 + +1 +2561 +2 +2 +0 0.55 +1 0.44 + +1 +2562 +2 +2 +0 0.55 +1 0.44 + +1 +2563 +2 +2 +0 0.55 +1 0.44 + +1 +2564 +2 +2 +0 0.55 +1 0.44 + +1 +2565 +2 +2 +0 0.55 +1 0.44 + +1 +2566 +2 +2 +0 0.55 +1 0.44 + +1 +2567 +2 +2 +0 0.55 +1 0.44 + +1 +2568 +2 +2 +0 0.55 +1 0.44 + +1 +2569 +2 +2 +0 0.55 +1 0.44 + +1 +2570 +2 +2 +0 0.55 +1 0.44 + +1 +2571 +2 +2 +0 0.55 +1 0.44 + +1 +2572 +2 +2 +0 0.55 +1 0.44 + +1 +2573 +2 +2 +0 0.55 +1 0.44 + +1 +2574 +2 +2 +0 0.55 +1 0.44 + +1 +2575 +2 +2 +0 0.55 +1 0.44 + +1 +2576 +2 +2 +0 0.55 +1 0.44 + +1 +2577 +2 +2 +0 0.55 +1 0.44 + +1 +2578 +2 +2 +0 0.55 +1 0.44 + +1 +2579 +2 +2 +0 0.55 +1 0.44 + +1 +2580 +2 +2 +0 0.55 +1 0.44 + +1 +2581 +2 +2 +0 0.55 +1 0.44 + +1 +2582 +2 +2 +0 0.55 +1 0.44 + +1 +2583 +2 +2 +0 0.55 +1 0.44 + +1 +2584 +2 +2 +0 0.55 +1 0.44 + +1 +2585 +2 +2 +0 0.55 +1 0.44 + +1 +2586 +2 +2 +0 0.55 +1 0.44 + +1 +2587 +2 +2 +0 0.55 +1 0.44 + +1 +2588 +2 +2 +0 0.55 +1 0.44 + +1 +2589 +2 +2 +0 0.55 +1 0.44 + +1 +2590 +2 +2 +0 0.55 +1 0.44 + +1 +2591 +2 +2 +0 0.55 +1 0.44 + +1 +2592 +2 +2 +0 0.55 +1 0.44 + +1 +2593 +2 +2 +0 0.55 +1 0.44 + +1 +2594 +2 +2 +0 0.55 +1 0.44 + +1 +2595 +2 +2 +0 0.55 +1 0.44 + +1 +2596 +2 +2 +0 0.55 +1 0.44 + +1 +2597 +2 +2 +0 0.55 +1 0.44 + +1 +2598 +2 +2 +0 0.55 +1 0.44 + +1 +2599 +2 +2 +0 0.55 +1 0.44 + +1 +2600 +2 +2 +0 0.55 +1 0.44 + +1 +2601 +2 +2 +0 0.55 +1 0.44 + +1 +2602 +2 +2 +0 0.55 +1 0.44 + +1 +2603 +2 +2 +0 0.55 +1 0.44 + +1 +2604 +2 +2 +0 0.55 +1 0.44 + +1 +2605 +2 +2 +0 0.55 +1 0.44 + +1 +2606 +2 +2 +0 0.55 +1 0.44 + +1 +2607 +2 +2 +0 0.55 +1 0.44 + +1 +2608 +2 +2 +0 0.55 +1 0.44 + +1 +2609 +2 +2 +0 0.55 +1 0.44 + +1 +2610 +2 +2 +0 0.55 +1 0.44 + +1 +2611 +2 +2 +0 0.55 +1 0.44 + +1 +2612 +2 +2 +0 0.55 +1 0.44 + +1 +2613 +2 +2 +0 0.55 +1 0.44 + +1 +2614 +2 +2 +0 0.55 +1 0.44 + +1 +2615 +2 +2 +0 0.55 +1 0.44 + +1 +2616 +2 +2 +0 0.55 +1 0.44 + +1 +2617 +2 +2 +0 0.55 +1 0.44 + +1 +2618 +2 +2 +0 0.55 +1 0.44 + +1 +2619 +2 +2 +0 0.55 +1 0.44 + +1 +2620 +2 +2 +0 0.55 +1 0.44 + +1 +2621 +2 +2 +0 0.55 +1 0.44 + +1 +2622 +2 +2 +0 0.55 +1 0.44 + +1 +2623 +2 +2 +0 0.55 +1 0.44 + +1 +2624 +2 +2 +0 0.55 +1 0.44 + +1 +2625 +2 +2 +0 0.55 +1 0.44 + +1 +2626 +2 +2 +0 0.55 +1 0.44 + +1 +2627 +2 +2 +0 0.55 +1 0.44 + +1 +2628 +2 +2 +0 0.55 +1 0.44 + +1 +2629 +2 +2 +0 0.55 +1 0.44 + +1 +2630 +2 +2 +0 0.55 +1 0.44 + +1 +2631 +2 +2 +0 0.55 +1 0.44 + +1 +2632 +2 +2 +0 0.55 +1 0.44 + +1 +2633 +2 +2 +0 0.55 +1 0.44 + +1 +2634 +2 +2 +0 0.55 +1 0.44 + +1 +2635 +2 +2 +0 0.55 +1 0.44 + +1 +2636 +2 +2 +0 0.55 +1 0.44 + +1 +2637 +2 +2 +0 0.55 +1 0.44 + +1 +2638 +2 +2 +0 0.55 +1 0.44 + +1 +2639 +2 +2 +0 0.55 +1 0.44 + +1 +2640 +2 +2 +0 0.55 +1 0.44 + +1 +2641 +2 +2 +0 0.55 +1 0.44 + +1 +2642 +2 +2 +0 0.55 +1 0.44 + +1 +2643 +2 +2 +0 0.55 +1 0.44 + +1 +2644 +2 +2 +0 0.55 +1 0.44 + +1 +2645 +2 +2 +0 0.55 +1 0.44 + +1 +2646 +2 +2 +0 0.55 +1 0.44 + +1 +2647 +2 +2 +0 0.55 +1 0.44 + +1 +2648 +2 +2 +0 0.55 +1 0.44 + +1 +2649 +2 +2 +0 0.55 +1 0.44 + +1 +2650 +2 +2 +0 0.55 +1 0.44 + +1 +2651 +2 +2 +0 0.55 +1 0.44 + +1 +2652 +2 +2 +0 0.55 +1 0.44 + +1 +2653 +2 +2 +0 0.55 +1 0.44 + +1 +2654 +2 +2 +0 0.55 +1 0.44 + +1 +2655 +2 +2 +0 0.55 +1 0.44 + +1 +2656 +2 +2 +0 0.55 +1 0.44 + +1 +2657 +2 +2 +0 0.55 +1 0.44 + +1 +2658 +2 +2 +0 0.55 +1 0.44 + +1 +2659 +2 +2 +0 0.55 +1 0.44 + +1 +2660 +2 +2 +0 0.55 +1 0.44 + +1 +2661 +2 +2 +0 0.55 +1 0.44 + +1 +2662 +2 +2 +0 0.55 +1 0.44 + +1 +2663 +2 +2 +0 0.55 +1 0.44 + +1 +2664 +2 +2 +0 0.55 +1 0.44 + +1 +2665 +2 +2 +0 0.55 +1 0.44 + +1 +2666 +2 +2 +0 0.55 +1 0.44 + +1 +2667 +2 +2 +0 0.55 +1 0.44 + +1 +2668 +2 +2 +0 0.55 +1 0.44 + +1 +2669 +2 +2 +0 0.55 +1 0.44 + +1 +2670 +2 +2 +0 0.55 +1 0.44 + +1 +2671 +2 +2 +0 0.55 +1 0.44 + +1 +2672 +2 +2 +0 0.55 +1 0.44 + +1 +2673 +2 +2 +0 0.55 +1 0.44 + +1 +2674 +2 +2 +0 0.55 +1 0.44 + +1 +2675 +2 +2 +0 0.55 +1 0.44 + +1 +2676 +2 +2 +0 0.55 +1 0.44 + +1 +2677 +2 +2 +0 0.55 +1 0.44 + +1 +2678 +2 +2 +0 0.55 +1 0.44 + +1 +2679 +2 +2 +0 0.55 +1 0.44 + +1 +2680 +2 +2 +0 0.55 +1 0.44 + +1 +2681 +2 +2 +0 0.55 +1 0.44 + +1 +2682 +2 +2 +0 0.55 +1 0.44 + +1 +2683 +2 +2 +0 0.55 +1 0.44 + +1 +2684 +2 +2 +0 0.55 +1 0.44 + +1 +2685 +2 +2 +0 0.55 +1 0.44 + +1 +2686 +2 +2 +0 0.55 +1 0.44 + +1 +2687 +2 +2 +0 0.55 +1 0.44 + +1 +2688 +2 +2 +0 0.55 +1 0.44 + +1 +2689 +2 +2 +0 0.55 +1 0.44 + +1 +2690 +2 +2 +0 0.55 +1 0.44 + +1 +2691 +2 +2 +0 0.55 +1 0.44 + +1 +2692 +2 +2 +0 0.55 +1 0.44 + +1 +2693 +2 +2 +0 0.55 +1 0.44 + +1 +2694 +2 +2 +0 0.55 +1 0.44 + +1 +2695 +2 +2 +0 0.55 +1 0.44 + +1 +2696 +2 +2 +0 0.55 +1 0.44 + +1 +2697 +2 +2 +0 0.55 +1 0.44 + +1 +2698 +2 +2 +0 0.55 +1 0.44 + +1 +2699 +2 +2 +0 0.55 +1 0.44 + +1 +2700 +2 +2 +0 0.55 +1 0.44 + +1 +2701 +2 +2 +0 0.55 +1 0.44 + +1 +2702 +2 +2 +0 0.55 +1 0.44 + +1 +2703 +2 +2 +0 0.55 +1 0.44 + +1 +2704 +2 +2 +0 0.55 +1 0.44 + +1 +2705 +2 +2 +0 0.55 +1 0.44 + +1 +2706 +2 +2 +0 0.55 +1 0.44 + +1 +2707 +2 +2 +0 0.55 +1 0.44 + +1 +2708 +2 +2 +0 0.55 +1 0.44 + +1 +2709 +2 +2 +0 0.55 +1 0.44 + +1 +2710 +2 +2 +0 0.55 +1 0.44 + +1 +2711 +2 +2 +0 0.55 +1 0.44 + +1 +2712 +2 +2 +0 0.55 +1 0.44 + +1 +2713 +2 +2 +0 0.55 +1 0.44 + +1 +2714 +2 +2 +0 0.55 +1 0.44 + +1 +2715 +2 +2 +0 0.55 +1 0.44 + +1 +2716 +2 +2 +0 0.55 +1 0.44 + +1 +2717 +2 +2 +0 0.55 +1 0.44 + +1 +2718 +2 +2 +0 0.55 +1 0.44 + +1 +2719 +2 +2 +0 0.55 +1 0.44 + +1 +2720 +2 +2 +0 0.55 +1 0.44 + +1 +2721 +2 +2 +0 0.55 +1 0.44 + +1 +2722 +2 +2 +0 0.55 +1 0.44 + +1 +2723 +2 +2 +0 0.55 +1 0.44 + +1 +2724 +2 +2 +0 0.55 +1 0.44 + +1 +2725 +2 +2 +0 0.55 +1 0.44 + +1 +2726 +2 +2 +0 0.55 +1 0.44 + +1 +2727 +2 +2 +0 0.55 +1 0.44 + +1 +2728 +2 +2 +0 0.55 +1 0.44 + +1 +2729 +2 +2 +0 0.55 +1 0.44 + +1 +2730 +2 +2 +0 0.55 +1 0.44 + +1 +2731 +2 +2 +0 0.55 +1 0.44 + +1 +2732 +2 +2 +0 0.55 +1 0.44 + +1 +2733 +2 +2 +0 0.55 +1 0.44 + +1 +2734 +2 +2 +0 0.55 +1 0.44 + +1 +2735 +2 +2 +0 0.55 +1 0.44 + +1 +2736 +2 +2 +0 0.55 +1 0.44 + +1 +2737 +2 +2 +0 0.55 +1 0.44 + +1 +2738 +2 +2 +0 0.55 +1 0.44 + +1 +2739 +2 +2 +0 0.55 +1 0.44 + +1 +2740 +2 +2 +0 0.55 +1 0.44 + +1 +2741 +2 +2 +0 0.55 +1 0.44 + +1 +2742 +2 +2 +0 0.55 +1 0.44 + +1 +2743 +2 +2 +0 0.55 +1 0.44 + +1 +2744 +2 +2 +0 0.55 +1 0.44 + +1 +2745 +2 +2 +0 0.55 +1 0.44 + +1 +2746 +2 +2 +0 0.55 +1 0.44 + +1 +2747 +2 +2 +0 0.55 +1 0.44 + +1 +2748 +2 +2 +0 0.55 +1 0.44 + +1 +2749 +2 +2 +0 0.55 +1 0.44 + +1 +2750 +2 +2 +0 0.55 +1 0.44 + +1 +2751 +2 +2 +0 0.55 +1 0.44 + +1 +2752 +2 +2 +0 0.55 +1 0.44 + +1 +2753 +2 +2 +0 0.55 +1 0.44 + +1 +2754 +2 +2 +0 0.55 +1 0.44 + +1 +2755 +2 +2 +0 0.55 +1 0.44 + +1 +2756 +2 +2 +0 0.55 +1 0.44 + +1 +2757 +2 +2 +0 0.55 +1 0.44 + +1 +2758 +2 +2 +0 0.55 +1 0.44 + +1 +2759 +2 +2 +0 0.55 +1 0.44 + +1 +2760 +2 +2 +0 0.55 +1 0.44 + +1 +2761 +2 +2 +0 0.55 +1 0.44 + +1 +2762 +2 +2 +0 0.55 +1 0.44 + +1 +2763 +2 +2 +0 0.55 +1 0.44 + +1 +2764 +2 +2 +0 0.55 +1 0.44 + +1 +2765 +2 +2 +0 0.55 +1 0.44 + +1 +2766 +2 +2 +0 0.55 +1 0.44 + +1 +2767 +2 +2 +0 0.55 +1 0.44 + +1 +2768 +2 +2 +0 0.55 +1 0.44 + +1 +2769 +2 +2 +0 0.55 +1 0.44 + +1 +2770 +2 +2 +0 0.55 +1 0.44 + +1 +2771 +2 +2 +0 0.55 +1 0.44 + +1 +2772 +2 +2 +0 0.55 +1 0.44 + +1 +2773 +2 +2 +0 0.55 +1 0.44 + +1 +2774 +2 +2 +0 0.55 +1 0.44 + +1 +2775 +2 +2 +0 0.55 +1 0.44 + +1 +2776 +2 +2 +0 0.55 +1 0.44 + +1 +2777 +2 +2 +0 0.55 +1 0.44 + +1 +2778 +2 +2 +0 0.55 +1 0.44 + +1 +2779 +2 +2 +0 0.55 +1 0.44 + +1 +2780 +2 +2 +0 0.55 +1 0.44 + +1 +2781 +2 +2 +0 0.55 +1 0.44 + +1 +2782 +2 +2 +0 0.55 +1 0.44 + +1 +2783 +2 +2 +0 0.55 +1 0.44 + +1 +2784 +2 +2 +0 0.55 +1 0.44 + +1 +2785 +2 +2 +0 0.55 +1 0.44 + +1 +2786 +2 +2 +0 0.55 +1 0.44 + +1 +2787 +2 +2 +0 0.55 +1 0.44 + +1 +2788 +2 +2 +0 0.55 +1 0.44 + +1 +2789 +2 +2 +0 0.55 +1 0.44 + +1 +2790 +2 +2 +0 0.55 +1 0.44 + +1 +2791 +2 +2 +0 0.55 +1 0.44 + +1 +2792 +2 +2 +0 0.55 +1 0.44 + +1 +2793 +2 +2 +0 0.55 +1 0.44 + +1 +2794 +2 +2 +0 0.55 +1 0.44 + +1 +2795 +2 +2 +0 0.55 +1 0.44 + +1 +2796 +2 +2 +0 0.55 +1 0.44 + +1 +2797 +2 +2 +0 0.55 +1 0.44 + +1 +2798 +2 +2 +0 0.55 +1 0.44 + +1 +2799 +2 +2 +0 0.55 +1 0.44 + +1 +2800 +2 +2 +0 0.55 +1 0.44 + +1 +2801 +2 +2 +0 0.55 +1 0.44 + +1 +2802 +2 +2 +0 0.55 +1 0.44 + +1 +2803 +2 +2 +0 0.55 +1 0.44 + +1 +2804 +2 +2 +0 0.55 +1 0.44 + +1 +2805 +2 +2 +0 0.55 +1 0.44 + +1 +2806 +2 +2 +0 0.55 +1 0.44 + +1 +2807 +2 +2 +0 0.55 +1 0.44 + +1 +2808 +2 +2 +0 0.55 +1 0.44 + +1 +2809 +2 +2 +0 0.55 +1 0.44 + +1 +2810 +2 +2 +0 0.55 +1 0.44 + +1 +2811 +2 +2 +0 0.55 +1 0.44 + +1 +2812 +2 +2 +0 0.55 +1 0.44 + +1 +2813 +2 +2 +0 0.55 +1 0.44 + +1 +2814 +2 +2 +0 0.55 +1 0.44 + +1 +2815 +2 +2 +0 0.55 +1 0.44 + +1 +2816 +2 +2 +0 0.55 +1 0.44 + +1 +2817 +2 +2 +0 0.55 +1 0.44 + +1 +2818 +2 +2 +0 0.55 +1 0.44 + +1 +2819 +2 +2 +0 0.55 +1 0.44 + +1 +2820 +2 +2 +0 0.55 +1 0.44 + +1 +2821 +2 +2 +0 0.55 +1 0.44 + +1 +2822 +2 +2 +0 0.55 +1 0.44 + +1 +2823 +2 +2 +0 0.55 +1 0.44 + +1 +2824 +2 +2 +0 0.55 +1 0.44 + +1 +2825 +2 +2 +0 0.55 +1 0.44 + +1 +2826 +2 +2 +0 0.55 +1 0.44 + +1 +2827 +2 +2 +0 0.55 +1 0.44 + +1 +2828 +2 +2 +0 0.55 +1 0.44 + +1 +2829 +2 +2 +0 0.55 +1 0.44 + +1 +2830 +2 +2 +0 0.55 +1 0.44 + +1 +2831 +2 +2 +0 0.55 +1 0.44 + +1 +2832 +2 +2 +0 0.55 +1 0.44 + +1 +2833 +2 +2 +0 0.55 +1 0.44 + +1 +2834 +2 +2 +0 0.55 +1 0.44 + +1 +2835 +2 +2 +0 0.55 +1 0.44 + +1 +2836 +2 +2 +0 0.55 +1 0.44 + +1 +2837 +2 +2 +0 0.55 +1 0.44 + +1 +2838 +2 +2 +0 0.55 +1 0.44 + +1 +2839 +2 +2 +0 0.55 +1 0.44 + +1 +2840 +2 +2 +0 0.55 +1 0.44 + +1 +2841 +2 +2 +0 0.55 +1 0.44 + +1 +2842 +2 +2 +0 0.55 +1 0.44 + +1 +2843 +2 +2 +0 0.55 +1 0.44 + +1 +2844 +2 +2 +0 0.55 +1 0.44 + +1 +2845 +2 +2 +0 0.55 +1 0.44 + +1 +2846 +2 +2 +0 0.55 +1 0.44 + +1 +2847 +2 +2 +0 0.55 +1 0.44 + +1 +2848 +2 +2 +0 0.55 +1 0.44 + +1 +2849 +2 +2 +0 0.55 +1 0.44 + +1 +2850 +2 +2 +0 0.55 +1 0.44 + +1 +2851 +2 +2 +0 0.55 +1 0.44 + +1 +2852 +2 +2 +0 0.55 +1 0.44 + +1 +2853 +2 +2 +0 0.55 +1 0.44 + +1 +2854 +2 +2 +0 0.55 +1 0.44 + +1 +2855 +2 +2 +0 0.55 +1 0.44 + +1 +2856 +2 +2 +0 0.55 +1 0.44 + +1 +2857 +2 +2 +0 0.55 +1 0.44 + +1 +2858 +2 +2 +0 0.55 +1 0.44 + +1 +2859 +2 +2 +0 0.55 +1 0.44 + +1 +2860 +2 +2 +0 0.55 +1 0.44 + +1 +2861 +2 +2 +0 0.55 +1 0.44 + +1 +2862 +2 +2 +0 0.55 +1 0.44 + +1 +2863 +2 +2 +0 0.55 +1 0.44 + +1 +2864 +2 +2 +0 0.55 +1 0.44 + +1 +2865 +2 +2 +0 0.55 +1 0.44 + +1 +2866 +2 +2 +0 0.55 +1 0.44 + +1 +2867 +2 +2 +0 0.55 +1 0.44 + +1 +2868 +2 +2 +0 0.55 +1 0.44 + +1 +2869 +2 +2 +0 0.55 +1 0.44 + +1 +2870 +2 +2 +0 0.55 +1 0.44 + +1 +2871 +2 +2 +0 0.55 +1 0.44 + +1 +2872 +2 +2 +0 0.55 +1 0.44 + +1 +2873 +2 +2 +0 0.55 +1 0.44 + +1 +2874 +2 +2 +0 0.55 +1 0.44 + +1 +2875 +2 +2 +0 0.55 +1 0.44 + +1 +2876 +2 +2 +0 0.55 +1 0.44 + +1 +2877 +2 +2 +0 0.55 +1 0.44 + +1 +2878 +2 +2 +0 0.55 +1 0.44 + +1 +2879 +2 +2 +0 0.55 +1 0.44 + +1 +2880 +2 +2 +0 0.55 +1 0.44 + +1 +2881 +2 +2 +0 0.55 +1 0.44 + +1 +2882 +2 +2 +0 0.55 +1 0.44 + +1 +2883 +2 +2 +0 0.55 +1 0.44 + +1 +2884 +2 +2 +0 0.55 +1 0.44 + +1 +2885 +2 +2 +0 0.55 +1 0.44 + +1 +2886 +2 +2 +0 0.55 +1 0.44 + +1 +2887 +2 +2 +0 0.55 +1 0.44 + +1 +2888 +2 +2 +0 0.55 +1 0.44 + +1 +2889 +2 +2 +0 0.55 +1 0.44 + +1 +2890 +2 +2 +0 0.55 +1 0.44 + +1 +2891 +2 +2 +0 0.55 +1 0.44 + +1 +2892 +2 +2 +0 0.55 +1 0.44 + +1 +2893 +2 +2 +0 0.55 +1 0.44 + +1 +2894 +2 +2 +0 0.55 +1 0.44 + +1 +2895 +2 +2 +0 0.55 +1 0.44 + +1 +2896 +2 +2 +0 0.55 +1 0.44 + +1 +2897 +2 +2 +0 0.55 +1 0.44 + +1 +2898 +2 +2 +0 0.55 +1 0.44 + +1 +2899 +2 +2 +0 0.55 +1 0.44 + +1 +2900 +2 +2 +0 0.55 +1 0.44 + +1 +2901 +2 +2 +0 0.55 +1 0.44 + +1 +2902 +2 +2 +0 0.55 +1 0.44 + +1 +2903 +2 +2 +0 0.55 +1 0.44 + +1 +2904 +2 +2 +0 0.55 +1 0.44 + +1 +2905 +2 +2 +0 0.55 +1 0.44 + +1 +2906 +2 +2 +0 0.55 +1 0.44 + +1 +2907 +2 +2 +0 0.55 +1 0.44 + +1 +2908 +2 +2 +0 0.55 +1 0.44 + +1 +2909 +2 +2 +0 0.55 +1 0.44 + +1 +2910 +2 +2 +0 0.55 +1 0.44 + +1 +2911 +2 +2 +0 0.55 +1 0.44 + +1 +2912 +2 +2 +0 0.55 +1 0.44 + +1 +2913 +2 +2 +0 0.55 +1 0.44 + +1 +2914 +2 +2 +0 0.55 +1 0.44 + +1 +2915 +2 +2 +0 0.55 +1 0.44 + +1 +2916 +2 +2 +0 0.55 +1 0.44 + +1 +2917 +2 +2 +0 0.55 +1 0.44 + +1 +2918 +2 +2 +0 0.55 +1 0.44 + +1 +2919 +2 +2 +0 0.55 +1 0.44 + +1 +2920 +2 +2 +0 0.55 +1 0.44 + +1 +2921 +2 +2 +0 0.55 +1 0.44 + +1 +2922 +2 +2 +0 0.55 +1 0.44 + +1 +2923 +2 +2 +0 0.55 +1 0.44 + +1 +2924 +2 +2 +0 0.55 +1 0.44 + +1 +2925 +2 +2 +0 0.55 +1 0.44 + +1 +2926 +2 +2 +0 0.55 +1 0.44 + +1 +2927 +2 +2 +0 0.55 +1 0.44 + +1 +2928 +2 +2 +0 0.55 +1 0.44 + +1 +2929 +2 +2 +0 0.55 +1 0.44 + +1 +2930 +2 +2 +0 0.55 +1 0.44 + +1 +2931 +2 +2 +0 0.55 +1 0.44 + +1 +2932 +2 +2 +0 0.55 +1 0.44 + +1 +2933 +2 +2 +0 0.55 +1 0.44 + +1 +2934 +2 +2 +0 0.55 +1 0.44 + +1 +2935 +2 +2 +0 0.55 +1 0.44 + +1 +2936 +2 +2 +0 0.55 +1 0.44 + +1 +2937 +2 +2 +0 0.55 +1 0.44 + +1 +2938 +2 +2 +0 0.55 +1 0.44 + +1 +2939 +2 +2 +0 0.55 +1 0.44 + +1 +2940 +2 +2 +0 0.55 +1 0.44 + +1 +2941 +2 +2 +0 0.55 +1 0.44 + +1 +2942 +2 +2 +0 0.55 +1 0.44 + +1 +2943 +2 +2 +0 0.55 +1 0.44 + +1 +2944 +2 +2 +0 0.55 +1 0.44 + +1 +2945 +2 +2 +0 0.55 +1 0.44 + +1 +2946 +2 +2 +0 0.55 +1 0.44 + +1 +2947 +2 +2 +0 0.55 +1 0.44 + +1 +2948 +2 +2 +0 0.55 +1 0.44 + +1 +2949 +2 +2 +0 0.55 +1 0.44 + +1 +2950 +2 +2 +0 0.55 +1 0.44 + +1 +2951 +2 +2 +0 0.55 +1 0.44 + +1 +2952 +2 +2 +0 0.55 +1 0.44 + +1 +2953 +2 +2 +0 0.55 +1 0.44 + +1 +2954 +2 +2 +0 0.55 +1 0.44 + +1 +2955 +2 +2 +0 0.55 +1 0.44 + +1 +2956 +2 +2 +0 0.55 +1 0.44 + +1 +2957 +2 +2 +0 0.55 +1 0.44 + +1 +2958 +2 +2 +0 0.55 +1 0.44 + +1 +2959 +2 +2 +0 0.55 +1 0.44 + +1 +2960 +2 +2 +0 0.55 +1 0.44 + +1 +2961 +2 +2 +0 0.55 +1 0.44 + +1 +2962 +2 +2 +0 0.55 +1 0.44 + +1 +2963 +2 +2 +0 0.55 +1 0.44 + +1 +2964 +2 +2 +0 0.55 +1 0.44 + +1 +2965 +2 +2 +0 0.55 +1 0.44 + +1 +2966 +2 +2 +0 0.55 +1 0.44 + +1 +2967 +2 +2 +0 0.55 +1 0.44 + +1 +2968 +2 +2 +0 0.55 +1 0.44 + +1 +2969 +2 +2 +0 0.55 +1 0.44 + +1 +2970 +2 +2 +0 0.55 +1 0.44 + +1 +2971 +2 +2 +0 0.55 +1 0.44 + +1 +2972 +2 +2 +0 0.55 +1 0.44 + +1 +2973 +2 +2 +0 0.55 +1 0.44 + +1 +2974 +2 +2 +0 0.55 +1 0.44 + +1 +2975 +2 +2 +0 0.55 +1 0.44 + +1 +2976 +2 +2 +0 0.55 +1 0.44 + +1 +2977 +2 +2 +0 0.55 +1 0.44 + +1 +2978 +2 +2 +0 0.55 +1 0.44 + +1 +2979 +2 +2 +0 0.55 +1 0.44 + +1 +2980 +2 +2 +0 0.55 +1 0.44 + +1 +2981 +2 +2 +0 0.55 +1 0.44 + +1 +2982 +2 +2 +0 0.55 +1 0.44 + +1 +2983 +2 +2 +0 0.55 +1 0.44 + +1 +2984 +2 +2 +0 0.55 +1 0.44 + +1 +2985 +2 +2 +0 0.55 +1 0.44 + +1 +2986 +2 +2 +0 0.55 +1 0.44 + +1 +2987 +2 +2 +0 0.55 +1 0.44 + +1 +2988 +2 +2 +0 0.55 +1 0.44 + +1 +2989 +2 +2 +0 0.55 +1 0.44 + +1 +2990 +2 +2 +0 0.55 +1 0.44 + +1 +2991 +2 +2 +0 0.55 +1 0.44 + +1 +2992 +2 +2 +0 0.55 +1 0.44 + +1 +2993 +2 +2 +0 0.55 +1 0.44 + +1 +2994 +2 +2 +0 0.55 +1 0.44 + +1 +2995 +2 +2 +0 0.55 +1 0.44 + +1 +2996 +2 +2 +0 0.55 +1 0.44 + +1 +2997 +2 +2 +0 0.55 +1 0.44 + +1 +2998 +2 +2 +0 0.55 +1 0.44 + +1 +2999 +2 +2 +0 0.55 +1 0.44 + +1 +3000 +2 +2 +0 0.55 +1 0.44 + +1 +3001 +2 +2 +0 0.23 +1 0.77 + +1 +3002 +2 +2 +0 0.23 +1 0.77 + +1 +3003 +2 +2 +0 0.23 +1 0.77 + +1 +3004 +2 +2 +0 0.23 +1 0.77 + +1 +3005 +2 +2 +0 0.23 +1 0.77 + +1 +3006 +2 +2 +0 0.23 +1 0.77 + +1 +3007 +2 +2 +0 0.23 +1 0.77 + +1 +3008 +2 +2 +0 0.23 +1 0.77 + +1 +3009 +2 +2 +0 0.23 +1 0.77 + +1 +3010 +2 +2 +0 0.23 +1 0.77 + +1 +3011 +2 +2 +0 0.23 +1 0.77 + +1 +3012 +2 +2 +0 0.23 +1 0.77 + +1 +3013 +2 +2 +0 0.23 +1 0.77 + +1 +3014 +2 +2 +0 0.23 +1 0.77 + +1 +3015 +2 +2 +0 0.23 +1 0.77 + +1 +3016 +2 +2 +0 0.23 +1 0.77 + +1 +3017 +2 +2 +0 0.23 +1 0.77 + +1 +3018 +2 +2 +0 0.23 +1 0.77 + +1 +3019 +2 +2 +0 0.23 +1 0.77 + +1 +3020 +2 +2 +0 0.23 +1 0.77 + +1 +3021 +2 +2 +0 0.23 +1 0.77 + +1 +3022 +2 +2 +0 0.23 +1 0.77 + +1 +3023 +2 +2 +0 0.23 +1 0.77 + +1 +3024 +2 +2 +0 0.23 +1 0.77 + +1 +3025 +2 +2 +0 0.23 +1 0.77 + +1 +3026 +2 +2 +0 0.23 +1 0.77 + +1 +3027 +2 +2 +0 0.23 +1 0.77 + +1 +3028 +2 +2 +0 0.23 +1 0.77 + +1 +3029 +2 +2 +0 0.23 +1 0.77 + +1 +3030 +2 +2 +0 0.23 +1 0.77 + +1 +3031 +2 +2 +0 0.23 +1 0.77 + +1 +3032 +2 +2 +0 0.23 +1 0.77 + +1 +3033 +2 +2 +0 0.23 +1 0.77 + +1 +3034 +2 +2 +0 0.23 +1 0.77 + +1 +3035 +2 +2 +0 0.23 +1 0.77 + +1 +3036 +2 +2 +0 0.23 +1 0.77 + +1 +3037 +2 +2 +0 0.23 +1 0.77 + +1 +3038 +2 +2 +0 0.23 +1 0.77 + +1 +3039 +2 +2 +0 0.23 +1 0.77 + +1 +3040 +2 +2 +0 0.23 +1 0.77 + +1 +3041 +2 +2 +0 0.23 +1 0.77 + +1 +3042 +2 +2 +0 0.23 +1 0.77 + +1 +3043 +2 +2 +0 0.23 +1 0.77 + +1 +3044 +2 +2 +0 0.23 +1 0.77 + +1 +3045 +2 +2 +0 0.23 +1 0.77 + +1 +3046 +2 +2 +0 0.23 +1 0.77 + +1 +3047 +2 +2 +0 0.23 +1 0.77 + +1 +3048 +2 +2 +0 0.23 +1 0.77 + +1 +3049 +2 +2 +0 0.23 +1 0.77 + +1 +3050 +2 +2 +0 0.23 +1 0.77 + +1 +3051 +2 +2 +0 0.23 +1 0.77 + +1 +3052 +2 +2 +0 0.23 +1 0.77 + +1 +3053 +2 +2 +0 0.23 +1 0.77 + +1 +3054 +2 +2 +0 0.23 +1 0.77 + +1 +3055 +2 +2 +0 0.23 +1 0.77 + +1 +3056 +2 +2 +0 0.23 +1 0.77 + +1 +3057 +2 +2 +0 0.23 +1 0.77 + +1 +3058 +2 +2 +0 0.23 +1 0.77 + +1 +3059 +2 +2 +0 0.23 +1 0.77 + +1 +3060 +2 +2 +0 0.23 +1 0.77 + +1 +3061 +2 +2 +0 0.23 +1 0.77 + +1 +3062 +2 +2 +0 0.23 +1 0.77 + +1 +3063 +2 +2 +0 0.23 +1 0.77 + +1 +3064 +2 +2 +0 0.23 +1 0.77 + +1 +3065 +2 +2 +0 0.23 +1 0.77 + +1 +3066 +2 +2 +0 0.23 +1 0.77 + +1 +3067 +2 +2 +0 0.23 +1 0.77 + +1 +3068 +2 +2 +0 0.23 +1 0.77 + +1 +3069 +2 +2 +0 0.23 +1 0.77 + +1 +3070 +2 +2 +0 0.23 +1 0.77 + +1 +3071 +2 +2 +0 0.23 +1 0.77 + +1 +3072 +2 +2 +0 0.23 +1 0.77 + +1 +3073 +2 +2 +0 0.23 +1 0.77 + +1 +3074 +2 +2 +0 0.23 +1 0.77 + +1 +3075 +2 +2 +0 0.23 +1 0.77 + +1 +3076 +2 +2 +0 0.23 +1 0.77 + +1 +3077 +2 +2 +0 0.23 +1 0.77 + +1 +3078 +2 +2 +0 0.23 +1 0.77 + +1 +3079 +2 +2 +0 0.23 +1 0.77 + +1 +3080 +2 +2 +0 0.23 +1 0.77 + +1 +3081 +2 +2 +0 0.23 +1 0.77 + +1 +3082 +2 +2 +0 0.23 +1 0.77 + +1 +3083 +2 +2 +0 0.23 +1 0.77 + +1 +3084 +2 +2 +0 0.23 +1 0.77 + +1 +3085 +2 +2 +0 0.23 +1 0.77 + +1 +3086 +2 +2 +0 0.23 +1 0.77 + +1 +3087 +2 +2 +0 0.23 +1 0.77 + +1 +3088 +2 +2 +0 0.23 +1 0.77 + +1 +3089 +2 +2 +0 0.23 +1 0.77 + +1 +3090 +2 +2 +0 0.23 +1 0.77 + +1 +3091 +2 +2 +0 0.23 +1 0.77 + +1 +3092 +2 +2 +0 0.23 +1 0.77 + +1 +3093 +2 +2 +0 0.23 +1 0.77 + +1 +3094 +2 +2 +0 0.23 +1 0.77 + +1 +3095 +2 +2 +0 0.23 +1 0.77 + +1 +3096 +2 +2 +0 0.23 +1 0.77 + +1 +3097 +2 +2 +0 0.23 +1 0.77 + +1 +3098 +2 +2 +0 0.23 +1 0.77 + +1 +3099 +2 +2 +0 0.23 +1 0.77 + +1 +3100 +2 +2 +0 0.23 +1 0.77 + +1 +3101 +2 +2 +0 0.23 +1 0.77 + +1 +3102 +2 +2 +0 0.23 +1 0.77 + +1 +3103 +2 +2 +0 0.23 +1 0.77 + +1 +3104 +2 +2 +0 0.23 +1 0.77 + +1 +3105 +2 +2 +0 0.23 +1 0.77 + +1 +3106 +2 +2 +0 0.23 +1 0.77 + +1 +3107 +2 +2 +0 0.23 +1 0.77 + +1 +3108 +2 +2 +0 0.23 +1 0.77 + +1 +3109 +2 +2 +0 0.23 +1 0.77 + +1 +3110 +2 +2 +0 0.23 +1 0.77 + +1 +3111 +2 +2 +0 0.23 +1 0.77 + +1 +3112 +2 +2 +0 0.23 +1 0.77 + +1 +3113 +2 +2 +0 0.23 +1 0.77 + +1 +3114 +2 +2 +0 0.23 +1 0.77 + +1 +3115 +2 +2 +0 0.23 +1 0.77 + +1 +3116 +2 +2 +0 0.23 +1 0.77 + +1 +3117 +2 +2 +0 0.23 +1 0.77 + +1 +3118 +2 +2 +0 0.23 +1 0.77 + +1 +3119 +2 +2 +0 0.23 +1 0.77 + +1 +3120 +2 +2 +0 0.23 +1 0.77 + +1 +3121 +2 +2 +0 0.23 +1 0.77 + +1 +3122 +2 +2 +0 0.23 +1 0.77 + +1 +3123 +2 +2 +0 0.23 +1 0.77 + +1 +3124 +2 +2 +0 0.23 +1 0.77 + +1 +3125 +2 +2 +0 0.23 +1 0.77 + +1 +3126 +2 +2 +0 0.23 +1 0.77 + +1 +3127 +2 +2 +0 0.23 +1 0.77 + +1 +3128 +2 +2 +0 0.23 +1 0.77 + +1 +3129 +2 +2 +0 0.23 +1 0.77 + +1 +3130 +2 +2 +0 0.23 +1 0.77 + +1 +3131 +2 +2 +0 0.23 +1 0.77 + +1 +3132 +2 +2 +0 0.23 +1 0.77 + +1 +3133 +2 +2 +0 0.23 +1 0.77 + +1 +3134 +2 +2 +0 0.23 +1 0.77 + +1 +3135 +2 +2 +0 0.23 +1 0.77 + +1 +3136 +2 +2 +0 0.23 +1 0.77 + +1 +3137 +2 +2 +0 0.23 +1 0.77 + +1 +3138 +2 +2 +0 0.23 +1 0.77 + +1 +3139 +2 +2 +0 0.23 +1 0.77 + +1 +3140 +2 +2 +0 0.23 +1 0.77 + +1 +3141 +2 +2 +0 0.23 +1 0.77 + +1 +3142 +2 +2 +0 0.23 +1 0.77 + +1 +3143 +2 +2 +0 0.23 +1 0.77 + +1 +3144 +2 +2 +0 0.23 +1 0.77 + +1 +3145 +2 +2 +0 0.23 +1 0.77 + +1 +3146 +2 +2 +0 0.23 +1 0.77 + +1 +3147 +2 +2 +0 0.23 +1 0.77 + +1 +3148 +2 +2 +0 0.23 +1 0.77 + +1 +3149 +2 +2 +0 0.23 +1 0.77 + +1 +3150 +2 +2 +0 0.23 +1 0.77 + +1 +3151 +2 +2 +0 0.23 +1 0.77 + +1 +3152 +2 +2 +0 0.23 +1 0.77 + +1 +3153 +2 +2 +0 0.23 +1 0.77 + +1 +3154 +2 +2 +0 0.23 +1 0.77 + +1 +3155 +2 +2 +0 0.23 +1 0.77 + +1 +3156 +2 +2 +0 0.23 +1 0.77 + +1 +3157 +2 +2 +0 0.23 +1 0.77 + +1 +3158 +2 +2 +0 0.23 +1 0.77 + +1 +3159 +2 +2 +0 0.23 +1 0.77 + +1 +3160 +2 +2 +0 0.23 +1 0.77 + +1 +3161 +2 +2 +0 0.23 +1 0.77 + +1 +3162 +2 +2 +0 0.23 +1 0.77 + +1 +3163 +2 +2 +0 0.23 +1 0.77 + +1 +3164 +2 +2 +0 0.23 +1 0.77 + +1 +3165 +2 +2 +0 0.23 +1 0.77 + +1 +3166 +2 +2 +0 0.23 +1 0.77 + +1 +3167 +2 +2 +0 0.23 +1 0.77 + +1 +3168 +2 +2 +0 0.23 +1 0.77 + +1 +3169 +2 +2 +0 0.23 +1 0.77 + +1 +3170 +2 +2 +0 0.23 +1 0.77 + +1 +3171 +2 +2 +0 0.23 +1 0.77 + +1 +3172 +2 +2 +0 0.23 +1 0.77 + +1 +3173 +2 +2 +0 0.23 +1 0.77 + +1 +3174 +2 +2 +0 0.23 +1 0.77 + +1 +3175 +2 +2 +0 0.23 +1 0.77 + +1 +3176 +2 +2 +0 0.23 +1 0.77 + +1 +3177 +2 +2 +0 0.23 +1 0.77 + +1 +3178 +2 +2 +0 0.23 +1 0.77 + +1 +3179 +2 +2 +0 0.23 +1 0.77 + +1 +3180 +2 +2 +0 0.23 +1 0.77 + +1 +3181 +2 +2 +0 0.23 +1 0.77 + +1 +3182 +2 +2 +0 0.23 +1 0.77 + +1 +3183 +2 +2 +0 0.23 +1 0.77 + +1 +3184 +2 +2 +0 0.23 +1 0.77 + +1 +3185 +2 +2 +0 0.23 +1 0.77 + +1 +3186 +2 +2 +0 0.23 +1 0.77 + +1 +3187 +2 +2 +0 0.23 +1 0.77 + +1 +3188 +2 +2 +0 0.23 +1 0.77 + +1 +3189 +2 +2 +0 0.23 +1 0.77 + +1 +3190 +2 +2 +0 0.23 +1 0.77 + +1 +3191 +2 +2 +0 0.23 +1 0.77 + +1 +3192 +2 +2 +0 0.23 +1 0.77 + +1 +3193 +2 +2 +0 0.23 +1 0.77 + +1 +3194 +2 +2 +0 0.23 +1 0.77 + +1 +3195 +2 +2 +0 0.23 +1 0.77 + +1 +3196 +2 +2 +0 0.23 +1 0.77 + +1 +3197 +2 +2 +0 0.23 +1 0.77 + +1 +3198 +2 +2 +0 0.23 +1 0.77 + +1 +3199 +2 +2 +0 0.23 +1 0.77 + +1 +3200 +2 +2 +0 0.23 +1 0.77 + +1 +3201 +2 +2 +0 0.23 +1 0.77 + +1 +3202 +2 +2 +0 0.23 +1 0.77 + +1 +3203 +2 +2 +0 0.23 +1 0.77 + +1 +3204 +2 +2 +0 0.23 +1 0.77 + +1 +3205 +2 +2 +0 0.23 +1 0.77 + +1 +3206 +2 +2 +0 0.23 +1 0.77 + +1 +3207 +2 +2 +0 0.23 +1 0.77 + +1 +3208 +2 +2 +0 0.23 +1 0.77 + +1 +3209 +2 +2 +0 0.23 +1 0.77 + +1 +3210 +2 +2 +0 0.23 +1 0.77 + +1 +3211 +2 +2 +0 0.23 +1 0.77 + +1 +3212 +2 +2 +0 0.23 +1 0.77 + +1 +3213 +2 +2 +0 0.23 +1 0.77 + +1 +3214 +2 +2 +0 0.23 +1 0.77 + +1 +3215 +2 +2 +0 0.23 +1 0.77 + +1 +3216 +2 +2 +0 0.23 +1 0.77 + +1 +3217 +2 +2 +0 0.23 +1 0.77 + +1 +3218 +2 +2 +0 0.23 +1 0.77 + +1 +3219 +2 +2 +0 0.23 +1 0.77 + +1 +3220 +2 +2 +0 0.23 +1 0.77 + +1 +3221 +2 +2 +0 0.23 +1 0.77 + +1 +3222 +2 +2 +0 0.23 +1 0.77 + +1 +3223 +2 +2 +0 0.23 +1 0.77 + +1 +3224 +2 +2 +0 0.23 +1 0.77 + +1 +3225 +2 +2 +0 0.23 +1 0.77 + +1 +3226 +2 +2 +0 0.23 +1 0.77 + +1 +3227 +2 +2 +0 0.23 +1 0.77 + +1 +3228 +2 +2 +0 0.23 +1 0.77 + +1 +3229 +2 +2 +0 0.23 +1 0.77 + +1 +3230 +2 +2 +0 0.23 +1 0.77 + +1 +3231 +2 +2 +0 0.23 +1 0.77 + +1 +3232 +2 +2 +0 0.23 +1 0.77 + +1 +3233 +2 +2 +0 0.23 +1 0.77 + +1 +3234 +2 +2 +0 0.23 +1 0.77 + +1 +3235 +2 +2 +0 0.23 +1 0.77 + +1 +3236 +2 +2 +0 0.23 +1 0.77 + +1 +3237 +2 +2 +0 0.23 +1 0.77 + +1 +3238 +2 +2 +0 0.23 +1 0.77 + +1 +3239 +2 +2 +0 0.23 +1 0.77 + +1 +3240 +2 +2 +0 0.23 +1 0.77 + +1 +3241 +2 +2 +0 0.23 +1 0.77 + +1 +3242 +2 +2 +0 0.23 +1 0.77 + +1 +3243 +2 +2 +0 0.23 +1 0.77 + +1 +3244 +2 +2 +0 0.23 +1 0.77 + +1 +3245 +2 +2 +0 0.23 +1 0.77 + +1 +3246 +2 +2 +0 0.23 +1 0.77 + +1 +3247 +2 +2 +0 0.23 +1 0.77 + +1 +3248 +2 +2 +0 0.23 +1 0.77 + +1 +3249 +2 +2 +0 0.23 +1 0.77 + +1 +3250 +2 +2 +0 0.23 +1 0.77 + +1 +3251 +2 +2 +0 0.23 +1 0.77 + +1 +3252 +2 +2 +0 0.23 +1 0.77 + +1 +3253 +2 +2 +0 0.23 +1 0.77 + +1 +3254 +2 +2 +0 0.23 +1 0.77 + +1 +3255 +2 +2 +0 0.23 +1 0.77 + +1 +3256 +2 +2 +0 0.23 +1 0.77 + +1 +3257 +2 +2 +0 0.23 +1 0.77 + +1 +3258 +2 +2 +0 0.23 +1 0.77 + +1 +3259 +2 +2 +0 0.23 +1 0.77 + +1 +3260 +2 +2 +0 0.23 +1 0.77 + +1 +3261 +2 +2 +0 0.23 +1 0.77 + +1 +3262 +2 +2 +0 0.23 +1 0.77 + +1 +3263 +2 +2 +0 0.23 +1 0.77 + +1 +3264 +2 +2 +0 0.23 +1 0.77 + +1 +3265 +2 +2 +0 0.23 +1 0.77 + +1 +3266 +2 +2 +0 0.23 +1 0.77 + +1 +3267 +2 +2 +0 0.23 +1 0.77 + +1 +3268 +2 +2 +0 0.23 +1 0.77 + +1 +3269 +2 +2 +0 0.23 +1 0.77 + +1 +3270 +2 +2 +0 0.23 +1 0.77 + +1 +3271 +2 +2 +0 0.23 +1 0.77 + +1 +3272 +2 +2 +0 0.23 +1 0.77 + +1 +3273 +2 +2 +0 0.23 +1 0.77 + +1 +3274 +2 +2 +0 0.23 +1 0.77 + +1 +3275 +2 +2 +0 0.23 +1 0.77 + +1 +3276 +2 +2 +0 0.23 +1 0.77 + +1 +3277 +2 +2 +0 0.23 +1 0.77 + +1 +3278 +2 +2 +0 0.23 +1 0.77 + +1 +3279 +2 +2 +0 0.23 +1 0.77 + +1 +3280 +2 +2 +0 0.23 +1 0.77 + +1 +3281 +2 +2 +0 0.23 +1 0.77 + +1 +3282 +2 +2 +0 0.23 +1 0.77 + +1 +3283 +2 +2 +0 0.23 +1 0.77 + +1 +3284 +2 +2 +0 0.23 +1 0.77 + +1 +3285 +2 +2 +0 0.23 +1 0.77 + +1 +3286 +2 +2 +0 0.23 +1 0.77 + +1 +3287 +2 +2 +0 0.23 +1 0.77 + +1 +3288 +2 +2 +0 0.23 +1 0.77 + +1 +3289 +2 +2 +0 0.23 +1 0.77 + +1 +3290 +2 +2 +0 0.23 +1 0.77 + +1 +3291 +2 +2 +0 0.23 +1 0.77 + +1 +3292 +2 +2 +0 0.23 +1 0.77 + +1 +3293 +2 +2 +0 0.23 +1 0.77 + +1 +3294 +2 +2 +0 0.23 +1 0.77 + +1 +3295 +2 +2 +0 0.23 +1 0.77 + +1 +3296 +2 +2 +0 0.23 +1 0.77 + +1 +3297 +2 +2 +0 0.23 +1 0.77 + +1 +3298 +2 +2 +0 0.23 +1 0.77 + +1 +3299 +2 +2 +0 0.23 +1 0.77 + +1 +3300 +2 +2 +0 0.23 +1 0.77 + +1 +3301 +2 +2 +0 0.23 +1 0.77 + +1 +3302 +2 +2 +0 0.23 +1 0.77 + +1 +3303 +2 +2 +0 0.23 +1 0.77 + +1 +3304 +2 +2 +0 0.23 +1 0.77 + +1 +3305 +2 +2 +0 0.23 +1 0.77 + +1 +3306 +2 +2 +0 0.23 +1 0.77 + +1 +3307 +2 +2 +0 0.23 +1 0.77 + +1 +3308 +2 +2 +0 0.23 +1 0.77 + +1 +3309 +2 +2 +0 0.23 +1 0.77 + +1 +3310 +2 +2 +0 0.23 +1 0.77 + +1 +3311 +2 +2 +0 0.23 +1 0.77 + +1 +3312 +2 +2 +0 0.23 +1 0.77 + +1 +3313 +2 +2 +0 0.23 +1 0.77 + +1 +3314 +2 +2 +0 0.23 +1 0.77 + +1 +3315 +2 +2 +0 0.23 +1 0.77 + +1 +3316 +2 +2 +0 0.23 +1 0.77 + +1 +3317 +2 +2 +0 0.23 +1 0.77 + +1 +3318 +2 +2 +0 0.23 +1 0.77 + +1 +3319 +2 +2 +0 0.23 +1 0.77 + +1 +3320 +2 +2 +0 0.23 +1 0.77 + +1 +3321 +2 +2 +0 0.23 +1 0.77 + +1 +3322 +2 +2 +0 0.23 +1 0.77 + +1 +3323 +2 +2 +0 0.23 +1 0.77 + +1 +3324 +2 +2 +0 0.23 +1 0.77 + +1 +3325 +2 +2 +0 0.23 +1 0.77 + +1 +3326 +2 +2 +0 0.23 +1 0.77 + +1 +3327 +2 +2 +0 0.23 +1 0.77 + +1 +3328 +2 +2 +0 0.23 +1 0.77 + +1 +3329 +2 +2 +0 0.23 +1 0.77 + +1 +3330 +2 +2 +0 0.23 +1 0.77 + +1 +3331 +2 +2 +0 0.23 +1 0.77 + +1 +3332 +2 +2 +0 0.23 +1 0.77 + +1 +3333 +2 +2 +0 0.23 +1 0.77 + +1 +3334 +2 +2 +0 0.23 +1 0.77 + +1 +3335 +2 +2 +0 0.23 +1 0.77 + +1 +3336 +2 +2 +0 0.23 +1 0.77 + +1 +3337 +2 +2 +0 0.23 +1 0.77 + +1 +3338 +2 +2 +0 0.23 +1 0.77 + +1 +3339 +2 +2 +0 0.23 +1 0.77 + +1 +3340 +2 +2 +0 0.23 +1 0.77 + +1 +3341 +2 +2 +0 0.23 +1 0.77 + +1 +3342 +2 +2 +0 0.23 +1 0.77 + +1 +3343 +2 +2 +0 0.23 +1 0.77 + +1 +3344 +2 +2 +0 0.23 +1 0.77 + +1 +3345 +2 +2 +0 0.23 +1 0.77 + +1 +3346 +2 +2 +0 0.23 +1 0.77 + +1 +3347 +2 +2 +0 0.23 +1 0.77 + +1 +3348 +2 +2 +0 0.23 +1 0.77 + +1 +3349 +2 +2 +0 0.23 +1 0.77 + +1 +3350 +2 +2 +0 0.23 +1 0.77 + +1 +3351 +2 +2 +0 0.23 +1 0.77 + +1 +3352 +2 +2 +0 0.23 +1 0.77 + +1 +3353 +2 +2 +0 0.23 +1 0.77 + +1 +3354 +2 +2 +0 0.23 +1 0.77 + +1 +3355 +2 +2 +0 0.23 +1 0.77 + +1 +3356 +2 +2 +0 0.23 +1 0.77 + +1 +3357 +2 +2 +0 0.23 +1 0.77 + +1 +3358 +2 +2 +0 0.23 +1 0.77 + +1 +3359 +2 +2 +0 0.23 +1 0.77 + +1 +3360 +2 +2 +0 0.23 +1 0.77 + +1 +3361 +2 +2 +0 0.23 +1 0.77 + +1 +3362 +2 +2 +0 0.23 +1 0.77 + +1 +3363 +2 +2 +0 0.23 +1 0.77 + +1 +3364 +2 +2 +0 0.23 +1 0.77 + +1 +3365 +2 +2 +0 0.23 +1 0.77 + +1 +3366 +2 +2 +0 0.23 +1 0.77 + +1 +3367 +2 +2 +0 0.23 +1 0.77 + +1 +3368 +2 +2 +0 0.23 +1 0.77 + +1 +3369 +2 +2 +0 0.23 +1 0.77 + +1 +3370 +2 +2 +0 0.23 +1 0.77 + +1 +3371 +2 +2 +0 0.23 +1 0.77 + +1 +3372 +2 +2 +0 0.23 +1 0.77 + +1 +3373 +2 +2 +0 0.23 +1 0.77 + +1 +3374 +2 +2 +0 0.23 +1 0.77 + +1 +3375 +2 +2 +0 0.23 +1 0.77 + +1 +3376 +2 +2 +0 0.23 +1 0.77 + +1 +3377 +2 +2 +0 0.23 +1 0.77 + +1 +3378 +2 +2 +0 0.23 +1 0.77 + +1 +3379 +2 +2 +0 0.23 +1 0.77 + +1 +3380 +2 +2 +0 0.23 +1 0.77 + +1 +3381 +2 +2 +0 0.23 +1 0.77 + +1 +3382 +2 +2 +0 0.23 +1 0.77 + +1 +3383 +2 +2 +0 0.23 +1 0.77 + +1 +3384 +2 +2 +0 0.23 +1 0.77 + +1 +3385 +2 +2 +0 0.23 +1 0.77 + +1 +3386 +2 +2 +0 0.23 +1 0.77 + +1 +3387 +2 +2 +0 0.23 +1 0.77 + +1 +3388 +2 +2 +0 0.23 +1 0.77 + +1 +3389 +2 +2 +0 0.23 +1 0.77 + +1 +3390 +2 +2 +0 0.23 +1 0.77 + +1 +3391 +2 +2 +0 0.23 +1 0.77 + +1 +3392 +2 +2 +0 0.23 +1 0.77 + +1 +3393 +2 +2 +0 0.23 +1 0.77 + +1 +3394 +2 +2 +0 0.23 +1 0.77 + +1 +3395 +2 +2 +0 0.23 +1 0.77 + +1 +3396 +2 +2 +0 0.23 +1 0.77 + +1 +3397 +2 +2 +0 0.23 +1 0.77 + +1 +3398 +2 +2 +0 0.23 +1 0.77 + +1 +3399 +2 +2 +0 0.23 +1 0.77 + +1 +3400 +2 +2 +0 0.23 +1 0.77 + +1 +3401 +2 +2 +0 0.23 +1 0.77 + +1 +3402 +2 +2 +0 0.23 +1 0.77 + +1 +3403 +2 +2 +0 0.23 +1 0.77 + +1 +3404 +2 +2 +0 0.23 +1 0.77 + +1 +3405 +2 +2 +0 0.23 +1 0.77 + +1 +3406 +2 +2 +0 0.23 +1 0.77 + +1 +3407 +2 +2 +0 0.23 +1 0.77 + +1 +3408 +2 +2 +0 0.23 +1 0.77 + +1 +3409 +2 +2 +0 0.23 +1 0.77 + +1 +3410 +2 +2 +0 0.23 +1 0.77 + +1 +3411 +2 +2 +0 0.23 +1 0.77 + +1 +3412 +2 +2 +0 0.23 +1 0.77 + +1 +3413 +2 +2 +0 0.23 +1 0.77 + +1 +3414 +2 +2 +0 0.23 +1 0.77 + +1 +3415 +2 +2 +0 0.23 +1 0.77 + +1 +3416 +2 +2 +0 0.23 +1 0.77 + +1 +3417 +2 +2 +0 0.23 +1 0.77 + +1 +3418 +2 +2 +0 0.23 +1 0.77 + +1 +3419 +2 +2 +0 0.23 +1 0.77 + +1 +3420 +2 +2 +0 0.23 +1 0.77 + +1 +3421 +2 +2 +0 0.23 +1 0.77 + +1 +3422 +2 +2 +0 0.23 +1 0.77 + +1 +3423 +2 +2 +0 0.23 +1 0.77 + +1 +3424 +2 +2 +0 0.23 +1 0.77 + +1 +3425 +2 +2 +0 0.23 +1 0.77 + +1 +3426 +2 +2 +0 0.23 +1 0.77 + +1 +3427 +2 +2 +0 0.23 +1 0.77 + +1 +3428 +2 +2 +0 0.23 +1 0.77 + +1 +3429 +2 +2 +0 0.23 +1 0.77 + +1 +3430 +2 +2 +0 0.23 +1 0.77 + +1 +3431 +2 +2 +0 0.23 +1 0.77 + +1 +3432 +2 +2 +0 0.23 +1 0.77 + +1 +3433 +2 +2 +0 0.23 +1 0.77 + +1 +3434 +2 +2 +0 0.23 +1 0.77 + +1 +3435 +2 +2 +0 0.23 +1 0.77 + +1 +3436 +2 +2 +0 0.23 +1 0.77 + +1 +3437 +2 +2 +0 0.23 +1 0.77 + +1 +3438 +2 +2 +0 0.23 +1 0.77 + +1 +3439 +2 +2 +0 0.23 +1 0.77 + +1 +3440 +2 +2 +0 0.23 +1 0.77 + +1 +3441 +2 +2 +0 0.23 +1 0.77 + +1 +3442 +2 +2 +0 0.23 +1 0.77 + +1 +3443 +2 +2 +0 0.23 +1 0.77 + +1 +3444 +2 +2 +0 0.23 +1 0.77 + +1 +3445 +2 +2 +0 0.23 +1 0.77 + +1 +3446 +2 +2 +0 0.23 +1 0.77 + +1 +3447 +2 +2 +0 0.23 +1 0.77 + +1 +3448 +2 +2 +0 0.23 +1 0.77 + +1 +3449 +2 +2 +0 0.23 +1 0.77 + +1 +3450 +2 +2 +0 0.23 +1 0.77 + +1 +3451 +2 +2 +0 0.23 +1 0.77 + +1 +3452 +2 +2 +0 0.23 +1 0.77 + +1 +3453 +2 +2 +0 0.23 +1 0.77 + +1 +3454 +2 +2 +0 0.23 +1 0.77 + +1 +3455 +2 +2 +0 0.23 +1 0.77 + +1 +3456 +2 +2 +0 0.23 +1 0.77 + +1 +3457 +2 +2 +0 0.23 +1 0.77 + +1 +3458 +2 +2 +0 0.23 +1 0.77 + +1 +3459 +2 +2 +0 0.23 +1 0.77 + +1 +3460 +2 +2 +0 0.23 +1 0.77 + +1 +3461 +2 +2 +0 0.23 +1 0.77 + +1 +3462 +2 +2 +0 0.23 +1 0.77 + +1 +3463 +2 +2 +0 0.23 +1 0.77 + +1 +3464 +2 +2 +0 0.23 +1 0.77 + +1 +3465 +2 +2 +0 0.23 +1 0.77 + +1 +3466 +2 +2 +0 0.23 +1 0.77 + +1 +3467 +2 +2 +0 0.23 +1 0.77 + +1 +3468 +2 +2 +0 0.23 +1 0.77 + +1 +3469 +2 +2 +0 0.23 +1 0.77 + +1 +3470 +2 +2 +0 0.23 +1 0.77 + +1 +3471 +2 +2 +0 0.23 +1 0.77 + +1 +3472 +2 +2 +0 0.23 +1 0.77 + +1 +3473 +2 +2 +0 0.23 +1 0.77 + +1 +3474 +2 +2 +0 0.23 +1 0.77 + +1 +3475 +2 +2 +0 0.23 +1 0.77 + +1 +3476 +2 +2 +0 0.23 +1 0.77 + +1 +3477 +2 +2 +0 0.23 +1 0.77 + +1 +3478 +2 +2 +0 0.23 +1 0.77 + +1 +3479 +2 +2 +0 0.23 +1 0.77 + +1 +3480 +2 +2 +0 0.23 +1 0.77 + +1 +3481 +2 +2 +0 0.23 +1 0.77 + +1 +3482 +2 +2 +0 0.23 +1 0.77 + +1 +3483 +2 +2 +0 0.23 +1 0.77 + +1 +3484 +2 +2 +0 0.23 +1 0.77 + +1 +3485 +2 +2 +0 0.23 +1 0.77 + +1 +3486 +2 +2 +0 0.23 +1 0.77 + +1 +3487 +2 +2 +0 0.23 +1 0.77 + +1 +3488 +2 +2 +0 0.23 +1 0.77 + +1 +3489 +2 +2 +0 0.23 +1 0.77 + +1 +3490 +2 +2 +0 0.23 +1 0.77 + +1 +3491 +2 +2 +0 0.23 +1 0.77 + +1 +3492 +2 +2 +0 0.23 +1 0.77 + +1 +3493 +2 +2 +0 0.23 +1 0.77 + +1 +3494 +2 +2 +0 0.23 +1 0.77 + +1 +3495 +2 +2 +0 0.23 +1 0.77 + +1 +3496 +2 +2 +0 0.23 +1 0.77 + +1 +3497 +2 +2 +0 0.23 +1 0.77 + +1 +3498 +2 +2 +0 0.23 +1 0.77 + +1 +3499 +2 +2 +0 0.23 +1 0.77 + +1 +3500 +2 +2 +0 0.23 +1 0.77 + +1 +3501 +2 +2 +0 0.23 +1 0.77 + +1 +3502 +2 +2 +0 0.23 +1 0.77 + +1 +3503 +2 +2 +0 0.23 +1 0.77 + +1 +3504 +2 +2 +0 0.23 +1 0.77 + +1 +3505 +2 +2 +0 0.23 +1 0.77 + +1 +3506 +2 +2 +0 0.23 +1 0.77 + +1 +3507 +2 +2 +0 0.23 +1 0.77 + +1 +3508 +2 +2 +0 0.23 +1 0.77 + +1 +3509 +2 +2 +0 0.23 +1 0.77 + +1 +3510 +2 +2 +0 0.23 +1 0.77 + +1 +3511 +2 +2 +0 0.23 +1 0.77 + +1 +3512 +2 +2 +0 0.23 +1 0.77 + +1 +3513 +2 +2 +0 0.23 +1 0.77 + +1 +3514 +2 +2 +0 0.23 +1 0.77 + +1 +3515 +2 +2 +0 0.23 +1 0.77 + +1 +3516 +2 +2 +0 0.23 +1 0.77 + +1 +3517 +2 +2 +0 0.23 +1 0.77 + +1 +3518 +2 +2 +0 0.23 +1 0.77 + +1 +3519 +2 +2 +0 0.23 +1 0.77 + +1 +3520 +2 +2 +0 0.23 +1 0.77 + +1 +3521 +2 +2 +0 0.23 +1 0.77 + +1 +3522 +2 +2 +0 0.23 +1 0.77 + +1 +3523 +2 +2 +0 0.23 +1 0.77 + +1 +3524 +2 +2 +0 0.23 +1 0.77 + +1 +3525 +2 +2 +0 0.23 +1 0.77 + +1 +3526 +2 +2 +0 0.23 +1 0.77 + +1 +3527 +2 +2 +0 0.23 +1 0.77 + +1 +3528 +2 +2 +0 0.23 +1 0.77 + +1 +3529 +2 +2 +0 0.23 +1 0.77 + +1 +3530 +2 +2 +0 0.23 +1 0.77 + +1 +3531 +2 +2 +0 0.23 +1 0.77 + +1 +3532 +2 +2 +0 0.23 +1 0.77 + +1 +3533 +2 +2 +0 0.23 +1 0.77 + +1 +3534 +2 +2 +0 0.23 +1 0.77 + +1 +3535 +2 +2 +0 0.23 +1 0.77 + +1 +3536 +2 +2 +0 0.23 +1 0.77 + +1 +3537 +2 +2 +0 0.23 +1 0.77 + +1 +3538 +2 +2 +0 0.23 +1 0.77 + +1 +3539 +2 +2 +0 0.23 +1 0.77 + +1 +3540 +2 +2 +0 0.23 +1 0.77 + +1 +3541 +2 +2 +0 0.23 +1 0.77 + +1 +3542 +2 +2 +0 0.23 +1 0.77 + +1 +3543 +2 +2 +0 0.23 +1 0.77 + +1 +3544 +2 +2 +0 0.23 +1 0.77 + +1 +3545 +2 +2 +0 0.23 +1 0.77 + +1 +3546 +2 +2 +0 0.23 +1 0.77 + +1 +3547 +2 +2 +0 0.23 +1 0.77 + +1 +3548 +2 +2 +0 0.23 +1 0.77 + +1 +3549 +2 +2 +0 0.23 +1 0.77 + +1 +3550 +2 +2 +0 0.23 +1 0.77 + +1 +3551 +2 +2 +0 0.23 +1 0.77 + +1 +3552 +2 +2 +0 0.23 +1 0.77 + +1 +3553 +2 +2 +0 0.23 +1 0.77 + +1 +3554 +2 +2 +0 0.23 +1 0.77 + +1 +3555 +2 +2 +0 0.23 +1 0.77 + +1 +3556 +2 +2 +0 0.23 +1 0.77 + +1 +3557 +2 +2 +0 0.23 +1 0.77 + +1 +3558 +2 +2 +0 0.23 +1 0.77 + +1 +3559 +2 +2 +0 0.23 +1 0.77 + +1 +3560 +2 +2 +0 0.23 +1 0.77 + +1 +3561 +2 +2 +0 0.23 +1 0.77 + +1 +3562 +2 +2 +0 0.23 +1 0.77 + +1 +3563 +2 +2 +0 0.23 +1 0.77 + +1 +3564 +2 +2 +0 0.23 +1 0.77 + +1 +3565 +2 +2 +0 0.23 +1 0.77 + +1 +3566 +2 +2 +0 0.23 +1 0.77 + +1 +3567 +2 +2 +0 0.23 +1 0.77 + +1 +3568 +2 +2 +0 0.23 +1 0.77 + +1 +3569 +2 +2 +0 0.23 +1 0.77 + +1 +3570 +2 +2 +0 0.23 +1 0.77 + +1 +3571 +2 +2 +0 0.23 +1 0.77 + +1 +3572 +2 +2 +0 0.23 +1 0.77 + +1 +3573 +2 +2 +0 0.23 +1 0.77 + +1 +3574 +2 +2 +0 0.23 +1 0.77 + +1 +3575 +2 +2 +0 0.23 +1 0.77 + +1 +3576 +2 +2 +0 0.23 +1 0.77 + +1 +3577 +2 +2 +0 0.23 +1 0.77 + +1 +3578 +2 +2 +0 0.23 +1 0.77 + +1 +3579 +2 +2 +0 0.23 +1 0.77 + +1 +3580 +2 +2 +0 0.23 +1 0.77 + +1 +3581 +2 +2 +0 0.23 +1 0.77 + +1 +3582 +2 +2 +0 0.23 +1 0.77 + +1 +3583 +2 +2 +0 0.23 +1 0.77 + +1 +3584 +2 +2 +0 0.23 +1 0.77 + +1 +3585 +2 +2 +0 0.23 +1 0.77 + +1 +3586 +2 +2 +0 0.23 +1 0.77 + +1 +3587 +2 +2 +0 0.23 +1 0.77 + +1 +3588 +2 +2 +0 0.23 +1 0.77 + +1 +3589 +2 +2 +0 0.23 +1 0.77 + +1 +3590 +2 +2 +0 0.23 +1 0.77 + +1 +3591 +2 +2 +0 0.23 +1 0.77 + +1 +3592 +2 +2 +0 0.23 +1 0.77 + +1 +3593 +2 +2 +0 0.23 +1 0.77 + +1 +3594 +2 +2 +0 0.23 +1 0.77 + +1 +3595 +2 +2 +0 0.23 +1 0.77 + +1 +3596 +2 +2 +0 0.23 +1 0.77 + +1 +3597 +2 +2 +0 0.23 +1 0.77 + +1 +3598 +2 +2 +0 0.23 +1 0.77 + +1 +3599 +2 +2 +0 0.23 +1 0.77 + +1 +3600 +2 +2 +0 0.23 +1 0.77 + +1 +3601 +2 +2 +0 0.23 +1 0.77 + +1 +3602 +2 +2 +0 0.23 +1 0.77 + +1 +3603 +2 +2 +0 0.23 +1 0.77 + +1 +3604 +2 +2 +0 0.23 +1 0.77 + +1 +3605 +2 +2 +0 0.23 +1 0.77 + +1 +3606 +2 +2 +0 0.23 +1 0.77 + +1 +3607 +2 +2 +0 0.23 +1 0.77 + +1 +3608 +2 +2 +0 0.23 +1 0.77 + +1 +3609 +2 +2 +0 0.23 +1 0.77 + +1 +3610 +2 +2 +0 0.23 +1 0.77 + +1 +3611 +2 +2 +0 0.23 +1 0.77 + +1 +3612 +2 +2 +0 0.23 +1 0.77 + +1 +3613 +2 +2 +0 0.23 +1 0.77 + +1 +3614 +2 +2 +0 0.23 +1 0.77 + +1 +3615 +2 +2 +0 0.23 +1 0.77 + +1 +3616 +2 +2 +0 0.23 +1 0.77 + +1 +3617 +2 +2 +0 0.23 +1 0.77 + +1 +3618 +2 +2 +0 0.23 +1 0.77 + +1 +3619 +2 +2 +0 0.23 +1 0.77 + +1 +3620 +2 +2 +0 0.23 +1 0.77 + +1 +3621 +2 +2 +0 0.23 +1 0.77 + +1 +3622 +2 +2 +0 0.23 +1 0.77 + +1 +3623 +2 +2 +0 0.23 +1 0.77 + +1 +3624 +2 +2 +0 0.23 +1 0.77 + +1 +3625 +2 +2 +0 0.23 +1 0.77 + +1 +3626 +2 +2 +0 0.23 +1 0.77 + +1 +3627 +2 +2 +0 0.23 +1 0.77 + +1 +3628 +2 +2 +0 0.23 +1 0.77 + +1 +3629 +2 +2 +0 0.23 +1 0.77 + +1 +3630 +2 +2 +0 0.23 +1 0.77 + +1 +3631 +2 +2 +0 0.23 +1 0.77 + +1 +3632 +2 +2 +0 0.23 +1 0.77 + +1 +3633 +2 +2 +0 0.23 +1 0.77 + +1 +3634 +2 +2 +0 0.23 +1 0.77 + +1 +3635 +2 +2 +0 0.23 +1 0.77 + +1 +3636 +2 +2 +0 0.23 +1 0.77 + +1 +3637 +2 +2 +0 0.23 +1 0.77 + +1 +3638 +2 +2 +0 0.23 +1 0.77 + +1 +3639 +2 +2 +0 0.23 +1 0.77 + +1 +3640 +2 +2 +0 0.23 +1 0.77 + +1 +3641 +2 +2 +0 0.23 +1 0.77 + +1 +3642 +2 +2 +0 0.23 +1 0.77 + +1 +3643 +2 +2 +0 0.23 +1 0.77 + +1 +3644 +2 +2 +0 0.23 +1 0.77 + +1 +3645 +2 +2 +0 0.23 +1 0.77 + +1 +3646 +2 +2 +0 0.23 +1 0.77 + +1 +3647 +2 +2 +0 0.23 +1 0.77 + +1 +3648 +2 +2 +0 0.23 +1 0.77 + +1 +3649 +2 +2 +0 0.23 +1 0.77 + +1 +3650 +2 +2 +0 0.23 +1 0.77 + +1 +3651 +2 +2 +0 0.23 +1 0.77 + +1 +3652 +2 +2 +0 0.23 +1 0.77 + +1 +3653 +2 +2 +0 0.23 +1 0.77 + +1 +3654 +2 +2 +0 0.23 +1 0.77 + +1 +3655 +2 +2 +0 0.23 +1 0.77 + +1 +3656 +2 +2 +0 0.23 +1 0.77 + +1 +3657 +2 +2 +0 0.23 +1 0.77 + +1 +3658 +2 +2 +0 0.23 +1 0.77 + +1 +3659 +2 +2 +0 0.23 +1 0.77 + +1 +3660 +2 +2 +0 0.23 +1 0.77 + +1 +3661 +2 +2 +0 0.23 +1 0.77 + +1 +3662 +2 +2 +0 0.23 +1 0.77 + +1 +3663 +2 +2 +0 0.23 +1 0.77 + +1 +3664 +2 +2 +0 0.23 +1 0.77 + +1 +3665 +2 +2 +0 0.23 +1 0.77 + +1 +3666 +2 +2 +0 0.23 +1 0.77 + +1 +3667 +2 +2 +0 0.23 +1 0.77 + +1 +3668 +2 +2 +0 0.23 +1 0.77 + +1 +3669 +2 +2 +0 0.23 +1 0.77 + +1 +3670 +2 +2 +0 0.23 +1 0.77 + +1 +3671 +2 +2 +0 0.23 +1 0.77 + +1 +3672 +2 +2 +0 0.23 +1 0.77 + +1 +3673 +2 +2 +0 0.23 +1 0.77 + +1 +3674 +2 +2 +0 0.23 +1 0.77 + +1 +3675 +2 +2 +0 0.23 +1 0.77 + +1 +3676 +2 +2 +0 0.23 +1 0.77 + +1 +3677 +2 +2 +0 0.23 +1 0.77 + +1 +3678 +2 +2 +0 0.23 +1 0.77 + +1 +3679 +2 +2 +0 0.23 +1 0.77 + +1 +3680 +2 +2 +0 0.23 +1 0.77 + +1 +3681 +2 +2 +0 0.23 +1 0.77 + +1 +3682 +2 +2 +0 0.23 +1 0.77 + +1 +3683 +2 +2 +0 0.23 +1 0.77 + +1 +3684 +2 +2 +0 0.23 +1 0.77 + +1 +3685 +2 +2 +0 0.23 +1 0.77 + +1 +3686 +2 +2 +0 0.23 +1 0.77 + +1 +3687 +2 +2 +0 0.23 +1 0.77 + +1 +3688 +2 +2 +0 0.23 +1 0.77 + +1 +3689 +2 +2 +0 0.23 +1 0.77 + +1 +3690 +2 +2 +0 0.23 +1 0.77 + +1 +3691 +2 +2 +0 0.23 +1 0.77 + +1 +3692 +2 +2 +0 0.23 +1 0.77 + +1 +3693 +2 +2 +0 0.23 +1 0.77 + +1 +3694 +2 +2 +0 0.23 +1 0.77 + +1 +3695 +2 +2 +0 0.23 +1 0.77 + +1 +3696 +2 +2 +0 0.23 +1 0.77 + +1 +3697 +2 +2 +0 0.23 +1 0.77 + +1 +3698 +2 +2 +0 0.23 +1 0.77 + +1 +3699 +2 +2 +0 0.23 +1 0.77 + +1 +3700 +2 +2 +0 0.23 +1 0.77 + +1 +3701 +2 +2 +0 0.23 +1 0.77 + +1 +3702 +2 +2 +0 0.23 +1 0.77 + +1 +3703 +2 +2 +0 0.23 +1 0.77 + +1 +3704 +2 +2 +0 0.23 +1 0.77 + +1 +3705 +2 +2 +0 0.23 +1 0.77 + +1 +3706 +2 +2 +0 0.23 +1 0.77 + +1 +3707 +2 +2 +0 0.23 +1 0.77 + +1 +3708 +2 +2 +0 0.23 +1 0.77 + +1 +3709 +2 +2 +0 0.23 +1 0.77 + +1 +3710 +2 +2 +0 0.23 +1 0.77 + +1 +3711 +2 +2 +0 0.23 +1 0.77 + +1 +3712 +2 +2 +0 0.23 +1 0.77 + +1 +3713 +2 +2 +0 0.23 +1 0.77 + +1 +3714 +2 +2 +0 0.23 +1 0.77 + +1 +3715 +2 +2 +0 0.23 +1 0.77 + +1 +3716 +2 +2 +0 0.23 +1 0.77 + +1 +3717 +2 +2 +0 0.23 +1 0.77 + +1 +3718 +2 +2 +0 0.23 +1 0.77 + +1 +3719 +2 +2 +0 0.23 +1 0.77 + +1 +3720 +2 +2 +0 0.23 +1 0.77 + +1 +3721 +2 +2 +0 0.23 +1 0.77 + +1 +3722 +2 +2 +0 0.23 +1 0.77 + +1 +3723 +2 +2 +0 0.23 +1 0.77 + +1 +3724 +2 +2 +0 0.23 +1 0.77 + +1 +3725 +2 +2 +0 0.23 +1 0.77 + +1 +3726 +2 +2 +0 0.23 +1 0.77 + +1 +3727 +2 +2 +0 0.23 +1 0.77 + +1 +3728 +2 +2 +0 0.23 +1 0.77 + +1 +3729 +2 +2 +0 0.23 +1 0.77 + +1 +3730 +2 +2 +0 0.23 +1 0.77 + +1 +3731 +2 +2 +0 0.23 +1 0.77 + +1 +3732 +2 +2 +0 0.23 +1 0.77 + +1 +3733 +2 +2 +0 0.23 +1 0.77 + +1 +3734 +2 +2 +0 0.23 +1 0.77 + +1 +3735 +2 +2 +0 0.23 +1 0.77 + +1 +3736 +2 +2 +0 0.23 +1 0.77 + +1 +3737 +2 +2 +0 0.23 +1 0.77 + +1 +3738 +2 +2 +0 0.23 +1 0.77 + +1 +3739 +2 +2 +0 0.23 +1 0.77 + +1 +3740 +2 +2 +0 0.23 +1 0.77 + +1 +3741 +2 +2 +0 0.23 +1 0.77 + +1 +3742 +2 +2 +0 0.23 +1 0.77 + +1 +3743 +2 +2 +0 0.23 +1 0.77 + +1 +3744 +2 +2 +0 0.23 +1 0.77 + +1 +3745 +2 +2 +0 0.23 +1 0.77 + +1 +3746 +2 +2 +0 0.23 +1 0.77 + +1 +3747 +2 +2 +0 0.23 +1 0.77 + +1 +3748 +2 +2 +0 0.23 +1 0.77 + +1 +3749 +2 +2 +0 0.23 +1 0.77 + +1 +3750 +2 +2 +0 0.23 +1 0.77 + +1 +3751 +2 +2 +0 0.23 +1 0.77 + +1 +3752 +2 +2 +0 0.23 +1 0.77 + +1 +3753 +2 +2 +0 0.23 +1 0.77 + +1 +3754 +2 +2 +0 0.23 +1 0.77 + +1 +3755 +2 +2 +0 0.23 +1 0.77 + +1 +3756 +2 +2 +0 0.23 +1 0.77 + +1 +3757 +2 +2 +0 0.23 +1 0.77 + +1 +3758 +2 +2 +0 0.23 +1 0.77 + +1 +3759 +2 +2 +0 0.23 +1 0.77 + +1 +3760 +2 +2 +0 0.23 +1 0.77 + +1 +3761 +2 +2 +0 0.23 +1 0.77 + +1 +3762 +2 +2 +0 0.23 +1 0.77 + +1 +3763 +2 +2 +0 0.23 +1 0.77 + +1 +3764 +2 +2 +0 0.23 +1 0.77 + +1 +3765 +2 +2 +0 0.23 +1 0.77 + +1 +3766 +2 +2 +0 0.23 +1 0.77 + +1 +3767 +2 +2 +0 0.23 +1 0.77 + +1 +3768 +2 +2 +0 0.23 +1 0.77 + +1 +3769 +2 +2 +0 0.23 +1 0.77 + +1 +3770 +2 +2 +0 0.23 +1 0.77 + +1 +3771 +2 +2 +0 0.23 +1 0.77 + +1 +3772 +2 +2 +0 0.23 +1 0.77 + +1 +3773 +2 +2 +0 0.23 +1 0.77 + +1 +3774 +2 +2 +0 0.23 +1 0.77 + +1 +3775 +2 +2 +0 0.23 +1 0.77 + +1 +3776 +2 +2 +0 0.23 +1 0.77 + +1 +3777 +2 +2 +0 0.23 +1 0.77 + +1 +3778 +2 +2 +0 0.23 +1 0.77 + +1 +3779 +2 +2 +0 0.23 +1 0.77 + +1 +3780 +2 +2 +0 0.23 +1 0.77 + +1 +3781 +2 +2 +0 0.23 +1 0.77 + +1 +3782 +2 +2 +0 0.23 +1 0.77 + +1 +3783 +2 +2 +0 0.23 +1 0.77 + +1 +3784 +2 +2 +0 0.23 +1 0.77 + +1 +3785 +2 +2 +0 0.23 +1 0.77 + +1 +3786 +2 +2 +0 0.23 +1 0.77 + +1 +3787 +2 +2 +0 0.23 +1 0.77 + +1 +3788 +2 +2 +0 0.23 +1 0.77 + +1 +3789 +2 +2 +0 0.23 +1 0.77 + +1 +3790 +2 +2 +0 0.23 +1 0.77 + +1 +3791 +2 +2 +0 0.23 +1 0.77 + +1 +3792 +2 +2 +0 0.23 +1 0.77 + +1 +3793 +2 +2 +0 0.23 +1 0.77 + +1 +3794 +2 +2 +0 0.23 +1 0.77 + +1 +3795 +2 +2 +0 0.23 +1 0.77 + +1 +3796 +2 +2 +0 0.23 +1 0.77 + +1 +3797 +2 +2 +0 0.23 +1 0.77 + +1 +3798 +2 +2 +0 0.23 +1 0.77 + +1 +3799 +2 +2 +0 0.23 +1 0.77 + +1 +3800 +2 +2 +0 0.23 +1 0.77 + +1 +3801 +2 +2 +0 0.23 +1 0.77 + +1 +3802 +2 +2 +0 0.23 +1 0.77 + +1 +3803 +2 +2 +0 0.23 +1 0.77 + +1 +3804 +2 +2 +0 0.23 +1 0.77 + +1 +3805 +2 +2 +0 0.23 +1 0.77 + +1 +3806 +2 +2 +0 0.23 +1 0.77 + +1 +3807 +2 +2 +0 0.23 +1 0.77 + +1 +3808 +2 +2 +0 0.23 +1 0.77 + +1 +3809 +2 +2 +0 0.23 +1 0.77 + +1 +3810 +2 +2 +0 0.23 +1 0.77 + +1 +3811 +2 +2 +0 0.23 +1 0.77 + +1 +3812 +2 +2 +0 0.23 +1 0.77 + +1 +3813 +2 +2 +0 0.23 +1 0.77 + +1 +3814 +2 +2 +0 0.23 +1 0.77 + +1 +3815 +2 +2 +0 0.23 +1 0.77 + +1 +3816 +2 +2 +0 0.23 +1 0.77 + +1 +3817 +2 +2 +0 0.23 +1 0.77 + +1 +3818 +2 +2 +0 0.23 +1 0.77 + +1 +3819 +2 +2 +0 0.23 +1 0.77 + +1 +3820 +2 +2 +0 0.23 +1 0.77 + +1 +3821 +2 +2 +0 0.23 +1 0.77 + +1 +3822 +2 +2 +0 0.23 +1 0.77 + +1 +3823 +2 +2 +0 0.23 +1 0.77 + +1 +3824 +2 +2 +0 0.23 +1 0.77 + +1 +3825 +2 +2 +0 0.23 +1 0.77 + +1 +3826 +2 +2 +0 0.23 +1 0.77 + +1 +3827 +2 +2 +0 0.23 +1 0.77 + +1 +3828 +2 +2 +0 0.23 +1 0.77 + +1 +3829 +2 +2 +0 0.23 +1 0.77 + +1 +3830 +2 +2 +0 0.23 +1 0.77 + +1 +3831 +2 +2 +0 0.23 +1 0.77 + +1 +3832 +2 +2 +0 0.23 +1 0.77 + +1 +3833 +2 +2 +0 0.23 +1 0.77 + +1 +3834 +2 +2 +0 0.23 +1 0.77 + +1 +3835 +2 +2 +0 0.23 +1 0.77 + +1 +3836 +2 +2 +0 0.23 +1 0.77 + +1 +3837 +2 +2 +0 0.23 +1 0.77 + +1 +3838 +2 +2 +0 0.23 +1 0.77 + +1 +3839 +2 +2 +0 0.23 +1 0.77 + +1 +3840 +2 +2 +0 0.23 +1 0.77 + +1 +3841 +2 +2 +0 0.23 +1 0.77 + +1 +3842 +2 +2 +0 0.23 +1 0.77 + +1 +3843 +2 +2 +0 0.23 +1 0.77 + +1 +3844 +2 +2 +0 0.23 +1 0.77 + +1 +3845 +2 +2 +0 0.23 +1 0.77 + +1 +3846 +2 +2 +0 0.23 +1 0.77 + +1 +3847 +2 +2 +0 0.23 +1 0.77 + +1 +3848 +2 +2 +0 0.23 +1 0.77 + +1 +3849 +2 +2 +0 0.23 +1 0.77 + +1 +3850 +2 +2 +0 0.23 +1 0.77 + +1 +3851 +2 +2 +0 0.23 +1 0.77 + +1 +3852 +2 +2 +0 0.23 +1 0.77 + +1 +3853 +2 +2 +0 0.23 +1 0.77 + +1 +3854 +2 +2 +0 0.23 +1 0.77 + +1 +3855 +2 +2 +0 0.23 +1 0.77 + +1 +3856 +2 +2 +0 0.23 +1 0.77 + +1 +3857 +2 +2 +0 0.23 +1 0.77 + +1 +3858 +2 +2 +0 0.23 +1 0.77 + +1 +3859 +2 +2 +0 0.23 +1 0.77 + +1 +3860 +2 +2 +0 0.23 +1 0.77 + +1 +3861 +2 +2 +0 0.23 +1 0.77 + +1 +3862 +2 +2 +0 0.23 +1 0.77 + +1 +3863 +2 +2 +0 0.23 +1 0.77 + +1 +3864 +2 +2 +0 0.23 +1 0.77 + +1 +3865 +2 +2 +0 0.23 +1 0.77 + +1 +3866 +2 +2 +0 0.23 +1 0.77 + +1 +3867 +2 +2 +0 0.23 +1 0.77 + +1 +3868 +2 +2 +0 0.23 +1 0.77 + +1 +3869 +2 +2 +0 0.23 +1 0.77 + +1 +3870 +2 +2 +0 0.23 +1 0.77 + +1 +3871 +2 +2 +0 0.23 +1 0.77 + +1 +3872 +2 +2 +0 0.23 +1 0.77 + +1 +3873 +2 +2 +0 0.23 +1 0.77 + +1 +3874 +2 +2 +0 0.23 +1 0.77 + +1 +3875 +2 +2 +0 0.23 +1 0.77 + +1 +3876 +2 +2 +0 0.23 +1 0.77 + +1 +3877 +2 +2 +0 0.23 +1 0.77 + +1 +3878 +2 +2 +0 0.23 +1 0.77 + +1 +3879 +2 +2 +0 0.23 +1 0.77 + +1 +3880 +2 +2 +0 0.23 +1 0.77 + +1 +3881 +2 +2 +0 0.23 +1 0.77 + +1 +3882 +2 +2 +0 0.23 +1 0.77 + +1 +3883 +2 +2 +0 0.23 +1 0.77 + +1 +3884 +2 +2 +0 0.23 +1 0.77 + +1 +3885 +2 +2 +0 0.23 +1 0.77 + +1 +3886 +2 +2 +0 0.23 +1 0.77 + +1 +3887 +2 +2 +0 0.23 +1 0.77 + +1 +3888 +2 +2 +0 0.23 +1 0.77 + +1 +3889 +2 +2 +0 0.23 +1 0.77 + +1 +3890 +2 +2 +0 0.23 +1 0.77 + +1 +3891 +2 +2 +0 0.23 +1 0.77 + +1 +3892 +2 +2 +0 0.23 +1 0.77 + +1 +3893 +2 +2 +0 0.23 +1 0.77 + +1 +3894 +2 +2 +0 0.23 +1 0.77 + +1 +3895 +2 +2 +0 0.23 +1 0.77 + +1 +3896 +2 +2 +0 0.23 +1 0.77 + +1 +3897 +2 +2 +0 0.23 +1 0.77 + +1 +3898 +2 +2 +0 0.23 +1 0.77 + +1 +3899 +2 +2 +0 0.23 +1 0.77 + +1 +3900 +2 +2 +0 0.23 +1 0.77 + +1 +3901 +2 +2 +0 0.23 +1 0.77 + +1 +3902 +2 +2 +0 0.23 +1 0.77 + +1 +3903 +2 +2 +0 0.23 +1 0.77 + +1 +3904 +2 +2 +0 0.23 +1 0.77 + +1 +3905 +2 +2 +0 0.23 +1 0.77 + +1 +3906 +2 +2 +0 0.23 +1 0.77 + +1 +3907 +2 +2 +0 0.23 +1 0.77 + +1 +3908 +2 +2 +0 0.23 +1 0.77 + +1 +3909 +2 +2 +0 0.23 +1 0.77 + +1 +3910 +2 +2 +0 0.23 +1 0.77 + +1 +3911 +2 +2 +0 0.23 +1 0.77 + +1 +3912 +2 +2 +0 0.23 +1 0.77 + +1 +3913 +2 +2 +0 0.23 +1 0.77 + +1 +3914 +2 +2 +0 0.23 +1 0.77 + +1 +3915 +2 +2 +0 0.23 +1 0.77 + +1 +3916 +2 +2 +0 0.23 +1 0.77 + +1 +3917 +2 +2 +0 0.23 +1 0.77 + +1 +3918 +2 +2 +0 0.23 +1 0.77 + +1 +3919 +2 +2 +0 0.23 +1 0.77 + +1 +3920 +2 +2 +0 0.23 +1 0.77 + +1 +3921 +2 +2 +0 0.23 +1 0.77 + +1 +3922 +2 +2 +0 0.23 +1 0.77 + +1 +3923 +2 +2 +0 0.23 +1 0.77 + +1 +3924 +2 +2 +0 0.23 +1 0.77 + +1 +3925 +2 +2 +0 0.23 +1 0.77 + +1 +3926 +2 +2 +0 0.23 +1 0.77 + +1 +3927 +2 +2 +0 0.23 +1 0.77 + +1 +3928 +2 +2 +0 0.23 +1 0.77 + +1 +3929 +2 +2 +0 0.23 +1 0.77 + +1 +3930 +2 +2 +0 0.23 +1 0.77 + +1 +3931 +2 +2 +0 0.23 +1 0.77 + +1 +3932 +2 +2 +0 0.23 +1 0.77 + +1 +3933 +2 +2 +0 0.23 +1 0.77 + +1 +3934 +2 +2 +0 0.23 +1 0.77 + +1 +3935 +2 +2 +0 0.23 +1 0.77 + +1 +3936 +2 +2 +0 0.23 +1 0.77 + +1 +3937 +2 +2 +0 0.23 +1 0.77 + +1 +3938 +2 +2 +0 0.23 +1 0.77 + +1 +3939 +2 +2 +0 0.23 +1 0.77 + +1 +3940 +2 +2 +0 0.23 +1 0.77 + +1 +3941 +2 +2 +0 0.23 +1 0.77 + +1 +3942 +2 +2 +0 0.23 +1 0.77 + +1 +3943 +2 +2 +0 0.23 +1 0.77 + +1 +3944 +2 +2 +0 0.23 +1 0.77 + +1 +3945 +2 +2 +0 0.23 +1 0.77 + +1 +3946 +2 +2 +0 0.23 +1 0.77 + +1 +3947 +2 +2 +0 0.23 +1 0.77 + +1 +3948 +2 +2 +0 0.23 +1 0.77 + +1 +3949 +2 +2 +0 0.23 +1 0.77 + +1 +3950 +2 +2 +0 0.23 +1 0.77 + +1 +3951 +2 +2 +0 0.23 +1 0.77 + +1 +3952 +2 +2 +0 0.23 +1 0.77 + +1 +3953 +2 +2 +0 0.23 +1 0.77 + +1 +3954 +2 +2 +0 0.23 +1 0.77 + +1 +3955 +2 +2 +0 0.23 +1 0.77 + +1 +3956 +2 +2 +0 0.23 +1 0.77 + +1 +3957 +2 +2 +0 0.23 +1 0.77 + +1 +3958 +2 +2 +0 0.23 +1 0.77 + +1 +3959 +2 +2 +0 0.23 +1 0.77 + +1 +3960 +2 +2 +0 0.23 +1 0.77 + +1 +3961 +2 +2 +0 0.23 +1 0.77 + +1 +3962 +2 +2 +0 0.23 +1 0.77 + +1 +3963 +2 +2 +0 0.23 +1 0.77 + +1 +3964 +2 +2 +0 0.23 +1 0.77 + +1 +3965 +2 +2 +0 0.23 +1 0.77 + +1 +3966 +2 +2 +0 0.23 +1 0.77 + +1 +3967 +2 +2 +0 0.23 +1 0.77 + +1 +3968 +2 +2 +0 0.23 +1 0.77 + +1 +3969 +2 +2 +0 0.23 +1 0.77 + +1 +3970 +2 +2 +0 0.23 +1 0.77 + +1 +3971 +2 +2 +0 0.23 +1 0.77 + +1 +3972 +2 +2 +0 0.23 +1 0.77 + +1 +3973 +2 +2 +0 0.23 +1 0.77 + +1 +3974 +2 +2 +0 0.23 +1 0.77 + +1 +3975 +2 +2 +0 0.23 +1 0.77 + +1 +3976 +2 +2 +0 0.23 +1 0.77 + +1 +3977 +2 +2 +0 0.23 +1 0.77 + +1 +3978 +2 +2 +0 0.23 +1 0.77 + +1 +3979 +2 +2 +0 0.23 +1 0.77 + +1 +3980 +2 +2 +0 0.23 +1 0.77 + +1 +3981 +2 +2 +0 0.23 +1 0.77 + +1 +3982 +2 +2 +0 0.23 +1 0.77 + +1 +3983 +2 +2 +0 0.23 +1 0.77 + +1 +3984 +2 +2 +0 0.23 +1 0.77 + +1 +3985 +2 +2 +0 0.23 +1 0.77 + +1 +3986 +2 +2 +0 0.23 +1 0.77 + +1 +3987 +2 +2 +0 0.23 +1 0.77 + +1 +3988 +2 +2 +0 0.23 +1 0.77 + +1 +3989 +2 +2 +0 0.23 +1 0.77 + +1 +3990 +2 +2 +0 0.23 +1 0.77 + +1 +3991 +2 +2 +0 0.23 +1 0.77 + +1 +3992 +2 +2 +0 0.23 +1 0.77 + +1 +3993 +2 +2 +0 0.23 +1 0.77 + +1 +3994 +2 +2 +0 0.23 +1 0.77 + +1 +3995 +2 +2 +0 0.23 +1 0.77 + +1 +3996 +2 +2 +0 0.23 +1 0.77 + +1 +3997 +2 +2 +0 0.23 +1 0.77 + +1 +3998 +2 +2 +0 0.23 +1 0.77 + +1 +3999 +2 +2 +0 0.23 +1 0.77 + +1 +4000 +2 +2 +0 0.23 +1 0.77 + +2 +1000 4001 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4002 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4003 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4004 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4005 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4006 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4007 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4008 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4009 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4010 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4011 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4012 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4013 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4014 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4015 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4016 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4017 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4018 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4019 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4020 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4021 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4022 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4023 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4024 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4025 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4026 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4027 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4028 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4029 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4030 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4031 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4032 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4033 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4034 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4035 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4036 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4037 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4038 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4039 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4040 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4041 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4042 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4043 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4044 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4045 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4046 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4047 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4048 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4049 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4050 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4051 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4052 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4053 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4054 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4055 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4056 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4057 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4058 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4059 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4060 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4061 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4062 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4063 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4064 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4065 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4066 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4067 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4068 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4069 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4070 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4071 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4072 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4073 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4074 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4075 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4076 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4077 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4078 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4079 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4080 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4081 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4082 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4083 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4084 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4085 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4086 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4087 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4088 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4089 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4090 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4091 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4092 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4093 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4094 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4095 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4096 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4097 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4098 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4099 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4100 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4101 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4102 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4103 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4104 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4105 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4106 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4107 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4108 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4109 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4110 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4111 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4112 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4113 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4114 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4115 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4116 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4117 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4118 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4119 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4120 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4121 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4122 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4123 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4124 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4125 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4126 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4127 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4128 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4129 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4130 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4131 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4132 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4133 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4134 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4135 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4136 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4137 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4138 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4139 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4140 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4141 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4142 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4143 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4144 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4145 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4146 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4147 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4148 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4149 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4150 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4151 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4152 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4153 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4154 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4155 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4156 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4157 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4158 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4159 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4160 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4161 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4162 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4163 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4164 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4165 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4166 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4167 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4168 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4169 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4170 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4171 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4172 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4173 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4174 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4175 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4176 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4177 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4178 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4179 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4180 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4181 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4182 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4183 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4184 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4185 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4186 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4187 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4188 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4189 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4190 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4191 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4192 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4193 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4194 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4195 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4196 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4197 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4198 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4199 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4200 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4201 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4202 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4203 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4204 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4205 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4206 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4207 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4208 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4209 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4210 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4211 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4212 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4213 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4214 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4215 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4216 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4217 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4218 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4219 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4220 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4221 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4222 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4223 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4224 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4225 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4226 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4227 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4228 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4229 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4230 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4231 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4232 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4233 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4234 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4235 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4236 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4237 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4238 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4239 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4240 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4241 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4242 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4243 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4244 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4245 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4246 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4247 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4248 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4249 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4250 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4251 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4252 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4253 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4254 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4255 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4256 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4257 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4258 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4259 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4260 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4261 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4262 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4263 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4264 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4265 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4266 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4267 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4268 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4269 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4270 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4271 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4272 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4273 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4274 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4275 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4276 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4277 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4278 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4279 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4280 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4281 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4282 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4283 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4284 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4285 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4286 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4287 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4288 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4289 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4290 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4291 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4292 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4293 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4294 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4295 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4296 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4297 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4298 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4299 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4300 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4301 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4302 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4303 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4304 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4305 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4306 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4307 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4308 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4309 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4310 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4311 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4312 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4313 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4314 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4315 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4316 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4317 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4318 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4319 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4320 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4321 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4322 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4323 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4324 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4325 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4326 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4327 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4328 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4329 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4330 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4331 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4332 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4333 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4334 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4335 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4336 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4337 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4338 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4339 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4340 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4341 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4342 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4343 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4344 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4345 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4346 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4347 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4348 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4349 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4350 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4351 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4352 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4353 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4354 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4355 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4356 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4357 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4358 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4359 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4360 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4361 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4362 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4363 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4364 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4365 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4366 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4367 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4368 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4369 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4370 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4371 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4372 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4373 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4374 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4375 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4376 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4377 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4378 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4379 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4380 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4381 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4382 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4383 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4384 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4385 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4386 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4387 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4388 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4389 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4390 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4391 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4392 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4393 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4394 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4395 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4396 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4397 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4398 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4399 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4400 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4401 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4402 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4403 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4404 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4405 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4406 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4407 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4408 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4409 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4410 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4411 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4412 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4413 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4414 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4415 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4416 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4417 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4418 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4419 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4420 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4421 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4422 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4423 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4424 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4425 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4426 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4427 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4428 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4429 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4430 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4431 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4432 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4433 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4434 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4435 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4436 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4437 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4438 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4439 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4440 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4441 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4442 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4443 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4444 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4445 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4446 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4447 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4448 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4449 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4450 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4451 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4452 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4453 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4454 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4455 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4456 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4457 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4458 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4459 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4460 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4461 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4462 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4463 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4464 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4465 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4466 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4467 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4468 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4469 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4470 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4471 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4472 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4473 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4474 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4475 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4476 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4477 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4478 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4479 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4480 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4481 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4482 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4483 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4484 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4485 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4486 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4487 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4488 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4489 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4490 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4491 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4492 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4493 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4494 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4495 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4496 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4497 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4498 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4499 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4500 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4501 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4502 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4503 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4504 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4505 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4506 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4507 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4508 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4509 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4510 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4511 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4512 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4513 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4514 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4515 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4516 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4517 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4518 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4519 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4520 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4521 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4522 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4523 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4524 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4525 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4526 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4527 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4528 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4529 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4530 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4531 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4532 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4533 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4534 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4535 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4536 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4537 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4538 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4539 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4540 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4541 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4542 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4543 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4544 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4545 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4546 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4547 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4548 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4549 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4550 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4551 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4552 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4553 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4554 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4555 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4556 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4557 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4558 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4559 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4560 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4561 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4562 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4563 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4564 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4565 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4566 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4567 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4568 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4569 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4570 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4571 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4572 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4573 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4574 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4575 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4576 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4577 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4578 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4579 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4580 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4581 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4582 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4583 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4584 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4585 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4586 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4587 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4588 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4589 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4590 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4591 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4592 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4593 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4594 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4595 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4596 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4597 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4598 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4599 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4600 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4601 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4602 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4603 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4604 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4605 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4606 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4607 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4608 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4609 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4610 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4611 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4612 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4613 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4614 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4615 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4616 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4617 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4618 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4619 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4620 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4621 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4622 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4623 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4624 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4625 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4626 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4627 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4628 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4629 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4630 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4631 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4632 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4633 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4634 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4635 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4636 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4637 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4638 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4639 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4640 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4641 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4642 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4643 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4644 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4645 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4646 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4647 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4648 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4649 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4650 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4651 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4652 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4653 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4654 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4655 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4656 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4657 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4658 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4659 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4660 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4661 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4662 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4663 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4664 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4665 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4666 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4667 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4668 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4669 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4670 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4671 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4672 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4673 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4674 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4675 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4676 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4677 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4678 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4679 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4680 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4681 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4682 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4683 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4684 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4685 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4686 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4687 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4688 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4689 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4690 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4691 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4692 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4693 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4694 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4695 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4696 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4697 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4698 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4699 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4700 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4701 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4702 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4703 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4704 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4705 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4706 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4707 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4708 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4709 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4710 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4711 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4712 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4713 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4714 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4715 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4716 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4717 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4718 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4719 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4720 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4721 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4722 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4723 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4724 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4725 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4726 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4727 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4728 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4729 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4730 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4731 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4732 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4733 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4734 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4735 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4736 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4737 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4738 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4739 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4740 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4741 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4742 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4743 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4744 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4745 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4746 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4747 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4748 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4749 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4750 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4751 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4752 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4753 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4754 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4755 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4756 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4757 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4758 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4759 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4760 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4761 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4762 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4763 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4764 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4765 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4766 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4767 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4768 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4769 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4770 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4771 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4772 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4773 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4774 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4775 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4776 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4777 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4778 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4779 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4780 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4781 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4782 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4783 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4784 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4785 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4786 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4787 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4788 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4789 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4790 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4791 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4792 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4793 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4794 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4795 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4796 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4797 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4798 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4799 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4800 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4801 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4802 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4803 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4804 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4805 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4806 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4807 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4808 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4809 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4810 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4811 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4812 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4813 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4814 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4815 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4816 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4817 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4818 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4819 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4820 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4821 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4822 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4823 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4824 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4825 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4826 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4827 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4828 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4829 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4830 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4831 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4832 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4833 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4834 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4835 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4836 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4837 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4838 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4839 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4840 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4841 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4842 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4843 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4844 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4845 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4846 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4847 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4848 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4849 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4850 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4851 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4852 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4853 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4854 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4855 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4856 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4857 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4858 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4859 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4860 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4861 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4862 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4863 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4864 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4865 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4866 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4867 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4868 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4869 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4870 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4871 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4872 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4873 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4874 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4875 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4876 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4877 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4878 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4879 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4880 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4881 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4882 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4883 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4884 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4885 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4886 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4887 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4888 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4889 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4890 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4891 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4892 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4893 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4894 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4895 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4896 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4897 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4898 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4899 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4900 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4901 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4902 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4903 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4904 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4905 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4906 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4907 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4908 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4909 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4910 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4911 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4912 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4913 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4914 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4915 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4916 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4917 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4918 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4919 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4920 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4921 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4922 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4923 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4924 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4925 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4926 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4927 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4928 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4929 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4930 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4931 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4932 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4933 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4934 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4935 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4936 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4937 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4938 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4939 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4940 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4941 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4942 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4943 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4944 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4945 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4946 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4947 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4948 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4949 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4950 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4951 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4952 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4953 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4954 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4955 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4956 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4957 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4958 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4959 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4960 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4961 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4962 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4963 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4964 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4965 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4966 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4967 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4968 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4969 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4970 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4971 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4972 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4973 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4974 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4975 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4976 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4977 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4978 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4979 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4980 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4981 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4982 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4983 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4984 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4985 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4986 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4987 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4988 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4989 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4990 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4991 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4992 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4993 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4994 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4995 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4996 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4997 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4998 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 4999 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +1000 5000 +2 2 +4 +0 0.05 +1 0.1 +2 0.95 +3 0.9 + +2 +2001 5001 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2002 5002 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2003 5003 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2004 5004 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2005 5005 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2006 5006 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2007 5007 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2008 5008 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2009 5009 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2010 5010 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2011 5011 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2012 5012 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2013 5013 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2014 5014 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2015 5015 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2016 5016 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2017 5017 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2018 5018 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2019 5019 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2020 5020 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2021 5021 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2022 5022 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2023 5023 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2024 5024 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2025 5025 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2026 5026 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2027 5027 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2028 5028 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2029 5029 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2030 5030 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2031 5031 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2032 5032 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2033 5033 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2034 5034 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2035 5035 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2036 5036 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2037 5037 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2038 5038 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2039 5039 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2040 5040 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2041 5041 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2042 5042 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2043 5043 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2044 5044 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2045 5045 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2046 5046 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2047 5047 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2048 5048 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2049 5049 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2050 5050 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2051 5051 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2052 5052 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2053 5053 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2054 5054 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2055 5055 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2056 5056 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2057 5057 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2058 5058 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2059 5059 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2060 5060 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2061 5061 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2062 5062 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2063 5063 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2064 5064 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2065 5065 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2066 5066 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2067 5067 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2068 5068 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2069 5069 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2070 5070 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2071 5071 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2072 5072 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2073 5073 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2074 5074 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2075 5075 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2076 5076 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2077 5077 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2078 5078 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2079 5079 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2080 5080 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2081 5081 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2082 5082 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2083 5083 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2084 5084 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2085 5085 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2086 5086 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2087 5087 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2088 5088 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2089 5089 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2090 5090 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2091 5091 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2092 5092 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2093 5093 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2094 5094 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2095 5095 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2096 5096 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2097 5097 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2098 5098 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2099 5099 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2100 5100 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2101 5101 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2102 5102 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2103 5103 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2104 5104 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2105 5105 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2106 5106 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2107 5107 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2108 5108 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2109 5109 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2110 5110 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2111 5111 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2112 5112 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2113 5113 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2114 5114 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2115 5115 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2116 5116 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2117 5117 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2118 5118 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2119 5119 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2120 5120 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2121 5121 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2122 5122 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2123 5123 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2124 5124 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2125 5125 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2126 5126 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2127 5127 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2128 5128 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2129 5129 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2130 5130 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2131 5131 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2132 5132 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2133 5133 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2134 5134 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2135 5135 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2136 5136 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2137 5137 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2138 5138 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2139 5139 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2140 5140 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2141 5141 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2142 5142 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2143 5143 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2144 5144 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2145 5145 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2146 5146 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2147 5147 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2148 5148 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2149 5149 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2150 5150 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2151 5151 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2152 5152 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2153 5153 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2154 5154 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2155 5155 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2156 5156 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2157 5157 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2158 5158 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2159 5159 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2160 5160 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2161 5161 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2162 5162 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2163 5163 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2164 5164 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2165 5165 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2166 5166 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2167 5167 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2168 5168 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2169 5169 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2170 5170 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2171 5171 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2172 5172 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2173 5173 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2174 5174 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2175 5175 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2176 5176 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2177 5177 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2178 5178 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2179 5179 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2180 5180 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2181 5181 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2182 5182 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2183 5183 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2184 5184 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2185 5185 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2186 5186 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2187 5187 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2188 5188 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2189 5189 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2190 5190 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2191 5191 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2192 5192 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2193 5193 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2194 5194 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2195 5195 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2196 5196 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2197 5197 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2198 5198 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2199 5199 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2200 5200 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2201 5201 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2202 5202 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2203 5203 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2204 5204 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2205 5205 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2206 5206 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2207 5207 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2208 5208 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2209 5209 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2210 5210 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2211 5211 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2212 5212 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2213 5213 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2214 5214 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2215 5215 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2216 5216 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2217 5217 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2218 5218 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2219 5219 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2220 5220 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2221 5221 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2222 5222 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2223 5223 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2224 5224 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2225 5225 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2226 5226 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2227 5227 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2228 5228 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2229 5229 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2230 5230 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2231 5231 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2232 5232 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2233 5233 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2234 5234 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2235 5235 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2236 5236 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2237 5237 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2238 5238 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2239 5239 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2240 5240 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2241 5241 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2242 5242 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2243 5243 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2244 5244 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2245 5245 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2246 5246 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2247 5247 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2248 5248 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2249 5249 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2250 5250 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2251 5251 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2252 5252 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2253 5253 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2254 5254 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2255 5255 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2256 5256 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2257 5257 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2258 5258 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2259 5259 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2260 5260 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2261 5261 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2262 5262 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2263 5263 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2264 5264 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2265 5265 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2266 5266 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2267 5267 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2268 5268 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2269 5269 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2270 5270 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2271 5271 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2272 5272 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2273 5273 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2274 5274 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2275 5275 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2276 5276 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2277 5277 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2278 5278 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2279 5279 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2280 5280 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2281 5281 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2282 5282 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2283 5283 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2284 5284 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2285 5285 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2286 5286 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2287 5287 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2288 5288 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2289 5289 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2290 5290 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2291 5291 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2292 5292 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2293 5293 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2294 5294 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2295 5295 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2296 5296 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2297 5297 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2298 5298 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2299 5299 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2300 5300 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2301 5301 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2302 5302 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2303 5303 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2304 5304 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2305 5305 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2306 5306 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2307 5307 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2308 5308 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2309 5309 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2310 5310 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2311 5311 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2312 5312 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2313 5313 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2314 5314 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2315 5315 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2316 5316 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2317 5317 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2318 5318 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2319 5319 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2320 5320 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2321 5321 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2322 5322 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2323 5323 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2324 5324 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2325 5325 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2326 5326 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2327 5327 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2328 5328 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2329 5329 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2330 5330 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2331 5331 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2332 5332 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2333 5333 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2334 5334 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2335 5335 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2336 5336 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2337 5337 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2338 5338 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2339 5339 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2340 5340 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2341 5341 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2342 5342 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2343 5343 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2344 5344 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2345 5345 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2346 5346 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2347 5347 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2348 5348 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2349 5349 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2350 5350 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2351 5351 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2352 5352 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2353 5353 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2354 5354 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2355 5355 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2356 5356 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2357 5357 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2358 5358 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2359 5359 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2360 5360 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2361 5361 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2362 5362 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2363 5363 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2364 5364 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2365 5365 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2366 5366 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2367 5367 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2368 5368 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2369 5369 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2370 5370 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2371 5371 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2372 5372 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2373 5373 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2374 5374 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2375 5375 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2376 5376 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2377 5377 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2378 5378 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2379 5379 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2380 5380 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2381 5381 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2382 5382 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2383 5383 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2384 5384 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2385 5385 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2386 5386 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2387 5387 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2388 5388 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2389 5389 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2390 5390 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2391 5391 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2392 5392 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2393 5393 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2394 5394 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2395 5395 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2396 5396 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2397 5397 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2398 5398 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2399 5399 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2400 5400 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2401 5401 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2402 5402 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2403 5403 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2404 5404 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2405 5405 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2406 5406 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2407 5407 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2408 5408 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2409 5409 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2410 5410 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2411 5411 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2412 5412 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2413 5413 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2414 5414 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2415 5415 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2416 5416 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2417 5417 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2418 5418 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2419 5419 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2420 5420 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2421 5421 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2422 5422 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2423 5423 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2424 5424 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2425 5425 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2426 5426 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2427 5427 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2428 5428 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2429 5429 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2430 5430 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2431 5431 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2432 5432 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2433 5433 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2434 5434 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2435 5435 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2436 5436 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2437 5437 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2438 5438 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2439 5439 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2440 5440 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2441 5441 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2442 5442 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2443 5443 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2444 5444 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2445 5445 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2446 5446 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2447 5447 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2448 5448 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2449 5449 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2450 5450 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2451 5451 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2452 5452 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2453 5453 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2454 5454 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2455 5455 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2456 5456 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2457 5457 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2458 5458 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2459 5459 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2460 5460 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2461 5461 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2462 5462 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2463 5463 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2464 5464 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2465 5465 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2466 5466 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2467 5467 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2468 5468 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2469 5469 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2470 5470 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2471 5471 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2472 5472 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2473 5473 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2474 5474 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2475 5475 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2476 5476 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2477 5477 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2478 5478 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2479 5479 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2480 5480 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2481 5481 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2482 5482 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2483 5483 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2484 5484 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2485 5485 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2486 5486 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2487 5487 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2488 5488 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2489 5489 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2490 5490 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2491 5491 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2492 5492 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2493 5493 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2494 5494 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2495 5495 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2496 5496 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2497 5497 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2498 5498 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2499 5499 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2500 5500 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2501 5501 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2502 5502 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2503 5503 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2504 5504 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2505 5505 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2506 5506 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2507 5507 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2508 5508 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2509 5509 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2510 5510 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2511 5511 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2512 5512 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2513 5513 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2514 5514 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2515 5515 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2516 5516 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2517 5517 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2518 5518 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2519 5519 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2520 5520 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2521 5521 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2522 5522 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2523 5523 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2524 5524 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2525 5525 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2526 5526 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2527 5527 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2528 5528 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2529 5529 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2530 5530 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2531 5531 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2532 5532 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2533 5533 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2534 5534 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2535 5535 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2536 5536 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2537 5537 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2538 5538 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2539 5539 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2540 5540 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2541 5541 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2542 5542 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2543 5543 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2544 5544 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2545 5545 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2546 5546 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2547 5547 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2548 5548 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2549 5549 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2550 5550 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2551 5551 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2552 5552 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2553 5553 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2554 5554 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2555 5555 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2556 5556 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2557 5557 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2558 5558 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2559 5559 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2560 5560 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2561 5561 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2562 5562 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2563 5563 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2564 5564 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2565 5565 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2566 5566 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2567 5567 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2568 5568 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2569 5569 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2570 5570 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2571 5571 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2572 5572 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2573 5573 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2574 5574 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2575 5575 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2576 5576 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2577 5577 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2578 5578 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2579 5579 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2580 5580 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2581 5581 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2582 5582 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2583 5583 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2584 5584 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2585 5585 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2586 5586 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2587 5587 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2588 5588 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2589 5589 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2590 5590 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2591 5591 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2592 5592 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2593 5593 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2594 5594 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2595 5595 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2596 5596 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2597 5597 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2598 5598 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2599 5599 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2600 5600 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2601 5601 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2602 5602 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2603 5603 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2604 5604 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2605 5605 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2606 5606 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2607 5607 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2608 5608 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2609 5609 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2610 5610 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2611 5611 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2612 5612 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2613 5613 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2614 5614 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2615 5615 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2616 5616 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2617 5617 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2618 5618 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2619 5619 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2620 5620 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2621 5621 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2622 5622 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2623 5623 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2624 5624 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2625 5625 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2626 5626 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2627 5627 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2628 5628 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2629 5629 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2630 5630 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2631 5631 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2632 5632 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2633 5633 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2634 5634 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2635 5635 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2636 5636 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2637 5637 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2638 5638 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2639 5639 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2640 5640 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2641 5641 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2642 5642 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2643 5643 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2644 5644 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2645 5645 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2646 5646 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2647 5647 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2648 5648 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2649 5649 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2650 5650 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2651 5651 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2652 5652 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2653 5653 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2654 5654 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2655 5655 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2656 5656 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2657 5657 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2658 5658 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2659 5659 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2660 5660 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2661 5661 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2662 5662 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2663 5663 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2664 5664 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2665 5665 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2666 5666 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2667 5667 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2668 5668 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2669 5669 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2670 5670 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2671 5671 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2672 5672 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2673 5673 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2674 5674 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2675 5675 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2676 5676 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2677 5677 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2678 5678 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2679 5679 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2680 5680 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2681 5681 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2682 5682 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2683 5683 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2684 5684 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2685 5685 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2686 5686 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2687 5687 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2688 5688 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2689 5689 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2690 5690 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2691 5691 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2692 5692 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2693 5693 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2694 5694 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2695 5695 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2696 5696 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2697 5697 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2698 5698 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2699 5699 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2700 5700 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2701 5701 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2702 5702 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2703 5703 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2704 5704 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2705 5705 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2706 5706 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2707 5707 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2708 5708 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2709 5709 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2710 5710 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2711 5711 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2712 5712 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2713 5713 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2714 5714 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2715 5715 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2716 5716 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2717 5717 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2718 5718 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2719 5719 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2720 5720 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2721 5721 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2722 5722 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2723 5723 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2724 5724 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2725 5725 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2726 5726 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2727 5727 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2728 5728 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2729 5729 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2730 5730 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2731 5731 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2732 5732 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2733 5733 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2734 5734 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2735 5735 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2736 5736 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2737 5737 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2738 5738 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2739 5739 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2740 5740 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2741 5741 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2742 5742 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2743 5743 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2744 5744 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2745 5745 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2746 5746 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2747 5747 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2748 5748 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2749 5749 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2750 5750 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2751 5751 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2752 5752 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2753 5753 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2754 5754 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2755 5755 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2756 5756 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2757 5757 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2758 5758 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2759 5759 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2760 5760 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2761 5761 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2762 5762 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2763 5763 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2764 5764 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2765 5765 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2766 5766 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2767 5767 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2768 5768 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2769 5769 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2770 5770 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2771 5771 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2772 5772 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2773 5773 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2774 5774 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2775 5775 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2776 5776 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2777 5777 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2778 5778 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2779 5779 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2780 5780 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2781 5781 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2782 5782 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2783 5783 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2784 5784 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2785 5785 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2786 5786 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2787 5787 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2788 5788 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2789 5789 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2790 5790 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2791 5791 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2792 5792 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2793 5793 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2794 5794 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2795 5795 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2796 5796 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2797 5797 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2798 5798 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2799 5799 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2800 5800 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2801 5801 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2802 5802 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2803 5803 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2804 5804 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2805 5805 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2806 5806 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2807 5807 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2808 5808 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2809 5809 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2810 5810 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2811 5811 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2812 5812 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2813 5813 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2814 5814 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2815 5815 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2816 5816 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2817 5817 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2818 5818 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2819 5819 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2820 5820 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2821 5821 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2822 5822 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2823 5823 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2824 5824 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2825 5825 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2826 5826 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2827 5827 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2828 5828 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2829 5829 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2830 5830 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2831 5831 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2832 5832 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2833 5833 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2834 5834 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2835 5835 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2836 5836 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2837 5837 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2838 5838 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2839 5839 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2840 5840 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2841 5841 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2842 5842 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2843 5843 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2844 5844 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2845 5845 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2846 5846 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2847 5847 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2848 5848 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2849 5849 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2850 5850 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2851 5851 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2852 5852 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2853 5853 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2854 5854 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2855 5855 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2856 5856 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2857 5857 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2858 5858 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2859 5859 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2860 5860 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2861 5861 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2862 5862 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2863 5863 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2864 5864 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2865 5865 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2866 5866 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2867 5867 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2868 5868 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2869 5869 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2870 5870 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2871 5871 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2872 5872 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2873 5873 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2874 5874 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2875 5875 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2876 5876 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2877 5877 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2878 5878 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2879 5879 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2880 5880 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2881 5881 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2882 5882 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2883 5883 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2884 5884 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2885 5885 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2886 5886 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2887 5887 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2888 5888 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2889 5889 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2890 5890 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2891 5891 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2892 5892 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2893 5893 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2894 5894 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2895 5895 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2896 5896 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2897 5897 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2898 5898 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2899 5899 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2900 5900 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2901 5901 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2902 5902 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2903 5903 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2904 5904 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2905 5905 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2906 5906 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2907 5907 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2908 5908 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2909 5909 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2910 5910 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2911 5911 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2912 5912 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2913 5913 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2914 5914 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2915 5915 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2916 5916 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2917 5917 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2918 5918 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2919 5919 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2920 5920 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2921 5921 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2922 5922 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2923 5923 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2924 5924 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2925 5925 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2926 5926 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2927 5927 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2928 5928 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2929 5929 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2930 5930 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2931 5931 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2932 5932 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2933 5933 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2934 5934 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2935 5935 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2936 5936 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2937 5937 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2938 5938 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2939 5939 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2940 5940 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2941 5941 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2942 5942 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2943 5943 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2944 5944 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2945 5945 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2946 5946 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2947 5947 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2948 5948 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2949 5949 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2950 5950 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2951 5951 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2952 5952 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2953 5953 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2954 5954 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2955 5955 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2956 5956 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2957 5957 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2958 5958 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2959 5959 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2960 5960 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2961 5961 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2962 5962 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2963 5963 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2964 5964 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2965 5965 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2966 5966 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2967 5967 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2968 5968 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2969 5969 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2970 5970 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2971 5971 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2972 5972 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2973 5973 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2974 5974 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2975 5975 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2976 5976 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2977 5977 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2978 5978 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2979 5979 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2980 5980 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2981 5981 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2982 5982 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2983 5983 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2984 5984 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2985 5985 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2986 5986 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2987 5987 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2988 5988 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2989 5989 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2990 5990 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2991 5991 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2992 5992 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2993 5993 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2994 5994 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2995 5995 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2996 5996 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2997 5997 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2998 5998 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +2999 5999 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +2 +3000 6000 +2 2 +4 +0 0.6 +1 0.4 +2 0.4 +3 0.6 + +3 +1113 1001 6001 +2 2 2 +8 +0 0.2 +1 0.45 +2 0.24 +3 0.34 +4 0.8 +5 0.55 +6 0.76 +7 0.66 + diff --git a/packages/CLPBN/clpbn/bp/examples/comp_workshops.yap b/packages/CLPBN/clpbn/bp/examples/comp_workshops.yap index a2aa9f7ea..ecfabb676 100644 --- a/packages/CLPBN/clpbn/bp/examples/comp_workshops.yap +++ b/packages/CLPBN/clpbn/bp/examples/comp_workshops.yap @@ -25,6 +25,8 @@ markov attends(P)::[t,f] , hot(W)::[t,f] ; [0.1, 0.2, 0.3, 0.4] ; [c(P,W)]. markov attends(P)::[t,f], series::[t,f] ; [0.5, 0.6, 0.7, 0.8] ; [c(P,_)]. +:- clpbn_horus:set_horus_flag(use_logarithms,true). + ?- series(X). diff --git a/packages/CLPBN/clpbn/bp/examples/fail.yap b/packages/CLPBN/clpbn/bp/examples/fail.yap new file mode 100644 index 000000000..32ee67091 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/examples/fail.yap @@ -0,0 +1,20 @@ + +:- use_module(library(pfl)). + +:- set_clpbn_flag(solver,ve). +%:- set_clpbn_flag(solver,fove). + + +t(ann). +t(dave). + +% p(ann,t). + +bayes p(X)::[t,f] ; [0.1, 0.3] ; [t(X)]. + +% use standard Prolog queries: provide evidence first. + +?- p(ann,t), p(ann,X). + +% ?- p(ann,X). + diff --git a/packages/CLPBN/clpbn/bp/examples/findleaks.yap b/packages/CLPBN/clpbn/bp/examples/findleaks.yap new file mode 100644 index 000000000..9f4905461 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/examples/findleaks.yap @@ -0,0 +1,17 @@ + +:- use_module(library(pfl)). + +:- set_clpbn_flag(solver,fove). + +c1(x1). +c1(x2). +c1(x3). + +c2(x2). +c2(x3). +c2(x4). + +markov p::[t,f] ; [0.2, 0.4] ; []. +markov q::[t,f] ; [0.2, 0.4] ; []. +markov s::[t,f] , p::[t,f] ; [0.2, 0.4, 0.5, 0.1] ; []. + diff --git a/packages/CLPBN/clpbn/bp/examples/workshop_attrs.yap b/packages/CLPBN/clpbn/bp/examples/workshop_attrs.yap new file mode 100644 index 000000000..52f9485e4 --- /dev/null +++ b/packages/CLPBN/clpbn/bp/examples/workshop_attrs.yap @@ -0,0 +1,32 @@ + +:- use_module(library(pfl)). + +%:- set_clpbn_flag(solver,ve). +%:- set_clpbn_flag(solver,bp), clpbn_bp:set_horus_flag(inf_alg,ve). +:- set_clpbn_flag(solver,fove). + +c(p1). +c(p2). +c(p3). +c(p4). +c(p5). + + +markov attends(P)::[t,f] , attr1::[t,f] ; [0.1, 0.2, 0.3, 0.4] ; [c(P)]. + +markov attends(P)::[t,f] , attr2::[t,f] ; [0.1, 0.2, 0.3, 0.4] ; [c(P)]. + +markov attends(P)::[t,f] , attr3::[t,f] ; [0.1, 0.2, 0.3, 0.4] ; [c(P)]. + +markov attends(P)::[t,f] , attr4::[t,f] ; [0.1, 0.2, 0.3, 0.4] ; [c(P)]. + +markov attends(P)::[t,f] , attr5::[t,f] ; [0.1, 0.2, 0.3, 0.4] ; [c(P)]. + +markov attends(P)::[t,f] , attr6::[t,f] ; [0.1, 0.2, 0.3, 0.4] ; [c(P)]. + +markov attends(P)::[t,f], series::[t,f] ; [0.5, 0.6, 0.7, 0.8] ; [c(P)]. + +%:- clpbn_horus:set_horus_flag(use_logarithms,true). + +?- series(X). + diff --git a/packages/CLPBN/clpbn/fove.yap b/packages/CLPBN/clpbn/fove.yap index fa9891b02..68a5a38c4 100644 --- a/packages/CLPBN/clpbn/fove.yap +++ b/packages/CLPBN/clpbn/fove.yap @@ -1,14 +1,13 @@ -/************************************************ +/******************************************************* - (GC) First Order Variable Elimination Interface + First Order Variable Elimination Interface -**************************************************/ +********************************************************/ :- module(clpbn_fove, [fove/3, check_if_fove_done/1, - set_horus_flag/2, init_fove_solver/4, run_fove_solver/3, finalize_fove_solver/1 @@ -25,74 +24,79 @@ :- use_module(library(pfl), [factor/5, - skolem/2 + skolem/2, + get_pfl_parameters/2 ]). -:- use_module(horus). +:- use_module(horus, + [create_lifted_network/3, + set_parfactors_params/2, + run_lifted_solver/3, + free_parfactors/1 + ]). -:- set_horus_flag(use_logarithms, false). -%:- set_horus_flag(use_logarithms, true). fove([[]], _, _) :- !. fove([QueryVars], AllVars, Output) :- - writeln(queryVars:QueryVars), - writeln(allVars:AllVars), - init_fove_solver(_, AllVars, _, ParfactorGraph), - run_fove_solver([QueryVars], LPs, ParfactorGraph), - finalize_fove_solver(ParfactorGraph), - clpbn_bind_vals([QueryVars], LPs, Output). + init_fove_solver(_, AllVars, _, ParfactorList), + run_fove_solver([QueryVars], LPs, ParfactorList), + finalize_fove_solver(ParfactorList), + clpbn_bind_vals([QueryVars], LPs, Output). -init_fove_solver(_, AllAttVars, _, fove(ParfactorGraph, DistIds)) :- - writeln(allattvars:AllAttVars), writeln(''), - get_parfactors(Parfactors), - get_dist_ids(Parfactors, DistIds0), - sort(DistIds0, DistIds), - get_observed_vars(AllAttVars, ObservedVars), + +init_fove_solver(_, AllAttVars, _, fove(ParfactorList, DistIds)) :- + get_parfactors(Parfactors), + get_dist_ids(Parfactors, DistIds0), + sort(DistIds0, DistIds), + get_observed_vars(AllAttVars, ObservedVars), writeln(factors:Parfactors:'\n'), - writeln(evidence:ObservedVars:'\n'), - create_lifted_network(Parfactors,ObservedVars,ParfactorGraph). + writeln(evidence:ObservedVars:'\n'), + create_lifted_network(Parfactors,ObservedVars,ParfactorList). :- table get_parfactors/1. + % % enumerate all parfactors and enumerate their domain as tuples. % % output is list of pf( -% Id: an unique number -% Ks: a list of keys, also known as the pf formula [a(X),b(Y),c(X,Y)] -% Vs: the list of free variables [X,Y] -% Phi: the table following usual CLP(BN) convention -% Tuples: tuples with all ground bindings for variables in Vs, of the form [fv(x,y)] +% Id: an unique number +% Ks: a list of keys, also known as the pf formula [a(X),b(Y),c(X,Y)] +% Vs: the list of free variables [X,Y] +% Phi: the table following usual CLP(BN) convention +% Tuples: ground bindings for variables in Vs, of the form [fv(x,y)] % get_parfactors(Factors) :- - findall(F, is_factor(F), Factors). + findall(F, is_factor(F), Factors). + is_factor(pf(Id, Ks, Rs, Phi, Tuples)) :- - factor(Id, Ks, Vs, Table, Constraints), - get_ranges(Ks,Rs), - Table \= avg, - gen_table(Table, Phi), - all_tuples(Constraints, Vs, Tuples). + factor(Id, Ks, Vs, Table, Constraints), + get_ranges(Ks,Rs), + Table \= avg, + gen_table(Table, Phi), + all_tuples(Constraints, Vs, Tuples). get_ranges([],[]). get_ranges(K.Ks, Range.Rs) :- !, - skolem(K,Domain), - length(Domain,Range), - get_ranges(Ks, Rs). + skolem(K,Domain), + length(Domain,Range), + get_ranges(Ks, Rs). gen_table(Table, Phi) :- - ( is_list(Table) - -> - Phi = Table - ; - call(user:Table, Phi) - ). + ( is_list(Table) + -> + Phi = Table + ; + call(user:Table, Phi) + ). + all_tuples(Constraints, Tuple, Tuples) :- - setof(Tuple, Constraints^run(Constraints), Tuples). + setof(Tuple, Constraints^run(Constraints), Tuples). run([]). @@ -108,45 +112,41 @@ get_dist_ids(pf(Id, _, _, _, _).Parfactors, Id.DistIds) :- get_observed_vars([], []). get_observed_vars(V.AllAttVars, [K:E|ObservedVars]) :- - writeln('checking ev for':V), - clpbn:get_atts(V,[key(K)]), - ( clpbn:get_atts(V,[evidence(E)]) ; pfl:evidence(K,E) ), !, - writeln('evidence!!!':K:E), - get_observed_vars(AllAttVars, ObservedVars). + clpbn:get_atts(V,[key(K)]), + ( clpbn:get_atts(V,[evidence(E)]) ; pfl:evidence(K,E) ), !, + get_observed_vars(AllAttVars, ObservedVars). get_observed_vars(V.AllAttVars, ObservedVars) :- - clpbn:get_atts(V,[key(K)]), !, - writeln('no evidence for':V:K), - get_observed_vars(AllAttVars, ObservedVars). + clpbn:get_atts(V,[key(K)]), !, + get_observed_vars(AllAttVars, ObservedVars). get_query_vars([], []). get_query_vars(E1.L1, E2.L2) :- get_query_vars_2(E1,E2), - get_query_vars(L1, L2). + get_query_vars(L1, L2). get_query_vars_2([], []). get_query_vars_2(V.AttVars, [RV|RVs]) :- - clpbn:get_atts(V,[key(RV)]), !, - get_query_vars_2(AttVars, RVs). + clpbn:get_atts(V,[key(RV)]), !, + get_query_vars_2(AttVars, RVs). get_dists_parameters([], []). get_dists_parameters([Id|Ids], [dist(Id, Params)|DistsInfo]) :- - get_pfl_parameters(Id, Params), - get_dists_parameters(Ids, DistsInfo). + get_pfl_parameters(Id, Params), + get_dists_parameters(Ids, DistsInfo). -run_fove_solver(QueryVarsAtts, Solutions, fove(ParfactorGraph, DistIds)) :- - % TODO set_parfactor_graph_params - writeln(distIds:DistIds), - %get_dists_parameters(DistIds, DistParams), - %writeln(distParams:DistParams), +run_fove_solver(QueryVarsAtts, Solutions, fove(ParfactorList, DistIds)) :- + get_dists_parameters(DistIds, DistsParams), + writeln(distParams:DistsParams), + set_parfactors_params(ParfactorList, DistsParams), get_query_vars(QueryVarsAtts, QueryVars), - writeln(queryVars:QueryVars), - run_lifted_solver(ParfactorGraph, QueryVars, Solutions). + writeln(queryVars:QueryVars), writeln(''), + run_lifted_solver(ParfactorList, QueryVars, Solutions). -finalize_fove_solver(fove(ParfactorGraph, _)) :- - free_parfactor_graph(ParfactorGraph). +finalize_fove_solver(fove(ParfactorList, _)) :- + free_parfactors(ParfactorList). diff --git a/packages/CLPBN/clpbn/horus.yap b/packages/CLPBN/clpbn/horus.yap index 8a8209546..0ec7e25f4 100644 --- a/packages/CLPBN/clpbn/horus.yap +++ b/packages/CLPBN/clpbn/horus.yap @@ -1,16 +1,45 @@ +/******************************************************* + + Interface with C++ + +********************************************************/ + :- module(clpbn_horus, - [ - create_lifted_network/3, - create_ground_network/2, - set_parfactor_graph_params/2, - set_bayes_net_params/2, - run_lifted_solver/3, - run_other_solvers/3, - set_extra_vars_info/2, - set_horus_flag/2, - free_bayesian_network/1, - free_parfactor_graph/1 - ]). + [create_lifted_network/3, + create_ground_network/2, + set_parfactors_params/2, + set_bayes_net_params/2, + run_lifted_solver/3, + run_ground_solver/3, + set_extra_vars_info/2, + set_horus_flag/2, + free_parfactors/1, + free_bayesian_network/1 + ]). + :- load_foreign_files(['horus'], [], init_predicates). + + +%:- set_horus_flag(inf_alg, ve). +:- set_horus_flag(inf_alg, bn_bp). +%:- set_horus_flag(inf_alg, fg_bp). +%: -set_horus_flag(inf_alg, cbp). + +:- set_horus_flag(schedule, seq_fixed). +%:- set_horus_flag(schedule, seq_random). +%:- set_horus_flag(schedule, parallel). +%:- set_horus_flag(schedule, max_residual). + +:- set_horus_flag(accuracy, 0.0001). + +:- set_horus_flag(max_iter, 1000). + +:- set_horus_flag(order_factor_variables, false). +%:- set_horus_flag(order_factor_variables, true). + + +:- set_horus_flag(use_logarithms, false). +% :- set_horus_flag(use_logarithms, true). + From e9cc1a8be21471a79236d4bca1309fbeaa18531b Mon Sep 17 00:00:00 2001 From: Tiago Gomes Date: Sat, 31 Mar 2012 23:44:08 +0100 Subject: [PATCH 2/5] remove unnecessary files --- packages/CLPBN/clpbn/bp/Makefile | 236 ------------------ .../clpbn/bp/benchmarks/city/ignore.cbp.log | 124 --------- .../bp/benchmarks/school/ignore.results.log | 230 ----------------- .../clpbn/bp/benchmarks/school/results.log | 5 - .../clpbn/bp/benchmarks/school/results2.log | 21 -- .../bp/benchmarks/school/results_good.log | 32 --- .../CLPBN/clpbn/bp/examples/findleaks.yap | 17 -- 7 files changed, 665 deletions(-) delete mode 100644 packages/CLPBN/clpbn/bp/Makefile delete mode 100644 packages/CLPBN/clpbn/bp/benchmarks/city/ignore.cbp.log delete mode 100644 packages/CLPBN/clpbn/bp/benchmarks/school/ignore.results.log delete mode 100644 packages/CLPBN/clpbn/bp/benchmarks/school/results.log delete mode 100644 packages/CLPBN/clpbn/bp/benchmarks/school/results2.log delete mode 100644 packages/CLPBN/clpbn/bp/benchmarks/school/results_good.log delete mode 100644 packages/CLPBN/clpbn/bp/examples/findleaks.yap diff --git a/packages/CLPBN/clpbn/bp/Makefile b/packages/CLPBN/clpbn/bp/Makefile deleted file mode 100644 index 6432f77a6..000000000 --- a/packages/CLPBN/clpbn/bp/Makefile +++ /dev/null @@ -1,236 +0,0 @@ -# -# default base directory for YAP installation -# (EROOT for architecture-dependent files) -# -GCC = yes -prefix = /home/tgomes -exec_prefix = ${prefix} -ROOTDIR = $(prefix) -EROOTDIR = ${prefix} -abs_top_builddir = /home/tgomes/yap-6.3 -# -# where the binary should be -# -BINDIR = $(EROOTDIR)/bin -# -# where YAP should look for libraries -# -LIBDIR=${exec_prefix}/lib -YAPLIBDIR=${exec_prefix}/lib/Yap -# -# -CC=gcc -CXX=g++ - -# normal -#CXXFLAGS= -std=c++0x -shared -fPIC -O3 -fomit-frame-pointer -Wall -g -O2 $(YAP_EXTRAS) $(DEFS) -D_YAP_NOT_INSTALLED_=1 -I$(srcdir) -I../../../.. -I$(srcdir)/../../../../include -DNDEBUG - -# debug -CXXFLAGS= -std=c++0x -shared -fPIC -O3 -fomit-frame-pointer -Wall -g -O2 $(YAP_EXTRAS) $(DEFS) -D_YAP_NOT_INSTALLED_=1 -I$(srcdir) -I../../../.. -I$(srcdir)/../../../../include -g -O0 -Wextra - - -# -# -# You shouldn't need to change what follows. -# -INSTALL=/usr/bin/install -c -INSTALL_DATA=${INSTALL} -m 644 -INSTALL_PROGRAM=${INSTALL} -SHELL=/bin/sh -RANLIB=ranlib -srcdir=. -SO=so -#4.1VPATH=.:./OPTYap -CWD=$(PWD) - - -HEADERS = \ - $(srcdir)/GraphicalModel.h \ - $(srcdir)/BayesNet.h \ - $(srcdir)/BayesNode.h \ - $(srcdir)/ElimGraph.h \ - $(srcdir)/FactorGraph.h \ - $(srcdir)/Factor.h \ - $(srcdir)/CFactorGraph.h \ - $(srcdir)/ConstraintTree.h \ - $(srcdir)/Solver.h \ - $(srcdir)/VarElimSolver.h \ - $(srcdir)/BnBpSolver.h \ - $(srcdir)/FgBpSolver.h \ - $(srcdir)/CbpSolver.h \ - $(srcdir)/FoveSolver.h \ - $(srcdir)/VarNode.h \ - $(srcdir)/Indexer.h \ - $(srcdir)/Parfactor.h \ - $(srcdir)/ProbFormula.h \ - $(srcdir)/Histogram.h \ - $(srcdir)/ParfactorList.h \ - $(srcdir)/LiftedUtils.h \ - $(srcdir)/TinySet.h \ - $(srcdir)/Util.h \ - $(srcdir)/Horus.h \ - $(srcdir)/xmlParser/xmlParser.h - -CPP_SOURCES = \ - $(srcdir)/BayesNet.cpp \ - $(srcdir)/BayesNode.cpp \ - $(srcdir)/ElimGraph.cpp \ - $(srcdir)/FactorGraph.cpp \ - $(srcdir)/Factor.cpp \ - $(srcdir)/CFactorGraph.cpp \ - $(srcdir)/ConstraintTree.cpp \ - $(srcdir)/VarNode.cpp \ - $(srcdir)/Solver.cpp \ - $(srcdir)/VarElimSolver.cpp \ - $(srcdir)/BnBpSolver.cpp \ - $(srcdir)/FgBpSolver.cpp \ - $(srcdir)/CbpSolver.cpp \ - $(srcdir)/FoveSolver.cpp \ - $(srcdir)/Parfactor.cpp \ - $(srcdir)/ProbFormula.cpp \ - $(srcdir)/Histogram.cpp \ - $(srcdir)/ParfactorList.cpp \ - $(srcdir)/LiftedUtils.cpp \ - $(srcdir)/Util.cpp \ - $(srcdir)/HorusYap.cpp \ - $(srcdir)/HorusCli.cpp \ - $(srcdir)/xmlParser/xmlParser.cpp - -OBJS = \ - BayesNet.o \ - BayesNode.o \ - ElimGraph.o \ - FactorGraph.o \ - Factor.o \ - CFactorGraph.o \ - ConstraintTree.o \ - VarNode.o \ - Solver.o \ - VarElimSolver.o \ - BnBpSolver.o \ - FgBpSolver.o \ - CbpSolver.o \ - FoveSolver.o \ - Parfactor.o \ - ProbFormula.o \ - Histogram.o \ - ParfactorList.o \ - LiftedUtils.o \ - Util.o \ - HorusYap.o - -HCLI_OBJS = \ - BayesNet.o \ - BayesNode.o \ - ElimGraph.o \ - FactorGraph.o \ - Factor.o \ - CFactorGraph.o \ - ConstraintTree.o \ - VarNode.o \ - Solver.o \ - VarElimSolver.o \ - BnBpSolver.o \ - FgBpSolver.o \ - CbpSolver.o \ - FoveSolver.o \ - Parfactor.o \ - ProbFormula.o \ - Histogram.o \ - ParfactorList.o \ - LiftedUtils.o \ - Util.o \ - xmlParser/xmlParser.o \ - HorusCli.o - -SOBJS=horus.so - - -all: $(SOBJS) hcli - -# default rule -%.o : $(srcdir)/%.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - - -xmlParser/xmlParser.o : $(srcdir)/xmlParser/xmlParser.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - - -horus.so: $(OBJS) - g++ -shared -export-dynamic -o horus.so $(OBJS) -Wl,-R,$(YAPLIBDIR) -Wl,-R,$(LIBDIR) - - -hcli: $(HCLI_OBJS) - $(CXX) -o hcli $(HCLI_OBJS) - - -install: all - $(INSTALL_PROGRAM) $(SOBJS) $(DESTDIR) $(YAPLIBDIR) - - -clean: - rm -f *.o *~ $(OBJS) $(SOBJS) *.BAK hcli xmlParser/*.o - - -erase_dots: - rm -f *.dot *.png - - -depend: $(HEADERS) $(CPP_SOURCES) - -@if test "$(GCC)" = yes; then\ - $(CC) -std=c++0x -MM -MG $(CFLAGS) -I$(srcdir) -I$(srcdir)/../../../../include -I$(srcdir)/../../../../H $(CPP_SOURCES) >> Makefile;\ - else\ - makedepend -f - -- $(CFLAGS) -I$(srcdir)/../../../../H -I$(srcdir)/../../../../include -- $(CPP_SOURCES) |\ - sed 's|.*/\([^:]*\):|\1:|' >> Makefile ;\ - fi - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -BayesNet.o: BayesNet.cpp xmlParser/xmlParser.h BayesNet.h \ - GraphicalModel.h VarNode.h Horus.h BayesNode.h Util.h -BayesNode.o: BayesNode.cpp BayesNode.h VarNode.h Horus.h -ElimGraph.o: ElimGraph.cpp ElimGraph.h FactorGraph.h GraphicalModel.h \ - VarNode.h Horus.h Factor.h Util.h BayesNet.h BayesNode.h -FactorGraph.o: FactorGraph.cpp FactorGraph.h GraphicalModel.h VarNode.h \ - Horus.h Factor.h Util.h BayesNet.h BayesNode.h -Factor.o: Factor.cpp Factor.h VarNode.h Horus.h Util.h Indexer.h -CFactorGraph.o: CFactorGraph.cpp CFactorGraph.h FactorGraph.h \ - GraphicalModel.h VarNode.h Horus.h Factor.h Util.h -ConstraintTree.o: ConstraintTree.cpp ConstraintTree.h TinySet.h \ - LiftedUtils.h Util.h Horus.h -VarNode.o: VarNode.cpp VarNode.h Horus.h GraphicalModel.h -Solver.o: Solver.cpp Solver.h GraphicalModel.h VarNode.h Horus.h Util.h -VarElimSolver.o: VarElimSolver.cpp VarElimSolver.h Solver.h \ - GraphicalModel.h VarNode.h Horus.h FactorGraph.h Factor.h Util.h \ - BayesNet.h BayesNode.h ElimGraph.h -BnBpSolver.o: BnBpSolver.cpp BnBpSolver.h Solver.h GraphicalModel.h \ - VarNode.h Horus.h BayesNet.h BayesNode.h Util.h Indexer.h -FgBpSolver.o: FgBpSolver.cpp FgBpSolver.h Solver.h GraphicalModel.h \ - VarNode.h Horus.h Factor.h Util.h FactorGraph.h Indexer.h -CbpSolver.o: CbpSolver.cpp CbpSolver.h FgBpSolver.h Solver.h \ - GraphicalModel.h VarNode.h Horus.h Factor.h Util.h FactorGraph.h \ - CFactorGraph.h -FoveSolver.o: FoveSolver.cpp FoveSolver.h ParfactorList.h Parfactor.h \ - ProbFormula.h ConstraintTree.h TinySet.h LiftedUtils.h Util.h Horus.h \ - Histogram.h -Parfactor.o: Parfactor.cpp Parfactor.h ProbFormula.h ConstraintTree.h \ - TinySet.h LiftedUtils.h Util.h Horus.h Histogram.h Indexer.h VarNode.h -ProbFormula.o: ProbFormula.cpp ProbFormula.h ConstraintTree.h TinySet.h \ - LiftedUtils.h Util.h Horus.h -Histogram.o: Histogram.cpp Histogram.h Util.h Horus.h -ParfactorList.o: ParfactorList.cpp ParfactorList.h Parfactor.h \ - ProbFormula.h ConstraintTree.h TinySet.h LiftedUtils.h Util.h Horus.h -LiftedUtils.o: LiftedUtils.cpp LiftedUtils.h TinySet.h Util.h Horus.h \ - ConstraintTree.h -Util.o: Util.cpp Util.h Horus.h Indexer.h VarNode.h GraphicalModel.h -HorusYap.o: HorusYap.cpp ../../../../include/YapInterface.h \ - ../../../../include/yap_structs.h ParfactorList.h Parfactor.h \ - ProbFormula.h ConstraintTree.h TinySet.h LiftedUtils.h Util.h Horus.h \ - BayesNet.h GraphicalModel.h VarNode.h BayesNode.h FactorGraph.h Factor.h \ - FoveSolver.h VarElimSolver.h Solver.h BnBpSolver.h FgBpSolver.h \ - CbpSolver.h CFactorGraph.h ElimGraph.h -HorusCli.o: HorusCli.cpp BayesNet.h GraphicalModel.h VarNode.h Horus.h \ - BayesNode.h FactorGraph.h Factor.h Util.h VarElimSolver.h Solver.h \ - BnBpSolver.h FgBpSolver.h CbpSolver.h CFactorGraph.h -xmlParser.o: xmlParser/xmlParser.cpp xmlParser/xmlParser.h diff --git a/packages/CLPBN/clpbn/bp/benchmarks/city/ignore.cbp.log b/packages/CLPBN/clpbn/bp/benchmarks/city/ignore.cbp.log deleted file mode 100644 index d24e7552a..000000000 --- a/packages/CLPBN/clpbn/bp/benchmarks/city/ignore.cbp.log +++ /dev/null @@ -1,124 +0,0 @@ -YAP 6.3.2 (i686-linux): Sex Mar 23 14:21:24 WET 2012 - % consulting /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/town_3.yap... - % reconsulting /home/tiago/share/Yap/clpbn.yap... - % reconsulting /home/tiago/share/Yap/atts.yap... - % reconsulting /home/tiago/share/Yap/lists.yap... - % reconsulting /home/tiago/share/Yap/error.pl... - % reconsulted /home/tiago/share/Yap/error.pl in module error, 4 msec 31312 bytes - % reconsulted /home/tiago/share/Yap/lists.yap in module lists, 8 msec 73816 bytes - % reconsulted /home/tiago/share/Yap/atts.yap in module attributes, 8 msec 99072 bytes - % reconsulting /home/tiago/share/Yap/terms.yap... - % reconsulted /home/tiago/share/Yap/terms.yap in module terms, 0 msec 2016 bytes - % reconsulting /home/tiago/share/Yap/clpbn/ve.yap... - % reconsulting /home/tiago/share/Yap/ordsets.yap... - % reconsulted /home/tiago/share/Yap/ordsets.yap in module ordsets, 0 msec 30264 bytes - % reconsulting /home/tiago/share/Yap/clpbn/xbif.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulting /home/tiago/share/Yap/matrix.yap... - % reconsulted /home/tiago/share/Yap/matrix.yap in module matrix, 0 msec 22232 bytes - % reconsulting /home/tiago/share/Yap/clpbn/matrix_cpt_utils.yap... - % reconsulted /home/tiago/share/Yap/clpbn/matrix_cpt_utils.yap in module clpbn_matrix_utils, 4 msec 39456 bytes - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module xbif, 8 msec 110696 bytes - % reconsulted /home/tiago/share/Yap/clpbn/xbif.yap in module xbif, 8 msec 123296 bytes - % reconsulting /home/tiago/share/Yap/clpbn/graphviz.yap... - % reconsulted /home/tiago/share/Yap/clpbn/graphviz.yap in module clpbn_gviz, 0 msec 10920 bytes - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_ve, 4 msec 38888 bytes - % reconsulting /home/tiago/share/Yap/clpbn/utils.yap... - % reconsulted /home/tiago/share/Yap/clpbn/utils.yap in module clpbn_utils, 4 msec 15784 bytes - % reconsulting /home/tiago/share/Yap/clpbn/display.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_display, 4 msec 39392 bytes - % reconsulted /home/tiago/share/Yap/clpbn/display.yap in module clpbn_display, 4 msec 52016 bytes - % reconsulting /home/tiago/share/Yap/clpbn/connected.yap... - % reconsulting /home/tiago/share/Yap/dgraphs.yap... - % reconsulting /home/tiago/share/Yap/rbtrees.yap... - % reconsulted /home/tiago/share/Yap/rbtrees.yap in module rbtrees, 8 msec 130768 bytes - % reconsulting /home/tiago/share/Yap/wdgraphs.yap... - % reconsulting /home/tiago/share/Yap/heaps.yap... - % reconsulted /home/tiago/share/Yap/heaps.yap in module heaps, 0 msec 16696 bytes - % reconsulted /home/tiago/share/Yap/wdgraphs.yap in module wdgraphs, 4 msec 82176 bytes - % reconsulted /home/tiago/share/Yap/dgraphs.yap in module dgraphs, 20 msec 276632 bytes - % reconsulted /home/tiago/share/Yap/clpbn/connected.yap in module clpbn_connected, 24 msec 301216 bytes - % reconsulting /home/tiago/share/Yap/clpbn/aggregates.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_aggregates, 0 msec 39168 bytes - % reconsulted /home/tiago/share/Yap/clpbn/aggregates.yap in module clpbn_aggregates, 4 msec 78560 bytes - % reconsulted /home/tiago/share/Yap/clpbn/ve.yap in module clpbn_ve, 52 msec 689720 bytes - % reconsulting /home/tiago/share/Yap/clpbn/bp.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_bp, 4 msec 39272 bytes - % reconsulting /home/tiago/share/Yap/charsio.yap... - % reconsulted /home/tiago/share/Yap/charsio.yap in module charsio, 0 msec 13088 bytes - % reconsulting /home/tiago/share/Yap/clpbn/horus.yap... - % reconsulted /home/tiago/share/Yap/clpbn/horus.yap in module clpbn_horus, 4 msec 9304 bytes - % reconsulted /home/tiago/share/Yap/clpbn/bp.yap in module clpbn_bp, 8 msec 93888 bytes - % reconsulting /home/tiago/share/Yap/clpbn/fove.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_fove, 4 msec 39136 bytes - % reconsulting /home/tiago/share/Yap/pfl.yap... - ERROR!! (/home/tiago/share/Yap/pfl.yap:31). - EXISTENCE ERROR- procedure set_pfl_flag/2 is undefined, called from context prolog:$system_catch/4 - Goal was pfl:set_pfl_flag(use_factors,on) - ERROR!! (/home/tiago/share/Yap/pfl.yap:33). - EXISTENCE ERROR- procedure pfl_not_clpbn/0 is undefined, called from context prolog:$system_catch/4 - Goal was pfl:pfl_not_clpbn - % reconsulted /home/tiago/share/Yap/pfl.yap in module pfl, 0 msec 22656 bytes - % reconsulted /home/tiago/share/Yap/clpbn/fove.yap in module clpbn_fove, 8 msec 80616 bytes - % reconsulting /home/tiago/share/Yap/clpbn/jt.yap... - % reconsulting /home/tiago/share/Yap/undgraphs.yap... - % reconsulting /home/tiago/share/Yap/wundgraphs.yap... - % reconsulted /home/tiago/share/Yap/wundgraphs.yap in module wundgraphs, 0 msec 37888 bytes - % reconsulted /home/tiago/share/Yap/undgraphs.yap in module undgraphs, 0 msec 66592 bytes - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module jt, 4 msec 38616 bytes - % reconsulted /home/tiago/share/Yap/clpbn/jt.yap in module jt, 12 msec 182952 bytes - % reconsulting /home/tiago/share/Yap/clpbn/bdd.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_bdd, 4 msec 39384 bytes - ERROR!! (/home/tiago/share/Yap/clpbn/bdd.yap:50). - PERMISSION ERROR- use_module(library(bdd)): cannot read from library(bdd) - % reconsulted /home/tiago/share/Yap/clpbn/bdd.yap in module clpbn_bdd, 12 msec 107616 bytes - % reconsulting /home/tiago/share/Yap/clpbn/bnt.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module bnt, 4 msec 39240 bytes - % reconsulting /home/tiago/share/Yap/clpbn/discrete_utils.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module discrete_utils, 4 msec 39104 bytes - % reconsulted /home/tiago/share/Yap/clpbn/discrete_utils.yap in module discrete_utils, 8 msec 59424 bytes - % reconsulting /home/tiago/share/Yap/matlab.yap... -% Warning: (/home/tiago/share/Yap/matlab.yap:31). -% matlab not available - % reconsulted /home/tiago/share/Yap/matlab.yap in module matlab, 0 msec 23616 bytes - % reconsulted /home/tiago/share/Yap/clpbn/bnt.yap in module bnt, 20 msec 181472 bytes - % reconsulting /home/tiago/share/Yap/clpbn/gibbs.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_gibbs, 4 msec 38464 bytes - % reconsulting /home/tiago/share/Yap/clpbn/topsort.yap... - % reconsulted /home/tiago/share/Yap/clpbn/topsort.yap in module topsort, 0 msec 5384 bytes - % reconsulted /home/tiago/share/Yap/clpbn/gibbs.yap in module clpbn_gibbs, 12 msec 117352 bytes - % reconsulting /home/tiago/share/Yap/clpbn/pgrammar.yap... - % reconsulted /home/tiago/share/Yap/clpbn/pgrammar.yap in module clpbn_pgrammar, 0 msec 52936 bytes - % reconsulting /home/tiago/share/Yap/clpbn/graphs.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn2graph, 4 msec 42024 bytes - % reconsulted /home/tiago/share/Yap/clpbn/graphs.yap in module clpbn2graph, 4 msec 47160 bytes - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn, 0 msec 40000 bytes - % reconsulting /home/tiago/share/Yap/clpbn/evidence.yap... - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_evidence, 4 msec 38728 bytes - % reconsulted /home/tiago/share/Yap/clpbn/evidence.yap in module clpbn_evidence, 8 msec 60296 bytes - % reconsulting /home/tiago/share/Yap/clpbn/ground_factors.yap... - % reconsulting /home/tiago/share/Yap/bhash.yap... - % reconsulted /home/tiago/share/Yap/bhash.yap in module b_hash, 0 msec 28256 bytes - % reconsulting /home/tiago/share/Yap/clpbn/dists.yap... - % reconsulted /home/tiago/share/Yap/clpbn/dists.yap in module clpbn_ground_factors, 4 msec 38872 bytes - % reconsulted /home/tiago/share/Yap/clpbn/ground_factors.yap in module clpbn_ground_factors, 8 msec 98440 bytes - % reconsulted /home/tiago/share/Yap/clpbn.yap in module clpbn, 168 msec 1942360 bytes - % reconsulting /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/schema.yap... - % reconsulting /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/tables.yap... - % reconsulted /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/tables.yap in module user, 0 msec 3768 bytes - % reconsulted /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/schema.yap in module user, 4 msec 14344 bytes - % consulted /home/tiago/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/city/town_3.yap in module user, 172 msec 1973368 bytes -yes diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/ignore.results.log b/packages/CLPBN/clpbn/bp/benchmarks/school/ignore.results.log deleted file mode 100644 index 5f65b2022..000000000 --- a/packages/CLPBN/clpbn/bp/benchmarks/school/ignore.results.log +++ /dev/null @@ -1,230 +0,0 @@ -YAP 6.3.2 (x86_64-linux): Qui Mar 29 01:31:18 WEST 2012 -MYDDAS version MYDDAS-0.9.1 - ERROR!! - PERMISSION ERROR- consult(pos:train): cannot read from train - % consulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/sch32.yap... - % reconsulting /home/tgomes/share/Yap/clpbn.yap... - % reconsulting /home/tgomes/share/Yap/atts.yap... - % reconsulting /home/tgomes/share/Yap/lists.yap... - % reconsulting /home/tgomes/share/Yap/error.pl... - % reconsulted /home/tgomes/share/Yap/error.pl in module error, 2 msec 53424 bytes - % reconsulted /home/tgomes/share/Yap/lists.yap in module lists, 4 msec 117168 bytes - % reconsulted /home/tgomes/share/Yap/atts.yap in module attributes, 5 msec 163104 bytes - % reconsulting /home/tgomes/share/Yap/terms.yap... - % reconsulted /home/tgomes/share/Yap/terms.yap in module terms, 0 msec 3312 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/ve.yap... - % reconsulting /home/tgomes/share/Yap/ordsets.yap... - % reconsulted /home/tgomes/share/Yap/ordsets.yap in module ordsets, 1 msec 46688 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/xbif.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/dists.yap... - % reconsulting /home/tgomes/share/Yap/matrix.yap... - % reconsulted /home/tgomes/share/Yap/matrix.yap in module matrix, 0 msec 39104 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/matrix_cpt_utils.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/matrix_cpt_utils.yap in module clpbn_matrix_utils, 2 msec 65616 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/dists.yap in module clpbn_dist, 5 msec 189008 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/xbif.yap in module xbif, 5 msec 209440 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/graphviz.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/graphviz.yap in module clpbn_gviz, 0 msec 14912 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/utils.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/utils.yap in module clpbn_utils, 1 msec 27360 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/display.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/display.yap in module clpbn_display, 1 msec 19312 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/connected.yap... - % reconsulting /home/tgomes/share/Yap/dgraphs.yap... - % reconsulting /home/tgomes/share/Yap/rbtrees.yap... - % reconsulted /home/tgomes/share/Yap/rbtrees.yap in module rbtrees, 6 msec 230208 bytes - % reconsulting /home/tgomes/share/Yap/wdgraphs.yap... - % reconsulting /home/tgomes/share/Yap/heaps.yap... - % reconsulted /home/tgomes/share/Yap/heaps.yap in module heaps, 1 msec 26512 bytes - % reconsulted /home/tgomes/share/Yap/wdgraphs.yap in module wdgraphs, 5 msec 141520 bytes - % reconsulted /home/tgomes/share/Yap/dgraphs.yap in module dgraphs, 13 msec 474800 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/connected.yap in module clpbn_connected, 15 msec 510400 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/aggregates.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/aggregates.yap in module clpbn_aggregates, 2 msec 70864 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/ve.yap in module clpbn_ve, 30 msec 969024 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/bp.yap... - % reconsulting /home/tgomes/share/Yap/charsio.yap... - % reconsulted /home/tgomes/share/Yap/charsio.yap in module charsio, 1 msec 20240 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/horus.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/horus.yap in module clpbn_horus, 1 msec 7744 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/bp.yap in module clpbn_bp, 4 msec 59760 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/fove.yap... - % reconsulting /home/tgomes/share/Yap/pfl.yap... - ERROR!! (/home/tgomes/share/Yap/pfl.yap:31). - EXISTENCE ERROR- procedure set_pfl_flag/2 is undefined, called from context prolog:$system_catch/4 - Goal was pfl:set_pfl_flag(use_factors,on) - ERROR!! (/home/tgomes/share/Yap/pfl.yap:33). - EXISTENCE ERROR- procedure pfl_not_clpbn/0 is undefined, called from context prolog:$system_catch/4 - Goal was pfl:pfl_not_clpbn - % reconsulted /home/tgomes/share/Yap/pfl.yap in module pfl, 2 msec 38176 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/fove.yap in module clpbn_fove, 3 msec 67168 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/jt.yap... - % reconsulting /home/tgomes/share/Yap/undgraphs.yap... - % reconsulting /home/tgomes/share/Yap/wundgraphs.yap... - % reconsulted /home/tgomes/share/Yap/wundgraphs.yap in module wundgraphs, 2 msec 67872 bytes - % reconsulted /home/tgomes/share/Yap/undgraphs.yap in module undgraphs, 4 msec 116624 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/jt.yap in module jt, 10 msec 254144 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/bdd.yap... - % reconsulting /home/tgomes/share/Yap/hacks.yap... - % reconsulted /home/tgomes/share/Yap/hacks.yap in module yap_hacks, 0 msec 8112 bytes - ERROR!! (/home/tgomes/share/Yap/clpbn/bdd.yap:52). - PERMISSION ERROR- use_module(library(bdd)): cannot read from library(bdd) - % reconsulted /home/tgomes/share/Yap/clpbn/bdd.yap in module clpbn_bdd, 6 msec 189952 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/bnt.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/discrete_utils.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/discrete_utils.yap in module discrete_utils, 1 msec 35200 bytes - % reconsulting /home/tgomes/share/Yap/matlab.yap... -% Warning: (/home/tgomes/share/Yap/matlab.yap:31). -% matlab not available - % reconsulted /home/tgomes/share/Yap/matlab.yap in module matlab, 1 msec 42640 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/bnt.yap in module bnt, 6 msec 179408 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/gibbs.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/topsort.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/topsort.yap in module topsort, 0 msec 9328 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/gibbs.yap in module clpbn_gibbs, 4 msec 135264 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/pgrammar.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/pgrammar.yap in module clpbn_pgrammar, 2 msec 90624 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/graphs.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/graphs.yap in module clpbn2graph, 0 msec 15088 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/evidence.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/evidence.yap in module clpbn_evidence, 2 msec 42688 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/ground_factors.yap... - % reconsulting /home/tgomes/share/Yap/bhash.yap... - % reconsulted /home/tgomes/share/Yap/bhash.yap in module b_hash, 1 msec 55600 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/ground_factors.yap in module clpbn_ground_factors, 4 msec 116144 bytes - % reconsulted /home/tgomes/share/Yap/clpbn.yap in module clpbn, 87 msec 2459328 bytes - % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/schema.yap... - % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/tables.yap... - % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/tables.yap in module user, 1 msec 14016 bytes - % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/schema.yap in module user, 2 msec 37168 bytes - % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/school32_data.yap... - % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/school32_data.yap in module user, 14 msec 168240 bytes - % consulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/sch32.yap in module user, 104 msec 2693456 bytes -yes - % reconsulting /home/tgomes/share/Yap/clpbn/learning/em.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/learning/learn_utils.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/table.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/table.yap in module clpbn_table, 3 msec 106128 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/learning/learn_utils.yap in module clpbn_learn_utils, 5 msec 135168 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/learning/em.yap in module clpbn_em, 7 msec 201712 bytes -yes -yes - % consulting /home/tgomes/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/school/missing5.yap... - % consulted /home/tgomes/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/school/missing5.yap in module user, 2 msec 219344 bytes -yes -no -YAP 6.3.2 (x86_64-linux): Qui Mar 29 01:31:18 WEST 2012 -MYDDAS version MYDDAS-0.9.1 - ERROR!! - PERMISSION ERROR- consult(pos:train): cannot read from train - % consulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/sch32.yap... - % reconsulting /home/tgomes/share/Yap/clpbn.yap... - % reconsulting /home/tgomes/share/Yap/atts.yap... - % reconsulting /home/tgomes/share/Yap/lists.yap... - % reconsulting /home/tgomes/share/Yap/error.pl... - % reconsulted /home/tgomes/share/Yap/error.pl in module error, 2 msec 53424 bytes - % reconsulted /home/tgomes/share/Yap/lists.yap in module lists, 4 msec 117168 bytes - % reconsulted /home/tgomes/share/Yap/atts.yap in module attributes, 5 msec 163104 bytes - % reconsulting /home/tgomes/share/Yap/terms.yap... - % reconsulted /home/tgomes/share/Yap/terms.yap in module terms, 0 msec 3312 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/ve.yap... - % reconsulting /home/tgomes/share/Yap/ordsets.yap... - % reconsulted /home/tgomes/share/Yap/ordsets.yap in module ordsets, 1 msec 46688 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/xbif.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/dists.yap... - % reconsulting /home/tgomes/share/Yap/matrix.yap... - % reconsulted /home/tgomes/share/Yap/matrix.yap in module matrix, 0 msec 39104 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/matrix_cpt_utils.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/matrix_cpt_utils.yap in module clpbn_matrix_utils, 1 msec 65616 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/dists.yap in module clpbn_dist, 5 msec 189008 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/xbif.yap in module xbif, 5 msec 209440 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/graphviz.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/graphviz.yap in module clpbn_gviz, 0 msec 14912 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/utils.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/utils.yap in module clpbn_utils, 0 msec 27360 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/display.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/display.yap in module clpbn_display, 1 msec 19312 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/connected.yap... - % reconsulting /home/tgomes/share/Yap/dgraphs.yap... - % reconsulting /home/tgomes/share/Yap/rbtrees.yap... - % reconsulted /home/tgomes/share/Yap/rbtrees.yap in module rbtrees, 6 msec 230208 bytes - % reconsulting /home/tgomes/share/Yap/wdgraphs.yap... - % reconsulting /home/tgomes/share/Yap/heaps.yap... - % reconsulted /home/tgomes/share/Yap/heaps.yap in module heaps, 1 msec 26512 bytes - % reconsulted /home/tgomes/share/Yap/wdgraphs.yap in module wdgraphs, 3 msec 141520 bytes - % reconsulted /home/tgomes/share/Yap/dgraphs.yap in module dgraphs, 12 msec 474800 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/connected.yap in module clpbn_connected, 14 msec 510400 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/aggregates.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/aggregates.yap in module clpbn_aggregates, 2 msec 70864 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/ve.yap in module clpbn_ve, 28 msec 969024 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/bp.yap... - % reconsulting /home/tgomes/share/Yap/charsio.yap... - % reconsulted /home/tgomes/share/Yap/charsio.yap in module charsio, 0 msec 20240 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/horus.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/horus.yap in module clpbn_horus, 1 msec 7744 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/bp.yap in module clpbn_bp, 2 msec 59760 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/fove.yap... - % reconsulting /home/tgomes/share/Yap/pfl.yap... - ERROR!! (/home/tgomes/share/Yap/pfl.yap:31). - EXISTENCE ERROR- procedure set_pfl_flag/2 is undefined, called from context prolog:$system_catch/4 - Goal was pfl:set_pfl_flag(use_factors,on) - ERROR!! (/home/tgomes/share/Yap/pfl.yap:33). - EXISTENCE ERROR- procedure pfl_not_clpbn/0 is undefined, called from context prolog:$system_catch/4 - Goal was pfl:pfl_not_clpbn - % reconsulted /home/tgomes/share/Yap/pfl.yap in module pfl, 1 msec 38176 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/fove.yap in module clpbn_fove, 3 msec 67168 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/jt.yap... - % reconsulting /home/tgomes/share/Yap/undgraphs.yap... - % reconsulting /home/tgomes/share/Yap/wundgraphs.yap... - % reconsulted /home/tgomes/share/Yap/wundgraphs.yap in module wundgraphs, 2 msec 67872 bytes - % reconsulted /home/tgomes/share/Yap/undgraphs.yap in module undgraphs, 3 msec 116624 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/jt.yap in module jt, 9 msec 254144 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/bdd.yap... - % reconsulting /home/tgomes/share/Yap/hacks.yap... - % reconsulted /home/tgomes/share/Yap/hacks.yap in module yap_hacks, 1 msec 8112 bytes - ERROR!! (/home/tgomes/share/Yap/clpbn/bdd.yap:52). - PERMISSION ERROR- use_module(library(bdd)): cannot read from library(bdd) - % reconsulted /home/tgomes/share/Yap/clpbn/bdd.yap in module clpbn_bdd, 5 msec 189952 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/bnt.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/discrete_utils.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/discrete_utils.yap in module discrete_utils, 1 msec 35200 bytes - % reconsulting /home/tgomes/share/Yap/matlab.yap... -% Warning: (/home/tgomes/share/Yap/matlab.yap:31). -% matlab not available - % reconsulted /home/tgomes/share/Yap/matlab.yap in module matlab, 1 msec 42640 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/bnt.yap in module bnt, 8 msec 179408 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/gibbs.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/topsort.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/topsort.yap in module topsort, 0 msec 9328 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/gibbs.yap in module clpbn_gibbs, 6 msec 135264 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/pgrammar.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/pgrammar.yap in module clpbn_pgrammar, 2 msec 90624 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/graphs.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/graphs.yap in module clpbn2graph, 0 msec 15088 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/evidence.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/evidence.yap in module clpbn_evidence, 2 msec 42688 bytes - % reconsulting /home/tgomes/share/Yap/clpbn/ground_factors.yap... - % reconsulting /home/tgomes/share/Yap/bhash.yap... - % reconsulted /home/tgomes/share/Yap/bhash.yap in module b_hash, 2 msec 55600 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/ground_factors.yap in module clpbn_ground_factors, 5 msec 116144 bytes - % reconsulted /home/tgomes/share/Yap/clpbn.yap in module clpbn, 85 msec 2459328 bytes - % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/schema.yap... - % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/tables.yap... - % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/tables.yap in module user, 1 msec 14016 bytes - % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/schema.yap in module user, 2 msec 37168 bytes - % reconsulting /home/tgomes/yap-6.3/packages/CLPBN/examples/School/school32_data.yap... - % reconsulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/school32_data.yap in module user, 14 msec 168240 bytes - % consulted /home/tgomes/yap-6.3/packages/CLPBN/examples/School/sch32.yap in module user, 103 msec 2693456 bytes -yes - % reconsulting /home/tgomes/share/Yap/clpbn/learning/em.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/learning/learn_utils.yap... - % reconsulting /home/tgomes/share/Yap/clpbn/table.yap... - % reconsulted /home/tgomes/share/Yap/clpbn/table.yap in module clpbn_table, 3 msec 106128 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/learning/learn_utils.yap in module clpbn_learn_utils, 6 msec 135168 bytes - % reconsulted /home/tgomes/share/Yap/clpbn/learning/em.yap in module clpbn_em, 10 msec 201712 bytes -yes -yes - % consulting /home/tgomes/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/school/missing10.yap... - % consulted /home/tgomes/yap-6.3/packages/CLPBN/clpbn/bp/benchmarks/school/missing10.yap in module user, 2 msec 219344 bytes -yes -no diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/results.log b/packages/CLPBN/clpbn/bp/benchmarks/school/results.log deleted file mode 100644 index 6113e9ccc..000000000 --- a/packages/CLPBN/clpbn/bp/benchmarks/school/results.log +++ /dev/null @@ -1,5 +0,0 @@ -************************************************************************ -results for solver fg_bp(seq_fixed) -************************************************************************ -real:0:00.17 user:0.13 sys:0.03 -real:0:00.16 user:0.14 sys:0.02 diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/results2.log b/packages/CLPBN/clpbn/bp/benchmarks/school/results2.log deleted file mode 100644 index a62018947..000000000 --- a/packages/CLPBN/clpbn/bp/benchmarks/school/results2.log +++ /dev/null @@ -1,21 +0,0 @@ -************************************************************************ -results for solver hve(min_neighbors) -************************************************************************ -missing5: Lik = -2093.451, real:0:01.67 user:0.44 sys:0.25 -missing10: Lik = -2097.389, real:0:00.90 user:0.66 sys:0.20 -missing20: Lik = -2091.625, real:0:14.76 user:13.98 sys:0.54 -missing30: Lik = -2112.989, real:0:19.22 user:18.30 sys:0.66 -************************************************************************ -results for solver fg_bp(seq_fixed) -************************************************************************ -missing5: Lik = -2093.451, real:0:00.79 user:0.56 sys:0.22 -missing10: Lik = -2097.389, real:0:00.93 user:0.66 sys:0.24 -missing20: Lik = -2091.625, real:0:01.49 user:1.26 sys:0.22 -missing30: Lik = -2112.989, real:0:01.97 user:1.70 sys:0.24 -************************************************************************ -results for solver cbp(seq_fixed) -************************************************************************ -missing5: Lik = -2093.451, real:0:00.82 user:0.55 sys:0.25 -missing10: Lik = -2097.389, real:0:00.98 user:0.73 sys:0.23 -missing20: Lik = -2091.625, real:0:01.66 user:1.40 sys:0.24 -missing30: Lik = -2112.989, real:0:02.18 user:1.83 sys:0.24 diff --git a/packages/CLPBN/clpbn/bp/benchmarks/school/results_good.log b/packages/CLPBN/clpbn/bp/benchmarks/school/results_good.log deleted file mode 100644 index 64ddb9b27..000000000 --- a/packages/CLPBN/clpbn/bp/benchmarks/school/results_good.log +++ /dev/null @@ -1,32 +0,0 @@ -************************************************************************ -results for solver hve(min_neighbors) -************************************************************************ -missing5: Lik = -2093.451, real:0:00.62 user:0.42 sys:0.19 -missing10: Lik = -2097.389, real:0:00.80 user:0.60 sys:0.19 -missing20: Lik = -2091.625, real:0:12.75 user:12.43 sys:0.28 -missing30: Lik = -2112.989, real:0:16.22 user:15.82 sys:0.36 -missing40: Lik = -2079.566, real:0:51.03 user:50.15 sys:0.75 -************************************************************************ -results for solver bn_bp(seq_fixed) -************************************************************************ -missing5: Lik = -2093.451, real:0:01.03 user:0.57 sys:0.22 -missing10: Lik = -2097.389, real:0:01.42 user:1.19 sys:0.23 -missing20: Lik = -2091.625, real:1:16.10 user:75.79 sys:0.24 -missing30: Lik = -2112.989, real:1:57.71 user:117.32 sys:0.30 -missing40: Lik = -2079.566, real:6:44.03 user:403.24 sys:0.49 -************************************************************************ -results for solver fg_bp(seq_fixed) -************************************************************************ -missing5: Lik = -2093.451, real:0:00.85 user:0.54 sys:0.28 -missing10: Lik = -2097.389, real:0:00.92 user:0.64 sys:0.28 -missing20: Lik = -2091.625, real:0:01.33 user:1.05 sys:0.27 -missing30: Lik = -2112.989, real:0:01.65 user:1.35 sys:0.29 -missing40: Lik = -2079.566, real:0:01.92 user:1.57 sys:0.34 -************************************************************************ -results for solver cbp(seq_fixed) -************************************************************************ -missing5: Lik = -2093.451, real:0:00.98 user:0.62 sys:0.32 -missing10: Lik = -2097.389, real:0:01.07 user:0.76 sys:0.31 -missing20: Lik = -2091.625, real:0:01.60 user:1.31 sys:0.29 -missing30: Lik = -2112.989, real:0:01.99 user:1.67 sys:0.32 -missing40: Lik = -2079.566, real:0:02.11 user:1.82 sys:0.29 diff --git a/packages/CLPBN/clpbn/bp/examples/findleaks.yap b/packages/CLPBN/clpbn/bp/examples/findleaks.yap deleted file mode 100644 index 9f4905461..000000000 --- a/packages/CLPBN/clpbn/bp/examples/findleaks.yap +++ /dev/null @@ -1,17 +0,0 @@ - -:- use_module(library(pfl)). - -:- set_clpbn_flag(solver,fove). - -c1(x1). -c1(x2). -c1(x3). - -c2(x2). -c2(x3). -c2(x4). - -markov p::[t,f] ; [0.2, 0.4] ; []. -markov q::[t,f] ; [0.2, 0.4] ; []. -markov s::[t,f] , p::[t,f] ; [0.2, 0.4, 0.5, 0.1] ; []. - From c6128c51e899cb4a6ae2fd5a34c12152a34e0bb6 Mon Sep 17 00:00:00 2001 From: tgomes Date: Sat, 31 Mar 2012 23:59:05 +0100 Subject: [PATCH 3/5] this is a test --- packages/CLPBN/clpbn/bp/TODO | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/CLPBN/clpbn/bp/TODO b/packages/CLPBN/clpbn/bp/TODO index a80571e8e..c74fad44e 100644 --- a/packages/CLPBN/clpbn/bp/TODO +++ b/packages/CLPBN/clpbn/bp/TODO @@ -2,4 +2,3 @@ TODO - add way to calculate combinations and factorials with large numbers - refactor sumOut in parfactor -> is really ugly code - Indexer: start receiving ranges as constant reference - From fd8980642b84cd9ef4a272db550e9a0a88c2ecb1 Mon Sep 17 00:00:00 2001 From: Tiago Gomes Date: Sun, 1 Apr 2012 00:23:03 +0100 Subject: [PATCH 4/5] another test --- packages/CLPBN/clpbn/bp/TODO | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/CLPBN/clpbn/bp/TODO b/packages/CLPBN/clpbn/bp/TODO index c74fad44e..82e9c021f 100644 --- a/packages/CLPBN/clpbn/bp/TODO +++ b/packages/CLPBN/clpbn/bp/TODO @@ -1,4 +1,5 @@ TODO + - add way to calculate combinations and factorials with large numbers - refactor sumOut in parfactor -> is really ugly code - Indexer: start receiving ranges as constant reference From 911b241ad663a911af52babcf5d702c5239b4350 Mon Sep 17 00:00:00 2001 From: Tiago Gomes Date: Tue, 3 Apr 2012 11:58:21 +0100 Subject: [PATCH 5/5] fix align of logical variables --- packages/CLPBN/clpbn/bp/ConstraintTree.cpp | 4 ++++ packages/CLPBN/clpbn/bp/Factor.cpp | 1 - packages/CLPBN/clpbn/bp/Factor.h | 6 ++++++ packages/CLPBN/clpbn/bp/FoveSolver.cpp | 2 +- packages/CLPBN/clpbn/bp/HorusYap.cpp | 21 ++++++++++----------- packages/CLPBN/clpbn/bp/LiftedUtils.cpp | 19 +++++++++++++++++++ packages/CLPBN/clpbn/bp/LiftedUtils.h | 3 +++ packages/CLPBN/clpbn/bp/Parfactor.cpp | 15 ++------------- packages/CLPBN/clpbn/bp/Parfactor.h | 4 +--- packages/CLPBN/clpbn/bp/ParfactorList.cpp | 21 ++++++++++++--------- packages/CLPBN/clpbn/bp/ParfactorList.h | 4 ++-- 11 files changed, 60 insertions(+), 40 deletions(-) diff --git a/packages/CLPBN/clpbn/bp/ConstraintTree.cpp b/packages/CLPBN/clpbn/bp/ConstraintTree.cpp index cf83863df..51f06789c 100644 --- a/packages/CLPBN/clpbn/bp/ConstraintTree.cpp +++ b/packages/CLPBN/clpbn/bp/ConstraintTree.cpp @@ -347,6 +347,10 @@ ConstraintTree::rename (LogVar X_old, LogVar X_new) void ConstraintTree::applySubstitution (const Substitution& theta) { + LogVars discardedLvs = theta.getDiscardedLogVars(); + for (unsigned i = 0; i < discardedLvs.size(); i++) { + remove(discardedLvs[i]); + } for (unsigned i = 0; i < logVars_.size(); i++) { logVars_[i] = theta.newNameFor (logVars_[i]); } diff --git a/packages/CLPBN/clpbn/bp/Factor.cpp b/packages/CLPBN/clpbn/bp/Factor.cpp index 1980c2ade..ee548a47f 100644 --- a/packages/CLPBN/clpbn/bp/Factor.cpp +++ b/packages/CLPBN/clpbn/bp/Factor.cpp @@ -245,7 +245,6 @@ Factor::multiply (Factor& g) return; } TFactor::multiply (g); - cout << "Factor mult called" << endl; } diff --git a/packages/CLPBN/clpbn/bp/Factor.h b/packages/CLPBN/clpbn/bp/Factor.h index 1956eb04a..04a11fdae 100644 --- a/packages/CLPBN/clpbn/bp/Factor.h +++ b/packages/CLPBN/clpbn/bp/Factor.h @@ -62,6 +62,12 @@ class TFactor return args_[idx]; } + T& argument (unsigned idx) + { + assert (idx < args_.size()); + return args_[idx]; + } + unsigned range (unsigned idx) const { assert (idx < ranges_.size()); diff --git a/packages/CLPBN/clpbn/bp/FoveSolver.cpp b/packages/CLPBN/clpbn/bp/FoveSolver.cpp index 854348967..a205596c7 100644 --- a/packages/CLPBN/clpbn/bp/FoveSolver.cpp +++ b/packages/CLPBN/clpbn/bp/FoveSolver.cpp @@ -554,7 +554,7 @@ FoveSolver::runWeakBayesBall (const Grounds& query) for (unsigned i = 0; i < query.size(); i++) { ParfactorList::iterator it = pfList_.begin(); while (it != pfList_.end()) { - int group = (*it)->groupWithGround (query[i]); + int group = (*it)->findGroup (query[i]); if (group != -1) { todo.push (group); done.insert (group); diff --git a/packages/CLPBN/clpbn/bp/HorusYap.cpp b/packages/CLPBN/clpbn/bp/HorusYap.cpp index 6e2f4fd67..83aae4fe3 100644 --- a/packages/CLPBN/clpbn/bp/HorusYap.cpp +++ b/packages/CLPBN/clpbn/bp/HorusYap.cpp @@ -452,7 +452,6 @@ setBayesNetParams (void) int setExtraVarsInfo (void) { - // BayesNet* bn = (BayesNet*) YAP_IntOfTerm (YAP_ARG1); GraphicalModel::clearVariablesInformation(); YAP_Term varsInfoL = YAP_ARG2; while (varsInfoL != YAP_TermNil()) { @@ -583,15 +582,15 @@ freeParfactors (void) extern "C" void init_predicates (void) { - YAP_UserCPredicate ("create_lifted_network", createLiftedNetwork, 3); - YAP_UserCPredicate ("create_ground_network", createGroundNetwork, 2); - YAP_UserCPredicate ("run_lifted_solver", runLiftedSolver, 3); - YAP_UserCPredicate ("run_ground_solver", runGroundSolver, 3); - YAP_UserCPredicate ("set_parfactors_params", setParfactorsParams, 2); - YAP_UserCPredicate ("set_bayes_net_params", setBayesNetParams, 2); - YAP_UserCPredicate ("set_extra_vars_info", setExtraVarsInfo, 2); - YAP_UserCPredicate ("set_horus_flag", setHorusFlag, 2); - YAP_UserCPredicate ("free_parfactors", freeParfactors, 1); - YAP_UserCPredicate ("free_bayesian_network", freeBayesNetwork, 1); + YAP_UserCPredicate ("create_lifted_network", createLiftedNetwork, 3); + YAP_UserCPredicate ("create_ground_network", createGroundNetwork, 2); + YAP_UserCPredicate ("run_lifted_solver", runLiftedSolver, 3); + YAP_UserCPredicate ("run_ground_solver", runGroundSolver, 3); + YAP_UserCPredicate ("set_parfactors_params", setParfactorsParams, 2); + YAP_UserCPredicate ("set_bayes_net_params", setBayesNetParams, 2); + YAP_UserCPredicate ("set_extra_vars_info", setExtraVarsInfo, 2); + YAP_UserCPredicate ("set_horus_flag", setHorusFlag, 2); + YAP_UserCPredicate ("free_parfactors", freeParfactors, 1); + YAP_UserCPredicate ("free_bayesian_network", freeBayesNetwork, 1); } diff --git a/packages/CLPBN/clpbn/bp/LiftedUtils.cpp b/packages/CLPBN/clpbn/bp/LiftedUtils.cpp index 7ab70fd81..6df19b85d 100644 --- a/packages/CLPBN/clpbn/bp/LiftedUtils.cpp +++ b/packages/CLPBN/clpbn/bp/LiftedUtils.cpp @@ -95,6 +95,25 @@ ostream& operator<< (ostream &os, const Ground& gr) +LogVars +Substitution::getDiscardedLogVars (void) const +{ + LogVars discardedLvs; + set doneLvs; + unordered_map::const_iterator it; + it = subs_.begin(); + while (it != subs_.end()) { + if (Util::contains (doneLvs, it->second)) { + discardedLvs.push_back (it->first); + } else { + doneLvs.insert (it->second); + } + it ++; + } + return discardedLvs; +} + + ostream& operator<< (ostream &os, const Substitution& theta) { diff --git a/packages/CLPBN/clpbn/bp/LiftedUtils.h b/packages/CLPBN/clpbn/bp/LiftedUtils.h index 38c540779..a698ca2f4 100644 --- a/packages/CLPBN/clpbn/bp/LiftedUtils.h +++ b/packages/CLPBN/clpbn/bp/LiftedUtils.h @@ -141,10 +141,13 @@ class Substitution return subs_.find (X)->second; } + LogVars getDiscardedLogVars (void) const; + friend ostream& operator<< (ostream &os, const Substitution& theta); private: unordered_map subs_; + }; diff --git a/packages/CLPBN/clpbn/bp/Parfactor.cpp b/packages/CLPBN/clpbn/bp/Parfactor.cpp index 96c5b8f0e..e1e550481 100644 --- a/packages/CLPBN/clpbn/bp/Parfactor.cpp +++ b/packages/CLPBN/clpbn/bp/Parfactor.cpp @@ -191,7 +191,6 @@ Parfactor::multiply (Parfactor& g) { alignAndExponentiate (this, &g); TFactor::multiply (g); - cout << "calling lifted mult" << endl; constr_->join (g.constr(), true); } @@ -377,15 +376,6 @@ Parfactor::absorveEvidence (const ProbFormula& formula, unsigned evidence) -void -Parfactor::setFormulaGroup (const ProbFormula& f, int group) -{ - assert (indexOf (f) != -1); - args_[indexOf (f)].setGroup (group); -} - - - void Parfactor::setNewGroups (void) { @@ -415,7 +405,7 @@ Parfactor::applySubstitution (const Substitution& theta) int -Parfactor::groupWithGround (const Ground& ground) const +Parfactor::findGroup (const Ground& ground) const { int group = -1; for (unsigned i = 0; i < args_.size(); i++) { @@ -436,7 +426,7 @@ Parfactor::groupWithGround (const Ground& ground) const bool Parfactor::containsGround (const Ground& ground) const { - return groupWithGround (ground) != -1; + return findGroup (ground) != -1; } @@ -670,7 +660,6 @@ Parfactor::align ( LogVar freeLogVar = 0; Substitution theta1; Substitution theta2; - const LogVarSet& allLvs1 = g1->logVarSet(); for (unsigned i = 0; i < allLvs1.size(); i++) { theta1.add (allLvs1[i], freeLogVar); diff --git a/packages/CLPBN/clpbn/bp/Parfactor.h b/packages/CLPBN/clpbn/bp/Parfactor.h index c26707aeb..4c206e209 100644 --- a/packages/CLPBN/clpbn/bp/Parfactor.h +++ b/packages/CLPBN/clpbn/bp/Parfactor.h @@ -60,13 +60,11 @@ class Parfactor : public TFactor void absorveEvidence (const ProbFormula&, unsigned); - void setFormulaGroup (const ProbFormula&, int); - void setNewGroups (void); void applySubstitution (const Substitution&); - int groupWithGround (const Ground&) const; + int findGroup (const Ground&) const; bool containsGround (const Ground&) const; diff --git a/packages/CLPBN/clpbn/bp/ParfactorList.cpp b/packages/CLPBN/clpbn/bp/ParfactorList.cpp index abdb29c00..249126a99 100644 --- a/packages/CLPBN/clpbn/bp/ParfactorList.cpp +++ b/packages/CLPBN/clpbn/bp/ParfactorList.cpp @@ -197,8 +197,8 @@ ParfactorList::shatter (Parfactor* g1, Parfactor* g2) for (unsigned i = 0; i < formulas1.size(); i++) { for (unsigned j = 0; j < formulas2.size(); j++) { if (formulas1[i].sameSkeletonAs (formulas2[j])) { - std::pair res - = shatter (formulas1[i], g1, formulas2[j], g2); + std::pair res; + res = shatter (i, g1, j, g2); if (res.first.empty() == false || res.second.empty() == false) { return res; @@ -213,9 +213,11 @@ ParfactorList::shatter (Parfactor* g1, Parfactor* g2) std::pair ParfactorList::shatter ( - ProbFormula& f1, Parfactor* g1, - ProbFormula& f2, Parfactor* g2) + unsigned fIdx1, Parfactor* g1, + unsigned fIdx2, Parfactor* g2) { + ProbFormula& f1 = g1->argument (fIdx1); + ProbFormula& f2 = g2->argument (fIdx2); // cout << endl; // Util::printDashLine(); // cout << "-> SHATTERING (#" << g1 << ", #" << g2 << ")" << endl; @@ -299,8 +301,8 @@ ParfactorList::shatter ( } else { group = ProbFormula::getNewGroup(); } - Parfactors res1 = shatter (g1, f1, commCt1, exclCt1, group); - Parfactors res2 = shatter (g2, f2, commCt2, exclCt2, group); + Parfactors res1 = shatter (g1, fIdx1, commCt1, exclCt1, group); + Parfactors res2 = shatter (g2, fIdx2, commCt2, exclCt2, group); return make_pair (res1, res2); } @@ -309,15 +311,16 @@ ParfactorList::shatter ( Parfactors ParfactorList::shatter ( Parfactor* g, - const ProbFormula& f, + unsigned fIdx, ConstraintTree* commCt, ConstraintTree* exclCt, unsigned commGroup) { + ProbFormula& f = g->argument (fIdx); if (exclCt->empty()) { delete commCt; delete exclCt; - g->setFormulaGroup (f, commGroup); + f.setGroup (commGroup); return { }; } @@ -346,7 +349,7 @@ ParfactorList::shatter ( } else { Parfactor* newPf = new Parfactor (g, commCt); newPf->setNewGroups(); - newPf->setFormulaGroup (f, commGroup); + newPf->argument (fIdx).setGroup (commGroup); result.push_back (newPf); newPf = new Parfactor (g, exclCt); newPf->setNewGroups(); diff --git a/packages/CLPBN/clpbn/bp/ParfactorList.h b/packages/CLPBN/clpbn/bp/ParfactorList.h index e6350a90c..0d4992cfe 100644 --- a/packages/CLPBN/clpbn/bp/ParfactorList.h +++ b/packages/CLPBN/clpbn/bp/ParfactorList.h @@ -67,11 +67,11 @@ class ParfactorList Parfactor*, Parfactor*); std::pair shatter ( - ProbFormula&, Parfactor*, ProbFormula&, Parfactor*); + unsigned, Parfactor*, unsigned, Parfactor*); Parfactors shatter ( Parfactor*, - const ProbFormula&, + unsigned, ConstraintTree*, ConstraintTree*, unsigned);