From ef6bea39fd9f0c90e3bf5f1304781993a3a9b130 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 6 Mar 2020 21:59:17 +0100 Subject: [PATCH 01/34] fuzzer: add instructions --- cnfs/fuzzcheck.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cnfs/fuzzcheck.sh b/cnfs/fuzzcheck.sh index 6bfb9a5..f15765f 100755 --- a/cnfs/fuzzcheck.sh +++ b/cnfs/fuzzcheck.sh @@ -83,7 +83,7 @@ do head="`awk '/p cnf /{print $3, $4}' $cnf`" echo "($SECONDS s) [runcnfuzz] bug-$seed $head with exit code $res" - echo "($SECONDS s) To reproduce, run cnfuzz: ./cnfuzz $seed > reproduce.cnf" + echo "($SECONDS s) To reproduce, run cnfuzz: './cnfuzz $seed > reproduce.cnf' and '$prg reproduce.cnf'" echo $seed >> $log echo "($SECONDS s) out" cat $out From fceaa0f9245550c7a4b689a1464458a8664317fc Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 6 Mar 2020 21:59:26 +0100 Subject: [PATCH 02/34] travis: activate ci script --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4463c33..03e59ad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ sudo: required before_install: - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - sudo apt-get update -q + - sudo apt-get install picosat - sudo apt-get remove gcc g++ - sudo apt-get install g++-7 gcc-7 -y - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7 @@ -13,6 +14,6 @@ before_install: - sudo update-alternatives --install /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-7 60 - sudo update-alternatives --install /usr/bin/x86_64-linux-gnu-gcc x86_64-linux-gnu-gcc /usr/bin/x86_64-linux-gnu-gcc-7 60 --slave /usr/bin/x86_64-linux-gnu-g++ x86_64-linux-gnu-g++ /usr/bin/x86_64-linux-gnu-g++-7 -# run the typical ci checks, for now, compile +# run the typical ci checks, for now, compile, and fuzz-test script: - - make pcassod pcassoRS -j $(nproc) + - ./scripts/ci.sh From f84aa858e7d982b5453c365021772cd0f8206a63 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 20 Oct 2017 22:47:11 +0200 Subject: [PATCH 03/34] lcm: prepare clause class Add flag for LCM, as well as a reverse method. --- core/SolverTypes.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/core/SolverTypes.h b/core/SolverTypes.h index 53fb432..9a376a9 100644 --- a/core/SolverTypes.h +++ b/core/SolverTypes.h @@ -167,13 +167,15 @@ class Clause unsigned has_extra : 1; unsigned reloced : 1; #ifndef PCASSO - unsigned lbd : 24; + unsigned lbd : 23; + unsigned lcm_simplified : 1; unsigned canbedel : 1; unsigned can_subsume : 1; unsigned can_strengthen : 1; unsigned size : 32; #else - unsigned lbd : 20; + unsigned lbd : 19; + unsigned lcm_simplified : 1; unsigned canbedel : 1; unsigned can_subsume : 1; unsigned can_strengthen : 1; @@ -196,6 +198,7 @@ class Clause has_extra = rhs.has_extra; reloced = rhs.reloced; lbd = rhs.lbd; + lcm_simplified = rhs.lcm_simplified; canbedel = rhs.canbedel; can_subsume = rhs.can_subsume; can_strengthen = rhs.can_strengthen; @@ -218,6 +221,7 @@ class Clause has_extra = rhs.has_extra; reloced = rhs.reloced; lbd = rhs.lbd; + lcm_simplified = rhs.lcm_simplified; canbedel = rhs.canbedel; can_subsume = rhs.can_subsume; can_strengthen = rhs.can_strengthen; @@ -252,7 +256,8 @@ class Clause #ifdef CLS_EXTRA_INFO header.extra_info = 0 #endif - header.lbd = 0; + header.lbd = 0; + header.lcm_simplified = 0; header.canbedel = 1; header.can_subsume = 1; header.can_strengthen = 1; @@ -305,6 +310,13 @@ class Clause data[header.size].abs = abstraction; } + bool wasLcmSimplified() const { return header.lcm_simplified; } + void setLcmSimplified() { header.lcm_simplified = 1; } + + /// reverse the order of the literals in the clause. take care when the clause is currently watched! + void reverse() { int i = 0, j = size() - 1; while (i < j) {const Lit tmp = data[i].lit; data[i].lit = data[j].lit; data[j].lit = tmp; ++i; --j;} } + + int size() const { return header.size; } void shrink(int i) { assert(i <= size()); if (header.has_extra) data[header.size - i] = data[header.size]; header.size -= i; } void pop() { shrink(1); } From 07f0c2439b0cc4912e18fc49cc6b86837e0630e7 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Sat, 21 Oct 2017 01:09:53 +0200 Subject: [PATCH 04/34] lcm: port implementation from Riss The current version compiles, but does not respect the PT changes yet. The implemented parameters should be functional. By default, LCM is not active. --- pcasso-src/SolverPT.cc | 404 ++++++++++++++++++++++++++++++++++++++--- pcasso-src/SolverPT.h | 23 +++ 2 files changed, 401 insertions(+), 26 deletions(-) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index 59001c4..488dcd3 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -47,6 +47,14 @@ static IntOption cleaning_delay("SPLITTER", "clean-delay", "Cleaning delay for static IntOption opt_shared_clean_delay("SPLITTER + SHARING", "shclean-delay", "Keep the shared clause for a certain number of cleanings\n", 1, IntRange(0, 1)); static BoolOption opt_lbd_minimization("SPLITTER + SHARING", "lbd-min", "Enable lbd minimization.\n", true); static BoolOption opt_simulate_portfolio("SPLITTER + SHARING", "sim-port", "Enable Simulation of Portfolio.\n", true); + +static BoolOption opt_lcm("SPLITTER + LCM", "lcm", "perform LCM", false); +static IntOption opt_lcm_style("SPLITTER + LCM", "lcm-style", "Use vivifaction for learned clauses (1=plain vivi, 2=vivi+analyze, 3=vivi+unionanalyze, 4+reverse, >4 X-4, and-reverse)", 18, IntRange(0, 24)); +static IntOption opt_lcm_freq("SPLITTER + LCM", "lcm-freq", "Use LCM after every X reduceDB calls", 2, IntRange(1, INT32_MAX)); +static IntOption opt_lcm_min_size("SPLITTER + LCM", "lcm-min-size", "Apply LCM only to clauses that have at least X literals", 1, IntRange(1, INT32_MAX)); +static BoolOption opt_lcm_full("SPLITTER + LCM", "lcm-full", "at all restarts, always on all learned clauses #NoAutoT", false); +static IntOption opt_lcm_dbg("SPLITTER + LCM", "lcm-dbg", "debug LCM computation #NoAutoT", 0, IntRange(0, 5)); + //================================================================================================= SolverPT::SolverPT(CoreConfig& config) : @@ -101,6 +109,9 @@ SolverPT::SolverPT(CoreConfig& config) : , n_acquired_clausesID(0) , n_tot_forced_restarts_ID(0) , n_tot_reduceDB_calls_ID(0) + // LCM + , performSimplificationNext(0) + , nbLCM(0), nbLitsLCM(0), nbConflLits(0), nbLCMattempts(0), nbLCMsuccess(0), npLCMimpDrop(0), nbRound1Lits(0), nbRound2Lits(0), nbLCMfalsified(0) { // Davide> Statistics if (!disable_stats) { @@ -1016,6 +1027,358 @@ CRef SolverPT::propagate() return confl; } +struct reduceDB_lt { + ClauseAllocator& ca; + reduceDB_lt(ClauseAllocator& ca_) : ca(ca_) {} + bool operator()(CRef x, CRef y) + { + + // Main criteria... Like in MiniSat we keep all binary clauses + if (ca[x].size() > 2 && ca[y].size() == 2) { return 1; } + + if (ca[y].size() > 2 && ca[x].size() == 2) { return 0; } + if (ca[x].size() == 2 && ca[y].size() == 2) { return 0; } + + // Second one based on literal block distance + if (ca[x].lbd() > ca[y].lbd()) { return 1; } + if (ca[x].lbd() < ca[y].lbd()) { return 0; } + + + // Finally we can use old activity or size, we choose the last one + return ca[x].activity() < ca[y].activity(); + //return x->size() < y->size(); + + //return ca[x].size() > 2 && (ca[y].size() == 2 || ca[x].activity() < ca[y].activity()); } + } +}; + +int SolverPT::simplifyLearntLCM(Clause& c, int vivificationConfig) +{ + int roundLits[3]; + int round = 0; + roundLits[0] = c.size(); + while (vivificationConfig > 0 && c.size() > 1) { + bool minimized = false; + round ++; + const int roundViviConfig = vivificationConfig % 5; + vivificationConfig /= 5; + + assert(round <= 2 && "have at most 2 rounds"); + // if this round should not perform any simplification, jump to the next round (and work with reversed clause) + if (roundViviConfig == 0) {roundLits[round] = c.size(); continue; } + + if (round == 2) { // reverse clause in second iteration! + c.reverse(); + } + + Lit impliedLit = lit_Undef; // literal that is implied by the negation of some other literals + int i = 0, j = 0, maxLevel = 0; + CRef confl = CRef_Undef; + + assert(decisionLevel() == 0 && "LCM has to be performed on level 0"); + const int inputSize = c.size(); + for (i = 0, j = 0; i < c.size(); i++) { + if (value(c[i]) == l_Undef) { + newDecisionLevel(); + uncheckedEnqueue(~c[i]); + c[j++] = c[i]; + confl = propagate(); + if (confl != CRef_Undef) { + // F \bigvee \neg l_1 \land ... \land \neg l_{i-1} -> \bot \equiv F \land (l_1 \lor ... \lor l_{i-1}) + // or something similar, based on conflict analysis with the clause we just got as conflict + break; + } + } else if (value(c[i]) == l_True) { + if (roundViviConfig > 2) { // <- enable only in case conflict resultion is performed below. the actual break does not work! + impliedLit = c[i]; // store to be able to use it for conflict analysis afterwards + c[j++] = c[i]; // not necessary, as will be resolved out later anyways (or use as basis for conflict)? + + // F \bigvee \neg l_1 \land ... \land \neg l_{i-1} -> \l_i \equiv + // F \bigvee \neg l_1 \land ... \land \neg l_{i-1} \land \neg l_i -> \bot, with confl = reason(l_i) + confl = reason(var(c[i])); + assert((confl != CRef_Undef) && "the assignment to the literal has to have a reason"); + break; + } else { + // keep the satisfied literal, because moving it away can fail! + c[j++] = c[i]; + break; // this part until c[j] is subsumed by other a combination of other clauses in the formula (seems to be hyper-resolution to get the subsumed clause) + } + } else { + assert(value(c[i]) == l_False && "there are only 3 case for a truth assignment"); + // F \land (-l1,...,-lk} -> {-li} + } + } + + c.shrink(c.size() - j); + + if (roundViviConfig > 1 && (confl != CRef_Undef)) { + conflict.clear(); // use the conflict vector, as it's a class member. make sure to clear it afterwards again! + analyzeFinal(confl, conflict, impliedLit); + if (impliedLit != lit_Undef) { + conflict.push(impliedLit); // add the final literal of the clause here, has to be done after analyzeFinal! + } + if (conflict.size() < c.size()) { + nbConflLits += c.size() - conflict.size(); + assert(c.size() >= conflict.size() && "shrink should not increase size"); + c.shrink(c.size() - conflict.size()); // shrink clause! + for (int k = 0; k < c.size(); ++ k) { c[k] = conflict[k]; } // and actually use the literals of conflict + } else if (false && impliedLit != lit_Undef && c.last() == impliedLit && j == c.size()) { // this is no valid operation, unless we actually did not shrink c above! + // in case analysis did not result in removing a literal from c, at least drop the impliedLit as in usual vivification + assert(c[j - 1] == impliedLit && c.size() >= j && "until here, the position of impliedLit should be fixed"); + c[j - 1] = c.last(); // drop the literal "impliedLit" from the clause + c.pop(); + npLCMimpDrop ++; + } + conflict.clear(); + + // analyzeFinal will place the literals in reverse order in c. Make sure we can convert this back + if (roundViviConfig > 3) { c.reverse(); } + } + + if (c.size() < inputSize) { + permDiff.nextStep(); + unsigned int nblevels = 0; + for (int i = 0; i < c.size(); i++) { + int l = level(var(c[i])); + if (! permDiff.isCurrentStep(l)) { + permDiff.setCurrentStep(l); + nblevels++; + } + } + + if (nblevels < c.lbd()) { + c.setLBD(nblevels); + } + minimized = true; + } + cancelUntil(0); + + if (round == 2) { // reverse clause in second iteration! + c.reverse(); + } + roundLits[round] = c.size(); + + if (!minimized) { break; } // no need for a second iteration if no minimization was achieved in the first iteration + } + + nbRound1Lits += roundLits[0] - roundLits[1]; + if (round > 1) { nbRound2Lits += roundLits[1] - roundLits[2]; } + + return c.lbd(); +} + +bool SolverPT::simplifyClause_viviLCM(const CRef cr, int LCMconfig, bool fullySimplify) +{ + assert(qhead == trail.size() && "make sure, we are working on level 0 and the PROOF is up to date!"); + Clause& c = ca[cr]; + bool keepClause = false; + bool false_lit = false, sat = false; + // in the first 2 positions, there should not be a falsified literal after propagation! + int i = 2, j = 2; + + if (c.size() > 2) { + if (value(c[0]) == l_True || value(c[1]) == l_True) { + sat = true; + } else { + for (i = 2; i < c.size(); i++) { + if (value(c[i]) == l_True) { + sat = true; + break; + } + } + if (!sat) { + for (i = 2; i < c.size(); i++) { + if (value(c[i]) != l_False) { + c[j++] = c[i]; // TODO FIXME: has to end up in drat proof! + if (value(c[i]) == l_True) { + sat = true; + break; + } + } else { + ; + } + } + nbLCMfalsified += (i - j); + c.shrink(i - j); + } + } + // a clause might become satisfiable during the analysis. remove such a clause! + if (sat) { + removeClause(cr, true); // this will also delete the clause from the DRAT proof! + return false; // drop the clause! + } + } else { + if (value(c[0]) == l_True || value(c[1]) == l_True) { + return true; // keep satisfied binary clauses, and do not continue with these clauses + } + } + + if (!opt_lcm_full && !fullySimplify) { // use efficiency filters? + // if clause is in first half of sorted learned clauses, or has been processed in the past, ignore it + return true; + } + + int oldSize = c.size(); + detachClause(cr, true); // expensive, hence perform as late as possible + + nbLCMattempts ++; + // simplifying the clause does not change it's memory location, hence c is still valid afterwards + int newLBD = simplifyLearntLCM(c, LCMconfig); + nbLitsLCM += oldSize - c.size(); + nbLCMsuccess = oldSize > c.size() ? nbLCMsuccess + 1 : nbLCMsuccess; + + // add clause back to the data structures + if (c.size() > 1) { + attachClause(cr); + keepClause = true; + + if (c.learnt() && c.size() < oldSize) { // re-calculate LBD for the clause, if it became smaller + if (newLBD < c.lbd()) { + c.setLBD(newLBD); + } + } + + c.setLcmSimplified(); + } else if (c.size() == 1) { + uncheckedEnqueue(c[0]); // this clause is already added to the proof + int breforeTrail = trail.size(); + int beforePropTopLevelLits = trail.size(); + if (propagate() != CRef_Undef) { + ok = false; + return false; + } + // free clause, as it's satisfiable now + c.mark(1); + ca.free(cr); + } else { + ok = false; + } + return keepClause; +} + +bool SolverPT::simplifyLCM() +{ + /* some notes on theory: + imply a negative literal: + + f, (l1 lm) + f, -l1, ..., -le -> -lf + f, -l1, ..., -le, -lg ... -lm -> -lf + + f, -l1, ..., -le, -lg ... -lm, lf -> \bot + f -> l1, ...,le, -lf, lg, ... lm + f -> C \setminus lf + f,C \equiv f, C \setminus lf + + imply a positive literal: + + f, (l1 lm) + f, -l1, ..., -le -> lf + f, -l1, ..., -le, -lf -> lf \land -lf -> \bot + f -> (l1, ..., le, lf) + f,C \equiv f, (l1, ..., le, lf) -> subsume! == shrink case + + conflict: + + f,D, -l1, ..., -lf -> -D + + f,D \equiv f,D,(l1,...,lf), i.e. f,D \to (l1,...,lf)? (yes, see the above) + + f, -l1, ..., -le, -lf -> \bot + f -> l1, ...,le, -lf, lg, ... lm + f -> C \setminus lf + * */ + + assert(qhead == trail.size() && "make sure we are in a good state before LCM"); + + // make sure we do not miss something + if (!ok || propagate() != CRef_Undef) { + return ok = false; + } + + MethodClock lcmMethodClock(LCMTime); // measure the time for the remainder of this function in the given clock + + nbLCM ++; + assert(decisionLevel() == 0 && "run learned clause minimization only on level 0"); + removeSatisfied(clauses); // TODO: test whether actually necessary when being executed "right after" reduceDB() + watches.cleanAll(); + + int ci, cj; + for (ci = 0, cj = 0; ci < learnts.size(); ci++) { + const CRef cr = learnts[ci]; + Clause& c = ca[cr]; + if (c.mark()) { continue; } // this clause can be dropped + if (c.size() < opt_lcm_min_size) { + // do not look at clauses that have less than the given amount of literals + learnts[cj++] = learnts[ci]; + continue; + } + + bool keep = simplifyClause_viviLCM(cr, opt_lcm_style, ! c.wasLcmSimplified() && ci >= learnts.size() / 2); // only run full LCM on new good clauses + if (keep) { learnts[cj++] = learnts[ci]; } + if (!ok) { break; } // stop in case we found an empty clause + } + // fill gaps unneeded space + learnts.shrink(ci - cj); + + + checkGarbage(); + return ok; +} + + +void SolverPT::analyzeFinal(const CRef& conflictingClause, vec< Lit >& out_conflict, const Lit otherLit) +{ + out_conflict.clear(); + + if (decisionLevel() == 0) { + return; + } + + + // saw all literals of this clause (if they are not top level) + const Clause& c = ca[conflictingClause]; + for (int i = 0 ; i < c.size(); ++ i) { + if (level(var(c[i])) > 0) { + varFlags[var(c[i])].seen = 1; + } + } + + + const int minIndex = trail_lim.size() < 1 ? 0 : trail_lim[0]; + for (int i = trail.size() - 1; i >= minIndex; i--) { + Var x = var(trail[i]); + if (varFlags[x].seen) { + + { + if (reason(x) == CRef_Undef) { + assert(level(x) > 0); + out_conflict.push(~trail[i]); + } else { + Clause& c = ca[ reason(x) ]; + // Bug in case of assumptions due to special data structures for Binary. + // Many thanks to Sam Bayless (sbayless@cs.ubc.ca) for discover this bug. + for (int j = ((c.size() == 2) ? 0 : 1); j < c.size(); j++) + if (level(var(c[j])) > 0) { + varFlags[var(c[j])].seen = 1; + } + } + } + varFlags[x].seen = 0; + } + } + + { + // saw all literals of this clause (if they are not top level) + const Clause& c = ca[conflictingClause]; + for (int i = 0 ; i < c.size(); ++ i) { + if (level(var(c[i])) > 0) { + varFlags[var(c[i])].seen = 0; + } + } + } +} + /*_________________________________________________________________________________________________ | | search : (nof_conflicts : int) (params : const SearchParams&) -> [lbool] @@ -1052,6 +1415,18 @@ lbool SolverPT::search(int nof_conflicts) if (!ok) { return l_False; } } + // simplify + if (opt_lcm_full || (opt_lcm_style > 0 && performSimplificationNext % opt_lcm_freq == 0)) { + // from time to time we have to interfere with partial restarts, but LCM overrules, to be able to run once in a while + if (decisionLevel() > 0) { + cancelUntil(0); + } + performSimplificationNext = 0; + sort(learnts, reduceDB_lt(ca)); + if (!simplifyLCM()) { return l_False; } + performSimplificationNext = 0; + } + for (;;) { if (asynch_interrupt) { return l_Undef; } // Davide PTLevel = 0; // Davide> if I learn an unsafe clause I have to tag it @@ -1165,6 +1540,8 @@ lbool SolverPT::search(int nof_conflicts) curRestart = (conflicts / nbclausesbeforereduce) + 1; reduceDB(); nbclausesbeforereduce += incReduceDB; + + if (opt_lcm) { performSimplificationNext = 1; } // in case LCM is activated, after clause reduction, performing one more analysis of clauses is ok } Lit next = lit_Undef; @@ -1175,7 +1552,7 @@ lbool SolverPT::search(int nof_conflicts) // Dummy decision level: newDecisionLevel(); } else if (value(p) == l_False) { - analyzeFinal(~p, conflict); + Solver::analyzeFinal(~p, conflict); return l_False; } else { next = p; @@ -1731,31 +2108,6 @@ void SolverPT::unsatRestartStrategy() } } -struct reduceDB_lt { - ClauseAllocator& ca; - reduceDB_lt(ClauseAllocator& ca_) : ca(ca_) {} - bool operator()(CRef x, CRef y) - { - - // Main criteria... Like in MiniSat we keep all binary clauses - if (ca[x].size() > 2 && ca[y].size() == 2) { return 1; } - - if (ca[y].size() > 2 && ca[x].size() == 2) { return 0; } - if (ca[x].size() == 2 && ca[y].size() == 2) { return 0; } - - // Second one based on literal block distance - if (ca[x].lbd() > ca[y].lbd()) { return 1; } - if (ca[x].lbd() < ca[y].lbd()) { return 0; } - - - // Finally we can use old activity or size, we choose the last one - return ca[x].activity() < ca[y].activity(); - //return x->size() < y->size(); - - //return ca[x].size() > 2 && (ca[y].size() == 2 || ca[x].activity() < ca[y].activity()); } - } -}; - void SolverPT::reduceDB() { int i, j; diff --git a/pcasso-src/SolverPT.h b/pcasso-src/SolverPT.h index fc0b7df..3db2228 100644 --- a/pcasso-src/SolverPT.h +++ b/pcasso-src/SolverPT.h @@ -153,6 +153,29 @@ class SolverPT : public SplitterSolver /// return a specifit literal from the trail Lit trailGet(const unsigned int index); + + + // LCM modifications + int performSimplificationNext; + + uint64_t nbLCM, nbLitsLCM, nbConflLits, nbLCMattempts, nbLCMsuccess, npLCMimpDrop, nbRound1Lits, nbRound2Lits, nbLCMfalsified; + Clock LCMTime; + + bool simplifyLCM(); // learned clause minimization style inprocessing inside the solver, based on vivificatoin + + /** run all the simplification that is necessary for one lause + * Note: this method assumes the clause is detached before being called + * @param cr index of the clause to be processed (might be learned or original clause) + * @param LCMconfig 5x5 number of what to do in forward and backward iteration of LCM (3*5+5 seems to be strongest) + * @param fullySimplify allow to actually run vivification on that clause, otherwise, only falsified literals are removed + * @return true, if the clause reference should be kept. In case false is returned, the clause is already removed from the solver + */ + bool simplifyClause_viviLCM(const CRef cr, int LCMconfig, bool fullySimplify = true); + + int simplifyLearntLCM(Clause& c, int vivificationConfig); // simplify a non-watched clause, and perform vivification on it + + void analyzeFinal(const CRef& conflictingClause, vec< Lit >& out_conflict, const Lit otherLit = lit_Undef); + private: vec varPT; //storing the PT level of each variable //CMap clausePT; //storing the PT level of each clause From 5be87671fe258985e9b6f00031cf52278d155852 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Thu, 15 Feb 2018 23:11:24 +0100 Subject: [PATCH 05/34] lcm: set PT level to current node level When a clause is modified via LCM, tracking the PT level is difficult. As an over approximation, use the level of the current node. This way, we can at least use LCM, and still share clauses downwards correctly. For now, this is good enough, compared to not being able to share clauses at all. --- pcasso-src/SolverPT.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index 488dcd3..1d359c1 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1057,6 +1057,7 @@ int SolverPT::simplifyLearntLCM(Clause& c, int vivificationConfig) int roundLits[3]; int round = 0; roundLits[0] = c.size(); + bool modified = false; while (vivificationConfig > 0 && c.size() > 1) { bool minimized = false; round ++; @@ -1109,6 +1110,7 @@ int SolverPT::simplifyLearntLCM(Clause& c, int vivificationConfig) } } + if (j < c.size()) { modified = true; } c.shrink(c.size() - j); if (roundViviConfig > 1 && (confl != CRef_Undef)) { @@ -1120,6 +1122,7 @@ int SolverPT::simplifyLearntLCM(Clause& c, int vivificationConfig) if (conflict.size() < c.size()) { nbConflLits += c.size() - conflict.size(); assert(c.size() >= conflict.size() && "shrink should not increase size"); + modified = true; c.shrink(c.size() - conflict.size()); // shrink clause! for (int k = 0; k < c.size(); ++ k) { c[k] = conflict[k]; } // and actually use the literals of conflict } else if (false && impliedLit != lit_Undef && c.last() == impliedLit && j == c.size()) { // this is no valid operation, unless we actually did not shrink c above! @@ -1164,6 +1167,9 @@ int SolverPT::simplifyLearntLCM(Clause& c, int vivificationConfig) nbRound1Lits += roundLits[0] - roundLits[1]; if (round > 1) { nbRound2Lits += roundLits[1] - roundLits[2]; } + // set worst case PT level, as we currently do not have a good way to track the actual level + if (modified) { c.setPTLevel(getNodePTLevel()); } + return c.lbd(); } @@ -1200,6 +1206,8 @@ bool SolverPT::simplifyClause_viviLCM(const CRef cr, int LCMconfig, bool fullySi } nbLCMfalsified += (i - j); c.shrink(i - j); + // set worst case PT level, as we currently do not have a good way to track the actual level + c.setPTLevel(getNodePTLevel()); } } // a clause might become satisfiable during the analysis. remove such a clause! From 40310f391ddffacb85f7ee79e5ec56863ee60409 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 16 Feb 2018 00:36:35 +0100 Subject: [PATCH 06/34] pcasso: share results of LCM Track the share indexes during LCM. This way, we do not loose sharing information when doing LCM. --- pcasso-src/SolverPT.cc | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index 1d359c1..9593522 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1311,6 +1311,11 @@ bool SolverPT::simplifyLCM() removeSatisfied(clauses); // TODO: test whether actually necessary when being executed "right after" reduceDB() watches.cleanAll(); + // drop indexes to learned clauses + for (int i = 0 ; i < learnts_indeces.size(); ++i) { + learnts_indeces[i].clear(); + } + int ci, cj; for (ci = 0, cj = 0; ci < learnts.size(); ci++) { const CRef cr = learnts[ci]; @@ -1318,12 +1323,24 @@ bool SolverPT::simplifyLCM() if (c.mark()) { continue; } // this clause can be dropped if (c.size() < opt_lcm_min_size) { // do not look at clauses that have less than the given amount of literals + if (c.isShared()) { + c.decShCleanDelay(); + } else if (c.lbd() <= LBD_lt) { + learnts_indeces[c.getPTLevel()].push_back(cj); // memorize this clause to share it later + } learnts[cj++] = learnts[ci]; continue; } bool keep = simplifyClause_viviLCM(cr, opt_lcm_style, ! c.wasLcmSimplified() && ci >= learnts.size() / 2); // only run full LCM on new good clauses - if (keep) { learnts[cj++] = learnts[ci]; } + if (keep) { + if (c.isShared()) { + c.decShCleanDelay(); + } else if (c.lbd() <= LBD_lt) { + learnts_indeces[c.getPTLevel()].push_back(cj); // memorize this clause to share it later + } + learnts[cj++] = learnts[ci]; + } if (!ok) { break; } // stop in case we found an empty clause } // fill gaps unneeded space From 82e81e00d928b3bd8079a80704607fe3ef3cb539 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 16 Feb 2018 00:30:17 +0100 Subject: [PATCH 07/34] pcasso: try to avoid local data structures Move vector initialization 2 loops out, to reduce the number of re-alloactions. --- pcasso-src/SolverPT.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index 59001c4..bc289e2 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1435,6 +1435,7 @@ void SolverPT::push_learnts() bool sharedSuccess = false; bool fullPool = false; + vec c_lits; for (unsigned int i = 0; i < learnts_indeces.size(); i++) { davide::LevelPool* pool = previous_pools[i]; @@ -1453,7 +1454,7 @@ void SolverPT::push_learnts() Clause& c = ca[learnts[learnts_indeces[i][j]]]; c.setShared(); - vec c_lits; + c_lits.clear(); // memory consumption optimization for (unsigned j = 0; j < c.size(); j++) { //creating vector of literals present in the clause c_lits.push(c[j]); } From 275cf182e1617c9d15a73d0f5ccb61c49d6a97f5 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 16 Feb 2018 00:32:58 +0100 Subject: [PATCH 08/34] pcasso: get learnts_indeces right When using an index to point into the learnts vector, make sure the items in that vector are valid, or in release mode are dropped to not crash the solver. This was found when using LCM which modified the learnts vector. --- pcasso-src/SolverPT.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index bc289e2..da8b0fb 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1451,7 +1451,12 @@ void SolverPT::push_learnts() pool->levelPoolLock.wLock(); } for (unsigned int j = 0; j < learnts_indeces[i].size(); j++) { - Clause& c = ca[learnts[learnts_indeces[i][j]]]; + int lc_index = learnts_indeces[i][j]; + if (lc_index >= learnts.size()) { + assert(lc_index < learnts.size() && "indexes to learned clauses to share have to be in bounds"); + continue; + } + Clause& c = ca[learnts[lc_index]]; c.setShared(); c_lits.clear(); // memory consumption optimization From 96359f92da858b647959c905bafe266b2c2d8822 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 16 Feb 2018 00:43:07 +0100 Subject: [PATCH 09/34] pcasso.sh: actually read tmp dir The tmp dir variable has been read from $3, while $2 was the actual aim. --- scripts/pcasso.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/pcasso.sh b/scripts/pcasso.sh index bcdcdb4..d4086c1 100755 --- a/scripts/pcasso.sh +++ b/scripts/pcasso.sh @@ -42,7 +42,7 @@ simplifier="$DIR/coprocessor" # file=$1 # first argument is CNF instance to be solved shift 1 -tmpDir=$2 # directory to write the temporary files to +tmpDir=$1 # directory to write the temporary files to shift 1 # reduce the parameters, removed the very first one. remaining $@ parameters are arguments # in case no tmpDir has been specified, create one and trap for deletion on exit From bc4d5afbcdc6ea8586dfe038eb9ddde79c973044 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Tue, 20 Feb 2018 22:50:30 +0100 Subject: [PATCH 10/34] splitting: use var based index In the old version, the wrong variable has been used as index value, leading to out of bound errors. --- pcasso-src/LookaheadSplitting.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pcasso-src/LookaheadSplitting.cc b/pcasso-src/LookaheadSplitting.cc index fcf2455..73beb0d 100644 --- a/pcasso-src/LookaheadSplitting.cc +++ b/pcasso-src/LookaheadSplitting.cc @@ -1192,8 +1192,9 @@ Lit LookaheadSplitting::pickBranchLiteral(vec* > **valid) sizePositiveLookahead = trail.size() - initTrailSize; for (int j = initTrailSize; j < trail.size(); j++) { //fprintf(stderr, "Watcher size = %d\n", watches[trail[j]].size()); - sizeWatcherPositiveLookahead += sign(trail[j]) ? watcherNegLitSize[bestKList[i]] : watcherPosLitSize[bestKList[i]]; - binClausePositiveLookahead += sign(trail[j]) ? numPosLitTerClause[var(trail[j])] : numNegLitTerClause[var(trail[j])]; + const Var v = var(trail[j]); + sizeWatcherPositiveLookahead += sign(trail[j]) ? watcherNegLitSize[v] : watcherPosLitSize[v]; + binClausePositiveLookahead += sign(trail[j]) ? numPosLitTerClause[v] : numNegLitTerClause[v]; } //check if solution found if (checkSolution()) { @@ -1267,8 +1268,9 @@ Lit LookaheadSplitting::pickBranchLiteral(vec* > **valid) } sizeNegativeLookahead = trail.size() - initTrailSize; for (int j = initTrailSize; j < trail.size(); j++) { - sizeWatcherNegativeLookahead += sign(trail[j]) ? watcherNegLitSize[bestKList[i]] : watcherPosLitSize[bestKList[i]]; - binClauseNegativeLookahead += sign(trail[j]) ? numPosLitTerClause[var(trail[j])] : numNegLitTerClause[var(trail[j])]; + const Var v = var(trail[j]); + sizeWatcherNegativeLookahead += sign(trail[j]) ? watcherNegLitSize[v] : watcherPosLitSize[v]; + binClauseNegativeLookahead += sign(trail[j]) ? numPosLitTerClause[v] : numNegLitTerClause[v]; } //check if to perform double lookahead if (opt_double_lookahead) { From 797ae6a5e9e7a9f5139e3421ccec5c05a2e80d52 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Tue, 20 Feb 2018 22:51:32 +0100 Subject: [PATCH 11/34] splitting: only compute score for candidates If there are no candidate literals to compute a score for, stop the computation, and skip. --- pcasso-src/LookaheadSplitting.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pcasso-src/LookaheadSplitting.cc b/pcasso-src/LookaheadSplitting.cc index 73beb0d..b400e03 100644 --- a/pcasso-src/LookaheadSplitting.cc +++ b/pcasso-src/LookaheadSplitting.cc @@ -1427,10 +1427,12 @@ Lit LookaheadSplitting::pickBranchLiteral(vec* > **valid) jump: cancelUntil(decLev); - for (int i = 0; i < score.size(); i++) { - if (score[i] > 0 && score[i] > bestVarScore && value(bestKList[i]) == l_Undef) { - bestVarScore = score[i]; - bestVarIndex = i; + if (bestKList.size() > 0) { + for (int i = 0; i < score.size(); i++) { + if (score[i] > 0 && score[i] > bestVarScore && value(bestKList[i]) == l_Undef) { + bestVarScore = score[i]; + bestVarIndex = i; + } } } From 892cf063c050034263db4e28f3d299c0d9119e83 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Tue, 20 Feb 2018 22:52:37 +0100 Subject: [PATCH 12/34] splitting: handle no-split case The split variable next has to be initialized, such that in case of failures during computing the candidates, e.g. due to too small formulas, there lit_Undef value can still be returned. Consequently, make sure nobody consumes lit_Undef as an index. --- pcasso-src/LookaheadSplitting.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pcasso-src/LookaheadSplitting.cc b/pcasso-src/LookaheadSplitting.cc index b400e03..c946b48 100644 --- a/pcasso-src/LookaheadSplitting.cc +++ b/pcasso-src/LookaheadSplitting.cc @@ -337,6 +337,8 @@ lbool LookaheadSplitting::produceSplitting(vec* >* > **splits, vec< } else if (next == lit_Undef) { if (checkSolution()) { return l_True; + } else { + assert(false && "this case should be handled, a split is required"); } } @@ -509,6 +511,8 @@ lbool LookaheadSplitting::produceSplitting(vec* >* > **splits, vec< if (next == lit_Undef) { if (checkSolution()) { return l_True; + } else { + assert(false && "this case should be handled, a split is required"); } } if (decisionLevel() == 0 && splitting->size() == 0) { @@ -1449,7 +1453,7 @@ Lit LookaheadSplitting::pickBranchLiteral(vec* > **valid) } } - Lit next; + Lit next = lit_Undef; if (bestVarIndex != var_Undef) { bool pol = false; @@ -1583,7 +1587,7 @@ Lit LookaheadSplitting::pickBranchLiteral(vec* > **valid) *///if(opt_var_eq>0) //fprintf(stderr, "splitter: Var Equivalence \t\t\t = %d \n", varEq.size()/2); //fprintf(stderr, "splitter: Best Var Index = %d\n",bestVarIndex); - if (opt_tabu) { + if (opt_tabu && next != lit_Undef) { tabuList[var(next)] = true; } From 10133b0515656d8f8ab3913abbe6a23598972ebf Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Tue, 20 Feb 2018 22:54:17 +0100 Subject: [PATCH 13/34] master: allow getting stuck more often As getting stuck might be due to a race condition, allow the solver to see this condition more often before actually aborting the search. On the other hand, make sure we assert before exit, so that debugging would be doable, and the problem can be identified during fuzzing. --- pcasso-src/Master.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pcasso-src/Master.cc b/pcasso-src/Master.cc index 1008f5e..a83aa35 100644 --- a/pcasso-src/Master.cc +++ b/pcasso-src/Master.cc @@ -196,6 +196,7 @@ int Master::run() // check the state of the tree // solve the next node in the tree if (MSverbosity > 0) { fprintf(stderr, "M: start main loop\n"); } + int stuck = 0; while (!done) { int idles = 0; // important, because this indicates that there can be done more in the next round! @@ -371,7 +372,13 @@ int Master::run() for (; i < threads; ++i) { if (threadData[i].s == splitting) { break; } // TODO SHOULDN'T BE IDLE ?? DAVIDE> if (threadData[i].s == working) { break; } // do not stop if some worker is doing something + if (threadData[i].s == unclean) { break; } // do not stop if some worker is not cleaned up yet } + + // allow the solver 16 times reaching this before we actually stop working + stuck ++; + if (stuck < 16) { continue; } + // if there is a thread that is still doing something, we did not run out of work! if (i == threads) { fprintf(stderr, "\n***\n*** RUN OUT OF WORK - return unknown?\n***\n\n"); @@ -384,7 +391,9 @@ int Master::run() else if (threadData[i].s == unclean) { uncleans++; } } - fprintf(stderr, "c idle: %d working: %d splitting: %d unclean: %d\n", idles, workers, splitters, uncleans); + fprintf(stderr, "c (after %d iterations): idle: %d working: %d splitting: %d unclean: %d\n", stuck, idles, workers, splitters, uncleans); + // for debugging purposes, stop here. we assume, there is a solution but nobody told us, so let's check + assert(false && "this should not be reached"); exit(0); } From 1c1cbc364824721f264ec6a4100981a28184d3c4 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Tue, 20 Feb 2018 22:55:19 +0100 Subject: [PATCH 14/34] master: do not blindly set to unknown When multiple slaves work on the same node, make sure they do not overwrite the state of each other. Only set a state to unknown, if the node actually has an unknown state. --- pcasso-src/Master.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pcasso-src/Master.cc b/pcasso-src/Master.cc index a83aa35..a80b86a 100644 --- a/pcasso-src/Master.cc +++ b/pcasso-src/Master.cc @@ -880,7 +880,7 @@ Master::solveInstance(void* data) } else { // result of solver is "unknown" if (master.plainpart) { tData.nodeToSolve->setState(TreeNode::retry); } - else { tData.nodeToSolve->setState(TreeNode::unknown); } + else { if (tData.nodeToSolve->getState() == TreeNode::retry) tData.nodeToSolve->setState(TreeNode::unknown); } if (keepToplevelUnits > 0) { int toplevelVariables = 0; @@ -942,7 +942,7 @@ Master::splitInstance(void* data) if (Portfolio && tData.nodeToSolve->getLevel() < PortfolioLevel) { // perform portfolio only until this level! master.lock(); // ********************* START CRITICAL *********************** childConstraints.push_back(new vector*>); - tData.nodeToSolve->setState(TreeNode::unknown); + if (tData.nodeToSolve->getState() == TreeNode::retry) { tData.nodeToSolve->setState(TreeNode::unknown); } // only modify, if it's retry tData.nodeToSolve->expand(childConstraints); master.addNode(tData.nodeToSolve->getChild(0)); tData.result = ret; @@ -1149,7 +1149,7 @@ Master::splitInstance(void* data) // shut down all threads that are running below that node (necessary?) } else { // simply set the node to the unknown state - tData.nodeToSolve->setState(TreeNode::unknown); + if (tData.nodeToSolve->getState() == TreeNode::retry) { tData.nodeToSolve->setState(TreeNode::unknown); } for (unsigned int i = 0; i < validConstraints.size(); i++) { tData.nodeToSolve->addNodeConstraint(validConstraints[i]); } From 3abccb42da8238bac4245a18825921329fa1d7f6 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Tue, 20 Feb 2018 22:58:59 +0100 Subject: [PATCH 15/34] master: always write unsat result Currently, the stopUnsatChilds option had to be set to write the unsat state for a node. However, the state should always be written. Hence, the check for the option is moved closer to actually running the related algorithm. --- pcasso-src/Master.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pcasso-src/Master.cc b/pcasso-src/Master.cc index a80b86a..1648520 100644 --- a/pcasso-src/Master.cc +++ b/pcasso-src/Master.cc @@ -209,12 +209,15 @@ int Master::run() if (threadData[i].s == unclean) { // Davide> Free memory - if (threadData[i].result == 20 && stopUnsatChilds) { + if (threadData[i].result == 20) { // The children are NOT running, so I can delete every pool lock(); threadData[i].nodeToSolve->setState(TreeNode::unsat, true); + // fprintf(stderr, "c root node state: %d\n", root.getState()); unlock(); - killUnsatChildren(i); + if (stopUnsatChilds) { + killUnsatChildren(i); + } } uncleans++; From a21fc3433deac2e1a2e04f31c26cbb63fc70136d Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 16 Feb 2018 00:34:01 +0100 Subject: [PATCH 16/34] pcasso: clear clauses to share before reduceDB In the reduceDB, new clauses are added to the clauses to be shared, but no clauses are removed. This way, faulty pointers might be used, as the clauses that are shared might become invalid, or wrong indexes are used. --- pcasso-src/SolverPT.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index da8b0fb..d846631 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1779,6 +1779,10 @@ void SolverPT::reduceDB() int limit = learnts.size() / 2; + for (int i = 0; i < learnts_indeces.size(); ++i) { + learnts_indeces[i].clear(); + } + for (i = j = 0; i < learnts.size(); i++) { Clause& c = ca[learnts[i]]; //assert(c.getPTLevel() Date: Fri, 9 Mar 2018 16:46:46 +0100 Subject: [PATCH 17/34] levelpool: inisist on more restrictions --- pcasso-src/LevelPool.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pcasso-src/LevelPool.cc b/pcasso-src/LevelPool.cc index 94a5ed2..5bcc8af 100644 --- a/pcasso-src/LevelPool.cc +++ b/pcasso-src/LevelPool.cc @@ -29,6 +29,9 @@ bool LevelPool::add_shared(vec& lits, unsigned int nodeID, bool disable_dup temp[0] = toLit(nodeID); + assert(toInt(temp[0]) >= 0 && "the number to identify the node should be positive"); + assert(writeP == 0 || shared_clauses[writeP-1] == lit_Undef); // the pointer should point at the end of a clause + assert(temp.size() < shared_clauses.size()); if (writeP + temp.size() < shared_clauses.size() - 2) { // Space for the ending lit_Undef @@ -38,7 +41,7 @@ bool LevelPool::add_shared(vec& lits, unsigned int nodeID, bool disable_dup writeP += temp.size(); int k = writeP; ++writeP; - while (shared_clauses[k] != lit_Undef) { + while (shared_clauses[k] != lit_Undef && k < endP) { // clean the whole vector, or until the next end of a clause shared_clauses[k++] = lit_Undef; } if (writeP > endP) { endP = writeP; } @@ -54,7 +57,7 @@ bool LevelPool::add_shared(vec& lits, unsigned int nodeID, bool disable_dup } int k = writeP; ++writeP; - while (shared_clauses[k] != lit_Undef) { + while (shared_clauses[k] != lit_Undef && k < endP) { shared_clauses[k++] = lit_Undef; } assert(endP > writeP); @@ -68,10 +71,11 @@ LevelPool::getChunk(int readP, vec& chunk) if (readP >= endP) { return; } - if (((readP != 0 && shared_clauses[readP - 1] == lit_Undef) || readP == 0)) { + if (( (readP != 0 && shared_clauses[readP - 1] == lit_Undef) || readP == 0)) { if (readP <= writeP) { chunk.growTo(writeP - readP); int j = 0; + assert(readP == 0 || toInt(shared_clauses[readP]) >= 0); // the first literal indicates the ID of the node that shared the clause for (int i = readP; i < writeP; ++i) { assert(writeP - readP == chunk.size()); assert(j < chunk.size()); @@ -82,6 +86,7 @@ LevelPool::getChunk(int readP, vec& chunk) } else { chunk.growTo((endP - readP) + writeP); int j = 0; + assert(readP == 0 || toInt(shared_clauses[readP]) >= 0); // the first literal indicates the ID of the node that shared the clause for (int i = readP; i < endP; ++i) { assert(j < chunk.size()); chunk[j++] = shared_clauses[i]; @@ -96,6 +101,7 @@ LevelPool::getChunk(int readP, vec& chunk) } else { chunk.growTo(writeP); int j = 0; + assert(writeP == 0 || toInt(shared_clauses[0]) > 0); // the first literal indicates the ID of the node that shared the clause for (int i = 0; i < writeP; ++i) { assert(j < chunk.size()); chunk[j++] = shared_clauses[i]; From b6262a055cc810bd8febf28b1bde04da493e7c2e Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 9 Mar 2018 16:52:18 +0100 Subject: [PATCH 18/34] solverpt: do not share eagerly When we know a level does not have clauses to share, do not lock the level, but instead skip the level right away. --- pcasso-src/SolverPT.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index d846631..400401e 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1437,6 +1437,7 @@ void SolverPT::push_learnts() vec c_lits; for (unsigned int i = 0; i < learnts_indeces.size(); i++) { + if(learnts_indeces[i].size() == 0) continue; // nothing to share for this level, skip it! davide::LevelPool* pool = previous_pools[i]; if (pool == 0) { continue; } From b05be71be784d4f44debd6b811d6f3324bb08e25 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Fri, 6 Mar 2020 23:12:39 +0100 Subject: [PATCH 19/34] solverpt: assertions and volatile --- pcasso-src/SolverPT.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index 400401e..6a1b5f1 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1466,6 +1466,7 @@ void SolverPT::push_learnts() } + assert(c.getPTLevel() >= i && "cannot share clause more upwards than its PT level allows"); sharedSuccess = pool->add_shared(c_lits, tnode->id(), disable_dupl_removal, disable_dupl_check); fullPool = pool->isFull(); @@ -1552,7 +1553,7 @@ void SolverPT::pull_learnts(int curr_restarts) } pool->levelPoolLock.rLock(); // Davide> START CRITICAL } - int readP = shared_indeces[i]; + volatile int readP = shared_indeces[i]; pool->getChunk(readP, chunk); From a9ad8fa26cc63399e69bb19ad71aff5155af6cfb Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Thu, 12 Mar 2020 00:01:18 +0100 Subject: [PATCH 20/34] lasplitting: handle unit conflicts We should not have unit clauses as conflicts in the first place. Learnt clauses can become units. Hence, they need to be treated accordingly, especially added on level 0. --- pcasso-src/LookaheadSplitting.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pcasso-src/LookaheadSplitting.cc b/pcasso-src/LookaheadSplitting.cc index c946b48..9ae9835 100644 --- a/pcasso-src/LookaheadSplitting.cc +++ b/pcasso-src/LookaheadSplitting.cc @@ -488,7 +488,8 @@ lbool LookaheadSplitting::produceSplitting(vec* >* > **splits, vec< } else { cancelUntil(decisionLevel() - 1); next = ~(*decList)[decisionLevel()]; - uncheckedEnqueue(next); + if(value(next) != l_Undef) uncheckedEnqueue(next); + assert(value(next) != l_False && "tested this case earlier"); //enqueue(next); decList->pop(); vec *c = new vec(); @@ -994,7 +995,9 @@ bool LookaheadSplitting::lookahead(Lit p, vec& lookaheadTrail, vec& un unsigned nbscore; learnt_clause.clear(); otfssClauses.clear(); extraInfo = 0; // reset global structures - int ret = analyze(confl, learnt_clause, backtrack_level, nbscore, otfssClauses, extraInfo); + int ret = 0; + if(ca[confl].size() == 1) learnt_clause.push( ca[confl][0]); + else ret = analyze(confl, learnt_clause, backtrack_level, nbscore, otfssClauses, extraInfo); assert(ret == 0 && "can handle only usually learnt clauses"); if (ret != 0) { _exit(1); } // abort, if learning is set up wrong @@ -1002,6 +1005,8 @@ bool LookaheadSplitting::lookahead(Lit p, vec& lookaheadTrail, vec& un if (learnt_clause[0] != ~p && value(learnt_clause[0]) == l_Undef) { if (learnt_clause.size() == 1) { //fprintf(stderr, "splitter: Unit Clause Learnt at level %d\n", decisionLevel()); + cancelUntil(0); // units need to go to level 0 + assert(decisionLevel() == 0 && "units should only be added at level 0!"); uncheckedEnqueue(learnt_clause[0]); //CRef cr = ca.alloc(learnt_clause, true); units.push(learnt_clause[0]); //saving unit learnt clauses @@ -1216,7 +1221,7 @@ Lit LookaheadSplitting::pickBranchLiteral(vec* > **valid) cancelUntil(decLev); score[i] = 0; if (opt_failed_literals > 0) { - uncheckedEnqueue(~p); + if(value(~p) == l_Undef) uncheckedEnqueue(~p); // enqueue(~p); failedLiterals.push(p); } From 3bd94fb883e15aff98b4ddf4afa7ebb2199ed008 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Thu, 12 Mar 2020 00:02:04 +0100 Subject: [PATCH 21/34] lasplitting: do not shrink watched lits The current implementation would allow to drop first lits of clauses that are used for splitting. Do not allow this, as this might result in unsound behavior. --- pcasso-src/LookaheadSplitting.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pcasso-src/LookaheadSplitting.cc b/pcasso-src/LookaheadSplitting.cc index 9ae9835..8d950c9 100644 --- a/pcasso-src/LookaheadSplitting.cc +++ b/pcasso-src/LookaheadSplitting.cc @@ -698,7 +698,7 @@ void LookaheadSplitting::shrinkClauses() for (int i = 0, j = 0, k = 0; i < clauses.size(); i++) { Clause& c = ca[clauses[i]]; for (j = 0, k = 0; j < c.size(); j++) { - if (value(c[j]) != l_False) { + if (value(c[j]) != l_False || j < 2) { // do not drop watched literals! c[k] = c[j]; k++; if (opt_pure_lit > 0) { From cc67787c006ad2440b920a70a26c6ff1e51d22e8 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Thu, 12 Mar 2020 00:02:46 +0100 Subject: [PATCH 22/34] lasplitting: do not use learnt units While learning units is good, the extra decision level jumps might be hard to maintain. Hence, for now, do not use the units right away. --- pcasso-src/LookaheadSplitting.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pcasso-src/LookaheadSplitting.cc b/pcasso-src/LookaheadSplitting.cc index 8d950c9..6050926 100644 --- a/pcasso-src/LookaheadSplitting.cc +++ b/pcasso-src/LookaheadSplitting.cc @@ -1005,9 +1005,10 @@ bool LookaheadSplitting::lookahead(Lit p, vec& lookaheadTrail, vec& un if (learnt_clause[0] != ~p && value(learnt_clause[0]) == l_Undef) { if (learnt_clause.size() == 1) { //fprintf(stderr, "splitter: Unit Clause Learnt at level %d\n", decisionLevel()); - cancelUntil(0); // units need to go to level 0 - assert(decisionLevel() == 0 && "units should only be added at level 0!"); - uncheckedEnqueue(learnt_clause[0]); + // make sure we do not break something by canceling levels unexpectedly + // cancelUntil(0); // units need to go to level 0 + // assert(decisionLevel() == 0 && "units should only be added at level 0!"); + // uncheckedEnqueue(learnt_clause[0]); //CRef cr = ca.alloc(learnt_clause, true); units.push(learnt_clause[0]); //saving unit learnt clauses } else { /*if(learnt_clause.size() <= 2)*/ From 13357afe5904fae6918861fcb39b5b15ed01fda5 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Thu, 12 Mar 2020 00:27:47 +0100 Subject: [PATCH 23/34] lcm: set PT level To make sure we do not stop at a higher level, set the lastLevel accordingly. --- pcasso-src/SolverPT.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index 81032ed..e375527 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1300,7 +1300,9 @@ bool SolverPT::simplifyLCM() assert(qhead == trail.size() && "make sure we are in a good state before LCM"); // make sure we do not miss something + assert(decisionLevel() == 0 && "run learned clause minimization only on level 0"); if (!ok || propagate() != CRef_Undef) { + lastLevel = curPTLevel; return ok = false; } From 33540c4fe05cc270b432fcf5be16d294ab54a4d8 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Thu, 12 Mar 2020 00:28:18 +0100 Subject: [PATCH 24/34] bug: add another example for unsound behavior When building the debug version of the solver, the added formula is most of the time reported as unsatisfiable, although it is satisfiable. This is the invocation to trigger the bug on a 4 core machine: ./pcasso -verb=2 -model -child-count=7 -threads=3 \ -print-tree -verbosity=6 cnfs/bug-180394467.cnf --- cnfs/bug-180394467.cnf | 1833 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1833 insertions(+) create mode 100644 cnfs/bug-180394467.cnf diff --git a/cnfs/bug-180394467.cnf b/cnfs/bug-180394467.cnf new file mode 100644 index 0000000..3572c07 --- /dev/null +++ b/cnfs/bug-180394467.cnf @@ -0,0 +1,1833 @@ +c seed 180394467 +c width 22 +c scramble 1 +c layers 16 +c equalities 0 +c ands 0 +c layer[0] = [1..21] w=21 v=21 c=78 r=3.71 q=0 +c layer[1] = [22..38] w=17 v=38 c=138 r=3.63 q=0 +c layer[2] = [39..57] w=19 v=36 c=160 r=4.44 q=0 +c layer[3] = [58..71] w=14 v=33 c=103 r=3.12 q=0 +c layer[4] = [72..85] w=14 v=28 c=87 r=3.11 q=0 +c layer[5] = [86..102] w=17 v=31 c=116 r=3.74 q=0 +c layer[6] = [103..118] w=16 v=33 c=147 r=4.45 q=0 +c layer[7] = [119..138] w=20 v=36 c=137 r=3.81 q=0 +c layer[8] = [139..151] w=13 v=33 c=137 r=4.15 q=0 +c layer[9] = [152..164] w=13 v=26 c=97 r=3.73 q=0 +c layer[10] = [165..178] w=14 v=27 c=116 r=4.30 q=0 +c layer[11] = [179..189] w=11 v=25 c=105 r=4.20 q=0 +c layer[12] = [190..201] w=12 v=23 c=98 r=4.26 q=0 +c layer[13] = [202..213] w=12 v=24 c=82 r=3.42 q=0 +c layer[14] = [214..230] w=17 v=29 c=107 r=3.69 q=0 +c layer[15] = [231..243] w=13 v=30 c=102 r=3.40 q=0 +p cnf 243 1810 +-13 11 1 0 +-2 -15 3 19 -17 -10 4 -11 -5 -18 -7 0 +8 -20 -9 -19 0 +16 10 -3 -1 6 0 +-6 -8 17 0 +21 5 18 0 +14 2 15 -21 13 -4 0 +-12 9 7 0 +12 20 -14 -16 17 -7 0 +10 3 7 0 +-2 8 4 0 +-10 -12 -18 -15 0 +-10 -20 -9 11 7 5 8 0 +-18 -20 9 15 4 -3 17 14 19 8 6 0 +-20 -19 16 -4 0 +-8 10 -2 11 0 +8 -21 -9 0 +2 13 18 21 -6 7 0 +8 17 -13 -21 0 +-4 16 0 +2 -1 -16 17 15 10 0 +3 -13 12 0 +-13 11 -6 0 +6 -10 -16 -2 17 0 +6 20 9 0 +19 -6 -9 11 -3 0 +21 12 -10 20 0 +5 17 0 +15 14 -19 -8 0 +-17 -7 -13 0 +-14 5 11 0 +-7 -13 -15 18 -1 20 21 9 0 +-1 6 17 0 +-18 -10 21 0 +3 -20 10 7 0 +3 -18 20 0 +-21 1 8 0 +4 3 0 +-10 13 -5 -21 -11 -9 0 +-18 6 16 -15 11 -5 -1 20 -9 8 -2 17 0 +-13 -19 14 20 0 +19 -20 -6 -15 -21 0 +10 2 -8 0 +-1 16 7 -10 21 19 0 +-9 -6 0 +15 -2 7 4 17 0 +4 -13 -7 16 -1 12 6 0 +-11 6 14 -1 3 0 +14 11 2 13 -16 0 +-17 -14 19 4 0 +17 -6 -21 -12 -8 0 +-13 -3 12 0 +-21 1 -2 3 11 -7 15 0 +-5 12 16 0 +-14 -7 -1 10 -16 0 +-15 -16 -14 -18 8 0 +-4 14 1 0 +-21 18 9 19 -13 -10 4 15 0 +-9 -5 21 0 +14 10 21 -3 0 +-13 2 9 -5 -1 -6 -15 11 0 +-17 -6 -11 14 15 0 +-21 -20 2 -9 0 +-15 -11 8 0 +-2 4 8 0 +-13 7 -15 9 11 0 +13 20 -12 0 +7 -19 -13 0 +8 -15 13 -1 0 +6 -11 -20 -13 0 +15 17 21 11 0 +-11 -8 -2 21 0 +-8 -2 12 -13 16 0 +20 1 9 0 +12 13 -16 -8 0 +8 -6 0 +-18 -13 7 0 +-16 -7 20 -14 -5 17 -15 4 0 +2 8 20 0 +13 22 2 0 +-36 -14 27 0 +-21 36 -20 -22 0 +8 7 -31 0 +-20 24 30 1 34 11 32 0 +35 25 -30 -16 0 +-28 -18 -29 0 +15 -38 -23 10 0 +-3 23 -11 0 +6 31 38 -34 -7 33 -25 -37 1 28 0 +1 -32 -26 2 0 +37 20 29 -5 6 26 -14 -27 0 +-35 -33 -16 0 +18 8 -11 0 +-24 29 38 0 +-16 11 10 0 +-38 13 -18 30 0 +31 -13 29 37 0 +-11 -16 -36 0 +-13 26 -33 0 +36 23 21 -6 12 9 0 +21 -23 -31 0 +12 -36 -29 0 +5 16 -32 -23 0 +23 17 -24 22 -20 0 +-26 -32 21 0 +-21 -20 -34 -13 37 -7 15 0 +30 25 -24 0 +12 -22 -11 -4 -31 20 -34 0 +28 -4 -23 0 +-23 -30 -2 25 5 28 10 -31 0 +21 22 -38 0 +-14 -38 -29 0 +22 -31 -20 8 -6 -35 -32 0 +-14 28 33 38 -1 0 +24 -2 -31 -27 0 +-8 25 -20 -16 -13 0 +-9 29 -8 -16 0 +-24 -35 3 5 -19 0 +-31 6 24 26 9 0 +-5 -25 -27 0 +14 18 -25 5 0 +35 -17 34 0 +-9 -27 -25 0 +-25 -6 -24 9 -4 0 +11 26 -13 0 +-11 28 -24 -31 20 0 +8 37 -14 0 +-5 -13 -32 0 +-35 3 12 0 +30 -12 -14 0 +37 -3 36 22 16 0 +1 -25 30 14 -22 -20 35 0 +1 21 7 23 9 -13 0 +29 -21 31 0 +-10 -14 -18 0 +-28 -26 -7 -35 -2 0 +-9 32 -18 29 -26 0 +-31 15 -30 -18 23 7 -25 0 +24 -29 -7 0 +-20 -11 5 0 +-2 -32 -4 -7 0 +3 -30 -26 22 0 +-6 25 -2 0 +-19 35 36 0 +-38 -12 -7 28 35 -26 0 +-9 33 30 0 +-5 -9 -30 34 -8 -33 0 +-4 24 20 0 +-5 -8 19 0 +4 -23 -3 0 +-3 -28 38 1 -8 0 +-33 -22 -9 3 0 +19 -5 25 32 0 +2 -22 -34 -24 38 0 +6 11 31 0 +-28 16 -32 -31 -37 -21 1 0 +-6 23 -5 -18 0 +38 24 18 0 +27 13 -20 -26 -34 -10 0 +-28 -20 33 0 +-23 -37 -24 12 -27 -5 0 +-36 -8 -4 -17 -27 0 +34 30 1 -5 0 +-12 33 -2 0 +8 10 28 31 24 -13 0 +-37 11 -22 -23 0 +-30 -2 13 -14 0 +12 -36 31 -9 0 +27 -8 34 0 +-30 22 12 -23 0 +14 20 -25 0 +-5 25 16 28 -38 12 -4 -6 11 22 0 +27 -32 -15 20 0 +14 -23 -22 0 +24 1 2 0 +-11 -36 -20 0 +-20 38 17 -15 -34 -1 0 +15 19 -10 0 +-18 10 -5 -27 33 21 -16 0 +29 -26 32 33 -31 5 0 +2 24 -13 31 0 +27 29 -8 30 20 -35 0 +3 -20 23 0 +-9 -28 36 0 +-37 6 14 -38 -1 35 -25 0 +-31 33 17 9 36 0 +-21 -2 30 0 +-22 28 3 -34 -18 0 +-19 -3 8 0 +-28 -10 1 -3 30 0 +17 -25 -14 6 -8 0 +-30 -5 21 16 24 -26 -4 -12 -32 0 +7 37 -30 -5 4 -28 2 29 0 +-24 -23 -36 29 0 +23 13 -5 0 +-13 -35 16 0 +28 -16 -38 0 +7 22 10 -1 -18 0 +-37 28 30 -12 -5 6 -14 -26 0 +-34 10 -12 -15 5 -7 0 +-21 -25 24 0 +33 13 29 0 +6 19 16 -30 29 35 0 +-19 -16 -5 18 0 +4 -23 28 -16 -34 0 +8 20 -29 31 -35 0 +20 19 -11 0 +-25 -1 -18 34 26 0 +27 31 -32 0 +18 -12 -21 0 +5 31 15 -1 37 36 20 0 +26 -24 -30 -20 0 +-19 -36 38 22 0 +13 27 -30 0 +-23 20 -7 -17 0 +28 29 35 19 33 31 6 -25 -27 0 +26 -21 -40 -25 51 14 0 +42 -3 -55 0 +22 26 55 -51 24 0 +41 47 -20 6 -7 53 0 +-41 -57 -1 -21 0 +56 16 -53 -46 0 +-15 -38 -11 -3 0 +-47 50 -26 0 +-11 52 -50 0 +-18 -4 32 0 +-43 -32 45 54 -56 0 +48 46 -29 -44 6 0 +-5 44 20 0 +-14 25 40 -49 39 0 +-18 -48 30 -45 25 43 0 +-19 -42 33 0 +-54 57 -6 -19 0 +-52 -24 -2 -39 34 49 43 -1 13 4 0 +-4 -25 35 56 -46 -30 0 +42 32 39 0 +38 20 -13 51 -10 56 0 +-24 30 39 -46 29 49 -8 -17 0 +43 38 50 -3 -24 -9 -8 0 +-39 2 13 0 +50 -41 -19 0 +-51 -47 52 0 +46 56 -20 0 +-17 -55 -37 24 23 0 +18 2 52 3 41 50 -29 -14 -57 0 +29 -51 52 0 +46 3 16 0 +39 13 42 48 0 +-35 -26 7 0 +23 18 -27 -20 48 42 -44 3 0 +13 5 22 0 +-46 -26 3 31 -44 30 0 +-56 -57 30 3 0 +-21 -44 42 35 -15 45 0 +25 -21 39 -2 -53 -52 18 0 +42 45 48 10 41 0 +42 -56 57 54 36 -34 -44 0 +21 -24 -39 -38 -32 -52 5 36 51 0 +-9 -54 15 56 19 0 +54 51 -42 32 -43 27 50 0 +41 -36 46 57 0 +-47 -37 -52 -49 41 -20 44 -35 0 +40 -24 44 0 +9 -44 48 49 10 -42 34 32 -46 0 +-45 17 55 0 +38 57 26 42 22 0 +-57 -47 38 28 49 0 +-57 -30 38 0 +-52 57 -51 43 0 +56 -37 -9 12 0 +-12 3 40 47 0 +-50 36 -57 0 +-32 -56 -51 0 +49 -14 41 0 +-43 32 54 -20 46 0 +7 -44 -30 -20 35 -57 13 40 28 0 +-17 -31 24 13 -30 -55 -25 0 +-35 -39 28 -53 46 -5 -33 31 0 +24 -20 -22 0 +50 41 -31 42 -47 -56 10 26 54 44 29 0 +13 -46 -54 -57 -34 -23 -9 -31 49 0 +57 28 20 29 46 0 +56 8 -36 20 7 4 33 -6 -53 0 +47 48 -35 0 +17 32 28 -46 0 +47 18 51 0 +37 43 40 -42 0 +44 -47 49 0 +-8 7 -31 0 +-26 11 42 0 +45 -47 11 27 -33 -34 0 +-49 8 -31 -40 27 -42 0 +-16 -56 -7 0 +21 -56 1 22 51 0 +24 45 54 0 +48 -52 14 -1 2 54 45 -49 0 +14 -20 27 54 -55 50 51 0 +51 29 -41 0 +-47 -57 -48 0 +57 30 -41 -34 0 +37 -36 14 52 -25 50 33 53 0 +-18 -38 22 19 0 +37 18 51 -39 0 +47 -34 -48 -54 -44 -32 0 +-41 -8 -42 -6 0 +-2 -18 -42 0 +-11 41 -26 0 +-17 48 36 0 +24 -41 40 -48 0 +-55 -44 -45 8 0 +-44 54 -17 43 -57 -40 32 -25 -45 -55 -18 0 +-54 10 -44 42 0 +-51 -20 -14 -48 0 +-49 -36 45 57 7 48 -14 12 0 +-37 47 -11 -31 0 +42 -27 0 +-57 -16 0 +49 -1 -44 26 -11 40 14 10 -30 -53 -17 41 37 15 42 24 54 0 +27 -48 -54 0 +-40 -50 26 0 +-56 48 15 -28 -55 -30 0 +16 44 52 9 -27 0 +-45 -38 -29 0 +52 -57 53 0 +25 -19 36 -37 0 +29 -27 -46 0 +49 51 40 0 +-19 44 35 0 +-21 22 -34 52 0 +-8 23 -20 -38 -10 0 +-16 -28 -36 23 -42 48 -43 45 0 +40 23 -33 -45 44 0 +25 -53 -51 -35 32 0 +-52 6 -50 -40 -38 0 +-20 40 3 -56 0 +52 22 50 -25 43 41 0 +49 -51 43 -26 0 +-33 57 -26 0 +44 -25 -21 0 +-29 32 -37 0 +-42 53 -57 16 -45 0 +16 7 37 -39 -23 0 +-39 -31 18 0 +36 -33 53 3 -56 0 +-52 -10 4 9 0 +-44 35 45 27 40 0 +45 -19 32 -36 -41 53 -28 -30 -9 0 +9 -11 -32 42 -39 53 -55 -28 0 +47 12 11 0 +33 46 -26 0 +-23 -55 -24 -49 30 0 +-42 53 45 52 0 +-17 -20 -44 21 0 +-41 -36 -1 20 0 +43 -51 29 52 0 +55 52 10 -25 31 51 -54 -49 -29 -6 40 7 -57 5 -18 41 -39 50 0 +48 -21 30 0 +-45 51 -7 0 +-20 -35 1 -24 0 +-29 34 45 44 0 +10 -47 -52 8 -48 -57 39 55 42 0 +-21 16 -52 0 +-18 54 20 0 +56 12 34 -30 0 +-2 13 18 -25 37 -46 -52 -49 -14 -45 40 54 -31 0 +-25 32 33 -21 0 +47 50 4 51 0 +39 -5 -38 51 57 -17 -41 -45 44 25 0 +-35 -38 23 -18 -39 -44 -42 0 +46 -44 50 -27 19 -56 -45 32 0 +42 -28 46 39 33 -7 -45 0 +-50 23 52 46 40 0 +-27 -14 57 0 +-42 7 31 0 +35 31 30 -36 0 +27 14 9 16 7 -53 -34 43 57 39 0 +14 48 69 -66 0 +68 -63 -28 0 +42 -60 67 45 -47 -68 0 +-65 -45 -43 -64 0 +70 54 59 0 +45 -59 -48 1 20 71 0 +64 -25 -32 -58 -67 -44 0 +65 2 63 58 0 +-70 -62 -10 61 66 32 0 +-69 -21 60 62 -12 -71 10 0 +43 -35 -61 38 63 0 +38 -70 -69 0 +34 43 -60 45 0 +37 -2 -63 56 58 61 42 0 +55 40 71 0 +-50 3 -64 0 +-40 -67 54 0 +-32 23 70 10 -25 53 1 0 +67 -40 71 -59 -2 58 0 +-60 71 -41 0 +44 33 71 0 +64 -65 -14 -68 44 -67 0 +-52 29 -59 0 +59 -50 2 0 +63 -70 67 66 0 +-13 58 -29 -54 64 0 +71 -41 -61 0 +54 71 0 +-66 -45 -22 0 +23 71 -35 -61 -16 0 +-65 -29 58 0 +8 47 41 0 +-36 66 71 -65 -61 3 0 +68 -63 59 62 -61 0 +60 -52 -70 0 +59 -64 -55 -67 -16 37 0 +-11 42 13 -57 0 +69 66 -61 0 +37 61 4 0 +62 -58 25 60 63 59 0 +11 -39 -60 51 -17 -34 0 +-63 0 +-67 -57 -58 0 +62 -67 -8 0 +22 69 -34 0 +-19 64 67 -42 63 0 +68 -59 -70 56 -61 25 0 +-42 -67 -62 0 +32 69 -68 60 61 -46 -65 0 +-66 -71 70 -58 -37 48 -44 45 0 +5 50 -66 -29 59 -68 0 +43 -61 56 64 0 +-70 -54 -67 -58 0 +68 60 10 0 +71 54 -15 0 +48 -54 -66 60 -47 41 69 -44 0 +-42 -11 -69 32 -50 -46 0 +-58 -42 30 0 +-62 -28 68 0 +-61 -39 60 -12 0 +-65 -48 54 69 0 +60 39 9 34 37 0 +66 -58 52 -69 0 +-59 55 70 0 +-26 -24 -55 -17 0 +27 -58 33 65 -15 60 -61 44 -52 69 67 -2 63 0 +-66 29 70 0 +67 -36 59 0 +24 -22 20 0 +-42 -39 -65 69 63 -61 0 +71 -68 -46 0 +-26 62 -33 0 +-65 59 70 24 62 -47 68 0 +-70 -41 -39 -68 -49 0 +-3 -71 52 0 +70 -22 45 -41 62 0 +40 -67 -70 -23 14 51 0 +-40 -5 63 -59 0 +71 48 70 67 -50 69 0 +-43 -64 50 -25 59 -49 0 +-44 -38 65 0 +55 -58 -9 0 +-37 68 8 0 +12 -41 -62 -65 0 +61 65 49 0 +56 10 69 63 -58 65 54 0 +34 -50 -70 58 0 +-67 45 66 0 +30 -7 71 -66 0 +2 -63 -69 19 0 +61 -40 -56 58 0 +-44 32 64 0 +17 71 14 60 -67 69 -44 -66 28 0 +17 -65 70 52 0 +-71 -60 -22 0 +56 -45 -6 0 +-6 68 70 0 +-69 61 -67 35 68 0 +-55 68 -36 -60 0 +69 -19 60 0 +67 -62 49 69 -47 11 -68 43 -64 -17 58 60 24 -45 0 +-47 58 68 -22 -65 0 +44 -50 63 0 +72 -79 76 0 +81 -76 -55 79 84 0 +-45 2 12 -55 -56 16 0 +58 -85 74 0 +85 -61 -65 -75 -81 -14 0 +-63 -73 -60 0 +-77 -74 82 64 0 +78 -80 46 63 -84 73 0 +-83 80 -36 0 +-60 71 36 0 +-63 43 -72 0 +75 -78 83 0 +-13 77 -82 -84 52 23 0 +-73 70 -82 -78 0 +-64 72 -16 21 61 73 -70 76 -83 0 +75 66 71 -45 83 -77 0 +-73 -81 70 -15 0 +-84 60 85 81 69 70 76 74 -44 78 -32 73 -83 0 +-55 -75 -73 49 0 +-25 -16 -77 -59 -75 0 +77 64 54 0 +23 -74 -77 72 -85 70 73 0 +-75 64 -74 -68 0 +76 75 -74 -25 78 -58 -69 0 +-3 75 74 85 -76 0 +40 -84 -58 -77 70 -71 -57 -80 -32 75 73 0 +-61 73 -72 0 +-83 85 75 76 -66 36 0 +42 58 -52 -84 74 0 +-80 60 81 0 +48 -8 81 0 +-48 61 60 0 +-83 -78 -84 0 +-55 2 -76 0 +-36 -70 66 0 +62 30 47 0 +78 -57 -81 0 +67 -60 -83 73 79 84 -75 61 -59 0 +-69 78 -14 -75 0 +71 -74 81 -51 0 +83 -58 -5 -40 -57 51 65 0 +-10 37 -13 0 +84 76 -74 85 61 -79 0 +53 61 -75 73 -60 82 0 +44 82 -84 0 +-72 -54 60 0 +41 29 65 66 -83 85 0 +-77 -63 70 -83 0 +79 80 -61 -64 67 -84 -42 -60 43 0 +73 80 63 0 +82 -85 -83 81 -51 77 0 +-81 61 -43 0 +-75 81 44 59 0 +-85 -58 62 -81 0 +59 77 84 -80 0 +-79 77 85 -36 0 +77 -81 -56 0 +-73 80 -61 0 +79 -75 -37 0 +78 64 -69 -54 57 56 -71 -6 -72 -58 0 +59 -75 79 0 +-68 66 -76 -59 0 +72 75 56 0 +-78 -73 74 0 +-35 65 -60 61 -79 -69 0 +-78 -25 -81 -84 -68 -85 0 +-61 57 84 -50 -65 0 +-60 71 -79 -63 0 +-74 -61 -37 0 +-50 -25 -30 82 -58 0 +-79 -60 75 -74 70 0 +-41 -65 24 7 69 -74 62 0 +-46 -57 70 -76 0 +8 58 -79 -72 0 +-73 -59 71 84 81 45 0 +-73 31 -71 -76 -82 0 +57 63 -66 84 0 +82 -73 -76 72 -70 59 -58 0 +-11 -78 66 0 +71 44 -70 -84 72 -64 0 +-33 72 -84 0 +-83 78 0 +61 77 71 -72 83 -78 56 26 0 +80 -84 44 63 0 +-85 79 58 0 +-84 85 -39 -74 0 +30 -80 72 84 0 +-86 -88 -93 -64 100 -79 85 -77 -90 0 +60 -96 72 0 +-94 -53 85 -77 -83 0 +-89 -99 -100 -92 79 -71 0 +-91 -98 -97 90 -81 96 60 0 +-65 71 82 -74 0 +40 72 91 -76 0 +-75 88 102 -77 -87 0 +97 101 -58 -95 61 0 +76 -59 -84 0 +94 53 -45 -101 0 +86 -77 64 98 -11 92 25 89 0 +87 99 -102 0 +93 95 97 -102 0 +87 -85 61 89 0 +-102 -86 62 51 0 +-83 -75 -71 -46 73 0 +-100 94 -68 0 +-74 -51 -80 87 62 0 +43 60 -57 -94 0 +3 64 93 -34 22 91 0 +102 -75 -97 60 -86 -83 100 101 -87 0 +9 89 -58 -80 -97 0 +-81 -88 -91 0 +-82 -94 -72 97 73 0 +-57 -86 -99 50 -100 -98 0 +-88 74 100 0 +-80 74 -95 0 +-76 -92 102 -87 0 +-92 -99 35 -97 -5 102 -66 -72 0 +-72 91 84 0 +41 100 -101 0 +87 -54 -60 64 0 +-75 -92 59 76 0 +22 -98 75 0 +89 93 102 73 0 +90 -95 -99 88 0 +-57 -102 77 80 0 +78 -68 101 -80 57 60 76 -87 75 0 +-80 -94 93 88 0 +86 -94 -99 -63 62 80 -76 -95 -22 90 0 +84 -60 96 0 +93 102 -94 0 +25 79 92 0 +41 82 75 0 +-94 -9 79 -85 75 -58 -77 78 0 +45 75 -89 92 -52 -100 -65 0 +-76 57 80 -96 41 -89 -98 0 +87 -85 64 -93 0 +29 -60 -69 0 +-92 -85 73 98 -57 95 0 +-91 95 82 -92 0 +86 100 -88 -64 -92 0 +-93 77 51 0 +-76 -68 -77 -94 44 0 +-100 -51 -98 0 +101 -74 68 0 +-61 91 93 0 +-60 90 -91 0 +88 93 0 +-101 65 74 0 +-96 -92 84 52 60 0 +-97 -75 -50 0 +95 -86 78 -99 -56 84 0 +-86 -58 39 0 +83 78 77 0 +58 -90 73 93 0 +68 95 -59 88 94 0 +87 93 4 -58 -100 -48 -84 -75 76 0 +94 97 -78 0 +-102 -94 82 0 +100 68 76 0 +89 96 -75 77 -12 -97 0 +-97 102 88 0 +-74 89 98 82 83 0 +-90 -70 -52 81 -96 -76 0 +74 41 91 0 +102 -89 73 0 +86 -91 -101 -63 -27 73 -87 -98 102 0 +51 89 81 61 0 +-100 -80 40 96 0 +101 -50 -62 -91 0 +-90 -89 -96 -63 0 +-73 -101 -96 -40 78 -32 0 +-81 82 -98 15 -63 -101 89 -96 39 97 0 +84 -63 -90 42 37 23 0 +74 -65 78 0 +94 99 -72 85 0 +86 -94 89 0 +100 79 86 -85 88 0 +-69 35 84 0 +100 -102 -63 -83 -75 97 0 +98 -88 92 -95 0 +-74 40 -101 0 +68 -82 -65 76 75 0 +93 78 100 98 0 +87 -99 -83 -76 -95 -100 97 0 +98 -86 -95 0 +94 71 -85 0 +71 100 -74 87 -18 -68 94 -83 -76 101 17 58 -97 59 93 102 0 +40 -88 59 -91 0 +99 -87 -91 -94 31 -100 -29 -77 0 +23 -84 93 -94 -81 101 0 +-91 82 -98 -87 0 +87 -99 76 -64 0 +81 -82 99 0 +90 -83 3 -86 0 +73 -85 93 0 +-101 -94 76 -93 -88 -78 0 +-96 88 -92 0 +100 57 -93 0 +-68 -67 -80 0 +-69 78 54 0 +-99 83 -77 0 +62 99 93 7 102 67 92 -76 0 +100 -92 -94 91 0 +91 -112 118 0 +-92 -114 84 86 24 -65 -81 85 -94 0 +107 -116 114 0 +-110 -88 98 0 +117 115 112 -104 -107 -109 -102 0 +-111 -103 -101 0 +-105 -97 -113 110 -99 -48 -115 0 +116 36 38 0 +113 94 108 109 -86 111 0 +-81 -78 85 -100 105 70 103 0 +-91 -87 24 0 +63 -108 -117 0 +-106 67 -118 -102 104 0 +-89 -91 101 102 106 0 +81 -115 97 0 +116 104 103 107 0 +85 -83 -96 67 -89 1 78 0 +117 95 -99 -108 0 +7 111 -69 106 105 -71 98 22 108 0 +-63 -104 -96 99 0 +-94 114 -117 89 -68 90 111 60 0 +109 -106 72 0 +-60 113 -18 -110 0 +90 74 117 100 0 +-69 109 115 104 66 0 +-110 118 -100 -92 -107 -108 0 +-117 -100 -97 105 116 0 +-71 -89 87 41 -105 102 100 0 +-77 -117 -92 76 110 0 +116 101 -110 8 0 +-76 -79 111 1 113 107 72 0 +-111 -105 -116 37 88 -104 84 -83 0 +49 -96 113 -95 99 -108 -13 0 +-113 112 -118 -69 105 0 +-110 96 0 +105 65 -63 -38 -101 -112 -91 -106 0 +83 105 118 0 +-106 102 -112 0 +-106 -35 115 -110 0 +85 -88 109 0 +-116 106 -97 0 +-99 89 -90 115 0 +71 107 -117 0 +112 86 107 0 +-42 108 -116 0 +-109 94 104 0 +94 -88 -64 75 0 +116 -104 76 -114 0 +62 -113 -102 111 107 0 +-110 118 -114 99 0 +110 107 108 0 +-93 103 -60 -104 0 +-91 -104 -107 -11 0 +-102 73 107 79 90 0 +79 -114 99 75 86 -112 109 -53 0 +-117 95 105 0 +-106 -87 108 104 0 +-91 -99 -108 -73 89 -109 0 +103 -108 66 -94 -111 0 +-68 -91 -92 97 0 +114 -109 -115 0 +-94 -90 75 0 +108 -78 -99 86 101 0 +115 -100 -87 -97 0 +114 -67 -107 0 +75 63 -68 0 +72 89 117 -112 0 +-110 86 111 0 +82 117 68 -100 108 0 +-107 96 27 106 -105 115 -117 112 26 0 +108 77 -103 0 +109 82 -112 102 90 0 +110 -99 73 105 0 +86 -108 111 -82 115 0 +-96 -64 -116 -115 -108 86 103 -111 0 +-115 65 -90 -63 0 +-95 -107 89 0 +-103 -85 -111 114 -15 0 +105 110 -112 95 0 +-110 84 -49 92 0 +117 70 -112 -93 0 +-111 -117 -108 97 -118 61 112 86 0 +106 109 -93 0 +109 117 106 -70 0 +-114 118 106 0 +113 -116 85 0 +98 104 -108 0 +108 94 -115 -106 103 0 +-84 -85 -113 0 +111 -55 82 0 +-86 -108 -107 0 +96 115 46 -78 -114 -69 -110 105 0 +38 95 112 93 -86 0 +-105 -104 -114 116 0 +-114 100 110 0 +-82 -98 -92 0 +-115 -116 -95 0 +73 117 86 -93 111 0 +-104 -47 -85 0 +-117 -114 -88 0 +110 3 -104 -102 -73 0 +108 116 -79 0 +-113 104 -81 106 112 0 +-95 103 -102 0 +94 -59 113 88 112 0 +-117 102 113 109 -115 0 +107 113 -88 0 +-72 92 -94 -108 113 49 63 0 +72 -113 91 -108 114 -110 0 +-76 -75 -109 114 0 +103 -102 -92 0 +112 -92 59 111 108 113 -49 0 +110 -114 14 -111 103 -118 0 +109 106 -107 83 0 +113 -95 -107 0 +94 -115 -112 -113 95 90 0 +-99 110 -91 0 +-101 -118 -96 -99 103 -86 106 79 -109 0 +-111 -81 -107 0 +108 86 107 -116 0 +72 -106 69 0 +-97 -91 77 -114 88 -86 0 +87 113 84 -115 -92 75 67 0 +96 -112 -107 -88 89 97 28 0 +111 112 -108 -95 -113 -117 107 0 +109 50 88 -63 0 +109 17 107 -103 0 +76 -117 106 -72 0 +-118 114 -78 99 0 +-100 115 114 -84 98 0 +87 -110 -113 0 +105 95 -118 0 +-107 75 98 0 +101 84 -82 102 0 +-95 -114 36 108 0 +-103 -107 -114 -101 -62 117 0 +8 -118 106 0 +109 -62 61 100 -65 0 +39 112 117 86 -107 0 +113 107 101 -105 115 -103 0 +97 111 117 -33 91 42 0 +113 105 -83 101 -115 0 +-102 106 -112 0 +-109 -103 -115 -68 106 0 +115 -101 118 -106 -117 -62 -108 -81 107 83 91 96 0 +-69 117 -113 95 0 +108 -112 -97 0 +-108 121 -116 0 +-131 -121 -108 -115 80 124 -133 0 +106 132 -123 0 +-107 -80 100 -137 0 +-138 87 123 26 -134 127 76 102 -104 0 +138 -114 129 102 -119 136 0 +-132 -61 67 0 +-122 -108 -60 134 0 +-135 122 131 0 +-120 -125 126 0 +-80 93 130 0 +-103 118 114 0 +-129 -124 98 -128 118 0 +133 135 -136 -107 -126 119 -130 104 -75 -127 0 +125 120 -15 128 0 +108 -88 92 137 0 +122 125 -90 0 +131 136 -134 0 +120 -89 110 0 +119 -136 118 0 +-114 126 -112 -75 0 +120 -87 -133 72 -114 -79 -125 0 +-123 132 125 63 0 +-58 -130 -137 -64 -121 138 0 +-122 -132 104 0 +-131 -31 -106 126 0 +-100 126 -121 0 +120 -132 -42 -136 138 0 +120 -87 -135 94 -119 -104 127 0 +-124 126 -137 -63 0 +-90 135 -132 0 +117 119 -60 105 79 0 +124 -130 127 33 -20 0 +98 123 -127 -119 132 113 0 +-126 134 60 97 132 0 +-134 66 76 -55 138 88 127 121 130 0 +119 117 -121 0 +-123 -97 107 0 +113 106 -129 -114 -130 0 +128 -81 132 0 +125 -135 -130 -77 107 137 0 +95 -132 75 -106 128 0 +-105 129 112 -130 115 0 +-124 -97 138 129 136 73 0 +-96 134 109 0 +119 125 73 -106 134 -88 0 +-122 125 108 0 +-123 -120 -21 -118 0 +-67 -115 -95 0 +104 128 -123 -127 137 0 +-112 124 121 -109 -107 0 +122 -110 -126 0 +132 116 -93 110 -80 130 131 124 127 0 +-127 131 -91 120 -112 0 +-110 122 132 0 +99 74 -132 -67 129 -63 138 0 +2 -59 -123 -129 115 0 +-121 -91 -131 0 +-126 -134 93 120 0 +-94 128 -135 -114 0 +127 -31 -138 -68 134 101 59 0 +-123 114 106 -115 137 -82 0 +-124 93 -113 0 +105 101 127 -112 0 +136 120 -119 125 22 -126 81 0 +-125 91 51 131 0 +-125 -138 -115 133 123 -134 -101 120 0 +-126 -84 -89 0 +-119 -126 0 +106 133 135 -130 -138 -123 0 +-123 93 -73 128 -112 0 +-137 115 112 0 +94 -117 115 132 0 +-130 110 83 -119 137 0 +-112 97 88 84 0 +108 -71 -131 138 0 +62 -69 108 134 0 +115 107 117 0 +123 121 -136 0 +78 106 69 136 104 0 +-131 -133 138 -123 -135 121 0 +121 -123 -80 0 +-113 -65 -120 127 -131 0 +129 128 -137 0 +-77 -128 -123 135 -83 -133 -121 -109 -111 0 +134 -95 87 0 +-134 -88 -135 90 107 0 +75 -114 -137 -92 120 127 -117 96 -59 0 +-122 123 45 -103 97 -137 0 +-108 -123 137 133 -66 0 +120 -128 -89 105 132 126 -106 113 122 0 +121 -125 -120 126 0 +-106 130 -131 -134 -138 105 0 +60 132 -125 -119 118 99 0 +-29 -120 128 -131 0 +-109 -126 -114 0 +-133 103 138 -111 -119 117 102 -107 0 +124 117 -111 0 +-133 80 88 0 +136 -115 -86 120 0 +-126 113 0 +-112 -130 111 135 -122 0 +-137 88 -106 122 0 +115 84 92 0 +119 118 103 66 129 127 133 -117 0 +-136 132 -105 -112 0 +127 66 72 0 +138 119 -105 111 0 +92 136 103 124 130 0 +127 -129 -136 121 -138 0 +-126 -102 -98 0 +118 -133 101 48 0 +-41 89 129 0 +127 80 138 -119 124 115 128 -107 27 0 +-137 -105 119 0 +-133 -130 110 122 0 +-122 127 107 -128 -131 -126 85 0 +106 -120 -107 -137 0 +126 -125 -91 67 -122 0 +-94 -134 -133 -55 0 +104 -132 -19 0 +133 126 -83 -138 94 107 -112 -67 -123 135 0 +89 95 -112 0 +138 -126 -129 0 +-131 125 0 +-21 -99 -67 129 -130 0 +112 -132 0 +119 129 -113 96 -136 -75 -95 0 +125 97 -123 58 0 +-138 -123 18 106 93 59 0 +-102 40 -132 126 128 -2 104 115 0 +65 115 121 107 88 131 0 +103 -130 126 120 137 85 0 +107 -127 -82 131 -23 -111 0 +124 -125 131 -87 88 0 +122 119 -133 60 0 +95 105 127 -91 0 +139 148 150 -113 -149 0 +-142 147 123 151 -131 -51 140 112 0 +144 124 -101 -82 -45 0 +-151 116 146 -143 0 +-106 -136 -147 -146 116 0 +125 -136 -71 -100 0 +-148 -113 142 143 0 +-126 -139 -150 0 +141 149 122 -112 0 +-144 138 114 -140 -145 0 +145 82 -135 -111 0 +130 120 133 0 +111 -141 -149 137 -151 150 -127 0 +-114 -147 140 124 -125 0 +120 -145 -142 0 +-88 108 -2 -121 0 +141 -131 -127 139 0 +106 122 134 0 +130 -108 135 -144 0 +-141 -111 -143 96 104 0 +117 -140 -105 145 0 +-147 134 -139 -60 0 +143 -148 147 -116 -136 0 +-147 -135 -145 146 0 +-146 88 -119 -128 0 +-109 124 -108 -148 -132 0 +116 -132 -140 147 0 +140 -136 -118 -143 0 +143 126 -109 151 0 +149 137 122 0 +144 -103 -104 0 +129 -146 150 144 151 -131 0 +129 139 68 148 92 0 +104 140 -139 134 0 +135 127 143 0 +102 75 149 124 0 +134 129 -145 -7 0 +-121 132 106 0 +92 142 125 0 +150 145 137 109 135 -101 149 140 -126 -128 -147 0 +-95 -141 -134 125 0 +148 127 149 143 105 -145 -146 -139 0 +116 -141 0 +-65 -131 136 140 143 123 90 141 0 +-150 -83 -141 -120 0 +-141 -144 -124 115 -123 0 +-146 104 -112 0 +-141 -103 -83 -150 149 0 +-125 126 151 143 -118 133 148 0 +-138 151 150 -100 140 0 +139 148 -110 -141 -87 -143 0 +97 151 -89 -131 148 0 +-148 -120 -145 0 +-143 133 -142 0 +-112 146 -95 -109 -134 0 +-140 69 -102 -96 0 +149 135 117 0 +114 -144 95 0 +-149 -104 50 148 122 -81 128 116 134 135 114 0 +104 147 143 -135 116 0 +145 -117 -137 148 -141 150 -140 -66 -107 106 -108 0 +-130 -151 147 146 139 145 0 +-143 144 123 0 +149 130 -74 -139 143 100 0 +-119 -144 107 -142 0 +148 142 -143 -111 87 0 +-141 -144 148 -137 0 +139 -67 122 130 -149 148 127 -143 -145 -133 92 131 -136 146 0 +-131 -82 104 -142 -112 0 +139 104 -147 -141 -151 -148 -110 0 +149 -147 145 0 +140 -115 132 -121 -150 0 +-148 -125 121 151 -38 0 +-127 119 -103 -142 106 0 +-130 111 93 -149 0 +108 -142 -139 102 0 +112 116 115 0 +148 -131 125 -145 -142 -140 -100 141 0 +94 -151 147 119 145 0 +-140 130 121 148 147 0 +-139 -107 147 0 +-136 68 139 0 +-145 134 -149 0 +125 127 -42 149 0 +126 -83 -151 -113 146 -103 0 +-126 -150 86 143 -90 0 +-107 142 80 -139 -38 122 -146 144 149 -145 138 0 +146 136 -145 0 +-129 97 -151 -144 -122 -101 141 -134 0 +-145 -130 -91 150 -151 0 +-141 -139 -116 151 94 -143 80 -136 0 +114 149 143 -115 -103 -104 0 +-118 -144 44 -142 124 147 0 +-130 128 -139 -148 135 112 -145 134 -147 0 +139 98 130 -94 0 +-72 139 -142 0 +83 -149 121 -139 0 +141 -136 -140 -149 0 +-151 -51 106 104 -113 144 125 133 0 +-122 146 -101 0 +-130 -121 -144 -104 119 0 +-144 150 -146 0 +115 60 -146 0 +-121 140 -78 113 116 126 122 91 0 +-108 147 145 140 0 +151 -144 130 141 0 +-118 -138 -143 -106 0 +-149 -145 98 0 +-103 -62 -126 96 128 15 -113 0 +144 -139 145 0 +114 -144 -142 107 0 +-150 -125 127 0 +-115 -137 -135 0 +-126 -150 -149 -143 -151 0 +82 143 124 0 +-121 151 -37 -143 140 -16 139 0 +-146 144 -120 0 +146 145 130 136 0 +147 141 -145 -140 0 +98 150 126 0 +-148 86 151 117 0 +-98 126 -104 150 112 0 +-139 -146 93 0 +-150 -100 103 0 +149 127 -146 -151 0 +-140 84 122 0 +148 143 -100 106 140 0 +-140 103 76 119 133 -151 0 +87 -139 107 -147 0 +-143 -109 142 140 -146 148 -127 139 122 0 +-87 65 71 -106 -147 0 +103 114 147 -139 -142 -151 0 +-99 141 151 -143 0 +-141 142 138 -140 121 -114 -128 58 75 0 +130 -136 -133 -144 0 +-146 126 -145 -151 -121 -142 140 125 -138 92 -123 0 +-122 -150 -110 -149 -146 0 +-141 150 -151 152 161 -164 0 +-128 116 154 0 +-159 164 153 74 -160 162 157 0 +-146 -163 -152 -147 0 +159 118 -157 148 -162 156 140 -151 160 -154 0 +158 145 -93 155 142 -131 -156 0 +-139 100 -161 0 +-141 -155 -132 0 +163 105 -158 -153 -60 -123 0 +-145 -154 -78 131 -153 0 +156 -164 -145 122 0 +-145 -138 151 -159 -116 85 0 +155 146 163 -143 -158 124 105 152 -145 -154 0 +164 96 163 161 0 +-160 140 -162 132 0 +155 -111 -156 140 0 +-93 147 125 162 148 157 0 +149 159 -157 0 +163 150 130 135 -141 -147 -144 0 +151 -129 -156 154 163 90 127 0 +-152 154 160 126 0 +133 -160 -150 0 +-160 -131 163 -161 -139 -156 0 +88 -139 -162 0 +93 126 109 0 +145 -148 152 0 +150 139 104 -127 -141 157 0 +-105 162 160 -164 0 +161 123 -155 0 +145 152 142 106 0 +-78 -148 133 -162 144 -66 0 +154 -98 147 -141 139 -136 -124 0 +157 -154 156 -158 159 148 146 -126 0 +152 -160 -157 -155 -129 -136 148 -112 -135 0 +153 -154 159 -147 111 0 +162 -153 -151 0 +160 149 155 -140 151 0 +-156 -134 -141 -142 -112 -80 162 0 +154 -121 -79 -162 113 0 +153 159 -154 -119 0 +-103 157 -160 0 +-160 -142 147 -145 -162 148 -104 -129 0 +145 -143 -147 -164 0 +-88 150 -112 161 0 +-163 123 153 -151 159 -160 148 0 +-156 155 -96 0 +160 159 142 0 +158 -159 -143 0 +108 -162 144 -146 -148 164 0 +143 -152 -141 0 +156 -115 152 -158 -126 154 0 +157 -143 153 0 +-163 82 -162 0 +-146 -161 111 -158 157 156 143 -142 -164 -129 0 +-108 133 -152 0 +160 -147 -149 152 0 +125 153 -154 -160 -108 0 +-162 149 -145 -84 0 +-160 158 157 0 +-144 158 -149 -160 141 89 153 -130 0 +150 -154 -148 0 +139 156 -104 -126 0 +-152 143 145 153 -140 -141 -150 162 0 +-156 160 -154 153 0 +-158 150 106 -148 133 149 0 +153 -161 157 76 0 +151 -158 -149 -143 -142 0 +-160 -162 -152 0 +151 157 -160 152 0 +-157 145 134 144 -151 0 +163 80 156 0 +152 -162 158 0 +146 -156 -159 0 +-153 145 164 144 -154 0 +153 -163 -149 105 0 +164 -116 160 0 +103 140 -99 151 0 +-158 155 140 161 0 +-34 150 161 0 +-153 -162 -161 148 -160 155 0 +-164 -118 152 0 +-154 -139 -164 136 0 +-106 154 -116 160 86 144 161 -145 0 +144 -141 -158 163 152 -126 0 +-163 -164 0 +-141 149 126 -155 127 -145 0 +-143 158 -152 0 +-158 -140 -163 -161 0 +-151 -131 -96 152 -155 -142 0 +156 -163 -155 0 +139 -159 -111 0 +112 -143 -35 0 +160 162 -154 158 161 148 -140 120 106 0 +126 -155 110 -157 59 0 +135 -161 -144 0 +161 127 156 -163 146 0 +-150 160 149 -109 0 +161 157 -77 0 +-168 176 -165 157 0 +-175 168 -173 178 -141 170 134 0 +-160 174 -129 -120 101 167 0 +171 -172 -159 173 0 +165 -169 -160 0 +-176 -166 -167 -177 -147 0 +-170 172 -158 0 +-156 -178 140 155 -158 169 -106 161 128 175 0 +-171 153 148 0 +154 166 -153 145 -157 177 -174 -170 0 +172 -170 0 +-158 109 -159 0 +175 -167 160 -166 155 64 0 +164 -176 -154 -173 167 0 +150 152 -165 0 +146 -166 97 156 0 +164 163 -154 0 +-169 171 168 177 0 +149 -172 -177 -144 0 +177 172 -157 0 +-176 -157 -156 0 +143 167 -164 0 +-153 -156 160 0 +-153 163 139 0 +102 -166 156 0 +-164 -177 169 140 -170 0 +-178 144 177 0 +-113 170 -122 178 159 -165 176 -154 166 0 +178 175 -158 0 +145 -160 -139 0 +177 173 165 123 172 161 160 167 166 0 +163 -97 -140 -177 -156 -109 164 0 +150 -162 167 0 +-160 171 0 +161 166 35 174 -155 170 169 -154 -68 -177 160 0 +163 139 169 0 +152 -170 -144 0 +174 -158 -171 154 0 +148 165 -157 0 +166 160 152 -176 -175 0 +151 175 166 0 +-178 -173 161 -164 146 157 -169 0 +-151 -122 -159 -168 0 +108 175 -152 -148 155 -153 0 +-175 -157 0 +-178 175 164 -165 144 -145 -174 161 0 +-166 162 -159 0 +166 -131 165 0 +-171 -173 -152 93 0 +-175 146 159 -137 -177 0 +-154 168 177 0 +95 171 -174 -156 0 +-172 -167 110 -177 175 158 113 -162 168 169 0 +176 153 166 173 0 +-106 168 -176 -97 -169 0 +177 -157 173 -122 -155 158 124 144 146 0 +-154 -164 -166 0 +172 -168 -171 0 +166 -170 -167 0 +-174 -157 -176 -162 0 +-165 -148 118 158 150 137 0 +-169 53 -166 0 +-173 170 171 160 147 0 +172 168 177 -151 -173 -143 175 0 +169 -163 -152 150 165 -161 0 +-174 164 147 -161 0 +-173 177 -162 -159 0 +-166 176 165 -143 172 -175 152 0 +153 -151 171 0 +-149 -103 167 169 0 +-166 156 169 -160 168 132 0 +176 163 165 147 0 +-161 -160 170 145 0 +168 165 125 0 +-158 -177 174 -155 151 176 159 170 0 +-160 -153 -157 -173 0 +173 -177 178 -162 174 0 +174 -161 -140 0 +-145 -160 162 0 +-170 169 0 +154 170 174 119 -152 -155 173 162 0 +167 -163 159 0 +176 -166 128 152 -148 -150 0 +176 -161 157 173 0 +-76 -165 -141 -176 -166 0 +117 -168 -173 -171 -131 0 +-165 162 -163 -174 -178 -172 177 -103 -168 164 175 -153 146 147 -171 0 +-160 -157 177 0 +154 172 163 -160 -167 142 -169 0 +-171 82 176 0 +-153 -177 -144 -163 169 0 +108 175 170 164 0 +145 106 -154 178 152 -174 119 164 -176 0 +-172 -165 142 -168 -170 0 +-174 146 -87 -168 0 +-126 -158 -159 0 +165 172 -154 0 +167 -171 137 0 +160 -132 177 -170 -14 -175 156 0 +-158 -165 163 164 -176 0 +169 -172 -177 170 167 0 +177 -156 -160 0 +166 -107 -154 0 +154 -172 -162 139 0 +-167 172 164 -176 -135 0 +167 165 -171 -143 0 +-96 -72 119 -163 -177 -147 -170 -174 176 0 +174 155 144 156 -173 161 0 +169 154 -171 0 +174 152 140 -173 -158 141 0 +160 -162 178 0 +-169 160 -121 0 +134 151 -170 136 168 139 -177 0 +143 -110 -174 -165 0 +165 150 157 148 175 0 +-175 -176 -183 0 +189 -179 -188 -184 0 +-180 174 157 188 -181 -156 186 0 +-187 -163 -112 0 +-155 -161 183 178 184 181 0 +-182 180 -185 0 +-189 182 187 0 +-178 161 140 0 +-186 185 -152 0 +179 -182 -159 155 0 +-145 173 -184 0 +-169 168 0 +186 -180 -103 129 -173 -172 -165 0 +182 165 181 0 +-161 -182 -176 0 +-156 -109 -162 -140 0 +146 -189 -166 0 +184 167 189 104 -174 -146 175 0 +-172 179 187 0 +185 -171 179 -189 0 +183 -188 -137 179 -169 0 +172 -157 154 -148 184 183 165 0 +-183 -158 180 -169 -146 163 0 +182 189 -165 -186 188 168 155 0 +188 -133 182 0 +-143 172 -157 171 -159 -168 0 +175 -164 -161 158 0 +-169 177 187 189 -188 0 +159 188 133 185 -163 180 0 +74 184 -185 -153 171 186 -188 0 +170 -186 -189 171 -176 161 183 -168 146 164 -188 0 +158 -184 180 -185 -183 167 172 182 0 +-185 156 -179 0 +-179 167 184 171 108 -164 185 146 0 +-184 175 -181 126 180 187 0 +-172 179 -182 -186 -176 175 0 +164 -181 -154 -140 -188 163 157 184 0 +170 -182 -183 0 +80 170 167 182 160 -189 0 +180 -150 -184 185 -171 -186 -177 189 0 +-181 -174 -131 179 -183 187 -139 172 -171 186 -165 -182 0 +174 185 -167 0 +188 166 185 0 +189 173 188 0 +188 -168 -149 -180 0 +181 175 182 0 +-183 -189 -143 -188 181 165 163 -178 0 +188 186 173 -182 168 0 +-183 -185 167 166 0 +-169 170 -158 -172 174 179 -184 0 +-184 -175 0 +-181 173 -179 0 +-145 187 -185 -171 186 -149 0 +-180 -183 -181 -166 141 0 +132 -183 -170 181 0 +173 187 163 181 0 +-182 -162 169 -180 188 0 +177 -184 -151 -185 182 175 180 0 +-182 -180 102 0 +-180 183 0 +-168 -186 -171 187 188 165 183 176 0 +188 -151 -189 -140 171 184 0 +180 103 -176 0 +-182 -187 156 172 0 +186 184 -178 153 188 150 -183 179 -171 176 0 +169 -174 189 -160 -179 0 +-155 -189 0 +-153 184 -174 0 +168 167 -169 147 0 +-167 -182 -176 -180 -169 -94 0 +-180 188 -179 0 +177 188 -163 -152 0 +-160 187 141 182 0 +-184 -168 169 -170 0 +-180 148 -185 -168 188 0 +179 -164 173 185 183 0 +-166 -156 181 179 -162 0 +-165 -184 188 175 0 +-160 -144 184 0 +179 163 -180 0 +151 183 188 0 +176 -160 167 0 +166 185 180 0 +157 189 183 152 -186 -176 0 +148 -175 -152 185 -166 182 0 +-162 -186 189 177 -178 0 +-178 165 183 -140 0 +-185 180 189 -154 -181 0 +184 153 -143 -169 -183 163 -187 -103 -174 155 -127 149 182 -186 189 165 0 +-167 -186 158 171 0 +-182 -183 161 0 +-169 -182 -184 0 +161 187 -188 0 +-185 177 -181 0 +-169 -177 183 0 +-179 139 170 -154 0 +-182 -174 184 -187 0 +182 -157 72 174 0 +184 -168 153 -174 0 +183 186 0 +188 181 164 0 +185 114 -189 183 -167 0 +-179 -178 -156 0 +158 157 -183 187 135 -178 0 +-189 172 -142 160 166 -180 0 +-180 -168 196 -163 -194 0 +-139 -193 192 197 200 -199 -170 198 0 +177 -197 -195 0 +-173 -155 -166 0 +-192 201 179 -188 -190 194 0 +-181 -198 132 -160 0 +193 178 195 191 0 +-201 -191 -188 -196 -153 199 186 190 -154 0 +-182 -185 180 0 +-166 -200 161 0 +194 200 -170 -197 0 +-196 -169 -156 -198 -193 -158 174 0 +184 200 -198 151 164 -13 0 +-193 185 200 144 0 +200 -184 166 -137 -178 -181 169 198 0 +126 184 0 +-197 -201 174 0 +-157 -179 -193 -152 181 192 0 +-198 -149 165 196 -192 191 -193 0 +200 -169 192 0 +194 -192 -182 -166 -190 -152 0 +-200 169 -190 186 -189 0 +-198 179 -171 -156 0 +-199 -194 161 0 +192 -200 -191 -169 0 +-190 176 -198 -194 0 +-189 -192 -197 0 +-199 150 191 176 -190 -158 0 +181 161 159 0 +166 -191 -199 -197 0 +-194 -193 -196 186 0 +-184 199 -174 -198 200 0 +172 -189 -196 0 +-200 186 0 +200 193 201 0 +190 -199 -184 195 0 +196 180 -173 -193 0 +-148 -199 -194 -196 0 +198 197 -157 0 +-152 194 -197 -201 -183 177 0 +-184 -197 -201 0 +-190 -182 184 -194 -200 195 150 0 +191 -160 189 -198 0 +-168 187 152 0 +190 199 0 +-191 197 -201 192 199 0 +-194 -193 -142 -128 -187 -186 0 +-183 147 -187 -156 181 -194 182 -120 195 -167 0 +-189 -180 -197 183 0 +173 -170 -200 -197 -86 194 0 +-192 -168 0 +183 -193 -179 171 165 0 +-196 182 -189 0 +192 102 191 0 +-197 -196 191 -167 -198 -192 0 +-190 196 189 -184 -193 0 +-182 157 199 0 +80 184 -183 0 +200 187 -197 -191 182 -199 164 0 +-159 -180 -190 0 +-195 193 172 143 0 +193 -178 -168 -162 0 +190 -187 -192 0 +-163 -162 186 198 0 +190 -174 171 0 +-193 -187 -200 0 +195 196 0 +160 178 165 -189 197 -158 -195 0 +-194 191 0 +184 -189 175 -187 155 0 +-198 -195 -168 0 +183 -186 161 0 +197 -194 176 0 +-72 -182 198 -189 0 +-186 196 101 0 +-197 -191 195 193 -200 -192 0 +201 -194 0 +-191 -179 -176 0 +-191 196 176 200 0 +-187 -197 193 173 198 188 0 +-188 193 199 0 +-200 189 -188 180 190 -195 0 +189 159 176 -201 0 +200 193 -155 0 +181 -192 0 +190 -185 -192 174 184 0 +143 -191 185 -182 0 +-173 169 193 196 -201 143 180 0 +191 -186 107 200 -199 0 +191 196 195 0 +-194 -201 188 -169 196 -155 0 +183 176 -149 186 195 0 +198 -194 -164 0 +-198 193 200 187 184 0 +-164 -187 201 188 -196 -144 180 0 +180 -170 68 -155 -191 0 +186 191 197 193 0 +157 190 148 0 +200 -202 -185 0 +207 211 183 139 0 +177 202 -207 -206 0 +-182 186 -205 -210 192 0 +203 192 -111 210 0 +111 -201 -203 0 +-84 -211 212 0 +199 -192 196 209 -213 0 +-208 -209 110 205 195 204 0 +208 -192 190 0 +213 -212 179 -204 0 +-171 -123 206 -196 207 0 +194 152 207 -203 0 +-182 198 -151 -201 -202 197 132 203 0 +206 -211 209 0 +206 182 209 -201 0 +-203 -191 195 -206 210 -213 -194 207 202 0 +205 196 -211 -213 0 +-207 208 -210 -199 -182 -180 209 192 -202 -200 159 193 213 204 0 +186 204 -182 211 -199 176 0 +185 196 203 -204 0 +209 156 -213 163 0 +208 -202 0 +198 208 -204 207 -205 -200 116 187 -174 202 199 -209 0 +-212 -206 204 208 -203 0 +-165 187 192 181 -200 -179 209 0 +200 193 -205 181 162 0 +207 212 -208 185 202 0 +-205 -187 -198 -211 0 +-209 200 -213 -179 202 -211 -210 0 +-197 -168 -195 0 +-212 206 199 -198 197 189 -208 0 +204 -205 -210 193 -213 0 +211 193 183 -189 210 204 0 +-207 180 -208 183 0 +-199 189 -204 -169 0 +-207 209 184 -196 -201 -187 -174 0 +205 206 -133 195 0 +173 160 78 192 198 0 +197 199 186 200 162 0 +205 -208 -191 0 +199 -207 -200 212 -182 167 188 -213 0 +205 -210 190 -202 0 +-196 -210 191 -203 0 +188 192 208 -167 203 0 +-186 -191 207 0 +-211 183 -212 198 -169 0 +-175 -204 -181 206 0 +-210 -211 191 0 +205 -199 174 211 -212 0 +-205 -187 198 0 +-209 -197 193 0 +190 195 212 182 -204 0 +-209 212 -213 192 0 +199 213 -204 0 +-134 157 211 0 +202 203 -181 -205 -182 208 -193 -179 207 -204 0 +196 209 207 -190 213 195 -212 0 +-211 -202 204 0 +-206 189 -207 202 211 -195 -210 0 +179 190 -193 0 +-194 -211 -191 0 +212 -191 201 -171 170 159 210 0 +-201 162 197 0 +212 204 -213 0 +213 -205 202 -167 198 0 +-190 -203 162 207 206 -165 -210 0 +-204 -199 203 -206 -159 -196 -207 184 179 0 +191 -205 -192 155 0 +-183 210 202 0 +191 153 208 0 +-203 202 149 -191 -211 204 -209 207 -208 0 +-209 -208 211 0 +-194 -192 -188 0 +-153 199 -165 -213 207 0 +-210 -159 213 0 +203 205 -210 0 +183 -189 -182 0 +-189 -213 -205 -197 -210 0 +-204 -180 209 0 +-187 212 202 -192 208 0 +205 209 -206 195 173 213 -178 0 +209 219 154 -228 224 204 207 0 +-211 207 -226 228 -210 0 +230 -225 -220 -183 0 +210 199 -181 218 0 +-168 203 184 211 -150 207 222 -218 205 189 0 +215 227 -167 0 +225 -207 217 186 0 +211 -230 216 -208 -201 200 203 0 +185 -196 -215 0 +-227 -229 179 164 -206 -224 214 0 +223 221 -217 229 0 +-214 -219 -216 220 -223 0 +-222 -221 -201 0 +226 -222 202 228 -157 214 0 +218 199 230 -228 0 +-168 229 -226 -185 193 0 +-229 -184 -211 -228 226 -209 227 205 -225 -223 217 -180 -200 204 -185 178 0 +-202 195 -221 -218 -216 229 0 +224 -196 222 228 -223 0 +-219 -168 196 0 +154 -219 -211 183 -224 -206 209 205 -212 0 +-208 -218 -227 142 0 +-193 208 207 -217 190 -215 0 +200 -225 182 -186 220 0 +-207 221 -224 216 -218 0 +221 215 -216 -226 0 +224 -227 -212 158 217 -207 219 191 229 0 +-221 229 222 -226 0 +-207 230 223 -185 0 +-214 -208 197 193 133 -167 0 +230 -228 -224 0 +219 228 181 198 0 +-204 217 208 -212 -222 0 +-205 219 -225 0 +-223 -218 213 -205 214 184 0 +181 223 -200 230 0 +220 178 210 203 0 +192 210 216 229 0 +228 130 -192 0 +214 -215 -225 0 +-196 -216 224 0 +217 -224 182 0 +208 188 180 0 +-227 220 221 212 0 +-195 222 -210 -205 -206 0 +209 -230 -202 -193 -224 0 +191 -190 -229 196 203 -217 -223 214 183 0 +131 -215 -222 -199 0 +217 183 -173 223 0 +205 216 226 -204 0 +-162 -225 -188 194 0 +-190 225 -181 0 +190 -230 211 205 -229 0 +210 195 -215 -193 0 +225 -213 149 -215 -214 0 +209 -191 0 +165 218 -217 0 +154 214 -222 0 +222 -206 -218 225 214 -198 0 +215 200 -206 222 204 0 +229 207 -219 -191 -211 0 +-217 218 -230 0 +198 197 -221 -205 0 +-225 230 -194 209 197 -193 0 +-205 172 227 134 0 +206 222 -182 213 229 225 226 -174 0 +-228 213 205 225 165 -199 0 +-202 -210 186 206 0 +210 190 217 211 -224 201 -219 202 0 +-221 223 173 222 220 225 -191 194 230 0 +206 -227 198 209 213 -219 191 220 216 0 +-192 -205 0 +214 168 210 0 +-217 -188 -213 138 0 +177 206 -222 -207 0 +-216 185 230 0 +214 223 221 -186 -224 0 +-156 189 -186 -207 0 +-192 -222 -181 0 +-208 -214 199 0 +225 -187 -223 -218 0 +-219 215 168 0 +229 202 -216 0 +218 207 204 -216 0 +213 208 200 -226 0 +-221 225 207 -189 0 +228 223 205 201 -220 182 -222 0 +203 206 -230 -224 191 0 +-212 192 203 222 -224 0 +217 -230 177 0 +-225 -226 -217 0 +-205 -207 228 189 -165 188 0 +218 -221 -205 0 +230 -153 -217 0 +147 -226 210 217 228 0 +-215 220 176 -218 210 221 0 +-229 220 214 0 +228 -196 -202 222 217 -226 219 0 +-227 200 -224 0 +-197 -185 -226 0 +-191 -205 213 0 +-222 206 -216 -212 0 +-168 196 221 209 -215 224 0 +227 -194 204 216 0 +-220 222 -185 0 +-170 -219 205 225 -217 189 -194 224 -211 -204 0 +229 207 201 213 226 193 -222 0 +-188 235 242 -221 243 0 +-217 203 0 +190 -220 -193 -219 239 238 -191 0 +229 232 216 -212 -223 210 0 +236 -184 -235 0 +240 219 -238 -241 -233 -225 -226 0 +-180 -236 -243 -204 -234 237 241 0 +216 -232 219 -242 -146 233 199 0 +231 221 183 0 +234 -239 -240 0 +-237 221 -196 -231 0 +-241 -225 235 -180 -239 0 +-213 -207 183 233 -226 -216 -238 -224 -239 0 +-242 -238 -212 -218 233 0 +-195 237 232 202 -221 0 +-231 243 -212 -204 0 +222 217 -184 0 +-237 238 -236 0 +215 206 -243 0 +-222 235 -214 -243 -231 0 +240 224 -183 -222 -194 -216 -220 236 214 232 0 +-228 -241 -235 0 +210 228 -216 -242 -222 182 224 239 236 -214 0 +-225 195 -223 207 239 -237 0 +-235 232 -240 239 -227 -202 0 +-240 -234 -242 -243 0 +-239 182 -194 0 +197 192 -204 -231 0 +206 -234 -232 -233 -241 -205 -237 -238 -231 0 +-239 -229 0 +-200 205 -219 0 +203 -235 -213 0 +-196 238 -240 -223 -229 -226 236 205 -232 243 -203 0 +-241 -194 -235 223 -222 0 +-221 222 -235 0 +-226 -195 242 232 -216 0 +-191 240 -205 -235 -195 -207 242 -234 0 +232 -240 242 211 0 +231 -221 -241 236 -223 235 0 +214 225 -242 0 +-237 243 -241 0 +234 240 -232 -206 0 +-190 239 209 232 -227 0 +-208 226 224 -103 0 +-234 225 -191 -241 243 -207 -235 242 -218 230 -236 0 +-222 220 -229 233 -214 0 +242 -238 0 +242 209 232 0 +-165 219 232 207 -196 0 +-234 243 239 235 -214 233 -181 0 +-218 144 -231 -210 0 +-241 194 -230 208 0 +209 -201 -241 203 243 222 220 0 +200 -201 231 0 +236 232 209 -222 -243 -239 0 +197 242 -236 -210 224 239 227 0 +-198 -239 -236 220 -238 0 +232 -237 191 0 +-238 233 -226 -229 0 +222 241 240 0 +-212 220 216 215 191 243 -241 203 232 -209 0 +-239 241 -238 -202 0 +237 -219 -234 0 +237 -191 -239 0 +-236 -219 217 0 +195 240 231 -213 -226 207 0 +210 241 -211 -243 216 0 +243 -233 0 +235 -228 231 0 +-234 -240 231 -185 -182 130 0 +223 -227 -237 212 219 204 -201 -235 165 -202 -242 -243 -239 0 +220 -236 215 237 -187 -243 199 -227 241 0 +240 -127 -231 -239 0 +-165 -238 -239 -186 -225 -215 0 +232 -241 236 243 0 +206 -208 -243 0 +-234 175 190 -173 236 0 +-234 -237 240 0 +-163 -236 -233 0 +232 -210 -212 0 +-234 -242 201 0 +-235 -230 239 0 +-228 229 220 217 233 -237 0 +-232 233 208 -235 -234 -220 -226 0 +-232 239 -236 0 +205 161 -236 0 +240 214 237 227 -202 -239 -242 0 +216 -236 192 0 +218 -238 241 -240 0 +226 234 238 222 237 0 +231 -241 190 -235 0 +199 233 -207 208 235 180 -237 -192 0 +225 -238 241 206 243 0 +-230 -243 -181 237 0 +219 -217 -232 225 0 +-217 241 -234 206 0 +234 -199 0 +-218 -236 217 -200 0 +237 216 -233 -235 -218 0 +-237 234 222 0 +241 238 240 0 +241 -235 233 0 From dcbe63132e3bf43d4cc7d704442272a4a0b21bab Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Sun, 12 Apr 2020 09:51:10 +0200 Subject: [PATCH 25/34] sharing: store pt level before failing In case a node is solved by receiving shared clauses, make sure we store the ptlevel for failing before. --- pcasso-src/SolverPT.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index e375527..c486f9e 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -2037,7 +2037,10 @@ bool SolverPT::addSharedLearnt(vec& ps, unsigned int pt_level) uncheckedEnqueue(ps[0], CRef_Undef, pt_level); // Davide> attach pt_level info level0UnitsIndex++; //need not to share this unit as it is already coming from a shared pool, thats why we are increasing the index of level0 units to be shared if (!disable_stats && prevDecLevel > 0) { localStat.changeI(n_tot_forced_restarts_ID, 1); } - return ok = (propagate() == CRef_Undef); // FIXME Davide> Changed + if (propagate() != CRef_Undef){ + lastLevel = pt_level; // store PT level for failure + return ok = false; + } else return true; } } // else, we already have that unit clause! } else { From 420c2765fd27df85a8b3972965e648a3815cd4be Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Sun, 12 Apr 2020 09:52:41 +0200 Subject: [PATCH 26/34] unsat: allow to suppress UNSAT As the solver is unsound, we might want to suppress unsat answers, and turn them into unknown, to result in a sound solver for satisfiable formulas again, without fixing the bug in the first place. --- pcasso-src/Master.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pcasso-src/Master.cc b/pcasso-src/Master.cc index 1648520..85f4264 100644 --- a/pcasso-src/Master.cc +++ b/pcasso-src/Master.cc @@ -76,6 +76,8 @@ static BoolOption Portfolio("SPLITTER", "portfolio", "Portfolio mode.\n", fa static Int64Option PortfolioLevel("SPLITTER", "portfolioL", "Perform Portfolio until specified level\n", 0, Int64Range(0, INT64_MAX)); // depends on option above! static BoolOption UseHardwareCores("SPLITTER", "usehw", "Use Hardware, pin threads to cores\n", false); +// to supress unsound behavior wrt UNSAT answers +static BoolOption opt_sat_only("MAIN", "sat-only", "In case the solver answers 'UNSATISFIABLE', print a warning and turn it into 'UNKNOWN'", false); static vector hardwareCores; // set of available hardware cores @@ -438,6 +440,13 @@ int Master::run() assert(model != 0 || solution != 10); + // handle case where we want to suppress UNSAT answer + if(opt_sat_only && solution == 20) { + fprintf(stdout, "c WARNING: rejecting s UNSATISFIABLE as requested by command line\n"); + if (res != NULL) fprintf(res, "c WARNING: rejecting s UNSATISFIABLE as requested by command line\n"); + solution = 0; + } + if (printModel) { if (res != NULL) { fprintf(stderr, "c write model to file\n"); } @@ -494,7 +503,7 @@ int Master::run() if (res != NULL) { fprintf(res, "s UNSATISFIABLE\n"); } fprintf(stdout, "s UNSATISFIABLE\n"); } else { - fprintf(stdout, "s INDETERMINATE\n"); + fprintf(stdout, "s UNKNOWN\n"); } From c950451ca2f833ff3973b826e59065065b6d82e3 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Sun, 12 Apr 2020 09:53:30 +0200 Subject: [PATCH 27/34] output: print state when verbose Show a little more info about state evaluation in verbose mode. --- pcasso-src/Master.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pcasso-src/Master.cc b/pcasso-src/Master.cc index 85f4264..734c85a 100644 --- a/pcasso-src/Master.cc +++ b/pcasso-src/Master.cc @@ -215,7 +215,7 @@ int Master::run() // The children are NOT running, so I can delete every pool lock(); threadData[i].nodeToSolve->setState(TreeNode::unsat, true); - // fprintf(stderr, "c root node state: %d\n", root.getState()); + if(MSverbosity) fprintf(stderr, "c root node state: %d\n", root.getState()); unlock(); if (stopUnsatChilds) { killUnsatChildren(i); @@ -275,7 +275,9 @@ int Master::run() // check the tree for UNSAT/SAT if (MSverbosity > 1) { fprintf(stderr, "M: CHECK TREE\n"); } + if(MSverbosity) fprintf(stderr, "c root node state pre-eval: %d\n", root.getState()); root.evaluate(*this); + if(MSverbosity) fprintf(stderr, "c root node state post eval: %d\n", root.getState()); if (root.getState() == TreeNode::unsat) { // assign the according solution solution = 20; From 888a6959c6f7f5c60d8a80ab1d154dc964da6267 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Sun, 12 Apr 2020 13:21:36 +0200 Subject: [PATCH 28/34] git: ignore static analysis --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 939c1b1..10742dc 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ depend.mk # astyle orig files *.orig +cov-int +infer-out From 8b6780c220a9c03666fc70c3a0daaa02b27f7f77 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Sun, 12 Apr 2020 23:04:36 +0200 Subject: [PATCH 29/34] lcm: set level for dropped literals We need to track causalities of dropped literals. This was not implemented in original LCM. Signed-off-by: Norbert Manthey --- pcasso-src/SolverPT.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pcasso-src/SolverPT.cc b/pcasso-src/SolverPT.cc index c486f9e..616862e 100644 --- a/pcasso-src/SolverPT.cc +++ b/pcasso-src/SolverPT.cc @@ -1130,6 +1130,7 @@ int SolverPT::simplifyLearntLCM(Clause& c, int vivificationConfig) assert(c[j - 1] == impliedLit && c.size() >= j && "until here, the position of impliedLit should be fixed"); c[j - 1] = c.last(); // drop the literal "impliedLit" from the clause c.pop(); + modified = true; npLCMimpDrop ++; } conflict.clear(); @@ -1152,7 +1153,7 @@ int SolverPT::simplifyLearntLCM(Clause& c, int vivificationConfig) if (nblevels < c.lbd()) { c.setLBD(nblevels); } - minimized = true; + minimized = true; modified = true; } cancelUntil(0); @@ -1193,6 +1194,7 @@ bool SolverPT::simplifyClause_viviLCM(const CRef cr, int LCMconfig, bool fullySi } } if (!sat) { + unsigned int newPTLevel = c.getPTLevel(); for (i = 2; i < c.size(); i++) { if (value(c[i]) != l_False) { c[j++] = c[i]; // TODO FIXME: has to end up in drat proof! @@ -1201,9 +1203,11 @@ bool SolverPT::simplifyClause_viviLCM(const CRef cr, int LCMconfig, bool fullySi break; } } else { + newPTLevel = newPTLevel > getLiteralPTLevel(c[i]) ? newPTLevel : getLiteralPTLevel(c[i]); ; } } + if(i!=j) c.setPTLevel(newPTLevel); // update level based on literals that have been dropped nbLCMfalsified += (i - j); c.shrink(i - j); // set worst case PT level, as we currently do not have a good way to track the actual level From cec08b16bb461a94940bb76400f6651f3d595434 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Mon, 13 Apr 2020 21:31:21 +0200 Subject: [PATCH 30/34] toolCheck: be verbose for assertions --- cnfs/toolCheck.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cnfs/toolCheck.sh b/cnfs/toolCheck.sh index 1cb730f..7de2871 100755 --- a/cnfs/toolCheck.sh +++ b/cnfs/toolCheck.sh @@ -15,6 +15,13 @@ then exit 124 fi +# we want to see the failure, hence, print the output +if [ "$status" -eq 134 ] +then + cat /tmp/verify2_$$.cnf 1>&2 + exit 134 +fi + # cat /tmp/verify.cnf if [ "$status" -eq "10" ] then From 837c50135ab0aaca157732103e0241b06f4ccc94 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Mon, 13 Apr 2020 21:37:26 +0200 Subject: [PATCH 31/34] debug: add -no-lbd-min to reproducer --- cnfs/pcasso.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/cnfs/pcasso.sh b/cnfs/pcasso.sh index 98b3f8c..6092515 100755 --- a/cnfs/pcasso.sh +++ b/cnfs/pcasso.sh @@ -1,3 +1,4 @@ # gdb -return-child-result -x gdb-script --args \ ./pcasso -model -child-count=7 -threads=3 \ + -no-lbd-min \ $1 From bd681ae57904735474673aeb27757f1a562240fe Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Mon, 13 Apr 2020 21:31:46 +0200 Subject: [PATCH 32/34] bug: add no-lbd-min bug --- cnfs/bug-388903448.cnf | 3143 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3143 insertions(+) create mode 100644 cnfs/bug-388903448.cnf diff --git a/cnfs/bug-388903448.cnf b/cnfs/bug-388903448.cnf new file mode 100644 index 0000000..3fcc1ce --- /dev/null +++ b/cnfs/bug-388903448.cnf @@ -0,0 +1,3143 @@ +c seed 388903448 +c width 63 +c scramble 1 +c layers 10 +c equalities 0 +c ands 0 +c layer[0] = [1..41] w=41 v=41 c=161 r=3.93 q=0 +c layer[1] = [42..98] w=57 v=98 c=424 r=4.33 q=0 +c layer[2] = [99..134] w=36 v=93 c=306 r=3.29 q=0 +c layer[3] = [135..188] w=54 v=90 c=376 r=4.18 q=0 +c layer[4] = [189..218] w=30 v=84 c=341 r=4.06 q=0 +c layer[5] = [219..265] w=47 v=77 c=288 r=3.74 q=0 +c layer[6] = [266..287] w=22 v=69 c=309 r=4.48 q=0 +c layer[7] = [288..305] w=18 v=40 c=123 r=3.08 q=0 +c layer[8] = [306..361] w=56 v=74 c=290 r=3.92 q=0 +c layer[9] = [362..420] w=59 v=115 c=508 r=4.42 q=0 +p cnf 420 3126 +8 39 -33 -18 0 +36 15 -37 0 +16 -26 3 18 -34 -7 -38 -39 11 -24 -12 0 +20 23 14 0 +2 -14 28 -8 -3 0 +-11 24 -17 -29 0 +29 31 40 32 27 0 +41 -19 5 -13 -21 -10 -16 -9 -32 17 0 +19 1 -41 -6 -35 -20 0 +25 9 -31 4 0 +-30 -1 -23 37 -5 0 +-4 30 12 -2 0 +26 -25 6 38 35 33 13 21 -27 -40 22 10 7 -15 -28 0 +34 -36 -22 -40 3 -41 5 -9 0 +18 1 25 -16 36 30 -26 -4 0 +-7 -5 3 0 +-37 16 -25 35 26 23 0 +21 24 -8 -6 41 19 0 +-10 12 23 -25 0 +-25 -18 -27 40 21 0 +11 28 40 -4 0 +41 -34 24 0 +-35 5 -32 21 36 12 0 +11 -15 8 12 -21 35 0 +-6 -38 -21 0 +20 -6 -18 38 -34 -19 -10 29 0 +-21 6 32 -1 -26 0 +-17 39 -15 0 +33 -10 -17 30 3 0 +39 18 23 1 0 +-13 9 -2 -39 41 0 +6 18 15 -37 -9 11 -29 0 +-12 -26 -18 38 0 +-29 -26 -39 -33 -22 -7 0 +18 -37 -34 0 +-9 28 -33 0 +-30 -22 12 11 0 +25 33 24 7 0 +25 9 0 +-23 -24 -17 29 -12 -41 0 +24 -39 -40 0 +-23 7 3 0 +32 -40 -12 38 0 +-8 5 0 +-2 -3 27 -35 0 +-37 2 -28 0 +27 -7 -8 0 +-41 -6 7 -14 0 +-36 31 -41 -22 0 +-17 13 3 -11 -19 10 36 38 0 +-34 26 -5 -33 0 +-3 5 -8 29 -12 0 +-22 -38 34 0 +-17 -32 29 0 +7 36 38 -27 0 +-14 -22 27 0 +39 26 9 16 -27 -23 -11 -24 5 0 +-10 28 2 0 +10 -40 24 0 +34 20 -18 0 +28 -6 2 32 -19 40 0 +19 14 29 12 13 9 28 -6 33 25 -2 36 0 +-28 3 -20 0 +-1 15 8 30 0 +-18 7 -21 0 +-5 -24 -36 39 32 0 +34 -23 30 0 +27 -22 36 -2 8 37 -38 41 -15 0 +-29 8 -36 0 +15 25 38 39 0 +-15 27 20 0 +-22 6 2 25 0 +3 40 -23 0 +-6 5 -27 0 +11 10 8 17 -37 0 +40 -22 -39 38 0 +23 -5 17 20 4 6 -34 0 +12 26 -9 15 -3 0 +-25 29 38 -24 34 5 -6 20 0 +-6 36 29 9 35 2 -14 26 -31 0 +14 -21 -19 38 0 +-2 41 -13 0 +17 -7 -6 -16 23 22 4 -9 -35 11 0 +28 30 8 -41 0 +-16 20 -22 -28 0 +22 -38 23 -1 0 +-20 -28 31 0 +-10 35 29 -39 -28 9 0 +11 33 4 0 +-30 5 -29 15 -39 27 3 -28 -24 0 +6 40 -12 -37 -7 -27 -34 -30 -31 0 +22 36 -15 0 +27 12 -11 0 +-9 -22 6 0 +18 -19 12 -33 0 +30 19 18 0 +-34 5 21 26 0 +-37 14 -26 24 19 2 0 +20 32 -9 0 +-41 8 -27 -24 13 -18 0 +16 40 -25 0 +35 25 -28 0 +25 -39 -38 -3 6 0 +10 -29 0 +-12 4 6 0 +-34 -8 19 0 +13 -11 -31 -19 3 0 +31 -41 -15 0 +17 -38 2 -29 0 +21 29 18 6 -23 7 -32 15 -31 0 +41 11 0 +23 -16 18 -3 41 1 -34 0 +40 -1 41 10 -25 -34 -4 0 +35 -28 -3 14 -24 0 +-4 -1 26 -16 0 +10 4 -38 0 +3 15 17 0 +-8 28 -26 0 +-30 8 -9 -21 0 +25 34 -18 0 +-17 4 -3 -9 29 -22 -10 16 36 31 30 12 0 +-10 23 5 0 +-31 13 40 2 -26 -5 41 0 +22 39 -23 -1 -38 -2 0 +33 -34 -7 -14 9 20 0 +13 9 -27 -2 21 0 +28 33 41 32 0 +25 -18 40 -41 0 +-23 -27 -9 40 0 +-41 32 20 0 +6 31 0 +15 -6 8 0 +-6 19 -24 40 -41 11 -4 -3 0 +-38 -4 -35 -2 -7 31 -5 0 +37 -1 22 0 +35 40 4 -23 16 -31 0 +-28 31 -26 -22 -4 0 +19 -40 27 13 0 +26 8 -41 0 +-25 29 -30 -38 19 33 37 0 +-22 -15 20 -18 0 +9 2 -20 16 -13 25 -34 -8 0 +3 -34 -28 -31 30 21 0 +12 19 -35 23 28 29 33 0 +-13 -39 -33 -7 26 14 28 0 +-7 -37 20 -24 18 15 0 +-16 -11 -12 -6 21 31 41 -24 -26 -3 34 8 0 +-23 -9 -38 -18 15 -28 -10 -22 0 +25 4 12 20 40 -21 0 +17 21 -9 0 +37 11 29 0 +-19 27 -6 -17 10 29 0 +-4 -40 7 6 -38 5 0 +-24 6 -1 0 +39 -6 -41 23 -19 0 +-17 18 11 0 +3 -24 -14 0 +21 -33 -6 0 +7 41 -25 3 -13 -15 0 +-38 26 -10 0 +-10 -19 39 0 +-57 17 -21 -87 0 +36 85 -4 92 -19 0 +59 2 51 -84 98 45 0 +-55 14 -13 38 0 +27 -43 -36 -40 -94 13 -7 -1 -63 0 +16 71 -17 49 -18 0 +47 46 41 0 +-20 -97 -23 -78 -31 0 +-13 -30 -45 0 +-24 37 -82 78 -44 0 +-47 50 -6 0 +3 -9 -10 72 84 -7 0 +-52 2 87 0 +83 91 25 0 +73 26 -96 0 +17 -24 27 -4 -51 19 0 +43 -16 37 0 +-46 28 -12 88 0 +-8 -54 -85 0 +17 41 2 0 +-13 28 -12 0 +15 -92 -76 0 +86 -2 -8 22 -74 -20 -56 90 33 0 +95 14 -40 0 +48 80 44 -37 75 0 +35 5 1 30 -83 -49 22 -71 0 +-1 -14 -73 0 +-68 16 -67 0 +-38 64 -24 -90 4 0 +-59 94 61 0 +-70 -11 97 -89 3 0 +56 -4 70 -26 0 +8 68 -3 -39 0 +-13 81 -29 -61 0 +40 11 -31 -35 62 19 0 +93 41 58 -60 2 5 67 -39 28 0 +63 -69 23 0 +24 -7 -37 66 -50 -16 0 +76 -41 -2 0 +-75 82 -42 77 0 +60 -88 -65 0 +-95 -72 79 6 0 +42 9 -80 0 +-20 54 53 0 +-62 -39 -91 -48 -79 -21 29 0 +38 35 31 -77 -81 -13 52 41 0 +24 -58 89 38 32 0 +-41 74 37 69 0 +57 -86 -98 -28 -18 -66 38 96 37 0 +5 14 65 -36 -12 17 0 +-14 -11 -93 0 +-64 -53 -16 55 52 -8 23 57 -30 43 0 +68 16 4 0 +-85 81 -76 -23 43 0 +5 77 8 0 +-46 12 -71 -24 -72 78 -88 0 +-96 44 50 59 0 +20 -1 92 0 +50 -65 -28 73 -27 58 0 +-5 1 -45 0 +52 11 -60 33 62 43 90 -8 0 +23 34 83 -18 0 +9 27 -10 0 +64 -27 63 53 29 0 +-49 -58 -98 0 +1 13 35 0 +-94 -33 85 -32 -61 56 -51 -84 70 -21 7 19 -88 0 +40 12 -21 0 +-75 -63 64 0 +20 -3 15 74 0 +-90 98 -74 13 0 +10 -2 -45 13 -81 22 59 -51 18 -56 -12 0 +35 23 -76 -88 8 13 65 -7 0 +-95 -12 -39 37 0 +88 -9 31 -25 0 +-72 38 -83 0 +-48 84 78 -57 0 +57 18 97 -10 51 -23 36 0 +-40 -95 9 -29 0 +39 53 41 72 29 27 0 +-91 -47 -36 -26 11 -67 94 44 -82 13 31 -25 0 +1 97 -74 0 +-6 -96 79 0 +-92 87 -75 54 0 +-35 52 -40 0 +-23 56 -19 0 +-98 -27 49 3 97 35 -82 0 +17 36 -19 -65 0 +-44 -74 -84 35 75 42 0 +94 -49 -18 0 +29 -64 -74 0 +-88 19 -38 0 +65 81 29 41 -12 -10 0 +-9 -7 -32 -29 0 +12 6 96 2 11 -43 10 62 28 0 +-15 -26 31 0 +-33 85 12 -18 -48 17 91 8 -87 -10 0 +-8 93 79 -34 25 0 +-36 37 -5 91 -14 85 0 +41 -4 -11 28 0 +21 78 -20 58 -72 -34 0 +11 38 14 33 -27 0 +32 -83 -81 -70 -66 -61 0 +-48 88 42 22 0 +-52 29 -50 0 +-13 -40 -47 -52 -29 0 +-20 17 90 -54 52 -73 35 24 32 0 +-37 -57 33 52 0 +49 -6 1 24 0 +7 -4 -64 -74 0 +-90 88 15 40 65 79 68 0 +-42 12 -26 -40 38 80 -35 -4 0 +-21 -26 -37 22 0 +-13 37 55 41 -48 -58 -33 0 +26 -4 55 -98 48 0 +-62 41 -43 0 +-71 -47 -25 40 -48 28 0 +76 -2 31 -72 -17 0 +-46 -6 18 43 80 45 83 49 0 +-8 -60 -14 97 96 0 +62 -40 6 74 -35 53 -38 -3 0 +-44 14 93 -31 0 +-80 69 11 0 +-42 62 0 +-18 83 -2 -6 -96 0 +-37 34 -19 31 97 0 +-12 16 -21 0 +-32 -38 -85 0 +26 -29 -14 -30 -12 84 0 +91 90 -67 62 -42 94 -95 32 -27 0 +63 28 -9 8 -98 -1 -93 25 -5 3 -96 -59 80 0 +-23 69 55 0 +-85 -63 35 69 -68 47 0 +-87 -4 39 43 73 15 -29 -12 0 +49 60 -92 -23 86 11 -12 -52 0 +76 21 74 0 +19 -82 16 10 0 +-79 -18 25 0 +-42 -20 15 -32 -71 41 0 +-83 -16 34 0 +-44 -48 -67 0 +29 31 63 14 -40 5 -32 0 +-98 -48 -33 15 0 +-11 6 -34 0 +-15 45 -65 46 9 76 0 +-20 39 -45 66 27 -15 -50 70 59 44 -85 1 11 0 +5 -58 6 -46 -12 66 0 +-77 89 41 5 0 +68 55 -38 8 0 +48 38 -70 47 73 27 0 +5 -55 20 -35 76 -17 81 0 +-28 17 -37 -3 -91 0 +-10 -32 -45 -76 66 0 +24 68 -19 -2 0 +3 -5 -39 15 -95 0 +-15 35 11 77 26 0 +-75 62 34 -41 -58 54 -51 22 0 +85 -65 15 69 -70 41 -48 0 +-2 55 16 12 95 0 +7 -92 -70 -16 42 69 1 0 +-94 -58 -9 0 +27 -47 72 1 42 0 +4 -35 -78 0 +88 40 -24 0 +5 28 -51 -87 98 -20 0 +55 -20 -25 -29 0 +97 33 -51 42 0 +55 92 39 -21 -68 0 +-89 -72 86 -36 0 +-2 -73 12 -35 0 +32 22 -88 -15 0 +-56 -49 -67 -41 -12 0 +41 22 -73 0 +27 -25 91 0 +83 27 36 -48 -49 0 +-30 -15 -60 0 +97 37 50 0 +45 10 82 0 +-57 47 85 42 83 0 +-74 -75 14 37 -32 -42 0 +-34 -4 10 83 -24 -38 0 +28 -93 -60 45 -18 27 0 +50 -44 87 -1 70 37 16 0 +42 47 -73 0 +32 81 51 -30 0 +-71 -94 -84 0 +96 -24 -14 34 85 0 +84 26 22 -33 96 18 4 -7 -6 81 0 +78 17 33 0 +71 -13 -17 0 +-66 96 -39 -72 0 +14 -9 24 -40 22 3 93 0 +73 28 26 0 +58 12 -19 89 0 +-47 17 -28 -95 30 0 +-81 -25 15 -62 0 +-94 -88 86 2 0 +71 39 -68 0 +80 -84 16 -66 0 +73 49 5 27 33 0 +74 -95 30 -31 0 +-80 -13 19 4 0 +-21 82 -15 -5 0 +63 34 -53 -45 25 0 +31 -89 -62 98 0 +-96 34 -93 72 14 0 +-97 87 29 0 +-30 -92 -98 0 +60 74 -80 0 +8 15 -21 -11 54 0 +-74 2 -1 12 0 +15 79 72 -50 0 +82 -20 -24 0 +-98 54 -95 74 -84 2 0 +7 23 18 58 49 0 +-94 -12 86 0 +-11 -52 -77 41 0 +61 7 39 0 +-82 -80 26 97 54 0 +35 45 82 0 +51 -36 -2 20 0 +88 -52 71 0 +-20 -80 64 -24 -4 -28 -45 15 0 +-81 21 -92 -57 59 -83 0 +33 25 -28 -65 0 +-92 -56 22 0 +-4 79 -44 0 +-35 62 -74 34 -98 0 +12 -55 58 -27 54 0 +-11 12 57 -7 40 -36 13 -5 0 +-2 -46 48 -89 -74 -58 -18 62 0 +18 22 25 0 +-53 7 -75 -89 0 +-64 -45 76 79 -2 -20 -29 0 +18 -93 21 53 -29 61 56 0 +77 29 -23 0 +-42 -40 0 +91 11 43 -68 77 0 +-32 -51 8 92 79 80 -33 -59 22 0 +-17 7 -73 0 +41 87 -86 0 +29 38 44 -78 -83 0 +-19 52 81 91 -7 -41 0 +-92 -29 -73 -8 77 0 +-39 46 -25 -14 62 0 +-3 81 -93 -98 0 +-30 69 -23 8 95 13 -22 0 +76 -50 -59 -5 27 -34 0 +81 -46 -63 5 0 +-1 6 -34 29 -33 -13 11 0 +21 30 39 0 +-64 39 -69 50 0 +55 78 17 0 +12 64 -73 52 -69 0 +50 -53 83 0 +97 52 35 68 34 0 +73 90 65 91 7 0 +56 81 -7 0 +19 98 13 -54 27 -29 37 -75 74 -96 70 14 12 -84 30 16 71 35 0 +77 -24 62 0 +13 -43 88 91 4 0 +39 -23 -47 -53 -70 -12 0 +5 59 -31 0 +87 86 -38 -11 0 +-94 83 -40 0 +-24 -61 21 32 0 +-24 -36 -84 0 +89 -83 -47 0 +-9 -31 -22 63 0 +-89 57 -4 3 12 0 +75 -79 29 -51 16 0 +6 -48 -1 -46 11 33 -87 0 +98 70 18 0 +20 75 -93 0 +41 75 39 -34 31 -71 0 +72 19 46 -80 0 +-31 -28 55 49 0 +18 42 70 0 +93 3 -54 -9 28 88 -37 0 +94 -45 -60 0 +61 -10 -15 0 +-74 -62 67 16 -41 -59 0 +-46 -90 -52 21 -64 0 +71 83 41 92 68 0 +26 -45 84 30 62 0 +-80 -70 3 0 +-84 92 23 -16 86 21 34 -7 -36 27 54 57 0 +94 87 -60 -13 -65 -41 0 +-62 -75 32 -29 -10 -24 63 0 +-22 -98 37 0 +-79 23 -71 -17 39 68 10 31 -88 -51 3 20 0 +4 -23 83 0 +56 21 -25 -73 -2 -7 -88 9 0 +-66 -41 80 -84 -97 -37 18 0 +84 -61 12 0 +-68 -3 49 0 +-36 58 57 0 +-14 -9 -84 41 -4 0 +-24 -18 -22 0 +8 -59 -46 19 21 0 +-74 97 -79 2 -83 31 0 +-41 20 88 -81 -23 0 +-5 58 23 -21 30 0 +24 -25 85 39 -27 -26 73 0 +-82 -47 74 -42 1 0 +31 -66 82 -68 0 +21 76 -1 0 +-24 10 40 -35 -51 0 +98 89 24 91 -11 0 +15 76 61 0 +12 -35 -64 15 19 6 -29 9 -38 -41 -17 0 +-9 23 2 -8 38 80 0 +-51 38 22 12 8 84 49 0 +-51 56 30 28 65 91 0 +31 -21 73 -82 29 19 0 +-41 -8 12 53 -57 35 0 +-59 -65 19 0 +-88 -70 97 0 +32 16 -79 -18 -38 61 -12 44 0 +95 70 -71 0 +-53 -3 5 0 +-97 83 10 25 0 +3 23 -35 39 0 +-98 35 -58 -22 -36 0 +24 -6 -69 1 -29 0 +24 -76 -25 9 18 0 +37 52 88 -72 92 0 +-42 23 35 64 -89 0 +55 24 94 60 5 29 0 +69 76 -58 56 -7 0 +27 31 87 -84 -18 -24 -60 -43 0 +23 33 18 0 +-51 -54 -92 47 -74 -48 0 +19 75 -38 -50 44 -66 -86 0 +-53 -80 79 0 +75 21 -76 0 +-69 -83 94 -34 -72 -36 -1 0 +80 65 51 -25 0 +-71 33 -40 0 +-13 56 31 15 0 +68 2 45 69 -9 0 +76 92 4 -41 -19 0 +27 -12 -36 45 0 +-16 19 -21 39 0 +7 4 -57 39 13 34 -77 -28 0 +-93 51 1 0 +97 56 80 0 +-41 5 35 0 +-40 -61 44 35 72 0 +89 58 -87 10 -33 37 29 0 +-50 13 -68 94 -64 0 +85 9 -93 -42 53 0 +35 5 -89 0 +28 -41 -78 0 +64 34 75 -74 0 +-41 -85 86 11 77 18 0 +-91 83 -42 0 +10 -7 -19 -49 -25 36 -41 -39 0 +-49 -89 -26 -5 -20 -18 -29 0 +54 90 -84 31 -93 0 +11 -30 57 0 +13 -28 5 0 +4 25 -93 -57 34 0 +10 37 -36 -8 -89 -56 71 0 +-17 20 72 0 +63 -52 -10 82 -25 -6 59 -58 97 -69 -22 93 0 +-90 23 -41 -40 67 84 -19 0 +-20 2 -8 44 0 +-9 -44 15 -85 -50 0 +-83 56 -18 22 0 +-11 80 -40 0 +-89 -37 87 0 +37 -24 53 0 +-14 -38 26 0 +-75 65 26 0 +96 25 -62 0 +-72 53 -38 16 0 +36 20 29 0 +81 39 -25 -94 0 +-34 -74 -55 -46 0 +-85 -14 -64 77 17 0 +95 49 -98 -4 0 +-3 22 -90 -16 -63 0 +62 -71 95 -67 0 +-65 -12 56 -77 0 +46 -8 55 39 0 +26 52 -71 25 55 -96 69 94 47 0 +56 49 -53 -4 26 0 +34 -29 84 -98 -16 0 +48 -75 -80 0 +-97 -77 34 0 +-6 33 -18 90 -11 57 25 88 -81 86 0 +63 45 -58 0 +74 1 27 -42 12 0 +-37 -81 -11 0 +25 74 -80 -15 76 0 +14 81 42 74 0 +64 -81 -23 0 +62 68 78 -26 0 +15 54 35 0 +42 -45 29 0 +-38 -15 -17 0 +-13 21 76 12 2 7 24 0 +-24 -18 -40 0 +-48 -33 36 18 77 0 +8 -57 -73 -86 65 -75 14 53 46 45 24 -36 90 0 +91 -83 -63 28 16 57 0 +98 -32 36 -29 0 +-85 -38 -29 0 +7 90 -79 0 +-85 45 -11 -63 -37 -25 0 +-77 -52 -2 81 38 -55 0 +-32 -21 -82 76 33 -34 0 +9 74 -13 -79 84 -37 -26 0 +-16 61 87 0 +-46 56 -26 -57 -87 77 0 +44 66 98 97 0 +-55 6 -75 -36 0 +-67 -65 -82 0 +40 95 50 0 +91 -17 -69 66 32 39 0 +-90 -1 49 -88 -69 -19 7 -31 0 +3 47 69 82 0 +-52 33 12 97 0 +54 -93 125 0 +71 -113 -46 0 +-110 126 105 -5 0 +112 -108 -33 0 +-119 1 128 0 +-120 -103 1 -36 0 +-3 -88 107 115 0 +109 -38 0 +-117 99 -34 -105 0 +-14 -101 122 0 +21 -4 5 0 +-128 25 -124 0 +22 117 73 -102 104 106 0 +-130 56 129 0 +14 119 24 -44 -127 0 +-93 102 -46 0 +113 13 -94 -125 -100 108 0 +-111 26 127 50 -109 -72 15 -115 0 +33 56 133 -35 54 -121 101 -11 0 +21 -44 40 -114 -104 0 +-3 -63 85 -129 0 +-126 -116 -1 132 -131 49 111 -41 -8 34 0 +-122 134 120 18 -92 0 +-118 92 -69 40 0 +11 -134 -2 23 -25 39 15 0 +-107 42 58 12 -33 -5 0 +110 123 68 41 0 +23 27 -34 0 +130 18 118 103 -76 0 +10 79 -99 -28 -133 0 +-123 -132 24 37 121 71 -112 -106 116 0 +-48 131 124 100 114 -27 113 -9 -21 115 0 +-112 -122 -109 130 -134 110 124 -103 0 +-121 -134 -66 102 46 63 0 +85 58 -17 0 +49 -84 44 -104 0 +-88 -21 111 -73 -8 -104 19 106 -7 64 -99 132 -124 0 +-12 -38 16 -24 0 +108 -129 17 80 0 +103 -118 -133 0 +62 89 -22 4 0 +17 133 120 -56 0 +95 -124 9 0 +54 60 -115 -46 -35 0 +-44 134 -127 0 +-22 123 -104 48 99 -63 72 0 +-62 104 -112 127 -105 83 132 12 -64 -108 9 0 +32 -75 112 0 +43 -28 0 +133 82 134 119 0 +-106 -114 -110 -128 99 -3 0 +-40 -20 -63 -127 21 7 104 -94 122 109 -107 134 -39 0 +128 103 -115 120 8 0 +-108 129 74 0 +88 35 -90 -100 -99 103 -3 -14 -96 -113 -102 -33 -60 0 +9 54 90 -65 101 107 0 +-100 -125 -128 107 2 -60 0 +93 52 133 0 +-118 7 101 0 +77 74 -102 0 +-12 119 113 15 56 129 123 -120 0 +123 -119 131 115 -116 1 125 72 0 +65 133 128 104 -121 0 +-78 -21 -57 0 +-79 -122 119 0 +-114 -39 -76 0 +108 -31 -112 -25 0 +-130 -125 -131 101 33 -133 -50 21 0 +-114 -41 -129 98 0 +108 -104 -22 -118 0 +80 89 -39 -24 124 0 +66 -26 -117 0 +-132 106 114 0 +108 115 80 0 +-15 123 -76 -83 0 +-84 15 129 -118 -106 120 -107 9 123 0 +24 -114 -84 106 134 -39 -6 -117 30 18 -67 85 -107 -111 -132 0 +45 -116 -99 -129 -102 0 +123 134 -118 122 -75 74 0 +21 116 112 0 +-80 -18 94 -97 130 0 +-121 -29 -52 0 +105 -131 130 26 0 +118 85 19 -108 0 +110 -123 25 0 +-29 -105 -127 -122 109 0 +88 -73 -99 -131 -100 0 +-34 122 -99 87 0 +8 -127 -132 0 +-125 -117 -60 -64 3 0 +-123 -60 121 -37 0 +-125 -82 -133 130 0 +128 43 101 0 +48 100 -57 -14 0 +108 120 -93 132 0 +128 -105 115 0 +36 -114 103 0 +112 2 99 -121 -98 0 +-122 23 71 0 +-76 -124 -19 -127 0 +-111 105 34 -117 107 103 -43 109 -121 -68 0 +128 -109 107 -13 0 +110 112 -130 0 +-34 117 -9 0 +7 -132 33 99 0 +-104 -102 -113 -100 130 98 84 -121 122 0 +-47 91 -95 0 +-109 -125 52 -22 -122 0 +-122 19 84 -23 -108 128 -113 -81 0 +-54 -118 -120 0 +-124 38 101 -126 76 0 +-116 38 117 86 0 +-17 126 -117 0 +-104 28 -15 42 0 +-41 114 115 -95 0 +32 107 -62 129 -99 0 +-36 118 -28 0 +-118 -73 1 0 +-96 132 7 124 20 -104 0 +124 -21 120 6 -99 0 +-123 28 -113 0 +-60 132 -112 0 +-122 118 -32 0 +77 120 -30 -13 132 -95 0 +-100 -127 -73 44 119 -114 0 +-60 105 -47 -1 126 0 +103 21 133 0 +67 -32 -100 0 +-106 -133 63 6 0 +-105 -108 -119 0 +121 -79 93 0 +74 -24 85 61 -78 0 +-79 14 -93 -1 7 0 +-109 -51 -50 0 +101 131 -57 0 +-20 -78 3 0 +-61 -77 -133 0 +107 -113 15 41 132 46 0 +108 -133 37 8 25 65 0 +106 -16 -32 0 +-131 -101 9 0 +3 1 -57 44 13 0 +-109 -124 16 55 -84 0 +-56 -20 -76 0 +-24 69 128 -109 0 +121 29 21 0 +45 -109 23 0 +-19 -68 109 99 123 0 +-3 9 23 0 +-130 129 -63 43 -133 0 +88 -134 41 45 -122 66 104 0 +-35 -15 -89 0 +129 -22 33 93 -103 115 117 125 0 +84 -39 102 -134 113 0 +126 109 120 0 +28 100 -133 0 +-47 48 -105 -124 0 +-58 114 8 0 +126 106 -11 134 -3 113 0 +106 -118 -32 -132 -59 62 101 0 +-128 -17 126 0 +-116 29 -124 -112 -101 0 +121 -26 111 0 +100 -39 -122 117 -104 -116 -114 121 -20 -47 0 +-111 123 63 -131 1 -92 -58 0 +-102 51 119 0 +-28 -11 -38 41 0 +2 -9 -131 -3 -133 110 113 -111 0 +-78 128 101 -100 37 0 +110 -36 116 0 +75 -68 -28 -36 -66 5 -32 -12 -101 0 +-126 110 -114 -56 0 +-100 -128 -111 56 0 +-91 -19 110 0 +-113 12 -133 67 -115 78 -101 -121 0 +106 130 -57 0 +-100 -75 -132 0 +-124 -118 127 0 +111 -8 -129 -56 37 65 116 132 113 17 -73 -119 104 -102 0 +-81 103 63 -133 101 0 +40 9 88 50 120 0 +-86 73 27 -122 0 +-19 -25 95 133 127 -15 122 0 +119 120 -88 -10 8 0 +74 54 -99 -1 0 +-57 125 129 19 -100 0 +-12 62 -87 -74 40 0 +-113 129 -34 0 +87 105 -125 120 55 107 -63 -30 117 111 102 0 +111 134 103 -102 7 -105 0 +-42 108 92 32 -71 -127 -124 0 +-123 128 -117 -133 91 -59 -122 41 0 +121 -55 118 111 -104 0 +-6 110 58 -123 79 -133 -68 92 0 +112 80 114 -28 0 +12 -107 38 -131 -122 -66 0 +-134 -41 -20 98 107 0 +121 3 -116 11 -82 115 105 -123 4 122 -108 124 -43 0 +100 -106 88 0 +-115 44 20 -24 41 8 133 0 +-100 -18 123 0 +123 97 133 -99 129 -62 69 -102 0 +40 114 -67 0 +2 39 -130 -134 84 0 +68 54 45 108 0 +82 -91 -117 0 +107 -120 -124 0 +78 115 132 -123 -11 0 +-14 -111 112 9 25 0 +-29 21 -106 0 +134 -50 111 99 0 +-116 -100 102 -132 11 108 101 84 122 19 -21 -62 46 115 -36 89 -105 119 125 0 +-120 -99 93 -102 -29 -7 0 +44 -13 -28 7 24 47 0 +-105 -110 104 -115 38 -59 -127 -102 -12 0 +37 129 -36 0 +-104 115 96 -124 113 114 85 0 +-65 -59 134 -60 98 -96 -103 0 +127 -51 -126 69 12 -23 -21 100 130 45 -62 30 -107 124 0 +-110 119 100 0 +-106 -53 -118 29 -61 -22 0 +-74 26 -107 -78 98 0 +68 -110 -106 0 +15 -44 -123 82 0 +-47 98 -105 -49 0 +103 -45 30 -110 -75 0 +132 -27 103 12 22 0 +-6 -77 116 114 0 +125 130 -134 0 +36 -97 -111 99 -45 132 86 0 +105 -121 53 -122 -120 8 108 0 +-102 75 -91 97 -61 127 55 121 -118 9 0 +-16 96 -6 -97 88 120 108 -39 102 125 111 0 +-12 -112 90 -49 -86 130 -123 -42 126 0 +-90 -16 31 0 +130 53 88 49 100 0 +132 -116 7 -105 62 79 -48 -73 27 0 +-95 -108 -39 -18 21 99 72 125 0 +-61 114 -122 -127 16 45 -80 58 -81 133 3 99 91 -120 0 +-124 -103 10 27 11 0 +124 -133 -129 48 119 134 28 11 116 -122 76 82 0 +-86 21 -107 0 +127 123 -116 -126 34 -107 -134 0 +115 -28 -119 -14 0 +-33 107 77 41 39 49 -99 25 0 +-94 -103 15 -110 0 +-106 38 109 0 +-26 4 -133 0 +-122 103 -36 0 +-129 -123 -15 -34 -97 0 +98 -8 -106 -100 0 +111 121 114 0 +129 115 105 -113 0 +-37 102 -130 -104 0 +-70 54 103 0 +-113 -83 46 -86 -126 18 -44 -101 117 0 +15 116 110 115 35 0 +127 -109 -25 -102 0 +-124 -115 23 0 +16 109 -99 0 +-5 -102 -36 -30 55 0 +-131 -85 -118 109 -23 -81 -97 0 +64 31 -131 114 0 +-48 102 -104 -101 -131 -109 124 110 47 0 +16 18 121 0 +105 128 14 109 0 +-30 -120 103 134 0 +78 118 115 -129 -17 -16 5 108 127 -103 102 0 +-97 111 71 -115 1 119 122 47 14 0 +7 -30 67 0 +100 -129 -76 -123 120 0 +34 -114 -90 -118 0 +60 -6 -29 9 0 +-94 -32 -56 0 +-111 -26 -89 -131 0 +-117 41 40 0 +-110 13 -123 72 10 -4 83 59 0 +82 -21 -119 105 108 -133 0 +134 4 -72 0 +124 -100 -83 0 +97 -122 -19 82 93 36 110 -119 -90 0 +-108 105 51 125 0 +12 -122 -18 0 +6 8 107 0 +-130 -93 115 0 +-112 126 111 0 +69 111 -115 -126 0 +-131 119 -58 128 0 +7 -17 123 65 105 -113 -129 0 +107 -121 -105 57 -51 101 0 +-18 95 21 0 +-125 -127 -31 121 4 0 +112 -123 119 39 -125 0 +86 -108 121 0 +10 134 132 -91 -130 8 -105 0 +28 115 106 0 +-55 97 54 -103 -116 53 21 -129 -83 0 +-11 3 -27 0 +129 13 -33 0 +103 122 -114 -101 -94 37 -31 0 +-40 -132 63 13 120 0 +107 -123 0 +-45 122 108 109 73 7 -58 -126 -42 -111 0 +-101 -32 6 0 +-103 96 34 0 +116 35 104 -48 -124 -98 0 +164 87 -101 0 +-28 149 -175 0 +-80 -148 131 -166 134 0 +-142 -155 -132 0 +-168 34 -110 -139 -145 185 0 +-15 -183 -150 -53 109 0 +159 8 -172 0 +-107 178 -110 86 -174 -163 -176 0 +-170 -116 118 0 +-146 11 151 0 +-140 176 183 -59 -31 0 +114 179 188 -113 0 +150 130 -66 0 +117 -107 -52 0 +41 -188 -108 0 +139 -187 42 0 +-144 11 50 -113 0 +47 121 71 0 +187 113 -160 -171 0 +-130 165 -156 0 +-157 163 67 129 181 0 +141 -113 27 158 -186 154 -178 0 +-137 100 -179 0 +155 -154 37 184 -159 0 +-149 -57 -151 0 +135 -177 19 -30 182 -138 -111 0 +171 142 -141 140 173 -20 -17 156 -91 -23 0 +87 -185 126 0 +-107 -169 48 106 -33 34 -162 146 0 +137 67 8 111 0 +114 11 177 -153 0 +29 132 -164 -184 -59 0 +-129 -111 -136 0 +-23 -124 161 138 -152 125 101 -108 31 20 0 +175 167 172 81 152 -158 0 +147 124 -123 0 +-135 -71 170 0 +144 -167 -108 180 0 +-161 143 79 0 +114 134 153 -143 0 +186 31 21 0 +-173 -7 64 0 +160 -99 174 169 -129 -88 -147 52 26 0 +114 -10 -180 0 +-182 -181 162 166 112 -165 -106 0 +124 125 -87 129 109 0 +148 -73 -37 116 0 +-11 -32 -126 136 -87 145 157 -62 0 +122 168 146 -148 -118 144 0 +-51 -150 178 -50 -99 0 +-73 -156 -178 -69 0 +-48 91 -160 144 0 +-163 187 121 -153 110 17 -146 0 +-5 34 101 153 0 +169 162 -173 -147 -160 0 +149 56 -113 20 0 +152 -118 -180 148 -158 104 139 145 -62 130 0 +104 161 36 105 -141 -11 -2 163 0 +-137 84 167 0 +160 138 127 111 9 39 0 +129 -178 -108 0 +152 131 90 188 0 +181 138 -16 0 +-155 99 -93 0 +124 110 66 0 +-40 168 -115 0 +131 80 104 160 -174 170 112 -162 0 +109 93 120 162 0 +81 -78 33 0 +153 43 117 -130 -164 -148 119 145 -149 179 127 69 0 +-110 132 -181 -179 -156 -176 0 +-180 -150 148 105 -90 153 0 +-178 113 104 65 131 0 +-170 27 -128 0 +147 -186 171 0 +-176 12 -178 140 0 +-135 92 105 0 +-160 93 46 166 0 +-151 -42 -160 157 40 0 +23 -146 167 0 +177 -175 133 0 +181 186 123 0 +126 103 155 120 -156 -132 -165 129 148 0 +24 -124 181 0 +171 114 144 -136 -152 0 +-141 125 -151 142 -176 0 +166 -142 -96 -135 0 +108 -145 136 0 +99 67 -126 135 -115 0 +-186 -3 11 102 0 +-137 -56 149 -136 0 +-164 65 -171 0 +-110 -113 -184 0 +-78 29 -83 185 -111 -133 -126 0 +-177 -187 -184 168 0 +152 -115 -129 -67 153 77 -39 -16 -145 0 +-25 127 -141 -173 -187 -29 73 9 0 +-134 184 175 0 +178 99 -84 0 +155 159 100 125 -141 -183 0 +-17 112 138 178 15 155 128 184 -14 0 +-147 139 186 0 +111 158 -185 -155 103 -100 -148 0 +-102 145 -41 -176 -165 157 -65 0 +-110 -39 -165 -41 19 0 +10 172 -37 -103 0 +168 -158 -178 0 +-161 -146 -81 165 -111 0 +-162 -10 113 0 +167 139 134 154 -186 0 +178 -150 -183 -34 0 +30 -154 -148 108 0 +-146 140 164 -2 137 0 +-129 -186 114 0 +148 8 139 -175 0 +-170 150 58 0 +-136 -165 -142 131 -113 163 0 +85 123 -108 163 0 +187 -147 150 140 0 +181 136 140 -48 17 0 +43 173 121 129 87 -184 94 -14 0 +-113 -165 145 0 +161 -105 -76 0 +169 126 129 -182 152 -166 -181 37 -130 0 +134 -2 -161 -8 -25 0 +129 113 -148 0 +-107 178 125 0 +-132 -184 -166 0 +100 179 118 0 +75 63 -136 -125 184 -159 -185 -111 0 +5 163 -145 0 +-137 -127 136 163 165 180 41 -122 -159 0 +127 -125 179 0 +-45 40 -92 0 +-174 128 136 10 0 +-72 162 -135 114 -161 64 132 -107 0 +152 -56 100 -124 -135 0 +60 -120 128 115 168 -139 0 +5 -182 -132 -38 0 +-164 26 28 -38 0 +-146 -132 -77 0 +153 179 -6 -125 -103 0 +-170 -151 16 0 +132 178 6 -136 0 +-152 62 -167 143 0 +162 35 165 -4 0 +113 117 -166 112 -182 83 -137 0 +-146 99 132 0 +-134 128 -101 -7 0 +120 -41 154 0 +-109 145 -155 -148 -137 -170 133 0 +13 -141 27 -174 0 +-50 125 -106 0 +153 142 148 -149 118 -132 0 +-130 -128 23 0 +-46 -101 -141 9 0 +186 20 121 0 +92 177 -158 131 183 -105 -111 175 167 -150 66 20 0 +-2 -163 -73 0 +-187 159 40 157 -137 -38 0 +116 120 131 -181 66 -14 -1 0 +-97 163 -187 -152 -188 0 +181 35 132 100 0 +66 173 -122 0 +129 -182 180 109 0 +-170 -161 125 108 -89 3 -174 -162 -71 0 +137 -75 174 181 0 +178 -79 167 -118 0 +-147 -133 114 -108 -178 0 +-156 175 -152 147 0 +-148 115 -138 -107 -123 -2 0 +145 174 159 -152 135 0 +177 27 -99 0 +-93 23 36 48 0 +139 186 183 0 +-138 144 36 155 -140 0 +135 -167 -178 0 +161 137 -135 154 -74 -180 16 -53 -162 0 +129 -115 142 152 -177 -170 -12 22 133 0 +172 115 182 -126 -148 0 +-37 -78 -103 -84 149 -101 0 +150 -146 156 0 +-164 -16 19 0 +170 40 -139 -105 133 0 +-68 -138 8 -54 -159 0 +25 172 -99 0 +-118 -157 -171 0 +158 162 -181 -81 -156 -125 140 0 +104 -176 183 0 +-103 -160 2 -130 165 -132 -135 -34 0 +-69 159 107 -158 63 -135 14 0 +-63 -112 -184 0 +67 177 135 0 +-58 -177 108 -1 57 -162 -89 -93 -139 15 188 -20 0 +-77 -135 -181 -134 -175 0 +-124 -129 -123 -107 0 +182 -108 70 -5 0 +-156 105 27 -144 0 +14 111 -138 142 0 +71 -150 -101 -141 114 0 +153 127 144 0 +165 160 116 73 0 +166 134 -185 21 181 0 +-161 -5 -148 40 0 +52 -24 -20 -150 -141 -36 88 -158 124 140 0 +-169 -180 43 0 +132 -184 -100 11 -149 129 0 +143 -148 -150 82 -137 151 41 -131 123 -116 0 +-21 169 -153 0 +111 169 73 0 +-157 -164 151 0 +21 -119 97 170 -107 79 0 +156 119 -179 0 +-109 -59 -43 -19 66 132 0 +-75 -149 -134 -109 0 +136 -142 112 0 +165 -151 -64 0 +-40 142 -15 0 +57 3 -184 -134 161 171 0 +186 -119 161 -17 187 132 0 +-165 -46 -145 -96 185 -154 138 0 +-139 144 -188 -114 175 176 -183 0 +161 -168 -177 0 +-105 -126 161 164 0 +144 80 123 0 +121 -106 -32 -152 -160 -135 -85 157 0 +-121 128 -188 139 0 +-173 -120 -178 17 -160 56 -61 52 -64 -158 -138 0 +98 180 141 26 10 0 +-41 -15 187 -3 120 0 +77 -142 -138 0 +154 34 -149 -116 -167 0 +-130 -26 -180 0 +58 115 -105 136 -174 0 +-162 171 -133 149 0 +140 174 -131 0 +109 -172 -115 0 +128 84 38 -89 172 0 +-147 -163 -174 -184 112 2 0 +172 -126 -31 0 +-26 -172 185 145 0 +-118 99 113 1 -120 160 67 0 +23 6 -160 0 +-150 162 161 0 +15 17 -188 0 +55 116 72 160 129 0 +149 -99 148 -9 0 +-142 108 -32 127 -126 -167 -136 0 +187 -60 -177 185 0 +128 -120 123 161 160 -116 82 19 -136 0 +61 -162 -117 0 +-176 -182 143 -120 -157 145 175 -138 -131 0 +-141 -106 -100 0 +-174 135 -167 124 -125 138 0 +-104 -137 78 0 +137 -73 -164 0 +-129 7 -134 -136 108 -135 0 +-89 141 184 140 0 +7 -163 115 129 120 -165 0 +-68 103 130 -7 -149 99 0 +167 -27 -169 0 +-1 110 60 0 +16 -154 -146 -188 -153 82 156 178 0 +112 -166 -16 171 0 +-141 138 -98 15 169 0 +152 -87 91 -14 117 57 127 -105 0 +162 -127 -181 0 +116 130 -143 -169 36 0 +-88 29 161 0 +137 -161 -27 -139 43 0 +-21 -176 122 -157 0 +-145 -123 -27 -102 0 +96 -141 -164 0 +-157 -179 -143 107 -14 -24 -31 0 +144 -135 160 7 113 -137 0 +136 -98 -175 -149 185 -171 184 -64 0 +186 -166 -171 0 +-105 150 -136 0 +-184 -99 148 -118 153 175 0 +158 -185 -133 -172 165 -167 0 +117 45 -172 0 +-137 -18 -143 -178 168 33 -153 0 +42 101 170 0 +138 -107 141 154 -161 -150 0 +171 -140 132 0 +-12 168 161 0 +117 -137 30 -113 -131 104 -62 138 119 0 +185 104 121 -187 -35 0 +68 41 -138 0 +-173 -183 122 135 188 -132 36 14 -115 -161 136 0 +-134 -130 62 0 +168 162 140 -102 0 +137 111 -120 0 +119 -162 116 -47 148 107 -165 0 +-176 -156 154 0 +30 -112 -185 0 +-117 177 103 -122 0 +-48 -150 -19 0 +36 11 120 181 0 +144 72 185 0 +-75 -188 -147 0 +79 108 148 -147 0 +-123 -148 -114 -163 -93 126 -151 -147 0 +-143 -132 73 0 +159 -47 -103 121 -164 -154 0 +-136 101 151 148 173 177 0 +-151 51 -56 133 0 +-160 183 170 148 0 +136 -133 -146 0 +-123 -133 -172 160 0 +-188 134 176 14 0 +-164 -36 -100 130 -175 -178 0 +114 -143 120 -129 -126 -100 0 +40 -132 -111 0 +33 -163 155 0 +36 30 88 0 +27 169 153 139 127 161 -100 -149 178 -144 184 0 +31 62 -188 107 -33 142 0 +-173 60 158 0 +142 52 -184 33 -32 145 164 0 +-139 -99 -148 0 +-121 -177 -161 -173 0 +-14 -181 -56 0 +-91 -129 144 -178 101 -24 -131 -148 0 +-157 -64 -113 -60 165 -166 70 152 0 +-166 121 -152 -15 9 -163 180 -176 -171 -116 0 +139 -2 71 -137 111 -75 138 1 0 +177 126 102 -113 0 +111 172 156 0 +24 62 -75 -32 0 +180 -166 -104 0 +-152 -172 -146 0 +177 77 149 -26 -154 0 +108 -57 -52 0 +165 135 -58 183 -91 -172 0 +-133 126 164 -151 -144 0 +-129 114 140 0 +168 -157 179 -138 16 167 -171 -173 -111 174 -178 -73 98 0 +-110 155 -168 -115 0 +-121 116 48 -182 -46 100 0 +-167 -184 9 130 18 0 +-141 116 -54 36 0 +3 148 -172 0 +186 -150 188 122 140 0 +-127 107 -161 145 -105 13 35 0 +157 181 25 133 177 170 168 0 +1 144 172 173 103 -183 145 60 0 +-6 137 -103 0 +-2 164 -99 0 +64 164 -123 7 -91 0 +-99 -157 187 -135 0 +-117 49 -119 0 +188 -169 139 -138 -89 -179 -13 -157 0 +132 -128 -140 -77 0 +-107 109 160 -175 116 -99 -79 26 0 +137 179 178 3 165 0 +145 -139 158 102 0 +169 -18 136 110 -129 0 +-164 -123 173 -181 40 172 -39 183 0 +174 107 36 -19 -140 58 185 127 99 66 -146 0 +113 -172 -127 169 -25 -185 131 0 +122 155 -135 0 +75 151 8 -166 0 +-14 155 180 127 151 -130 27 -170 -134 105 0 +126 165 -119 136 181 -156 177 161 -187 140 118 61 27 0 +165 -38 158 -104 -142 0 +148 103 173 0 +-176 -129 -126 14 110 -185 0 +-85 -142 -160 183 -90 126 127 -164 -176 166 -40 -136 29 0 +126 -156 0 +103 -140 96 -70 0 +-171 111 -147 149 139 -180 0 +37 -127 -36 0 +72 -132 118 0 +160 168 115 -178 47 -126 0 +-1 135 157 -25 0 +-189 -213 149 0 +4 106 -209 -164 0 +130 207 -211 0 +156 -212 215 -194 205 42 200 -201 0 +211 204 210 216 189 0 +-128 -112 134 0 +121 -218 -210 -197 -100 -16 71 -205 -162 0 +193 -216 -217 -196 0 +35 38 -122 0 +-192 -190 202 208 -104 -182 -149 -174 -44 -193 35 138 -191 213 0 +209 199 16 -207 0 +176 169 -203 113 0 +201 185 89 -199 -204 167 0 +-177 -200 -144 0 +217 -208 160 0 +-32 214 194 -120 0 +-198 45 -141 212 191 192 -115 50 0 +218 168 62 0 +-105 -131 196 49 -125 148 -215 -206 -103 197 -45 -183 0 +-117 175 -202 -195 0 +-106 165 173 0 +-169 195 190 0 +40 -150 160 198 -214 0 +203 -50 206 0 +-165 45 193 -121 204 0 +-199 41 204 0 +-196 133 -209 0 +140 -208 -196 0 +-198 -188 -199 205 210 0 +76 188 150 -190 165 0 +206 -16 -205 -196 176 173 -208 189 -170 -190 212 0 +199 -123 103 0 +216 96 113 0 +9 50 7 0 +-100 -218 -154 0 +137 217 -205 0 +215 -213 209 -154 0 +-213 29 -214 -193 0 +213 -218 -212 -117 0 +216 -103 179 -176 123 141 203 -162 -164 0 +-195 -179 -194 153 0 +215 -158 -104 147 133 97 -85 -157 -129 0 +-200 -192 159 -207 80 198 92 0 +-83 171 114 -204 0 +-37 113 197 218 -159 -4 -207 0 +-138 -199 178 218 -197 168 0 +192 213 210 0 +-191 133 -185 -204 -180 0 +159 -196 207 214 201 -174 15 0 +93 196 5 0 +-192 -218 -217 0 +215 200 145 0 +213 -182 191 -195 180 32 148 109 -197 156 -13 101 -211 0 +193 -218 -196 -177 107 0 +202 8 -200 -42 -216 166 0 +170 201 215 -188 -207 -159 0 +-195 -161 173 26 -171 0 +-107 -144 213 -113 0 +141 194 -192 167 -159 -117 38 -215 0 +-210 209 -130 -193 0 +-208 160 -148 -199 0 +-99 149 -126 -164 -179 -148 129 0 +-198 -176 -211 187 0 +-217 142 -148 -191 0 +-107 187 0 +191 -190 197 0 +199 202 -198 0 +189 193 -130 0 +193 164 195 -109 0 +-88 -204 87 0 +-209 7 211 -213 -128 212 81 0 +-193 -217 0 +190 211 214 0 +133 215 192 0 +207 60 197 166 -214 196 0 +-208 118 -209 204 -109 -129 213 -190 -124 -194 188 173 0 +-215 60 122 0 +134 -39 198 201 0 +-170 -196 -195 123 0 +193 -157 202 -200 -25 -172 -150 0 +207 211 -191 -103 0 +-201 203 -125 171 204 -91 -205 0 +-105 -207 -217 -154 0 +189 193 -217 -200 -141 0 +189 207 -57 0 +-212 -215 -25 -167 32 -156 0 +205 -163 -75 198 -169 -141 128 84 194 218 146 -153 -148 204 115 78 -107 -39 0 +-198 172 212 181 0 +-193 -135 -133 -205 0 +199 207 183 0 +196 187 209 -205 0 +-197 -68 -215 0 +-217 169 203 0 +-83 49 -179 -218 0 +201 190 200 -19 0 +-214 12 -205 0 +-195 -199 -211 -158 128 -200 190 100 0 +111 206 -105 -154 218 142 0 +-49 -6 -203 0 +-173 137 169 -195 207 -213 0 +-11 -178 -153 191 0 +-213 200 -192 -214 -194 -150 199 191 157 0 +159 200 148 0 +197 -214 -199 216 0 +145 -207 -89 0 +-212 -166 40 189 0 +207 -209 215 91 -205 0 +105 199 -192 0 +204 130 191 0 +-215 -193 -180 0 +141 171 -214 -209 170 217 -112 0 +-172 -218 182 144 -184 0 +-172 -201 200 110 121 -179 0 +25 194 -26 0 +18 -195 -158 -164 0 +-190 -210 -205 0 +137 197 -203 -214 97 0 +146 198 211 202 25 -192 -191 206 -215 0 +108 202 -27 -100 0 +-107 -202 195 0 +-194 111 203 56 0 +36 -194 179 0 +-215 199 -103 207 212 -217 -202 -214 211 0 +-209 181 213 0 +-212 -198 -137 191 0 +-142 193 209 24 -218 0 +214 -195 -201 0 +-138 210 125 211 -120 0 +189 122 194 0 +-109 151 214 -217 212 -159 0 +-66 -204 202 0 +216 -117 -210 -189 147 0 +195 -136 -187 0 +-199 -177 86 -153 99 0 +5 -212 21 103 0 +212 176 191 0 +217 -204 183 114 211 26 174 195 -167 -208 0 +-204 80 -209 0 +-109 176 -216 0 +-168 -106 195 0 +-182 -187 -190 0 +-187 218 -205 -173 217 0 +210 -207 214 191 -213 0 +-125 -208 162 0 +-211 -213 208 195 0 +-11 184 -140 112 0 +-187 196 -217 -125 0 +213 -204 117 0 +175 170 196 -208 203 0 +139 -199 191 -149 0 +-203 169 107 125 0 +-134 -124 196 -216 -209 -210 198 0 +211 -201 -192 0 +211 -100 -159 0 +-189 -211 -154 134 -201 -170 210 -184 -87 0 +175 121 10 196 -205 0 +102 9 -185 -209 -213 0 +145 -201 22 -23 0 +214 178 122 0 +5 -143 -202 209 204 0 +99 -211 14 0 +-196 -155 160 0 +-185 -117 7 0 +-218 -138 -166 -202 77 -201 209 199 -213 0 +-213 -188 -216 0 +132 30 25 89 -103 117 147 0 +-58 -212 -204 0 +-189 -216 185 217 0 +-196 215 -111 -178 175 0 +-189 -172 -156 199 -195 -212 123 204 -190 -175 0 +-115 137 216 190 0 +-169 194 -100 162 0 +-123 -151 -217 -140 -187 38 202 -174 0 +-191 -200 48 -156 -146 0 +-188 -3 200 -145 -208 0 +-201 185 -94 -189 0 +-186 -203 138 -199 0 +-206 -200 205 175 0 +30 -195 170 -196 180 -155 68 199 -207 -216 214 -153 118 197 65 0 +-78 198 -192 -215 0 +-173 192 -194 -156 0 +-7 -216 125 -190 151 0 +-153 -139 -209 207 0 +202 203 -70 0 +204 205 -128 0 +169 -214 -23 -128 -111 -158 173 161 -216 -218 -133 114 0 +207 103 202 0 +-154 210 193 117 18 106 -217 0 +-171 150 194 0 +-204 137 193 0 +-210 183 -149 -212 45 -204 -121 0 +-191 -144 100 0 +191 211 184 -145 0 +210 197 -200 0 +203 112 -209 120 -208 151 0 +-204 173 104 0 +214 141 -120 208 0 +-212 -160 134 -197 -157 -50 65 -101 190 -214 -207 -166 0 +-204 -199 207 153 0 +192 -217 213 -130 0 +38 212 161 -157 203 0 +110 -148 214 93 0 +-112 211 -8 0 +-158 -214 189 202 -197 -209 205 0 +164 205 -195 0 +-212 127 111 0 +-101 136 -216 -213 183 0 +-129 193 11 -205 0 +-130 114 -206 0 +192 208 -193 -210 -113 188 0 +-189 181 -190 0 +192 199 -9 -174 -205 115 0 +-192 199 101 41 0 +204 216 189 -63 0 +-165 -191 -218 215 -208 140 0 +205 106 -142 0 +-102 -164 193 0 +199 216 -212 -178 0 +-188 -99 -210 194 -75 124 158 -191 -174 198 0 +199 -23 -208 0 +-23 218 -147 184 0 +215 -133 127 0 +22 -188 198 208 217 -159 -195 -138 -211 193 -215 -111 0 +204 -213 -176 0 +-169 198 -205 0 +-193 8 -215 0 +204 132 -168 214 -216 -197 49 -190 25 0 +112 -128 191 0 +193 -163 99 -210 0 +206 -209 202 -150 0 +85 -216 192 188 -214 0 +-105 -125 51 -126 0 +-96 41 212 200 0 +-102 195 214 209 191 -199 142 185 0 +122 192 -147 0 +213 203 183 50 214 0 +-170 204 190 182 -199 0 +205 -203 190 164 -211 218 0 +-54 195 -131 -191 -176 200 193 217 210 203 30 -146 -207 -102 -190 -211 0 +-189 -80 -109 204 -200 143 180 -49 -207 194 -202 -181 -217 12 -192 -95 160 0 +174 193 -132 210 -40 0 +-202 201 183 0 +10 -39 -154 0 +-205 164 138 172 -206 0 +191 -211 -134 100 132 207 138 -146 216 195 -163 -136 217 25 -180 144 0 +206 130 212 200 167 190 182 0 +-207 -192 -184 0 +-144 152 -189 25 201 0 +217 -168 175 0 +183 189 211 -19 -217 203 0 +-120 207 107 131 213 0 +-146 198 217 0 +75 -65 195 169 -182 0 +210 201 62 -141 -130 -177 0 +-183 199 -189 0 +-197 208 134 -76 -164 -203 108 195 -202 -119 0 +210 -160 169 190 0 +209 189 145 -190 0 +-215 -169 165 0 +-165 -120 206 -132 0 +48 207 212 215 0 +207 132 -168 -193 177 -209 217 214 198 62 -68 0 +203 193 -179 169 200 204 -191 159 183 0 +-103 -160 0 +-214 -209 -202 -6 215 0 +-201 -205 -204 0 +164 -174 -203 192 0 +195 -200 -161 101 -31 0 +187 -203 130 -52 -207 -215 -193 -64 205 0 +-218 98 162 0 +-210 98 194 0 +213 -162 165 124 0 +102 -105 142 109 218 -131 40 0 +161 188 6 0 +166 13 214 -200 -217 0 +92 -133 -211 193 -201 0 +181 131 -218 -194 216 110 0 +143 40 21 -192 127 0 +-170 191 217 0 +204 188 190 -4 104 0 +-85 -121 118 0 +129 62 -192 -175 203 0 +-193 109 151 130 0 +176 -192 55 -202 -191 209 0 +137 -21 130 0 +210 -218 -200 -111 178 -188 181 198 -211 0 +-30 150 148 -209 0 +173 179 -208 -152 0 +-100 88 196 0 +-205 203 -215 0 +80 206 196 207 0 +51 -145 -107 194 215 189 -197 129 -211 208 -172 0 +155 -117 -217 0 +-131 141 -210 -185 -207 -179 -32 0 +177 156 -209 198 0 +155 114 -210 -193 0 +192 159 -164 124 200 0 +133 -110 -48 0 +-9 -18 -195 -205 -136 0 +-201 -148 -118 203 157 217 -205 0 +-167 -144 -161 0 +83 -193 217 0 +189 -207 -194 208 0 +186 208 217 -24 0 +-171 -198 -175 4 165 -137 218 -161 91 0 +215 203 204 0 +193 -210 213 0 +-196 190 -185 126 0 +-212 207 173 118 185 110 0 +206 -111 126 209 193 -197 217 205 185 28 170 -145 191 194 105 202 0 +134 -217 215 -209 132 -196 0 +150 121 198 0 +217 163 196 0 +-218 195 202 -158 -135 19 0 +211 -182 214 -202 -194 0 +152 -215 -168 207 170 -136 0 +-198 18 -196 -1 -201 -170 -193 -207 0 +197 -211 -43 0 +-200 168 -190 0 +206 11 214 130 -201 -212 0 +139 1 206 -90 -193 -191 156 0 +123 -5 136 0 +216 -138 139 0 +9 151 211 0 +-152 -33 -205 0 +198 204 -181 190 0 +-179 132 208 101 206 142 -141 0 +205 180 197 204 -194 168 -171 0 +-195 -189 -136 -141 205 107 -190 0 +-141 161 -204 -150 -213 -175 155 53 108 -188 196 0 +212 -46 -160 218 -192 214 0 +143 132 218 0 +-161 200 -199 0 +120 192 208 138 0 +-157 -208 141 202 0 +197 213 -201 110 174 0 +-202 3 195 -207 201 99 0 +-216 -139 136 0 +-176 -172 215 -189 -40 197 0 +199 215 -100 197 209 0 +-213 -189 -166 0 +200 259 212 0 +205 209 0 +-195 -202 -211 -185 -224 0 +31 -204 -134 0 +-228 264 -191 -206 0 +-264 232 -201 0 +-104 -253 -185 221 0 +254 160 -137 253 -256 227 0 +151 231 -241 239 -138 226 249 0 +222 261 -219 0 +206 198 -119 -201 0 +252 -117 120 -259 -111 0 +-232 -227 -208 248 -262 -225 233 210 240 -170 136 223 0 +-168 -114 225 0 +243 -242 -161 0 +199 82 -237 -203 0 +210 256 194 0 +236 -217 156 139 125 -202 -222 -170 0 +-234 191 238 -183 216 257 -244 0 +-236 -229 -248 0 +-250 -254 216 0 +132 -212 -265 263 0 +-216 204 251 0 +-235 241 -48 -200 -258 229 0 +-207 -246 -149 198 255 -215 0 +-231 250 242 0 +182 224 -189 -230 -129 0 +244 235 -249 0 +-9 216 -208 -139 0 +-69 237 228 0 +-185 -223 -252 -240 -261 -233 -263 -101 230 -21 -198 0 +-136 -189 -251 -245 -221 0 +-247 246 -204 -191 -220 -255 0 +-194 167 -239 0 +-217 260 245 -238 265 -213 56 0 +262 151 -209 0 +-226 219 220 258 0 +-260 -218 206 0 +181 -195 192 0 +-196 -217 234 0 +6 20 182 0 +247 -215 -243 0 +-257 198 -218 -259 0 +-217 216 -228 0 +-233 249 109 0 +-234 262 241 0 +-258 -260 92 0 +102 -116 -262 0 +-239 -254 204 -260 234 -32 0 +-248 259 0 +233 -104 -243 145 0 +200 44 15 260 0 +260 246 257 195 0 +205 233 -190 0 +-228 -222 -210 103 -232 0 +250 -230 122 0 +-249 203 -29 0 +257 203 195 0 +-104 -234 219 252 0 +216 265 -133 0 +223 168 198 23 0 +253 118 -250 126 212 258 197 -184 0 +-244 -202 -147 204 -227 -210 174 0 +-231 -256 177 0 +208 -232 -249 0 +252 249 239 232 0 +-214 -100 264 -259 256 244 171 0 +235 185 -216 143 0 +-233 237 -265 0 +-195 74 201 -116 -193 236 -135 -226 260 224 252 -251 0 +-247 -218 -119 0 +-159 219 239 220 115 0 +-248 -213 -251 264 0 +188 227 263 -232 -167 0 +-181 158 227 0 +-257 -254 137 -163 -190 0 +-226 -132 91 -229 263 -258 191 0 +-257 -208 -191 205 160 0 +117 -228 208 207 251 0 +-46 -199 260 253 247 -252 0 +224 195 -219 154 -16 0 +-130 196 204 245 214 0 +131 -201 -250 249 0 +-34 -229 218 0 +-172 250 -256 198 251 0 +-236 -195 -179 0 +221 -210 233 -245 145 236 0 +264 -245 223 0 +196 158 245 215 0 +246 -24 264 0 +209 201 -257 256 194 247 173 -261 -202 -216 258 -210 246 198 -195 118 -88 -219 -208 0 +191 193 207 238 0 +-211 -257 255 212 0 +-233 -259 249 0 +258 227 -205 -163 243 -203 0 +175 224 -207 15 -254 205 0 +-209 232 -233 0 +-246 -159 -216 200 -228 -89 251 33 0 +138 -203 224 225 218 0 +203 263 223 -231 0 +263 246 243 -125 -224 104 0 +-254 -134 -178 0 +244 -229 193 0 +-2 -112 233 -192 0 +-235 -218 -208 -242 -220 194 -241 180 0 +226 -235 -146 178 0 +-256 -257 -206 0 +-257 174 229 265 212 0 +239 -111 207 -221 -227 0 +-117 -85 -238 0 +217 261 205 264 -239 -49 -206 203 110 240 -177 208 210 202 187 0 +248 -247 -218 -259 0 +247 265 -154 -194 -222 196 -237 250 182 0 +105 -171 227 265 -79 -238 -202 -209 -173 263 107 0 +251 156 208 219 0 +251 237 253 0 +203 -218 236 0 +-104 252 -199 0 +207 -228 196 246 -119 160 257 0 +253 -230 240 248 0 +219 257 134 -169 0 +-206 182 115 175 0 +212 -249 259 27 -137 232 0 +-193 -111 232 189 245 -205 0 +240 264 191 241 -231 0 +-236 -262 257 0 +-178 -35 195 0 +242 -189 256 0 +247 -182 215 0 +229 232 264 214 -233 -185 0 +209 237 -9 0 +170 -221 249 -252 -219 179 -232 -201 0 +-197 182 141 -121 233 237 0 +-258 238 -249 -200 252 -233 0 +207 -238 192 -242 -261 -195 188 126 224 -185 -191 -219 0 +53 220 246 192 -263 47 -248 0 +235 159 -226 0 +160 183 -188 0 +151 262 -6 -249 -244 250 0 +-261 262 254 0 +192 265 -194 211 -231 -207 0 +255 262 -184 0 +199 192 0 +-126 151 208 242 -240 -206 -253 0 +-223 254 236 0 +-175 -111 -222 0 +-76 205 -217 251 0 +258 -241 -262 -245 42 224 189 0 +-193 -245 239 -140 226 -17 260 0 +200 -194 211 198 235 0 +208 -189 231 -261 169 138 0 +231 -189 204 0 +-104 190 -199 -215 255 0 +-253 -243 -258 0 +244 -262 224 -231 203 0 +-130 221 -124 0 +-220 256 -264 0 +-220 237 146 -241 -62 -236 249 180 0 +-236 235 -188 -222 0 +221 193 -82 248 -262 229 0 +-194 262 133 0 +-217 -199 251 -16 0 +132 -207 -230 -265 0 +219 190 226 224 -212 0 +245 -257 180 0 +-259 -201 -224 181 202 0 +185 209 237 246 -213 -264 -243 -118 0 +249 -215 -159 -192 -217 -132 -195 0 +172 254 189 0 +-206 -244 203 0 +235 195 57 -197 0 +251 -159 -8 163 214 201 0 +-223 196 213 0 +198 -200 -218 0 +224 -245 213 0 +239 220 -146 228 237 -262 225 0 +249 -210 209 0 +-100 255 -130 0 +182 -240 227 255 -195 142 185 0 +-200 -221 123 0 +-191 219 -265 0 +-120 126 -242 200 109 0 +196 -201 -199 93 227 -223 139 219 -205 -235 0 +207 -250 257 -237 0 +231 -93 249 263 -142 0 +-203 -211 -246 0 +196 240 -109 0 +182 -195 220 -221 243 247 -202 -222 0 +199 -170 234 0 +263 -211 192 0 +192 145 253 0 +160 206 -106 211 195 -107 -233 226 -234 212 0 +250 228 258 0 +-201 236 138 -122 0 +237 220 -253 236 259 224 -231 234 0 +242 257 -259 255 -193 0 +-263 166 -213 0 +226 -260 256 -248 -254 -107 0 +198 -250 -262 0 +-187 -242 203 0 +-5 -240 -139 212 0 +255 221 191 0 +191 -251 -194 0 +208 111 -239 0 +-256 217 229 81 254 -218 244 0 +-224 -245 262 265 -223 212 0 +239 214 136 243 -229 250 -226 -233 244 -137 -248 247 -227 -264 0 +-227 263 161 236 148 -250 0 +-255 -209 224 0 +201 246 248 225 -214 238 0 +260 -265 131 0 +-221 -229 -76 206 0 +175 218 -225 183 0 +190 203 -263 -228 -128 -231 -154 265 259 0 +-46 -220 250 -37 249 0 +-262 241 -2 0 +-199 206 -263 -103 0 +-245 -238 -47 0 +-199 -190 247 144 217 252 215 258 263 0 +-214 -262 203 153 -254 265 0 +-228 236 -192 158 -231 157 0 +-63 -36 262 -215 247 0 +-44 -190 187 0 +-248 247 210 -26 223 215 0 +197 -235 231 0 +-244 255 247 0 +261 -262 -212 -45 -194 0 +172 232 239 0 +-239 265 248 -231 0 +-146 263 -119 0 +100 -193 238 -233 194 203 0 +246 -241 197 -194 -263 -232 -212 0 +-265 -255 206 259 218 -208 0 +-40 -174 245 0 +-232 -233 201 206 210 0 +206 -205 139 -191 0 +-107 -37 -199 246 -203 92 -138 -194 -258 171 193 -147 256 213 -176 -228 -244 265 0 +207 -167 221 0 +-252 82 19 203 243 128 0 +-232 -218 251 -249 -260 219 -180 56 -264 231 -147 -255 0 +-252 -263 -258 -154 -261 235 240 196 -249 0 +261 220 138 230 -235 239 -96 233 -146 194 -203 214 209 -186 0 +-235 250 -203 249 246 -251 -264 -215 0 +265 261 193 0 +-242 264 -228 -192 -261 0 +-247 -245 222 0 +-225 234 -219 -227 -117 193 -237 -250 127 0 +58 -213 215 0 +-233 242 262 0 +228 230 229 -250 207 241 0 +114 139 -149 217 -150 -220 216 0 +179 -135 -233 -216 198 238 -156 -222 -243 0 +-263 223 249 0 +-174 -155 132 0 +-214 -207 243 0 +-196 189 236 -235 214 0 +-154 -252 225 156 -230 247 0 +-225 -228 242 -250 213 -258 0 +166 -258 230 -165 0 +-195 254 178 -150 0 +250 247 255 -228 0 +237 252 -223 0 +144 166 206 -253 0 +-12 252 193 0 +-230 -114 -154 0 +-158 236 166 -219 259 -203 -204 0 +252 264 -200 244 -204 233 36 114 227 144 -197 0 +205 207 257 -241 0 +213 -244 -178 0 +240 257 234 236 0 +-154 -156 -176 219 231 -235 252 -111 0 +-213 -250 160 0 +180 -191 252 0 +-230 -201 261 207 -194 242 -239 0 +250 -257 -256 -202 0 +-227 257 143 259 0 +227 -203 -146 0 +196 -246 -207 0 +218 238 236 0 +-131 -195 -232 -245 52 -249 262 248 243 231 0 +243 -157 -238 0 +-234 218 -221 0 +-242 252 -239 0 +237 27 -243 130 262 0 +-35 225 0 +153 130 156 0 +262 237 223 141 100 0 +235 -99 137 259 0 +-279 -148 -274 -266 -282 0 +272 -273 269 177 240 0 +267 280 29 242 199 276 -283 -278 284 126 -270 187 0 +193 -287 275 0 +99 -268 271 0 +281 -229 266 273 0 +216 -280 277 286 -272 -154 -250 0 +285 219 287 -286 -209 0 +-222 -251 231 270 0 +-285 274 -231 197 -277 -267 0 +-284 100 -136 279 0 +278 -253 -275 -218 -269 0 +282 -230 -271 -276 283 84 -251 231 0 +264 247 63 -281 -254 225 268 -193 -3 0 +210 -192 221 -274 266 0 +221 56 -285 238 -263 0 +277 267 -287 0 +274 173 277 -256 282 201 0 +-273 -275 -239 0 +266 274 -206 -272 -104 0 +-231 189 148 0 +285 256 276 0 +-255 266 257 -286 0 +254 -266 -270 0 +-284 -279 -183 0 +-193 277 253 -249 0 +-250 -283 275 0 +203 -230 208 0 +-277 -286 -140 0 +269 -267 -221 0 +273 -208 -219 -214 -247 -204 249 278 0 +280 -287 -78 0 +-217 -273 -243 194 0 +274 286 281 -268 0 +279 -266 284 179 -282 -188 0 +-194 -283 258 284 226 -239 -225 -102 -172 0 +217 224 -27 -275 -278 -229 147 108 0 +-196 217 -203 -282 197 0 +-239 -286 -161 0 +-275 -273 -276 280 -169 0 +-195 268 222 -115 102 -283 -263 284 -209 0 +-277 192 281 283 0 +-227 285 268 0 +273 -241 225 227 -160 -223 0 +-286 191 -266 285 282 -262 -268 0 +-275 -273 268 0 +-270 219 269 0 +283 -207 -84 0 +212 -9 227 -276 246 -286 285 275 -66 287 270 -240 0 +286 -284 219 0 +-140 280 -276 212 266 275 -271 287 0 +117 276 -208 266 -26 258 -272 -176 163 0 +-218 184 -232 0 +257 147 155 178 -227 -283 274 0 +247 2 250 -282 0 +273 206 280 0 +-278 -282 286 0 +-190 286 228 266 0 +-284 -278 224 0 +278 -113 274 0 +277 -214 270 -246 -282 0 +272 271 278 0 +287 113 -199 -275 0 +-260 284 -280 220 0 +271 -268 -269 -48 0 +-273 269 -266 -211 0 +264 -218 -258 281 282 -154 56 248 -118 196 229 210 273 0 +279 267 272 276 225 -224 0 +-278 -92 -268 190 212 0 +271 -257 260 -158 0 +245 -282 -284 -226 -235 240 0 +282 217 -271 0 +-215 210 261 232 0 +-267 275 256 -285 -281 0 +190 -207 -157 -280 -210 0 +18 238 184 0 +-212 285 150 -267 0 +237 -285 -232 172 235 0 +-218 274 -233 -78 275 0 +266 -268 286 0 +281 267 -33 -249 0 +-16 -203 -238 0 +-271 278 281 0 +228 -279 283 -255 -237 277 0 +270 -238 -268 -263 277 -195 -274 0 +272 282 -198 284 273 0 +-205 281 -273 0 +278 -6 -266 0 +285 -279 -237 272 0 +228 268 -241 221 0 +-273 -286 204 280 0 +-190 275 265 0 +255 235 279 0 +-262 -277 135 0 +277 -286 -268 0 +-278 269 130 272 287 0 +147 -278 273 271 0 +285 220 207 -287 281 -280 237 0 +151 -280 286 287 0 +270 149 141 253 0 +-141 160 256 -267 -246 281 278 260 0 +-201 273 -285 0 +274 284 237 0 +-126 -223 272 0 +-268 278 267 287 0 +-271 279 -218 0 +269 284 271 -275 -276 0 +225 -233 224 -259 0 +-205 103 -273 277 148 0 +177 281 239 0 +-287 191 274 0 +-269 -266 -194 0 +283 -282 287 264 -278 271 0 +272 -278 182 165 280 -173 130 0 +273 -282 207 0 +195 -287 -266 -286 0 +184 -38 273 -271 -115 0 +-233 276 -89 -110 0 +231 -202 -279 281 -286 223 0 +-270 196 275 0 +-266 -238 252 0 +279 -187 266 280 0 +-247 285 193 244 0 +-159 -217 -273 211 -284 274 0 +15 -274 -137 132 260 0 +286 268 281 0 +-233 277 -272 -167 222 0 +275 -1 273 219 0 +224 243 273 113 0 +255 -267 -276 -278 282 0 +116 -272 -26 278 266 186 0 +-275 226 -285 269 -271 276 128 272 282 0 +-238 -253 -225 -230 -267 0 +-241 -283 268 0 +-269 267 -142 -156 -194 258 -271 0 +-283 277 -218 165 -200 -225 0 +-286 271 219 0 +-230 -269 -272 -242 -113 0 +281 266 271 -268 -287 0 +268 -163 278 -284 0 +233 199 -223 -209 0 +-229 -270 -203 -274 243 247 279 285 0 +222 -211 243 -270 -269 0 +-251 -287 285 -200 270 0 +-252 259 -280 235 -266 -226 0 +-276 -287 267 -268 269 201 0 +-256 -270 -261 0 +-189 58 -278 0 +-150 224 -274 0 +219 281 274 -110 -250 204 277 195 -242 0 +-270 200 259 262 -267 268 258 0 +260 -188 -278 279 -277 0 +284 197 189 275 -226 258 -269 0 +155 -266 221 0 +-267 -256 281 0 +178 -275 -271 -276 0 +267 158 236 0 +244 -238 -249 -223 243 240 0 +-275 276 -214 -286 -274 -282 267 235 -224 241 281 253 -249 0 +-275 -235 -266 0 +246 -266 199 0 +275 -231 -229 0 +247 -277 281 0 +268 145 -202 0 +245 -222 -266 129 277 -278 0 +-278 234 0 +-283 -270 95 0 +-213 -205 -268 277 283 245 229 0 +-72 280 200 -269 285 0 +-236 -195 284 257 282 -287 247 0 +-37 270 -99 266 0 +267 -272 189 0 +266 -268 275 -280 238 0 +-277 258 -286 0 +-261 170 249 -174 230 0 +-278 -268 -221 195 -233 284 274 244 -44 -236 0 +-272 268 208 0 +-272 -282 278 268 -263 270 0 +255 277 -140 -205 279 0 +-265 -277 262 -271 229 269 0 +-211 -218 270 271 238 266 -230 -250 276 0 +194 273 278 277 0 +244 217 -216 215 160 204 0 +122 181 274 286 195 -204 271 0 +-268 226 -237 0 +283 275 -231 87 -265 -245 0 +118 274 -286 0 +252 270 -278 0 +-278 -238 283 -244 0 +273 -281 209 277 0 +-190 -265 159 270 -247 -192 187 -245 273 266 282 -195 240 -277 0 +-269 272 -161 0 +-266 235 -214 -25 0 +286 -285 198 173 268 -201 -176 -118 -262 269 0 +-272 -229 271 257 -255 266 236 -273 0 +-282 277 -259 0 +253 227 -257 261 248 0 +229 -279 266 0 +-286 -84 221 0 +-287 -281 -251 0 +278 -267 -239 0 +173 -285 -224 -281 261 0 +-244 -247 248 -190 0 +264 57 -270 153 269 276 -267 271 0 +227 -213 -287 -271 0 +-266 -277 283 0 +-252 276 156 0 +-230 -274 -242 -286 -168 0 +282 243 286 0 +268 -74 -280 0 +270 -275 253 -224 -269 -229 -274 0 +277 -267 -198 -282 0 +246 195 -287 281 190 -58 -99 0 +-216 -157 239 266 203 0 +204 286 -269 0 +205 275 280 286 0 +287 235 272 -102 -230 0 +-158 267 203 -126 -230 224 0 +104 235 282 0 +237 157 287 267 0 +-286 -227 278 0 +-203 -218 280 -236 266 0 +246 273 -85 0 +204 -185 -276 0 +-260 -270 280 -285 283 0 +276 270 -287 0 +269 284 215 0 +287 274 226 222 -272 0 +-279 -273 -111 11 0 +-115 285 25 266 253 -197 0 +-280 282 265 231 0 +287 -193 -280 -259 87 118 -237 0 +-201 -280 -143 -287 -217 285 -231 -269 -272 0 +229 -195 258 0 +236 -197 -240 262 0 +220 -274 -266 277 271 0 +281 -269 -283 0 +-251 284 102 -88 271 195 0 +238 267 271 -233 -229 192 279 -232 -234 -281 13 -245 0 +-209 -264 -283 189 274 -278 276 0 +263 225 -252 -207 -272 0 +182 219 237 266 0 +287 258 -275 -274 151 273 -199 -278 -214 -171 205 0 +-257 -208 276 0 +272 -269 280 0 +-98 277 -284 197 268 0 +-272 -277 -284 -239 -233 207 0 +-282 270 195 -250 -269 0 +-284 -277 255 0 +267 283 227 0 +270 -236 152 -266 158 277 193 -79 0 +-287 -221 -203 0 +61 260 277 -236 0 +161 179 -266 0 +-270 -287 -2 0 +-283 -252 285 0 +-273 204 37 -283 0 +-269 -203 191 283 271 -217 -285 205 -212 -236 -13 0 +-269 272 105 0 +-286 -272 189 -268 0 +241 -273 279 -280 -287 -254 272 271 0 +-204 280 -251 -222 -244 0 +280 -106 -281 284 205 -283 36 269 0 +216 283 268 -206 223 100 0 +-207 41 176 287 286 -190 -239 0 +63 275 191 287 0 +273 -278 232 0 +277 -190 -280 -205 -243 0 +252 -220 -146 0 +233 268 -275 -254 240 -50 223 0 +-255 -230 -191 0 +193 -282 -261 0 +-258 -226 267 0 +-275 224 216 236 -284 0 +-211 -266 260 228 0 +-280 -141 197 -270 -209 0 +125 -196 -286 261 0 +-276 278 266 38 0 +-279 -257 269 0 +112 269 -271 233 0 +-277 231 0 +-284 -264 149 -243 0 +259 -287 274 0 +192 -256 195 276 279 0 +-270 -273 106 0 +-243 208 -284 166 0 +-213 -269 93 278 268 -223 277 285 0 +270 -225 199 0 +-275 -268 284 0 +-196 220 -99 -236 283 257 222 -270 0 +271 249 -195 0 +268 -279 -283 285 -227 244 0 +-169 -274 0 +-243 282 -213 0 +-281 -276 -274 112 0 +-273 227 199 224 248 0 +-274 -265 283 276 281 -246 -191 278 268 244 -263 0 +-139 -209 161 285 272 -281 104 276 0 +-208 227 278 -170 226 206 271 176 -286 203 0 +-240 266 136 0 +220 -283 277 0 +-240 -287 267 -216 281 -199 270 -271 -278 0 +-137 -152 -245 0 +158 -273 -211 0 +-270 238 287 223 280 -231 -277 -276 0 +247 -287 235 -266 -284 -132 0 +-254 -230 256 275 -242 0 +-230 220 -234 -281 0 +-211 275 -254 268 283 271 229 -280 -44 0 +-297 -291 -156 0 +277 -269 -295 0 +-294 -275 -284 302 301 0 +303 292 -305 -239 0 +-193 -206 278 0 +-274 270 -288 0 +290 -304 271 0 +212 -289 -191 283 198 300 0 +274 91 286 -290 -190 296 289 288 0 +-260 -300 294 305 291 0 +-256 -282 -280 299 0 +-259 -293 -266 0 +297 -298 -292 0 +-284 -299 244 -303 0 +-267 304 -301 0 +280 -302 266 0 +286 276 -296 0 +293 -243 298 283 221 0 +279 295 299 -64 0 +292 272 -279 299 -296 0 +-290 -305 289 0 +-295 -296 -177 -130 294 0 +231 289 234 -293 0 +-299 -301 297 0 +-304 232 -299 0 +287 -260 -276 -261 259 -297 0 +-295 267 290 -304 -300 0 +304 136 -183 266 305 0 +303 292 -131 -246 -293 0 +-297 304 286 292 288 0 +289 -267 -166 -297 295 0 +-305 280 -221 0 +281 -262 -256 286 0 +-233 295 -273 -297 279 296 0 +297 291 -301 -270 0 +-288 275 -262 303 0 +243 -263 231 294 0 +-298 -303 -217 0 +-26 303 -275 298 -297 -289 224 258 -288 274 305 0 +-258 -282 -302 -295 -268 0 +-279 245 -281 -288 -305 -270 -286 290 -287 266 294 -218 0 +296 268 283 0 +275 284 -267 0 +301 -274 -304 0 +288 -301 -78 218 -303 -280 257 -298 279 299 281 -296 228 300 266 0 +-301 -162 288 294 0 +219 -301 266 295 297 0 +-221 -237 -285 279 0 +-289 -264 275 296 0 +286 236 -233 0 +-291 244 -298 -260 277 197 274 -278 157 0 +293 -300 261 292 201 0 +283 278 -291 0 +-292 -256 -288 0 +300 126 304 0 +-170 -285 107 0 +227 -288 -296 0 +284 -252 0 +286 291 303 0 +-305 296 291 -254 292 267 -295 278 0 +305 -294 -196 267 0 +288 231 -303 -250 0 +-286 272 -300 273 291 0 +285 -207 292 290 249 256 300 0 +245 191 213 0 +-295 175 0 +246 -298 277 0 +-269 -284 -294 -292 275 0 +281 -275 280 0 +-288 -201 290 0 +282 -254 -304 291 0 +149 -283 -305 269 -294 295 103 -304 212 0 +-292 -220 294 304 0 +-237 297 -275 0 +270 147 223 -272 303 237 -295 296 291 0 +-291 -281 -290 0 +-298 252 -297 -305 248 -276 302 -278 153 0 +-295 278 -298 299 303 0 +304 280 -276 -300 289 0 +249 -290 -299 259 -195 -279 -285 -281 0 +-293 -302 254 0 +300 263 269 -277 232 291 -305 -280 -207 288 -278 297 -301 0 +-25 287 290 0 +301 -304 245 107 -296 300 -305 290 -268 0 +-270 -288 281 0 +-288 -300 -213 0 +-303 300 -223 297 283 274 -272 0 +-303 214 305 0 +218 299 297 -276 -189 216 0 +278 -297 -238 294 -302 273 -300 0 +235 -285 298 273 301 -275 0 +-287 -291 -299 -246 -101 268 -263 217 -295 -298 -236 -305 288 -296 0 +280 305 290 215 -146 0 +-296 -256 -272 0 +-236 -295 113 -290 -299 0 +-252 -295 140 0 +211 -288 274 0 +-104 -289 297 0 +239 -282 289 0 +240 214 281 0 +201 216 274 117 280 0 +296 297 303 -298 0 +-293 -303 288 294 0 +250 282 228 -293 154 0 +-232 295 -304 -228 0 +297 250 266 -232 0 +-288 -301 292 -281 0 +-296 297 300 -293 -209 290 182 -285 0 +303 281 -305 0 +-304 299 265 302 222 0 +297 305 247 163 234 -277 0 +-277 -291 -305 297 -270 303 251 -256 0 +-260 295 -287 -299 -172 276 0 +-289 288 0 +-170 36 -296 0 +-4 -297 248 288 296 -304 273 295 266 0 +304 -261 -299 0 +-296 286 -269 305 266 293 -210 282 0 +-303 298 -271 137 0 +299 -17 232 303 246 294 291 192 281 0 +-291 277 278 298 -100 -281 -239 203 26 205 -237 0 +-299 -289 -293 0 +228 301 -302 291 -287 215 -289 0 +310 265 -345 0 +266 -33 -271 -299 -241 0 +-305 321 -341 0 +-359 282 -350 297 286 295 270 -353 0 +282 -227 292 -291 -317 27 0 +-293 284 -311 333 -332 301 330 0 +328 -290 -322 57 304 350 0 +-196 -325 -294 0 +-269 354 349 325 -344 -320 0 +-281 -220 -293 0 +-280 295 -319 -315 343 318 263 -289 207 0 +274 356 -252 317 0 +-297 -318 -351 301 139 -307 0 +-293 -352 337 0 +-355 342 -336 301 0 +-329 198 -306 -343 319 292 256 295 0 +-297 308 348 0 +-339 -275 -330 0 +322 -321 -286 324 0 +-354 332 329 -247 -305 284 -279 0 +339 303 -347 -290 301 0 +292 -324 361 159 0 +-348 -298 -340 292 -300 278 -356 285 0 +-302 309 277 0 +316 -283 -334 0 +300 273 -304 327 0 +292 -266 -299 0 +347 -290 -346 0 +292 300 358 0 +315 -270 306 0 +-216 312 298 0 +-314 -225 -277 305 -283 0 +-358 -313 280 326 -198 0 +-312 290 -299 0 +-349 -270 303 0 +-361 -245 341 -360 -342 -276 290 0 +323 245 313 -272 -178 353 0 +292 298 -331 -328 0 +314 -294 -333 -323 335 307 352 -292 297 357 0 +338 -301 346 -297 238 0 +189 201 311 0 +-271 304 -300 129 0 +-209 278 274 320 -270 -327 -286 0 +359 290 -119 281 -248 0 +288 345 -309 331 0 +-298 299 -326 -357 0 +-338 351 -316 0 +-298 289 -288 360 0 +-223 -310 -290 0 +298 -246 -337 0 +296 355 -304 275 0 +282 -335 344 -242 -308 0 +-304 340 291 -266 285 334 336 0 +-331 333 335 -207 326 -297 352 0 +237 -301 336 238 -239 293 339 -299 233 335 325 321 -355 0 +-307 271 295 -304 -298 318 302 325 -303 -320 -344 297 -299 -292 328 0 +340 323 338 -302 327 0 +-316 -309 338 321 0 +-316 279 289 -293 190 187 274 0 +250 -335 -302 0 +300 -245 354 268 0 +312 305 -344 -330 0 +295 -305 -320 0 +-315 200 293 0 +135 -285 -322 337 208 346 309 0 +301 -303 -237 -350 331 0 +207 -221 -308 348 -286 -361 -326 -334 0 +-331 -329 -319 0 +301 292 -327 271 -354 0 +315 275 -304 -316 322 0 +199 -241 -358 -291 -356 345 336 -128 -309 346 284 301 -274 -197 -271 295 0 +135 277 323 0 +294 -358 326 0 +232 -334 -332 301 0 +351 -352 305 278 -289 0 +340 -355 316 -289 -116 358 -290 0 +330 327 248 0 +-290 241 -334 -323 -299 0 +249 278 201 -269 -304 0 +333 -318 342 329 0 +324 343 311 0 +-302 -318 353 0 +-285 306 323 0 +-293 -349 -244 291 -352 0 +353 349 -284 272 311 -225 -357 313 0 +261 315 -333 0 +298 -313 -345 296 -179 -292 -323 -316 0 +304 -359 0 +307 -321 -346 -302 -313 335 0 +-267 -325 342 -301 -348 0 +218 -275 340 297 -233 328 286 320 0 +-248 -273 291 -326 0 +292 283 -340 0 +292 -245 313 0 +129 -225 107 -291 0 +-344 -329 324 338 0 +-360 326 339 0 +303 297 -324 268 0 +161 -317 -296 190 320 359 -336 0 +353 330 -257 -296 -321 274 -333 0 +-295 305 345 0 +289 -290 293 0 +360 355 -310 -269 258 266 0 +305 298 -318 -352 0 +305 -295 -6 -340 -296 265 -352 301 337 -318 0 +328 292 285 0 +-240 328 304 -278 -317 -319 0 +-325 -311 251 294 343 -273 0 +-254 209 342 354 0 +295 -316 -272 304 -318 0 +-316 -348 190 0 +290 -342 332 311 -309 0 +-334 341 -251 302 -301 273 -293 0 +296 304 -351 0 +-325 -267 198 -328 352 297 342 0 +-299 204 342 0 +-235 301 343 -91 -321 309 -358 0 +299 112 360 295 336 -291 309 0 +319 352 -270 0 +309 -291 -304 289 310 316 0 +276 -333 334 0 +256 310 -337 333 -340 -334 276 338 346 -344 -140 -314 -273 0 +329 354 316 -318 -321 236 266 -260 304 -355 -340 -228 297 -327 0 +-228 305 -271 -302 -319 0 +-272 -306 -281 0 +323 320 -349 299 311 293 306 296 -344 0 +339 -148 -347 188 328 -285 276 0 +-310 -311 295 -355 -327 0 +-335 277 -289 0 +268 -287 -180 -317 -274 -297 359 -138 -327 357 0 +-312 -264 -309 0 +286 -291 305 -347 -311 292 0 +293 -286 -333 306 0 +338 -300 303 -335 -347 290 -291 0 +-286 -131 262 0 +-108 -248 -332 0 +231 -280 -354 -329 0 +295 320 -278 0 +311 327 -314 -299 -347 247 0 +355 -319 -360 -348 -328 -294 -196 0 +-220 -206 341 358 0 +-216 301 355 322 0 +347 -355 333 -203 229 290 328 -271 316 -294 -340 -208 0 +315 321 -358 302 -333 0 +301 345 218 -327 0 +299 279 -352 -348 -317 -333 0 +194 -228 -298 -347 0 +236 -359 309 -296 307 -266 0 +290 -273 298 158 348 -318 0 +-99 -307 -318 289 327 0 +-338 -346 359 299 -305 289 0 +286 299 -355 267 0 +-302 -315 265 -331 0 +306 303 -325 324 -305 -356 -269 333 319 0 +329 -295 -275 169 0 +-308 -198 -194 0 +272 -358 -273 312 0 +-309 314 -336 -269 289 -345 294 300 291 0 +-358 -236 221 234 -340 190 305 0 +218 -302 330 341 352 300 0 +-360 279 -333 0 +298 303 -52 0 +-322 314 337 -297 -352 318 331 0 +293 270 -359 0 +-298 -303 -278 -287 -349 -270 0 +308 -284 -312 -341 -305 0 +302 -312 321 0 +-344 -354 -302 0 +344 247 310 329 289 0 +-320 248 -290 0 +300 -307 272 -302 332 0 +311 295 291 -260 339 -293 -315 0 +319 -352 295 -281 0 +251 -252 304 0 +335 -332 -300 292 0 +-300 -354 332 0 +-359 -127 -323 -297 0 +327 267 -290 0 +289 -292 -227 -300 192 -281 348 322 280 312 0 +327 305 -351 -350 328 326 353 0 +-278 285 -324 314 0 +-308 279 -352 0 +228 331 312 304 333 0 +186 314 305 -322 0 +332 359 -312 347 -321 -296 0 +-302 -319 -360 282 0 +-297 314 295 289 0 +-349 352 -351 0 +309 220 -215 0 +-291 237 260 -292 0 +279 -293 -298 0 +-353 290 -349 -347 0 +-359 311 310 281 309 336 0 +-293 -314 -248 0 +322 -263 -290 -344 258 0 +-287 -326 174 -303 -266 0 +-344 311 272 268 0 +330 310 -303 316 -270 355 314 313 0 +-294 301 -359 0 +-301 296 -321 337 -312 331 320 305 -281 0 +-277 -294 267 0 +-301 -337 216 0 +-163 303 319 0 +-332 291 292 296 274 0 +337 -341 -232 321 0 +314 -322 -274 0 +-292 317 278 0 +-303 292 314 0 +-274 341 -269 0 +-274 329 334 326 341 -297 360 0 +-330 -337 -317 0 +267 339 -351 332 327 -299 300 0 +350 277 -340 357 0 +-290 277 -295 0 +293 284 -337 345 308 0 +-324 -309 -241 -280 0 +-358 303 -353 -208 0 +-325 -192 -275 0 +354 -297 -307 0 +-308 -327 297 0 +-194 -322 311 -290 -315 0 +-275 321 -319 0 +315 -291 -359 -294 -295 0 +-241 -338 -353 293 0 +-359 -291 -300 0 +-113 321 247 0 +359 229 292 333 -335 0 +284 269 -306 297 -293 -300 327 0 +312 302 -309 -310 0 +299 332 358 -349 0 +312 277 -318 -309 268 -332 201 -310 -272 0 +133 147 356 0 +-335 337 -334 0 +-297 -324 -340 0 +252 325 -280 0 +-347 -309 -329 328 236 -266 296 271 -301 -269 307 0 +294 359 316 0 +-324 -298 -236 -291 344 313 0 +-332 335 -320 269 0 +308 296 321 298 0 +-348 298 -358 345 0 +-297 339 329 -171 358 -262 306 -346 278 0 +-300 334 -355 146 0 +187 -334 257 318 346 0 +-269 -307 288 -304 -279 0 +292 -259 303 289 341 -290 311 0 +265 312 337 -313 0 +-229 -323 266 0 +302 335 -196 197 0 +319 -342 303 0 +-294 -320 352 306 0 +293 358 -298 0 +278 -324 294 -313 0 +335 292 278 280 262 -312 0 +-340 297 300 0 +-284 -339 -285 0 +283 -218 -312 -230 0 +-307 165 -297 -194 312 304 314 0 +-245 -337 273 -359 0 +322 289 337 301 293 -341 304 0 +350 303 313 0 +345 -308 -302 -338 0 +-232 347 -326 196 0 +322 278 277 289 303 337 0 +-298 284 342 -346 287 0 +-325 294 301 0 +361 346 359 0 +-331 344 342 347 0 +269 -344 303 291 0 +-292 -327 359 0 +354 -338 330 0 +317 359 297 267 126 -322 -296 0 +324 -352 268 -190 308 329 0 +287 -212 -345 0 +320 -360 -293 299 0 +326 -361 315 -302 328 -352 0 +-304 311 354 306 0 +351 -336 -316 -317 292 0 +297 -202 -318 -216 -295 0 +309 -16 269 314 0 +309 -285 295 -339 0 +347 239 327 -351 0 +-262 -298 266 -328 302 -304 -341 -332 0 +-297 341 307 0 +-207 -354 280 0 +-338 -300 197 0 +-347 -234 -356 297 303 -326 272 0 +-346 333 -345 0 +214 -323 -312 301 0 +323 306 278 -354 330 -270 303 0 +-304 293 369 0 +270 -385 -294 -366 347 -410 0 +-311 -299 -341 0 +187 -382 -200 -409 -392 0 +388 18 -371 -407 0 +420 -375 -284 0 +278 -362 305 0 +382 -254 306 0 +354 389 374 406 0 +309 354 368 -413 0 +293 -364 -391 -289 0 +334 386 387 -303 0 +-352 397 396 401 371 376 0 +383 -386 -281 358 0 +-318 391 365 0 +-284 -414 359 -358 300 0 +223 -365 -315 295 -300 0 +-340 -317 -54 -384 0 +-222 -286 289 0 +404 344 -268 -367 0 +412 -302 -397 -305 395 350 398 0 +291 -363 419 0 +393 -415 -281 0 +-276 318 414 -404 0 +418 -380 -293 -290 381 -357 0 +-291 -408 -388 301 -405 283 258 -298 325 0 +362 291 297 312 -336 0 +-416 -372 -378 0 +-321 375 416 0 +-390 373 -376 -419 367 0 +-403 325 -273 399 -395 394 -383 0 +268 -401 408 0 +-387 -331 366 364 -357 344 0 +352 299 -285 0 +296 -396 355 -400 -398 328 405 402 372 -399 0 +407 -369 403 -389 -370 0 +390 -406 -368 339 -418 -379 -225 242 -394 -283 -420 0 +370 361 392 378 -393 409 -374 0 +327 411 -339 415 -402 379 -381 0 +377 -284 -411 0 +300 359 -412 283 0 +417 413 400 342 363 385 380 -373 384 0 +-377 340 299 -417 -293 -289 410 0 +378 308 318 0 +323 -360 -215 0 +-385 397 365 -415 -295 17 0 +413 -339 368 0 +358 326 371 366 0 +414 358 399 0 +355 405 -292 293 0 +-404 378 375 0 +323 268 -379 0 +-411 -388 -331 402 0 +-224 -292 332 401 -315 -373 309 -200 400 0 +-419 -418 306 300 296 355 -293 0 +206 366 271 419 403 -393 -406 0 +392 297 388 -280 -394 400 374 -325 366 -306 -356 -263 0 +-367 414 -384 -329 -337 0 +225 -273 -374 383 0 +-389 -404 -270 0 +-293 382 369 -275 384 -374 394 -314 370 -321 0 +203 292 -299 0 +-323 -368 396 413 0 +381 -375 -406 0 +407 -292 -311 231 0 +-365 383 345 0 +334 405 -364 -363 0 +-367 -365 373 0 +324 -382 289 -399 0 +-417 372 -344 -419 -298 0 +417 -365 -266 0 +303 -387 356 -411 0 +-416 -354 -407 -357 -334 -420 415 0 +-397 -282 420 346 338 0 +-405 -358 -406 392 283 394 408 -379 311 0 +298 -361 -195 0 +411 -395 -330 412 0 +-315 -372 403 298 -306 0 +-365 -383 353 313 155 408 0 +323 288 -370 0 +305 358 376 0 +327 -321 -375 0 +-352 299 -381 -415 0 +-295 407 341 0 +-328 -413 337 0 +285 -329 373 370 383 355 0 +417 404 348 -309 0 +-338 -300 334 383 -369 0 +-189 -392 -389 0 +-388 -190 367 379 0 +-411 -359 372 -366 0 +313 -332 295 -380 0 +-321 293 -391 0 +312 -363 -362 -399 0 +-346 398 402 -333 -409 -308 0 +-356 -339 -301 0 +405 -361 -278 384 0 +329 380 -369 -132 0 +-400 327 -363 0 +289 -312 290 -400 0 +-290 275 378 -374 0 +367 -388 368 0 +350 -416 343 0 +405 271 267 355 289 -292 0 +-395 328 -332 0 +-299 335 314 409 370 -397 -411 -331 -288 0 +-320 -382 380 0 +-370 -294 304 286 313 -322 320 -375 0 +253 307 393 290 324 -368 -385 -374 293 -328 373 0 +-332 -392 417 407 0 +-365 406 369 0 +299 295 355 -390 273 -188 192 -417 215 330 0 +-193 -327 408 346 -224 -351 402 0 +389 371 418 0 +-287 -387 338 -383 401 -302 296 212 -364 0 +314 375 360 382 371 0 +-352 380 210 266 406 0 +-399 -400 382 388 -410 0 +-352 376 -398 -238 -341 407 -394 0 +293 -384 -377 -411 0 +416 369 -398 -391 378 -383 366 -264 -392 -306 0 +398 300 271 310 -371 0 +413 332 -395 323 -368 366 359 358 0 +-406 -420 373 301 -291 0 +-370 -247 -330 0 +-395 376 -287 -323 315 0 +306 -415 -338 393 -303 370 0 +-354 -300 -399 0 +-371 280 -412 0 +-367 -255 236 410 -330 -336 -380 385 -376 0 +139 409 387 -346 0 +418 -286 367 0 +293 -331 -297 -363 -378 323 413 -249 -277 -268 -269 0 +-369 -417 -363 -374 0 +-182 -317 -262 -302 0 +-411 -347 -383 0 +275 420 -388 -409 0 +-385 -417 275 332 0 +-374 -378 418 370 0 +411 239 399 -364 316 -381 -310 297 0 +374 -250 -393 0 +309 394 -407 0 +376 -366 -362 -392 0 +350 -298 352 308 -321 -306 -325 0 +-214 -405 401 373 333 0 +279 415 386 0 +-370 -306 -407 -400 313 -406 0 +-374 -398 371 0 +269 -404 -282 -393 284 330 0 +321 406 -302 -381 0 +-101 -361 318 -402 -277 -393 0 +392 404 339 -412 0 +377 -413 -278 301 398 418 406 391 -350 -375 400 0 +295 414 239 0 +379 289 388 415 211 0 +404 375 0 +-344 -263 417 367 0 +343 272 371 416 284 412 -373 0 +-323 327 -295 416 0 +298 325 346 314 319 0 +419 220 377 290 393 -320 -409 0 +348 -364 295 412 358 0 +289 -382 288 -369 -398 297 -416 -304 376 -414 -409 335 0 +-390 -343 334 0 +-379 -240 -355 -295 0 +-306 386 363 0 +396 368 393 -410 0 +352 278 -403 408 -354 340 0 +-420 293 369 -374 0 +341 -415 -409 -321 0 +413 -416 -297 342 -372 -244 415 291 268 237 274 -385 240 -283 0 +-384 410 300 0 +367 -202 395 274 336 -298 366 330 -329 -287 0 +-409 384 285 274 -268 311 -352 -359 -394 99 414 203 358 341 -326 -398 290 -353 -400 376 0 +368 -387 -410 0 +351 -377 -301 61 0 +411 -303 -419 -290 0 +328 267 311 414 375 0 +332 323 334 0 +-290 388 326 308 245 399 -358 -396 239 339 0 +-304 -386 -226 -272 0 +-320 324 -395 -348 0 +-345 368 -407 0 +-380 -408 0 +-403 412 -311 -293 -304 -158 350 396 0 +-401 405 376 342 292 0 +-296 289 297 -331 0 +405 418 289 0 +-417 -312 305 0 +-328 267 277 406 363 -413 -392 -419 -359 418 322 -332 -398 0 +-392 -372 -353 0 +419 378 -375 377 324 333 -319 334 0 +-333 203 -378 -303 -354 383 -352 379 0 +-364 -203 396 0 +402 228 -326 -331 0 +-296 -374 384 407 -398 0 +380 -346 353 -377 363 -389 0 +344 420 288 -335 301 0 +-361 -236 280 0 +-274 393 -318 -316 0 +399 416 392 405 387 0 +384 -409 -416 0 +402 -369 -418 -377 315 -381 -405 0 +-371 -266 -386 0 +300 -213 -302 -404 0 +-325 305 392 318 0 +-418 -419 266 -385 -391 0 +-364 306 -387 -335 0 +-326 292 -359 401 0 +291 -301 413 -313 296 0 +-412 361 -342 0 +-313 305 -381 0 +331 419 -111 0 +414 319 380 -389 -374 0 +317 418 -366 0 +-212 414 -401 362 349 294 0 +344 388 -394 -287 -296 0 +298 -327 -259 -290 268 0 +390 -371 -348 -420 -315 -378 370 -368 0 +417 364 -389 0 +-384 340 -389 0 +-237 -414 303 0 +279 -417 272 -343 -413 376 -380 0 +-398 -384 420 413 -367 280 -305 0 +-390 -293 407 -380 -400 -416 391 0 +-377 301 -389 -289 349 -354 -375 383 -398 0 +404 355 -389 0 +-369 383 -324 -337 386 -417 -283 289 0 +379 277 -393 0 +-367 372 324 -393 290 -371 -285 0 +-347 411 -376 0 +-380 341 363 411 305 376 0 +351 -411 -419 415 274 -267 0 +-385 -357 367 323 0 +288 397 -289 273 0 +-294 391 -403 -371 353 -152 0 +314 396 -417 0 +-316 268 396 -406 0 +-292 -327 289 319 0 +-393 400 -371 0 +388 278 -277 0 +-420 292 -401 276 -394 0 +-389 -334 399 379 -279 0 +402 287 328 -390 -418 399 341 412 -370 0 +279 -369 381 309 -374 -354 0 +370 -420 -269 0 +294 343 -353 0 +371 -391 -38 -417 -375 363 0 +398 -304 -288 -409 -416 0 +291 371 297 0 +407 -295 380 356 306 350 0 +-384 302 313 -360 -379 -367 369 0 +-376 418 -343 0 +-394 -376 -294 312 -404 373 0 +-336 -295 -267 0 +-382 325 0 +-420 308 -373 312 0 +379 330 -318 387 -386 0 +-354 -412 319 0 +341 420 -400 0 +327 289 -329 0 +300 -388 406 -321 0 +312 -331 311 280 387 -369 -354 290 0 +-368 323 400 0 +-394 382 -396 0 +305 -367 379 0 +-297 418 197 324 -419 337 -375 0 +-355 -11 379 0 +279 349 291 381 398 0 +306 -416 -387 377 0 +292 -340 381 -279 0 +385 -305 408 0 +343 -330 -369 -309 -395 364 -411 0 +-397 389 -371 401 409 -419 0 +317 273 -299 245 0 +301 383 -420 -392 0 +388 -335 382 0 +-303 -295 -419 -342 -353 416 275 -320 356 336 0 +399 304 -391 353 322 -303 -388 0 +-342 -402 360 388 0 +-369 407 290 299 -302 409 349 0 +-363 392 380 377 0 +393 365 311 0 +-376 412 357 371 -384 0 +381 313 363 0 +418 -321 -343 0 +350 371 359 -212 399 -394 -213 -368 -374 288 0 +-345 -376 -401 420 -393 280 277 -368 0 +395 -413 298 0 +-417 406 418 -363 0 +305 -354 414 0 +330 338 208 -362 384 294 0 +305 385 364 387 0 +-381 -369 -296 -372 0 +252 293 290 -280 150 385 194 0 +416 370 391 0 +332 401 402 -365 -413 -409 -396 -381 -387 -292 390 -384 0 +-395 350 -309 0 +-417 -294 379 0 +-343 377 357 0 +-346 378 404 -120 -405 311 391 0 +352 -419 -384 -372 -407 0 +-274 -280 -369 0 +-388 407 -287 0 +404 -332 -279 -367 297 -420 -415 0 +418 -283 -339 -412 0 +365 -287 403 -313 387 -357 -319 -310 307 0 +397 -366 -363 0 +211 -399 340 0 +271 -291 118 379 0 +-414 374 336 -306 -409 -399 0 +380 -419 -300 -405 386 362 0 +-413 336 228 386 360 271 0 +-368 -305 380 0 +-287 327 -349 -407 -381 369 0 +-323 228 -305 329 -310 400 -392 296 340 0 +-355 -390 299 -375 -387 -341 0 +362 228 -409 0 +373 -299 297 0 +389 340 -378 0 +419 376 319 0 +298 -301 -413 -231 -366 337 -391 0 +-339 -415 288 0 +234 -280 333 -297 377 0 +264 274 -224 394 294 0 +-293 -420 -375 0 +304 -345 287 -412 274 0 +364 -388 304 0 +294 -370 391 0 +397 346 322 0 +399 405 -418 379 -363 0 +-398 404 -271 289 -326 419 331 -318 -376 -396 -270 384 -378 0 +269 -379 -364 395 0 +378 290 -353 -325 -332 386 0 +376 -409 391 0 +-381 276 312 -390 -375 0 +298 301 361 382 315 -270 -400 -410 0 +287 -374 304 -342 0 +-255 -369 -412 0 +371 -306 -298 335 268 0 +338 -298 365 0 +328 202 -366 0 +-377 -194 319 0 +287 373 347 0 +105 -410 -403 385 -302 -343 0 +380 319 362 -324 0 +299 388 -357 275 0 +340 -272 -302 0 +363 -378 -370 413 0 +-379 -409 419 0 +286 301 -348 0 +-416 250 386 350 337 285 -224 329 0 +-369 -290 278 0 +-403 -396 -353 -349 369 387 0 +361 -394 393 -362 0 +349 -330 415 301 -261 -416 325 305 0 +397 205 -232 0 +197 -310 -416 -370 -375 -311 0 +337 -366 326 -382 0 +-293 -413 -379 0 +-324 376 397 -400 -298 392 -394 0 +-160 -399 -340 -376 406 -357 0 +340 -377 412 -175 0 +-372 -287 -378 -362 -299 399 390 332 354 368 -389 280 0 +266 -229 -391 366 -273 404 363 413 305 -275 -376 0 +-373 351 -347 412 0 +309 344 -378 0 +407 -302 -360 376 358 -277 393 -314 0 +405 -399 391 -374 -358 0 +329 293 -321 -353 352 418 -309 331 0 +-216 -399 330 -418 373 -369 0 +330 -324 -377 0 +307 -415 -227 -386 -409 277 -371 0 +402 239 301 368 420 -321 281 0 +372 -408 368 -415 0 +364 222 -342 0 +369 -419 368 -403 -354 0 +388 411 271 356 305 0 +-300 -322 301 -377 398 354 0 +394 272 391 0 +314 292 330 -276 -293 -388 373 264 0 +397 -418 -311 409 0 +-266 390 362 0 +330 -410 -382 0 +-284 316 357 -348 -379 0 +-383 293 -400 297 -353 0 +390 -418 192 -230 410 -407 -362 0 +267 388 -298 -390 0 +386 -410 381 -329 -228 302 401 385 -420 414 -388 -373 -395 392 -379 0 +-353 -296 -389 326 -403 -354 0 +348 225 -293 -385 0 +-386 -396 326 0 +316 -410 -299 190 -288 -247 0 +351 -396 -341 414 -301 0 +316 -345 -271 0 +-292 336 283 0 +402 -395 -295 296 0 +377 307 -361 0 +-416 -290 -353 396 331 -407 351 297 -337 -405 0 +292 395 331 351 398 301 0 +-399 292 -420 365 356 0 +370 -416 306 0 +317 -362 -310 0 +-366 -311 -297 -416 0 +383 -384 -371 0 +411 401 385 280 0 +360 325 -366 -281 350 418 378 -377 0 +289 299 342 -359 395 240 270 275 -398 -340 0 +-408 210 371 289 -283 -364 322 -400 0 +-351 241 -269 416 0 +400 -384 -377 364 -411 0 +313 -300 369 394 -402 0 +381 394 -358 -289 -369 -227 304 0 +409 -346 364 -396 0 +-197 364 -392 -288 -262 0 +304 380 -313 323 0 +397 -37 -194 262 370 340 0 +-299 397 -394 0 +333 380 408 0 +402 399 -398 -146 -407 0 +406 -409 301 371 419 389 0 +349 -326 350 323 0 +-404 -412 -198 -402 -326 375 -379 0 +-298 -395 325 -378 -334 0 +-255 -391 413 386 0 +287 391 315 405 -299 0 +323 360 370 0 +-390 -295 115 -366 0 +414 373 -352 0 +354 320 420 -414 405 373 413 0 +419 327 -384 0 +412 -368 -373 376 -394 407 0 +-298 317 -367 -305 0 +343 -400 -357 -315 0 +-372 -288 420 0 +290 -369 -370 406 284 375 -395 0 +-417 -353 -261 291 0 +-306 -288 393 0 +353 356 -375 382 0 +331 382 -417 0 +-388 406 -372 304 -339 0 +405 -301 388 -319 325 365 341 408 0 +-378 406 -393 -269 0 +-289 419 -380 0 +-374 360 -263 -386 288 410 -407 0 +257 405 -343 290 -303 0 +-289 383 -396 417 0 +339 304 284 -289 -365 0 +346 -374 379 211 364 -394 -338 0 +291 274 -406 0 +-359 -397 327 -389 -368 -350 380 -257 339 0 +418 -313 -378 -236 0 +365 277 -352 -275 -366 416 414 376 0 +-406 315 364 367 323 0 +-348 372 415 324 -406 0 +-298 -369 257 306 377 0 +394 416 -306 0 +-334 374 -399 317 342 300 0 +-368 343 -369 0 +-371 316 -344 0 +338 -254 355 331 353 0 +412 301 -418 0 +353 380 -290 0 +288 410 378 -370 0 +-396 313 262 0 +378 415 350 -315 -329 0 +384 -396 311 -369 0 +400 -314 316 359 0 +367 373 306 401 0 +-303 -419 192 0 +295 385 354 -298 288 362 -382 -388 0 +331 117 -387 305 -300 379 347 0 +322 363 409 254 407 0 +-376 366 -419 0 +-288 -343 -381 379 339 357 336 297 417 0 +-382 -309 -345 0 +395 390 365 334 -342 -267 0 +392 -369 -402 102 0 +377 411 336 -356 0 +-368 -409 -392 0 +-344 306 -420 -388 -284 334 0 +-419 -259 343 0 +-388 344 -297 -366 0 +-409 405 -302 315 420 -411 -312 390 0 +406 -376 -365 383 -266 -272 -403 0 +393 352 -251 -395 -326 -397 -420 -377 266 388 0 +368 -314 -272 0 +385 -302 365 0 +396 -203 -329 -414 0 +-285 -362 186 399 -295 349 0 +390 -383 305 0 +-363 319 -414 -397 -230 -417 222 -383 -122 400 -407 389 347 -386 -333 0 +-398 -378 322 128 0 +304 -384 418 0 +-388 -290 -298 371 0 +417 -389 320 -281 0 +-346 399 -406 0 +303 384 -379 0 +-311 387 309 0 +-380 351 -376 416 -283 401 402 382 -407 0 +320 -370 318 414 0 +347 -391 419 0 +-357 -351 -291 80 336 0 +-420 401 -411 0 +409 -404 337 244 -301 -392 0 +-388 316 301 -415 420 -346 0 +-377 -413 -376 285 0 +376 -388 -335 -409 0 From 9f9c215384362c384e57390fdf424cd11e6eb999 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Mon, 13 Apr 2020 21:38:22 +0200 Subject: [PATCH 33/34] bug: add failing analysis --- cnfs/timeout-1323809196.cnf | 4308 +++++++++++++++++++++++++++++++++++ 1 file changed, 4308 insertions(+) create mode 100644 cnfs/timeout-1323809196.cnf diff --git a/cnfs/timeout-1323809196.cnf b/cnfs/timeout-1323809196.cnf new file mode 100644 index 0000000..ff3796a --- /dev/null +++ b/cnfs/timeout-1323809196.cnf @@ -0,0 +1,4308 @@ +c seed 1323809196 +c width 52 +c scramble 1 +c layers 16 +c equalities 17 +c ands 0 +c layer[0] = [1..51] w=51 v=51 c=184 r=3.61 q=0 +c layer[1] = [52..93] w=42 v=93 c=336 r=3.61 q=0 +c layer[2] = [94..126] w=33 v=75 c=329 r=4.39 q=0 +c layer[3] = [127..164] w=38 v=71 c=231 r=3.25 q=0 +c layer[4] = [165..181] w=17 v=55 c=235 r=4.27 q=0 +c layer[5] = [182..199] w=18 v=35 c=124 r=3.54 q=0 +c layer[6] = [200..242] w=43 v=61 c=261 r=4.28 q=0 +c layer[7] = [243..261] w=19 v=62 c=223 r=3.60 q=0 +c layer[8] = [262..305] w=44 v=63 c=211 r=3.35 q=0 +c layer[9] = [306..349] w=44 v=88 c=392 r=4.45 q=0 +c layer[10] = [350..387] w=38 v=82 c=287 r=3.50 q=0 +c layer[11] = [388..416] w=29 v=67 c=225 r=3.36 q=0 +c layer[12] = [417..461] w=45 v=74 c=331 r=4.47 q=0 +c layer[13] = [462..496] w=35 v=80 c=316 r=3.95 q=0 +c layer[14] = [497..536] w=40 v=75 c=256 r=3.41 q=0 +c layer[15] = [537..581] w=45 v=85 c=310 r=3.65 q=0 +p cnf 581 4285 +-46 26 -17 -36 0 +45 19 9 -25 34 6 0 +42 -21 40 24 -5 39 0 +7 -14 51 -31 28 2 0 +15 -34 38 -22 -37 -26 -24 0 +-15 30 25 -18 17 0 +-33 14 -48 -49 -1 20 10 0 +-6 23 47 0 +22 -44 -12 0 +-10 8 -38 -9 0 +-50 46 33 0 +-41 -45 3 -28 4 27 5 37 0 +41 -20 -42 -35 0 +-51 11 36 0 +-7 -13 -27 0 +43 -40 -11 -47 1 0 +-2 -4 32 35 31 0 +-29 -8 -39 0 +-23 18 29 0 +-16 50 -30 0 +-19 48 21 12 49 -43 16 13 -3 44 -32 -15 2 18 -23 37 0 +16 -42 -29 43 37 0 +-35 6 30 0 +-7 39 -43 0 +-28 42 -11 0 +24 -29 47 -27 44 -34 30 15 11 -21 0 +30 -51 -26 0 +-3 40 -43 -24 0 +31 -28 9 29 -24 0 +-1 -4 -7 29 0 +4 -49 -7 -50 -29 18 9 -38 0 +-19 4 -32 16 11 -35 51 -50 0 +21 10 14 0 +5 -3 30 -22 -10 0 +43 27 -20 44 19 -45 0 +-45 35 -40 -16 0 +37 38 30 -27 -19 3 0 +-46 24 -16 0 +7 -11 -37 48 0 +-36 6 -47 0 +22 -18 -14 0 +-44 50 -14 49 -5 0 +36 28 22 15 0 +14 26 -29 0 +20 -15 38 45 0 +-3 41 -15 0 +18 -47 -49 19 0 +-49 46 -34 0 +-19 28 -35 15 0 +16 22 -28 -38 25 0 +-21 6 38 51 0 +-14 -35 1 -11 28 40 -45 -34 -19 0 +-41 -35 -24 19 42 0 +-36 -37 -44 -43 19 -24 13 0 +3 5 -47 9 0 +42 26 44 37 -11 -47 0 +40 32 -35 1 0 +43 -27 48 -13 42 -7 0 +2 -42 -11 -40 -12 -32 18 10 0 +31 38 25 0 +25 -48 37 0 +-46 -8 6 -30 50 0 +47 -28 34 0 +34 22 -8 0 +9 51 45 0 +19 17 28 34 2 43 35 44 14 40 0 +-8 -18 45 30 0 +48 -6 45 0 +4 5 -34 0 +-51 -23 13 32 50 0 +19 -39 32 0 +14 -50 -1 31 0 +24 -5 0 +34 -21 46 -11 0 +28 -8 12 9 31 -22 -14 0 +-18 23 -38 0 +29 -4 -17 -46 -28 0 +2 -30 -40 33 0 +39 15 17 0 +7 11 51 42 0 +43 12 -5 6 -23 40 -19 46 0 +31 -35 -13 0 +38 3 -5 -44 0 +-7 -1 -24 -26 0 +48 6 -49 -28 -38 15 0 +-33 -8 -40 -6 0 +25 -16 17 -34 -29 0 +-46 -17 29 -41 -19 -11 39 14 -37 -38 0 +-20 6 -5 -31 16 0 +-7 3 -34 37 27 2 -10 20 41 0 +-30 -20 37 2 0 +49 -43 4 -39 30 0 +-51 -6 -33 0 +4 29 46 -44 -19 0 +16 -22 -28 -30 -8 36 21 -6 0 +-25 11 -24 32 0 +5 -3 -16 -32 0 +36 25 -7 0 +23 -38 -24 0 +-1 -11 -20 4 0 +44 3 1 -33 0 +15 20 -7 -36 -24 -49 0 +31 1 12 -35 -37 -11 50 -33 16 0 +-3 -9 10 31 51 46 0 +-5 -24 3 -25 -23 8 42 0 +45 -21 10 0 +36 34 -37 -16 0 +-45 48 -30 0 +42 3 -6 0 +1 -44 -38 0 +-44 -5 35 0 +-36 -27 -3 20 -28 33 0 +8 9 37 42 0 +30 39 -13 -27 0 +-10 45 29 -20 42 0 +-25 39 -43 30 46 -4 0 +-11 -19 14 18 -27 40 0 +-32 1 50 19 28 43 -4 20 0 +-43 30 -27 -36 0 +-3 -18 -41 0 +-32 33 -16 4 0 +10 -46 20 17 0 +-47 40 -2 9 0 +34 -12 24 33 32 -27 44 9 -8 4 0 +-29 -43 13 22 -2 0 +-25 -40 0 +-20 1 33 23 10 0 +18 49 37 0 +-38 32 17 0 +29 11 -4 39 46 0 +42 39 36 37 0 +-42 35 -30 12 -14 -36 47 0 +28 45 -39 0 +-23 10 -43 0 +-32 6 -2 -9 20 21 -27 -44 -4 -34 -50 0 +-21 19 17 47 13 50 0 +19 36 -30 0 +-46 -11 29 -27 0 +42 -43 -1 33 -23 26 0 +-4 -19 18 0 +-51 -30 18 -3 0 +-35 36 -50 11 38 12 -25 -9 8 0 +49 -35 -33 0 +-17 -20 29 0 +-13 -33 43 0 +-51 -16 -49 -14 48 40 -6 -39 -10 0 +-7 46 -41 -2 51 9 0 +43 25 16 38 50 0 +-20 17 -34 -37 33 38 -28 -15 -36 -13 0 +26 -3 28 -45 46 -41 0 +-34 17 1 -45 4 0 +-35 -29 20 -37 21 0 +8 -15 -35 -37 0 +-21 -10 -50 0 +17 19 11 -8 47 5 34 0 +-46 12 36 22 0 +33 -40 -14 7 -10 28 0 +-49 -37 -1 5 -2 33 0 +-36 -30 -22 -31 -43 29 1 0 +47 -44 25 -2 -32 17 0 +45 9 11 -32 12 -41 -47 0 +-43 -27 -7 31 10 3 -16 0 +-34 -26 -10 37 -48 -17 -8 -44 0 +14 46 -23 0 +6 -51 20 0 +30 38 49 -51 27 2 0 +18 -4 6 -25 0 +37 27 48 -40 13 0 +-17 -4 45 -34 0 +-34 41 -28 0 +16 43 -24 -17 0 +-40 -2 -12 -20 0 +-8 15 22 0 +9 -22 -40 0 +13 -9 0 +-27 33 16 0 +10 -37 33 14 -29 -38 48 0 +-51 16 19 0 +1 26 -19 0 +37 -7 19 9 0 +-29 42 36 47 12 0 +-46 -41 8 -51 22 0 +-23 17 13 22 0 +31 22 -48 0 +-33 -71 -58 69 -72 77 67 36 -40 -76 29 0 +73 -92 -87 -91 0 +-19 -70 14 0 +-13 22 -65 -89 0 +-52 29 -80 0 +-62 -79 -48 71 0 +-59 -30 -77 29 -21 56 0 +74 48 52 0 +-15 -26 -53 75 0 +54 83 -88 -69 -74 0 +58 89 -93 0 +-57 -17 8 10 -63 0 +61 37 -67 0 +35 -55 22 40 0 +16 -60 -10 21 0 +-24 -7 88 0 +-23 19 3 0 +-37 -15 27 -50 92 -48 0 +55 -41 10 30 -86 0 +57 -47 -61 -32 65 0 +14 28 37 41 0 +85 -6 68 0 +-3 33 7 45 0 +27 36 3 30 87 -78 0 +60 9 -82 4 -10 29 0 +51 -54 40 -49 13 47 50 0 +37 -81 90 62 72 66 78 80 -83 0 +-11 -43 76 0 +-85 -29 -73 9 82 -66 64 22 0 +24 -90 41 0 +5 13 81 1 3 6 59 63 70 0 +53 -68 93 0 +-84 15 79 -56 86 -20 0 +33 -27 -44 23 41 -64 0 +-3 91 42 0 +-44 -75 84 0 +37 -33 -47 61 -73 0 +14 -73 -22 -55 0 +93 -80 41 -86 0 +-92 52 -36 21 65 0 +4 -44 11 0 +-13 60 -66 -62 0 +60 49 -42 -1 71 -22 44 0 +-63 71 -11 -39 0 +48 35 -12 0 +37 -52 -43 -62 -55 2 0 +-52 -38 -48 79 0 +30 16 -54 -83 -49 81 0 +77 -26 -65 0 +15 1 51 -8 0 +55 -89 -7 58 -64 0 +-46 -8 14 54 36 0 +-89 1 -13 -9 0 +85 -84 -2 0 +31 -44 -90 0 +60 -69 5 59 -44 0 +5 69 -87 68 0 +53 6 -75 -63 -24 30 -70 72 -25 -81 0 +-56 -63 47 0 +71 78 -31 0 +51 -17 56 0 +44 65 -57 -15 -56 -72 0 +-63 41 -34 0 +85 7 -58 54 -12 0 +52 58 -66 37 -42 0 +67 12 72 55 43 -59 0 +-92 45 12 0 +-23 89 -53 0 +16 18 -55 7 24 -19 0 +28 -68 -56 47 12 0 +50 30 3 0 +-72 9 33 32 0 +-93 -76 -39 -38 9 0 +-41 -14 39 -84 55 0 +-52 82 80 0 +84 73 92 0 +53 74 -48 0 +61 -76 -24 -86 9 0 +-1 -25 -48 -41 44 0 +28 -65 9 8 91 0 +11 69 78 -18 0 +-67 -86 41 0 +-85 -4 -14 0 +-83 37 -68 45 0 +-64 16 75 -32 -43 0 +85 -23 -12 -75 -83 63 18 -35 28 73 -60 -92 -76 0 +-49 64 66 -84 -14 0 +-24 66 34 0 +9 61 0 +-63 -28 -56 -18 -13 -81 -6 0 +-88 87 31 13 -59 0 +-8 86 -92 77 -71 -38 -85 66 0 +86 -19 73 0 +-16 87 -50 -86 17 0 +31 -58 61 27 -84 -93 -74 -2 0 +89 -82 71 0 +43 92 -31 0 +49 -24 40 8 70 55 0 +88 -58 46 0 +-71 10 -16 -23 -87 0 +-78 18 -39 0 +-65 44 81 0 +60 -15 -52 0 +1 -14 -67 8 -53 -52 -6 0 +73 -15 49 0 +-2 26 -71 -62 63 84 68 45 60 0 +-28 3 0 +-7 -62 -73 0 +-5 -29 48 0 +92 10 -23 -17 0 +30 84 -87 -1 -51 0 +3 37 -9 0 +32 86 13 39 0 +-62 -69 -44 -36 -47 -1 0 +-35 12 -40 -82 0 +-35 92 26 0 +-77 -88 -4 79 0 +-74 60 80 0 +89 -13 4 0 +77 -40 -61 -90 0 +30 40 91 70 -29 0 +83 -33 16 -54 90 0 +11 45 57 0 +-57 63 29 0 +-78 -74 -61 0 +69 -55 -26 38 92 0 +-53 -90 84 -73 0 +56 -81 -68 0 +-81 83 -62 66 0 +56 -21 -71 0 +27 -91 -28 0 +-13 -15 6 -31 58 -8 0 +43 61 -15 0 +-14 -9 -84 0 +-77 -35 -24 -73 52 -66 5 92 0 +81 -93 -26 0 +90 6 69 0 +-87 -86 -3 9 0 +57 -59 -51 0 +-86 -48 90 0 +-53 -3 -67 0 +-13 -62 6 -74 0 +80 -19 79 26 75 52 -34 -41 0 +32 69 36 -80 -92 0 +-9 -46 59 -93 71 37 45 -85 0 +-73 64 -12 0 +-37 -91 6 -46 0 +-79 22 -2 -71 0 +-14 -28 47 0 +-35 4 -73 0 +67 -85 35 0 +88 89 -66 17 7 69 -92 63 0 +-12 57 -56 0 +42 -25 -77 -56 57 88 -69 0 +-47 87 -69 53 -43 0 +21 62 -15 0 +-71 46 82 -12 39 -15 0 +-88 46 68 -48 -51 -36 78 14 82 0 +50 -68 63 0 +-46 -83 69 57 -38 -36 -43 -53 68 0 +-90 32 -7 -34 13 65 -36 -53 0 +-90 35 -68 0 +23 -71 12 -56 0 +57 -26 -24 0 +-12 -16 -26 0 +7 -6 63 25 76 64 0 +13 78 47 74 0 +-24 -74 92 88 80 0 +-72 -53 -60 42 85 -8 -76 0 +54 -23 64 47 0 +-77 -63 -50 0 +14 2 92 21 52 0 +-19 59 -75 92 9 35 0 +46 32 -67 -52 0 +-38 -77 -75 -89 0 +51 3 -76 0 +-90 13 -74 0 +-45 -78 -21 -72 66 91 0 +81 77 -62 0 +22 -14 -81 -42 -32 -58 -51 -40 -72 -10 24 -45 -36 0 +62 -69 27 -86 -58 -48 -41 25 63 0 +17 -83 -71 -47 20 -16 0 +40 -76 -56 86 -69 43 13 0 +-22 1 29 -44 0 +-12 -6 62 82 60 34 -17 79 0 +55 34 52 -53 0 +92 78 -9 79 -57 81 76 -39 0 +72 -69 81 -86 0 +-68 77 -47 0 +28 87 -7 88 -50 -16 -81 -6 0 +-8 69 85 0 +-82 23 31 87 0 +-16 -29 75 -88 58 -34 0 +-54 45 72 56 -1 -69 49 80 60 70 24 -64 73 -23 0 +31 16 58 -43 93 9 57 0 +-28 -85 22 0 +5 22 93 -16 0 +58 -28 -30 73 0 +-35 -82 74 13 0 +61 54 -71 -39 -29 -79 46 -42 0 +26 -29 66 -64 -82 0 +59 64 -80 -30 -48 0 +10 -25 83 -61 -27 81 0 +-65 -1 -55 0 +67 -62 -83 86 -42 29 -2 0 +-77 -73 35 -55 84 14 0 +-17 -53 -63 -27 66 23 0 +-41 52 50 -53 -19 6 54 60 0 +13 -84 46 44 65 -89 0 +-52 -56 -88 58 0 +25 -48 45 0 +81 -64 -56 69 75 28 -49 -42 -50 0 +91 15 -43 -90 -56 -60 -55 0 +46 90 -87 0 +77 91 80 4 0 +-20 -75 -11 39 0 +39 -58 -37 30 -44 62 52 56 84 -68 -78 0 +25 47 14 86 0 +-22 -15 5 0 +92 -29 -39 0 +-52 50 -43 0 +87 37 -73 -79 0 +17 -39 -37 2 0 +58 66 16 0 +17 -79 -10 0 +83 -64 17 57 0 +-23 -40 7 -41 -65 71 74 0 +-10 -49 -48 0 +-33 81 70 -59 0 +5 -89 11 0 +-34 30 -68 0 +64 12 23 0 +-23 -71 -22 -63 54 3 -14 -91 -78 0 +-84 -47 -52 15 72 0 +85 -90 89 -57 -15 75 0 +41 -47 50 -72 -73 0 +55 42 -59 19 37 0 +-82 -65 84 2 -19 0 +60 4 -19 -70 12 0 +84 -55 5 -29 -44 -26 11 88 0 +51 -49 84 -79 -93 -10 74 26 45 58 0 +13 -62 8 0 +-6 -70 -61 0 +-63 60 -19 -32 0 +-47 89 12 0 +3 28 -50 66 67 54 6 92 -65 -31 0 +-35 19 90 38 36 0 +-59 -87 -17 -64 -54 -84 0 +82 21 -26 59 0 +-89 50 20 -61 0 +64 76 40 -83 -31 0 +43 83 80 9 -18 -7 -89 24 -36 0 +-41 -89 -51 67 -80 -75 21 57 -2 62 0 +72 -56 -69 -14 79 9 0 +-5 -83 57 -21 74 -69 -68 -16 -63 30 0 +-25 56 -15 57 -73 0 +78 -20 -90 81 0 +-14 -84 -34 0 +-15 -79 34 0 +27 -86 79 0 +-2 9 -65 93 39 24 -63 0 +36 -31 38 0 +83 76 -51 0 +-67 -83 66 0 +-82 -58 55 0 +28 -15 81 -52 -29 0 +81 8 -6 -49 -55 0 +-29 87 -89 -18 25 -4 26 -44 40 0 +38 -15 -90 0 +75 -5 -26 0 +51 -15 -2 -85 36 -69 81 11 0 +66 68 -67 27 32 -72 -24 0 +55 24 3 0 +59 27 72 33 -37 0 +70 -62 -11 0 +76 41 91 0 +57 -85 -79 0 +76 -79 75 -31 -56 -22 92 -91 0 +-1 9 -69 -53 49 0 +-88 -92 -63 0 +27 24 50 -49 64 -11 16 0 +-86 1 -66 0 +-83 3 4 0 +61 77 88 0 +6 36 -65 -41 15 16 0 +56 57 -13 18 28 78 0 +40 67 85 0 +32 44 35 11 56 87 -82 0 +49 -29 -91 -57 -14 82 10 0 +-87 -43 -81 0 +-60 27 -72 -1 0 +32 -49 -59 -2 65 0 +-7 91 -40 0 +-45 -83 0 +37 -38 -63 40 -62 0 +77 -76 29 75 80 -39 -69 -85 0 +47 86 -69 0 +6 53 62 -24 0 +-66 3 -23 -20 0 +-66 74 -64 -82 -50 0 +-69 53 -62 0 +-87 -86 38 -14 -63 -68 0 +-77 -74 23 -9 0 +-59 79 33 -62 53 -48 -83 0 +-89 -84 16 -60 -3 0 +83 90 -85 0 +40 -88 61 0 +-28 73 55 0 +-84 -61 23 0 +90 -74 20 0 +-49 -11 -87 78 0 +-84 -90 -33 64 0 +40 14 59 0 +-45 -14 68 0 +-62 -25 3 0 +9 -23 -76 75 0 +-10 40 -46 -75 -73 0 +93 40 -77 92 16 0 +39 -69 15 0 +64 -43 32 -83 0 +-75 -31 72 69 -34 17 83 0 +-63 38 75 44 0 +-80 -92 -72 -65 89 -58 0 +-15 -78 -53 46 -54 61 81 85 57 19 -21 0 +70 -54 -75 0 +-36 -61 16 79 0 +-46 -52 -70 49 0 +52 -71 78 -10 -83 0 +-92 8 30 83 3 -14 0 +-27 78 -16 0 +51 32 10 93 47 0 +-54 -34 -43 -23 51 22 19 0 +-28 -12 -87 -26 -57 0 +-84 -70 -55 0 +-57 21 -12 -70 75 0 +86 59 -3 90 0 +-68 122 112 -8 118 126 -119 -65 0 +97 -62 101 -114 0 +54 -102 -63 -113 0 +103 94 -25 0 +79 113 -121 108 119 -5 102 0 +31 4 104 0 +-124 -6 -109 -108 0 +80 60 -82 115 98 -69 -88 -94 -112 0 +73 39 -118 -28 -125 84 0 +-57 109 -10 0 +-95 -115 -22 0 +-91 72 -104 52 0 +18 -97 -63 0 +69 -68 -106 111 48 7 0 +62 100 -99 70 0 +110 39 26 0 +-122 91 99 44 -123 24 70 74 0 +71 -100 -105 -101 0 +125 107 -126 92 0 +-107 -103 96 0 +41 59 93 0 +14 -84 105 0 +116 -111 37 75 0 +-22 16 -53 123 91 -58 0 +79 29 -26 0 +-116 117 -96 0 +95 -117 -110 45 -9 121 -38 120 -63 -68 0 +54 -81 -98 -120 106 124 114 -44 117 59 0 +-125 -21 -23 0 +67 101 -122 54 0 +104 10 -103 0 +-86 -97 -60 0 +61 119 24 -109 0 +78 -101 -81 -126 0 +-98 -125 112 0 +-117 -84 -51 0 +-29 -95 36 0 +-120 -103 110 0 +-123 98 112 -108 0 +114 -63 124 -67 112 -68 1 -126 -107 0 +91 110 -67 0 +-107 33 35 0 +-21 -11 102 119 0 +-59 104 116 -43 107 0 +-104 -18 53 -101 0 +-11 -99 -97 0 +-124 -102 -36 -38 0 +-74 -63 -119 80 124 -32 120 -21 -106 84 -59 -103 -126 -73 -111 -105 0 +33 101 123 -69 0 +-11 39 -107 0 +-61 -103 -22 -50 0 +-34 -111 -93 0 +-31 114 -121 0 +-102 107 -83 -43 0 +115 107 -111 0 +12 -4 89 0 +117 58 -56 -37 0 +-56 102 115 0 +98 27 -33 -120 -29 -19 0 +27 79 92 0 +-123 -115 41 -38 70 52 95 -103 97 124 20 -19 90 0 +-115 55 -29 -95 64 0 +104 -97 -45 19 0 +-112 56 -26 -124 -95 -100 0 +109 125 114 -30 63 80 0 +124 -22 -103 99 -38 0 +-32 82 -108 -15 0 +-46 18 -7 100 52 26 95 76 23 0 +107 95 89 118 0 +109 104 98 -37 -87 21 0 +86 108 -112 -31 100 -83 32 21 80 -102 121 15 -110 -5 0 +92 99 104 -75 0 +-16 -100 57 0 +99 56 0 +118 -112 -28 95 93 57 -41 106 -60 99 -49 0 +124 -61 -111 55 15 0 +-22 -114 -84 0 +-67 96 -3 -116 26 0 +-78 115 117 0 +-108 37 26 0 +-34 26 98 53 117 -54 0 +-118 -107 113 -120 37 56 0 +-96 86 -87 0 +-6 -86 99 -125 98 0 +118 99 -80 -114 0 +-51 -76 124 0 +106 -12 -27 -66 -46 0 +91 45 0 +14 36 -121 0 +11 -60 122 117 -56 27 -95 109 -100 -97 -41 -36 84 0 +-112 115 -51 -93 -88 -108 -21 -79 0 +74 114 38 107 0 +-109 100 -11 -112 9 0 +47 -90 -105 -111 -104 0 +116 25 112 0 +66 -27 114 -67 -33 -91 -125 -58 0 +1 -102 -11 0 +-6 117 -28 -3 -46 115 0 +-92 69 -120 -51 0 +112 -41 -83 109 92 7 -106 42 -51 0 +-111 115 81 -83 87 -31 97 -76 52 0 +-45 -34 -95 0 +39 113 -75 -55 -67 106 -31 0 +-19 -100 -53 117 0 +90 -58 -2 0 +-18 125 126 -102 0 +65 23 -111 0 +102 98 -28 99 0 +16 104 -87 0 +-109 19 102 0 +102 -37 89 0 +114 119 -20 -73 -66 0 +124 -96 5 -110 -75 105 -119 117 0 +-51 124 0 +103 -117 106 31 0 +43 106 1 -64 104 99 105 -77 113 0 +-77 -99 -113 54 80 -38 0 +96 108 -65 -98 -105 -62 0 +108 -54 -8 87 -3 114 -69 -78 -43 0 +111 46 -105 41 -79 57 0 +67 -86 -75 -76 0 +66 -59 121 0 +-118 95 119 11 -98 0 +125 -9 -122 -68 35 86 -48 0 +-70 -74 54 53 0 +-109 42 92 0 +113 110 41 0 +-97 -115 107 -34 0 +-52 -47 83 0 +-108 96 -103 111 0 +43 -55 -112 114 0 +22 126 23 -56 0 +95 75 -57 14 125 99 -121 0 +122 -101 44 106 0 +116 -125 58 -118 -95 0 +-81 -45 -17 50 -110 90 65 -9 84 114 -66 0 +103 -95 91 -97 -12 -104 7 -54 -73 0 +-81 126 -20 -45 -59 101 116 0 +-100 -120 -27 -78 108 -91 0 +-15 -90 -51 0 +-26 -101 -119 28 -32 -76 106 0 +98 -121 102 -84 -123 0 +16 121 98 -85 0 +111 47 -100 0 +36 118 107 -124 0 +-11 -101 -103 0 +-103 11 106 0 +-21 -43 103 -24 -105 -110 31 0 +30 95 -97 -93 122 -118 0 +117 -64 -105 74 0 +-52 -72 54 -116 -109 0 +-61 107 119 0 +-98 -38 122 94 0 +-64 116 49 0 +126 -109 53 103 0 +-98 -40 115 0 +111 82 -107 114 -116 0 +107 105 46 0 +82 73 17 121 -104 91 102 63 0 +-6 43 -31 0 +105 -84 95 0 +76 60 -96 0 +-7 113 17 -94 0 +100 104 -95 26 -78 53 48 75 -92 125 114 116 122 0 +107 -122 95 -117 0 +-15 -121 86 122 0 +123 120 -105 0 +32 60 -85 94 117 7 -90 114 -119 108 -109 66 -111 -115 0 +-100 118 -31 126 -47 67 0 +67 -120 0 +71 102 -32 -35 0 +73 110 55 -62 105 -125 0 +-32 48 94 -23 -110 0 +107 104 21 116 118 75 -121 0 +94 96 56 1 -17 0 +-18 13 -94 0 +122 57 -67 109 22 0 +111 -24 110 57 0 +65 119 -5 0 +93 126 -110 0 +-102 -75 76 72 0 +-59 -110 -8 0 +-11 73 -33 0 +-76 -69 -18 0 +72 110 -18 0 +51 -120 96 0 +-118 -72 109 -119 0 +64 124 -75 0 +-53 -13 -56 -106 -88 0 +-103 -82 -98 61 -4 -120 101 0 +-111 -47 117 0 +76 83 41 99 -2 62 -122 23 3 -14 0 +-98 -95 3 0 +-73 82 107 116 0 +120 -50 11 0 +-118 -97 -1 0 +-35 32 96 110 118 0 +-125 -87 -74 126 -110 0 +111 100 -1 -110 11 -59 0 +-84 -118 -22 0 +99 -101 53 0 +49 56 -90 -67 0 +-126 67 -111 119 -30 -77 -27 113 -112 0 +-120 23 -19 54 -61 -90 -81 93 0 +63 118 96 -77 86 29 0 +69 -95 94 0 +124 -123 112 0 +112 116 56 0 +-121 63 -84 0 +-10 119 -105 0 +38 57 -84 -22 0 +119 67 -31 0 +-36 -69 -111 -10 0 +-85 -43 -19 -103 0 +-78 -8 -92 -61 0 +-98 117 -114 96 0 +-120 -10 73 0 +119 -71 34 -124 0 +94 29 74 0 +-3 17 -100 34 74 -120 -126 28 58 0 +11 -100 84 0 +-22 -115 -125 -113 -103 0 +-3 -98 -112 69 68 0 +-119 -88 97 0 +-114 -26 -107 0 +36 22 -60 0 +-100 -59 -18 0 +-54 -112 -89 -122 0 +-65 -22 24 0 +-19 123 116 21 0 +14 10 33 122 -55 97 0 +110 26 -112 -98 104 125 0 +61 126 -9 125 -27 -97 60 124 -106 95 107 0 +-102 -44 -112 -80 19 -104 0 +-117 91 120 -46 118 -96 0 +-19 -75 91 39 44 -125 109 0 +126 -108 102 118 -123 -27 0 +34 -111 60 0 +-110 -70 -125 -113 101 0 +74 38 104 0 +-27 22 113 -96 28 -93 58 55 111 0 +28 -67 -92 0 +-119 -7 27 0 +57 100 -117 49 0 +-80 115 -113 0 +-63 74 -53 -126 -118 117 0 +-98 -100 112 0 +109 -123 124 -110 18 115 0 +-105 97 -121 -102 -15 -66 0 +23 -70 -71 -99 0 +108 9 -106 125 0 +104 40 95 0 +-93 57 98 -77 107 0 +-75 -111 -77 -10 -17 96 -122 -89 -38 0 +-49 -96 -107 -102 61 42 0 +-23 -63 103 -64 0 +-116 -41 93 96 -30 -108 32 -113 115 -75 82 -56 120 -107 98 0 +-98 105 -125 -101 -70 58 -17 0 +107 -91 116 101 0 +-4 125 110 0 +-109 17 -94 97 66 -110 -25 0 +-31 13 -98 63 51 49 79 0 +-27 55 98 -41 0 +99 116 126 15 0 +-2 -31 -110 20 112 0 +101 -106 52 107 0 +-16 120 0 +119 -126 -10 0 +22 -123 79 65 -9 0 +-111 -94 23 -46 117 104 0 +52 64 109 0 +62 30 125 0 +91 115 -55 -83 0 +119 -103 -35 -78 46 -113 112 -75 -65 74 98 -64 100 0 +106 -23 95 -26 84 0 +96 -88 -6 -97 0 +-9 89 -23 0 +-118 -122 -112 -103 111 0 +-15 -83 -106 0 +-4 -108 -28 0 +-105 102 52 -86 14 -87 0 +126 -85 -121 69 38 -94 101 -81 43 117 0 +-55 -62 106 0 +-23 45 93 -123 -33 108 119 -76 -94 0 +-74 -95 -4 0 +-108 61 46 118 0 +103 -53 -125 114 0 +118 -53 -2 102 99 -84 108 -93 -4 78 -117 -25 0 +105 63 -116 0 +-116 88 -125 105 123 107 0 +-75 -76 117 0 +-106 -98 -107 0 +-55 -58 -99 44 124 -89 -78 -59 0 +105 2 -90 0 +79 -99 -6 106 -97 0 +-104 61 93 0 +-113 -98 -74 110 -48 34 0 +90 -64 -113 -108 -74 118 96 0 +105 -78 99 -114 0 +118 -60 100 47 93 -11 -96 14 48 0 +-111 -125 33 84 -73 0 +63 -5 -54 0 +102 10 -107 0 +65 40 122 0 +-70 88 59 -117 -91 0 +-118 -54 32 113 -48 112 0 +-99 -42 -104 12 35 -15 0 +-110 103 -93 0 +115 126 111 42 -56 0 +114 112 115 110 -34 0 +-107 100 -122 0 +-101 51 -123 108 0 +97 -95 68 -103 0 +-86 87 125 99 115 0 +28 52 96 -109 0 +95 43 23 0 +122 -109 103 -120 -10 9 98 0 +95 -50 124 11 0 +92 -102 34 -1 -6 0 +-23 -111 119 0 +115 -25 -23 -88 0 +44 -42 37 0 +25 -17 -11 -35 0 +120 -114 115 -97 121 0 +-108 28 -88 67 -96 -119 -1 0 +-1 -93 -125 92 -120 -74 115 0 +124 -98 -43 97 23 -100 0 +-26 64 120 -55 106 83 -72 98 113 74 -41 -121 -53 -112 -56 -110 -107 -5 0 +126 -59 -67 79 -125 109 0 +111 37 -134 152 -158 -139 156 0 +-162 -161 -126 0 +62 -149 -101 -147 154 -142 0 +-136 79 53 144 0 +131 30 130 164 159 -144 0 +-154 -30 77 0 +-152 -80 -42 0 +-62 -159 145 -122 0 +132 -140 -112 0 +129 11 0 +-100 -10 -126 -150 0 +-143 -96 160 0 +133 73 -105 135 21 18 -103 -148 -122 0 +150 28 -160 0 +140 -108 147 0 +158 149 117 0 +101 151 17 146 -156 38 0 +-120 -146 1 0 +-145 -92 -125 -53 117 -135 -163 -127 -25 -141 -151 0 +-130 142 112 -20 0 +-129 -74 -95 148 77 -157 0 +-155 157 -153 0 +70 -164 128 0 +48 162 161 136 -54 127 0 +163 139 -133 0 +-132 10 143 -137 14 -80 99 -95 -113 87 141 -128 -112 138 0 +115 121 -131 155 153 119 39 0 +84 122 134 -18 -138 137 0 +-138 -144 -148 0 +136 159 162 0 +152 -156 147 0 +144 124 79 104 0 +130 -36 -142 0 +77 131 137 -14 -155 -133 -105 0 +-115 -152 148 134 136 -118 0 +160 140 -158 145 -113 147 0 +-145 -138 -158 0 +-81 -116 23 0 +94 16 -152 -156 0 +-128 131 155 -163 -89 0 +-127 -115 160 -117 -132 0 +-154 135 -63 0 +147 -151 26 0 +48 -140 -160 0 +158 -120 131 117 0 +-51 -60 -107 0 +130 120 102 -153 -144 142 158 0 +141 110 126 0 +156 11 -162 0 +-63 -132 -134 -144 -158 0 +112 148 -162 0 +139 -140 -46 0 +23 164 60 -136 0 +84 -102 3 0 +72 -25 -71 0 +149 -89 -129 -162 150 103 22 119 0 +141 -127 -30 0 +-146 106 -113 0 +143 -3 -133 135 -151 39 129 0 +-101 104 -36 58 0 +-157 -134 97 -142 153 -25 0 +121 102 133 0 +-108 162 -31 120 0 +127 -6 64 0 +-8 78 136 0 +-81 131 158 -136 120 -99 0 +-90 108 104 -150 147 140 149 99 139 0 +156 138 136 57 -143 0 +74 57 -42 -97 -88 52 140 157 143 0 +-132 138 127 0 +16 -130 160 118 0 +-123 83 -145 4 159 121 0 +115 -53 146 132 0 +-126 -160 -158 -10 100 -117 -136 -141 5 -154 -102 -132 -140 124 0 +-13 -111 -138 100 0 +-104 -103 -145 0 +-6 143 -146 -97 0 +159 144 46 130 0 +-144 -83 163 120 0 +51 94 115 -111 0 +-128 -135 -157 0 +68 -36 -100 156 0 +-106 141 127 152 94 72 115 0 +-140 -127 -109 115 0 +-76 -144 2 131 72 -97 0 +-80 164 61 0 +21 -97 -146 160 0 +147 102 119 -125 -132 0 +-107 115 -143 157 131 0 +-131 136 79 21 116 27 -141 127 -91 -142 130 150 146 0 +-138 -157 -149 -141 -89 32 0 +140 111 44 138 0 +161 -140 8 -81 0 +138 111 -130 0 +18 149 -19 -100 0 +138 106 -156 0 +-130 106 161 0 +-34 -17 107 -96 0 +-109 153 -42 -39 99 -137 45 0 +82 159 164 0 +-160 -74 157 0 +66 138 143 -148 -158 -123 0 +158 161 -134 -157 164 155 -91 -50 159 0 +-125 89 74 -154 0 +64 -135 -124 119 145 -156 131 0 +-19 118 -152 0 +126 140 -110 49 0 +-54 136 68 -109 -123 0 +125 139 145 0 +-117 99 -31 0 +-84 160 -130 -46 -140 -138 0 +136 -116 -130 0 +162 -124 159 109 -6 -28 80 43 -127 0 +127 145 137 0 +-153 -108 -158 -125 -134 -159 0 +112 115 -81 146 -141 -114 -85 0 +-144 103 101 0 +-69 156 -148 147 120 -162 135 16 0 +147 -115 -73 0 +38 -145 -154 146 0 +58 44 -148 -159 0 +-128 -105 35 0 +150 130 -110 -28 128 -147 0 +-123 104 164 -147 74 0 +-123 119 120 -134 0 +162 -144 -115 -107 0 +137 159 109 100 97 -110 -158 160 -113 0 +1 -40 15 0 +-29 24 5 0 +-131 -135 148 106 0 +-33 18 120 0 +28 120 113 137 147 -4 123 76 0 +48 -106 -74 0 +157 113 129 -119 -152 0 +-10 30 148 -135 155 -133 -105 -146 114 0 +156 -57 159 111 0 +113 -161 -14 0 +151 137 -142 0 +-127 110 -132 147 0 +-125 -129 130 -159 0 +113 161 -53 -109 0 +41 31 -117 -157 -133 145 158 0 +-159 -25 -157 119 -139 0 +107 -126 99 145 0 +62 92 153 0 +62 -112 114 132 0 +158 152 -128 0 +-96 137 -110 0 +9 147 -130 0 +-138 163 150 -133 -80 -127 0 +137 148 -129 0 +-58 131 -9 -91 -57 -161 0 +150 128 97 0 +-145 159 -156 0 +-164 -144 145 -51 29 -68 0 +160 -151 -132 -56 146 0 +150 -112 -38 0 +43 -106 143 0 +134 128 -94 0 +-149 150 160 0 +151 -124 -150 0 +-153 129 61 106 0 +-21 -97 149 136 105 123 -110 0 +144 5 -149 74 0 +131 151 -146 82 -38 0 +-132 64 -146 144 0 +-125 92 157 -134 121 0 +-133 56 -136 79 -82 -126 0 +92 32 8 -85 -98 95 -153 -152 -160 107 162 128 150 0 +148 -105 71 0 +118 -147 21 115 152 105 163 153 0 +-163 149 136 0 +143 102 -108 0 +152 -144 -164 0 +-24 26 99 -34 0 +-126 -77 -152 130 0 +-145 50 -98 -118 36 0 +124 -154 149 0 +164 -81 151 -135 143 150 -73 0 +-118 150 67 -151 -155 130 0 +43 -76 6 -108 0 +153 -55 137 0 +140 -141 143 27 107 123 -142 150 154 85 0 +-125 152 136 0 +-156 42 147 -116 141 -98 0 +-148 -96 68 129 -163 0 +-136 92 -160 0 +94 -96 156 0 +-127 -160 30 0 +-68 101 143 0 +137 76 -144 0 +-93 -133 134 -128 162 0 +-131 111 -19 0 +-109 -8 79 139 163 127 36 -130 0 +154 -150 120 93 0 +127 132 -144 0 +-1 -131 -55 0 +-161 -98 -106 0 +-137 140 -136 161 -130 -155 117 -112 0 +7 -127 -20 0 +-140 9 104 0 +138 -107 -129 61 0 +27 123 137 -130 -126 0 +123 -144 147 0 +91 161 135 0 +149 -146 -77 0 +-139 -89 17 0 +-146 160 0 +67 -114 -117 -163 0 +-109 164 -102 138 0 +151 111 -122 -164 0 +151 -98 -154 0 +96 -35 -124 142 0 +-163 130 151 99 0 +-144 -140 157 -112 -29 70 -94 0 +-53 -115 142 64 0 +6 -145 -129 -164 -35 -155 0 +81 -109 -143 61 0 +-98 154 146 0 +-96 -40 -131 -97 0 +-151 109 -141 0 +119 46 -79 0 +146 -124 -95 -145 132 0 +-131 -140 112 0 +6 -143 -145 -137 -162 -114 0 +-33 -35 -21 -39 135 -158 0 +132 128 154 152 -110 137 -145 -113 0 +147 75 51 116 -91 0 +-149 155 38 -138 -159 0 +123 -103 -150 -133 0 +49 109 37 -104 0 +178 -171 61 177 -30 0 +36 -174 -125 127 168 0 +-46 -180 -176 0 +134 165 115 -154 -149 118 0 +-109 -149 173 0 +174 -175 89 0 +179 -7 -27 143 -173 153 160 0 +11 170 -128 139 166 -181 0 +169 99 181 -127 0 +63 -109 -90 -77 175 0 +137 143 34 -140 107 -177 -170 -179 180 -135 -166 -165 0 +-167 -104 172 139 -131 0 +-168 176 106 108 -172 0 +89 -97 171 -78 167 -178 -111 -169 -155 0 +130 166 -22 -167 -163 171 0 +177 169 162 143 -168 0 +177 -100 -139 -170 0 +178 174 -167 -77 -170 0 +-166 -149 -137 0 +173 -164 146 176 0 +-148 -72 -152 0 +168 -98 -97 79 143 178 0 +-12 169 -154 -137 -37 173 0 +-3 -157 172 -31 -8 0 +159 -173 175 -91 0 +138 -155 169 174 -172 160 0 +174 -180 0 +166 -169 -157 180 -105 131 0 +171 -140 -93 134 179 174 -178 0 +-170 -172 -177 0 +175 128 180 -174 -155 139 -165 -163 0 +175 165 -179 0 +-178 170 -172 108 0 +101 -117 95 -164 -58 168 151 -165 -69 -162 -125 0 +3 -168 -172 0 +-170 173 172 0 +-129 -113 139 165 -142 -56 0 +15 138 173 -174 -167 172 -180 175 0 +31 -178 170 76 -161 -174 70 0 +-61 167 -28 0 +-171 -176 -173 0 +-176 -174 35 0 +-173 181 -164 0 +-181 -129 -137 150 0 +102 175 46 169 63 82 173 -178 -172 112 0 +120 -175 -176 0 +147 126 174 167 180 96 -168 -178 179 0 +-11 117 146 0 +-107 168 147 170 -69 181 110 0 +-49 -139 137 -172 -147 0 +163 173 154 179 -86 -138 -181 149 177 0 +169 -181 -167 0 +-176 -181 175 119 139 -29 0 +-181 169 73 -147 166 0 +96 -171 -95 0 +173 42 18 -6 -169 149 0 +-96 -150 178 142 0 +178 121 5 118 0 +142 -96 -176 -168 137 -170 0 +-132 172 -175 181 -179 -177 0 +103 122 -176 0 +-147 -152 150 -174 0 +-177 180 -145 -11 170 176 174 167 -133 0 +-168 165 -122 -107 181 -66 -176 0 +140 178 -129 -170 -175 176 121 113 -167 0 +100 -152 162 -155 168 -171 -170 -165 -164 0 +-172 -144 -171 0 +169 167 -138 0 +-83 105 -177 0 +-94 168 -177 -7 179 0 +168 97 -149 -165 -155 -180 0 +170 -166 44 95 0 +181 168 140 164 0 +146 -179 -175 0 +-172 130 -145 -174 0 +-108 -115 -51 -96 0 +-159 71 166 0 +124 111 -167 -180 0 +-121 97 145 179 -175 0 +98 -133 167 -180 -134 -139 0 +48 160 -131 179 0 +132 161 135 -166 -116 -118 -144 -122 169 56 -130 173 175 -105 131 0 +151 172 -168 144 175 99 0 +35 181 -179 -91 -177 -132 0 +176 -170 -172 0 +-130 165 -83 -180 -124 166 -46 -101 102 -140 0 +-2 164 178 0 +164 180 -177 176 -1 181 0 +168 -167 -105 -131 -173 0 +169 -170 0 +-150 158 -166 0 +11 -175 174 0 +166 168 -181 0 +173 107 133 0 +-172 -145 -181 -133 -176 -165 -150 0 +-52 165 -179 38 0 +-168 -125 -172 159 0 +-140 -177 171 0 +-143 178 -181 -171 0 +162 164 62 177 -73 -178 -160 -151 181 0 +-176 178 -179 0 +42 -177 169 0 +-140 178 -95 -132 0 +-170 -178 137 0 +-119 166 -176 -125 -151 152 0 +180 -172 136 179 0 +156 -163 74 -165 169 0 +-180 154 -150 172 0 +-179 166 -181 0 +-55 -68 174 0 +-79 -168 109 -173 -76 0 +-174 166 98 -138 175 -173 -180 132 0 +-121 82 -144 -71 -172 133 0 +171 166 -173 -103 -158 0 +174 165 154 -133 19 0 +-180 -122 115 179 -174 141 0 +30 -165 146 0 +-79 179 167 121 0 +171 166 145 156 -121 0 +178 100 123 0 +169 -179 -114 -165 -170 172 0 +-177 -136 -116 0 +-133 -134 165 0 +174 -179 170 -181 147 -175 -168 0 +154 123 -176 -109 0 +-110 -169 -64 -171 170 -156 113 0 +167 -170 -86 -168 -97 138 179 108 0 +14 170 -138 -126 -180 -53 132 157 0 +-161 -167 -29 -134 135 -171 -107 124 -166 0 +139 -173 -76 -178 176 0 +-161 153 -176 -181 -58 -130 108 76 173 178 0 +177 -180 -40 25 176 0 +-166 140 170 171 0 +-170 175 168 0 +-98 174 -138 173 0 +-57 -147 173 167 -174 0 +-172 56 41 -181 0 +-177 165 -170 -173 109 -116 -149 114 55 -180 -14 111 -137 0 +174 179 168 -175 0 +147 -166 170 -155 48 181 -122 0 +166 -170 -181 -144 0 +-176 123 -152 171 -175 -87 -181 -153 168 -180 0 +-140 111 -114 -181 178 132 -165 -133 0 +-179 165 176 8 173 168 156 169 82 175 -55 0 +138 -167 67 178 158 141 0 +180 98 176 0 +-134 -150 180 -165 -168 113 167 0 +-175 129 64 -160 0 +167 -172 -157 0 +169 163 172 -168 176 0 +164 -87 134 181 0 +175 -178 -122 159 0 +-156 -157 -170 165 0 +172 171 173 0 +-177 -43 180 0 +140 -157 -171 0 +172 -127 -176 0 +-131 174 127 -181 27 0 +170 -160 -157 95 169 -94 -173 0 +63 -180 53 0 +-148 -44 -107 174 -133 114 170 95 0 +42 176 168 181 0 +-152 -179 178 -180 26 0 +-114 165 -101 -15 96 164 109 -106 0 +-155 -175 -181 -180 -149 0 +150 -138 -115 0 +-180 162 123 -165 0 +-157 166 -129 0 +173 148 0 +-179 176 169 164 170 0 +-137 -178 20 100 -154 122 -168 181 -177 138 0 +181 -73 157 -95 162 0 +-171 -180 -156 174 176 0 +-181 -41 -61 -159 -111 -134 180 0 +-181 -167 148 0 +-167 -128 -176 73 0 +-170 101 -85 -162 0 +75 -166 -167 170 -177 180 -101 0 +160 -165 -111 0 +61 -169 166 170 0 +-176 172 -94 0 +-168 -114 95 93 -181 -50 0 +127 177 176 0 +151 168 -136 0 +22 -177 -156 -179 0 +164 -12 -175 0 +-141 -177 128 176 168 0 +98 131 179 0 +143 115 -136 172 135 -176 -138 130 -102 167 0 +-177 62 -104 0 +112 -178 138 0 +-166 116 178 0 +-50 130 176 -169 0 +158 -6 181 -180 0 +-112 149 -144 0 +146 -167 175 -177 0 +-174 -41 -127 -53 0 +123 179 -173 -169 0 +94 169 175 0 +162 -52 170 135 83 -168 180 67 -165 -25 -172 175 0 +96 168 -170 52 -19 0 +156 13 -181 128 18 167 152 0 +-171 178 181 -170 0 +-124 96 -167 -162 -109 179 154 166 -174 0 +175 -177 167 -138 0 +179 165 153 -133 -174 -147 0 +-181 -176 -127 166 -65 -158 178 0 +90 -172 -170 112 0 +136 -107 141 166 0 +-165 90 -141 177 0 +-171 -181 115 0 +172 -111 140 0 +-117 66 -167 -82 -169 -102 160 0 +-166 172 -110 -138 0 +-99 -172 -173 0 +126 166 -165 141 136 -132 -157 -181 0 +177 146 -168 -81 -160 170 117 137 175 167 -136 0 +-92 156 -149 0 +108 153 161 0 +133 120 179 177 178 165 0 +144 -181 166 167 0 +-153 -128 171 165 -105 0 +175 113 -180 0 +-168 171 143 0 +-147 164 172 153 177 0 +130 -175 5 0 +-163 181 -175 124 0 +14 165 155 -174 -176 -167 0 +169 -145 -166 -170 0 +-19 -112 -47 0 +173 -148 -102 -169 0 +-129 -168 -167 166 155 0 +170 163 106 -156 -168 0 +174 96 111 -133 166 0 +167 181 160 106 -177 -51 141 0 +179 -25 176 0 +-167 193 -113 0 +-174 165 -189 0 +-188 -180 -198 150 0 +188 174 199 -186 80 0 +192 139 194 -184 -197 198 195 -168 0 +183 85 166 -187 189 0 +191 -119 -95 190 0 +-182 -170 -195 -171 -63 -199 0 +174 100 185 46 0 +-183 -165 -192 0 +-152 -56 181 0 +-194 -196 168 177 -193 0 +182 184 197 0 +-98 -166 187 196 -137 -178 0 +-190 -185 186 -161 -191 0 +-187 193 199 197 -170 0 +184 178 -182 188 173 181 -183 0 +-183 -190 -192 115 0 +189 -131 171 0 +-196 183 64 -145 0 +-174 -190 -199 175 -167 0 +174 -186 147 -191 0 +127 -76 -169 69 0 +-157 -190 -171 199 181 196 169 -78 0 +80 183 -186 179 -196 0 +-194 196 -21 138 0 +-48 186 -185 0 +-141 173 -183 -198 -16 -197 0 +155 195 180 -185 0 +167 -58 171 0 +-199 -188 178 -177 -194 0 +167 -195 -72 179 0 +-184 199 87 0 +64 -190 0 +186 -137 192 152 0 +186 -187 -199 0 +-187 -189 195 196 0 +180 176 -188 -170 -108 0 +168 187 127 0 +168 191 188 0 +177 -173 108 149 0 +-188 44 137 183 -192 190 0 +-137 -195 186 0 +-28 193 -192 184 0 +181 195 -48 -139 0 +181 -165 180 152 0 +51 109 187 0 +-170 195 197 0 +46 -174 191 0 +187 182 -154 173 -25 186 174 0 +199 -167 183 189 -191 -21 -119 -137 0 +-165 26 -195 -191 176 -96 -189 193 0 +153 -168 124 0 +-166 168 -38 -193 -36 192 0 +185 173 196 0 +-169 -166 152 0 +185 -166 -193 195 0 +-169 -194 -133 -185 -186 0 +-173 141 -197 4 193 0 +-167 176 -183 0 +186 -168 -169 0 +-194 199 -197 134 -169 -193 -190 0 +194 164 163 -187 0 +-75 192 187 0 +168 174 -128 -175 192 -185 0 +146 183 -182 0 +-185 197 -174 -166 0 +37 -177 -175 0 +-130 -199 125 0 +-166 159 -179 199 -134 0 +-134 126 115 0 +-195 -194 -185 182 0 +-182 186 94 144 0 +-193 -182 -169 0 +-191 -192 193 0 +-139 172 191 -189 -146 0 +180 -179 194 -130 0 +185 -190 175 -195 -180 184 0 +191 168 -70 187 0 +-165 168 169 -189 187 0 +-191 -189 198 0 +174 -181 98 -138 151 185 -157 166 -143 0 +99 184 -179 -181 0 +100 -146 -173 -14 182 0 +189 190 197 -165 0 +-187 -180 -136 189 0 +-144 -196 -188 -170 29 165 -19 0 +-190 183 195 0 +-190 -193 199 187 -184 0 +-118 191 -167 170 162 0 +-133 -177 193 0 +-186 -184 -178 0 +170 -184 183 196 -181 0 +169 194 -180 0 +173 -169 176 0 +-188 -185 182 177 168 -193 -198 109 0 +-178 132 154 0 +194 184 -182 -171 185 -188 -166 -168 0 +-197 173 114 -199 194 -3 -177 -94 176 0 +-199 114 -193 187 0 +-188 -192 187 0 +168 -197 -176 -145 195 162 -134 -191 0 +-172 -196 -181 199 -186 0 +198 -184 -171 169 -177 -174 -172 -119 0 +181 196 -197 191 0 +128 187 -194 -152 189 0 +-81 133 162 0 +180 -191 0 +-166 126 192 0 +-184 -174 193 -188 -190 156 -199 -191 -182 -183 172 0 +-174 198 176 0 +-190 175 -165 0 +-194 -173 185 0 +-174 2 -152 -177 -199 -180 -188 169 0 +133 -185 179 0 +-188 160 190 -181 0 +187 -117 -183 188 194 -198 0 +196 -13 -54 -165 0 +-187 -184 -172 0 +-171 198 196 0 +-193 96 142 0 +177 -176 -146 194 192 189 0 +187 -189 -181 -185 114 0 +-125 225 -209 204 -171 9 187 -200 -185 -237 -180 111 218 210 -235 -159 -172 190 155 241 0 +179 -212 189 -181 -203 -217 -168 0 +183 202 98 232 219 -198 0 +170 167 172 203 0 +201 183 -213 -214 167 221 -216 237 220 -171 0 +-199 214 166 -228 195 0 +-232 127 -185 -236 0 +-239 236 104 0 +199 239 -148 235 -241 -215 -234 0 +194 192 -224 0 +193 -219 -210 -170 -186 238 0 +171 172 179 0 +211 -176 209 -181 0 +181 205 207 168 195 -202 192 0 +-206 -233 -225 0 +-197 240 -242 180 -115 -196 -190 -192 -198 0 +212 161 -190 234 230 -208 222 -199 242 -195 0 +215 -221 229 0 +193 -197 -3 -227 0 +-186 -188 223 -174 -222 208 0 +224 189 213 0 +-229 216 217 -218 0 +124 170 226 -194 14 0 +-226 200 -201 -76 -207 0 +-230 -147 -185 189 233 -223 -116 231 228 0 +227 -238 -138 -240 -186 -220 0 +198 -111 186 -205 -231 -176 195 0 +-211 206 -204 0 +-236 232 233 0 +-226 -237 -189 0 +-233 -240 -223 -196 -198 208 195 -155 221 205 -190 -228 -204 -200 0 +-231 138 213 0 +-207 -214 242 0 +-184 -190 -142 -220 219 173 209 0 +233 -213 -223 -179 192 -240 0 +-173 236 -167 -185 0 +183 223 -234 -214 -126 -197 216 -157 -185 235 198 -210 0 +-173 236 -147 0 +230 215 -229 0 +205 -197 -208 241 172 191 0 +-241 238 -242 180 97 223 173 224 0 +144 202 225 76 -224 0 +211 -173 -201 102 -184 -240 229 220 214 195 207 -196 -208 0 +-186 184 -241 0 +-231 -165 229 -211 -217 202 -224 -223 0 +-183 192 -197 0 +-238 218 -201 100 23 179 0 +-236 230 211 -214 -228 -222 177 0 +213 -226 -139 -187 241 180 -201 0 +193 123 -183 -201 186 190 151 0 +-210 -228 163 188 184 -222 0 +-235 34 225 222 -230 0 +164 -228 173 217 194 0 +-214 -205 165 -158 -238 -206 -219 -73 -129 0 +-204 -196 187 0 +-43 -211 200 0 +-227 224 -219 0 +-3 219 -194 226 175 -185 0 +193 171 206 197 210 0 +-229 185 195 0 +-209 233 215 0 +-189 233 222 -235 219 -225 188 -217 0 +-183 179 141 0 +191 -112 229 -218 0 +198 174 -204 -224 -220 0 +-225 -202 138 188 0 +233 -189 157 0 +-228 -37 199 0 +-230 -209 -212 -235 0 +179 229 237 -210 0 +215 224 -209 0 +-135 -115 217 0 +198 241 190 166 -193 -181 213 0 +240 190 228 -237 216 -220 0 +172 -238 -146 -217 206 176 -223 180 0 +-221 222 -209 -123 152 0 +189 226 191 205 199 -197 -187 -186 218 0 +227 236 194 192 240 -189 -174 0 +208 228 127 211 -238 0 +-230 -242 -187 0 +184 -114 -225 0 +127 -169 239 0 +176 -227 69 181 0 +184 -182 -193 0 +-207 -234 -168 -223 191 -159 -237 0 +233 216 -230 183 -222 212 221 0 +201 -174 180 0 +170 -225 190 0 +-193 -168 240 -241 190 0 +182 -186 226 212 -227 0 +190 -182 -219 0 +189 184 193 0 +-192 176 -238 -172 -195 -224 0 +-204 -238 -188 207 0 +-218 241 -171 0 +238 197 -199 0 +152 -233 175 0 +-212 71 -215 0 +-194 196 205 242 37 -241 0 +-133 -189 201 -222 0 +169 203 209 219 -221 165 191 -222 -180 -121 0 +-204 143 -217 207 -241 0 +-241 217 -170 -236 -59 0 +191 -211 240 197 199 0 +198 -212 233 -214 0 +-233 -184 213 0 +166 221 -216 132 197 195 -212 -181 -176 0 +212 195 133 207 0 +-191 150 -184 -193 0 +153 198 16 227 0 +-184 196 220 0 +-205 -232 189 0 +-215 194 -212 0 +-192 227 211 161 168 0 +-213 -232 89 -184 203 -227 167 -207 0 +-199 240 239 -207 187 -190 -214 -228 0 +-235 -191 -227 239 231 0 +-182 -229 -191 194 187 -223 0 +-195 -207 -234 186 0 +-230 -197 -165 0 +-210 -242 -238 158 -182 -211 197 -220 228 0 +180 150 -205 217 0 +235 -190 219 139 -198 -67 -212 -239 0 +183 239 221 -210 0 +192 185 -219 -111 -193 158 0 +229 -198 -183 0 +-84 -217 -177 0 +-215 -178 -40 -207 161 0 +-132 -209 102 188 -241 -220 150 -208 -51 0 +-218 238 215 -117 199 -132 -193 213 0 +150 192 197 0 +-54 -228 213 0 +206 -201 -179 -187 -225 54 186 -165 217 0 +212 -237 0 +98 189 -197 -52 0 +-229 -227 -168 185 188 -197 -213 0 +-180 216 224 0 +-215 -205 0 +-184 242 -235 194 221 0 +231 -183 -182 145 0 +177 -105 233 194 170 -234 -186 0 +195 234 -215 200 196 0 +227 -233 172 -180 222 -168 0 +228 208 -236 190 -108 0 +165 -152 -184 221 202 219 0 +-183 -205 232 0 +-194 -186 221 0 +-222 -194 179 -236 -230 -167 242 -202 -124 0 +-188 203 -179 0 +225 234 215 73 -172 230 134 -226 -200 0 +-188 -215 104 -227 -125 0 +-226 235 202 0 +213 211 184 181 -196 166 0 +225 -196 199 190 -236 0 +-222 -229 -199 240 -175 206 99 0 +-232 -189 140 -167 -225 -209 0 +-215 212 -171 0 +-226 26 219 0 +-242 -230 -169 -203 -237 204 167 195 -173 -79 186 0 +-231 189 -221 198 0 +200 -219 -142 204 182 -221 80 -168 -213 -235 -170 237 -230 -232 207 185 160 0 +-239 170 184 0 +-126 239 231 -172 0 +92 240 232 -194 229 0 +214 36 207 237 167 0 +200 183 215 206 -196 159 0 +225 206 -175 93 0 +-114 201 237 0 +-205 -160 171 -215 -229 -242 216 210 -239 191 203 217 -136 140 198 -226 -219 211 -184 175 0 +-209 -135 165 0 +-234 192 236 -215 0 +-208 -212 229 -205 151 232 -216 -144 0 +-150 -80 -170 -167 232 -206 227 0 +197 -217 -234 0 +200 236 -180 -194 -175 0 +-202 178 223 0 +226 -215 -231 165 0 +-181 242 -235 -214 0 +241 -199 228 242 203 0 +-223 226 -179 201 0 +202 -204 174 0 +-230 30 218 -205 215 -233 0 +-209 237 -231 0 +225 190 -178 -191 150 180 -175 0 +204 192 -217 0 +198 -202 208 -180 190 0 +-129 201 215 0 +213 42 219 174 0 +228 -207 163 203 219 0 +-212 -221 180 0 +201 234 -226 230 0 +-180 -58 -172 0 +-234 145 203 0 +-195 -219 223 0 +27 221 184 -194 0 +173 227 226 -182 -240 212 223 0 +-207 211 232 -240 -63 0 +-237 -233 -217 0 +-188 238 169 0 +214 238 0 +-146 183 104 -191 -204 0 +199 -196 221 -203 0 +-171 166 -195 0 +-188 -152 193 109 -186 -241 214 129 0 +184 -206 166 -154 -235 214 0 +163 -240 -181 199 -235 0 +223 141 -235 0 +-220 53 50 0 +-190 198 178 213 0 +195 185 193 -241 220 0 +201 -176 188 -242 222 -138 216 0 +-223 166 195 0 +209 -198 181 -169 0 +-231 220 -183 0 +-193 -240 184 -202 127 182 0 +201 -242 195 236 27 171 186 0 +-191 -182 176 0 +166 130 -192 -198 0 +239 198 178 232 0 +-221 -240 -241 -186 -209 174 235 -122 0 +209 -189 188 237 -212 0 +-131 231 232 -241 -217 195 0 +188 -227 -223 224 -237 218 0 +-219 -192 -197 182 179 -190 218 -229 213 -177 0 +-212 191 168 -223 0 +-168 183 -232 0 +157 151 229 -173 190 188 -232 166 0 +-227 209 -175 -202 0 +-231 -195 -218 110 0 +193 226 -185 0 +-215 214 44 0 +171 -215 -233 0 +194 -192 -229 165 0 +-185 164 240 -216 0 +-242 179 201 -209 198 -197 0 +185 -236 -228 -182 199 -223 63 197 201 0 +-217 206 221 -222 0 +186 -207 173 0 +-209 226 -183 190 40 0 +-175 242 181 113 192 0 +-211 194 -225 233 -190 -239 0 +229 130 -224 0 +194 147 216 0 +120 -224 241 151 0 +-188 -223 199 201 0 +237 128 -176 100 238 208 -161 -231 179 217 174 0 +-241 -242 232 199 114 0 +239 -212 193 -167 -234 0 +-227 208 157 -31 0 +234 -196 -223 183 -78 -191 -208 -141 -149 205 213 0 +-196 -38 -199 -201 178 237 173 0 +226 201 -193 0 +187 -76 -200 0 +191 170 -229 238 0 +-188 185 -196 175 -205 208 133 -183 0 +-200 232 199 184 0 +193 -202 -176 0 +233 225 -116 0 +216 -195 -185 206 224 -183 173 -222 -142 233 219 203 0 +161 -167 -174 238 -232 216 0 +234 -209 207 -204 -224 0 +247 -245 258 -184 229 -261 -201 -257 -189 0 +-255 -253 237 184 254 0 +249 -239 248 236 0 +257 259 -252 246 0 +145 252 255 0 +251 245 -243 -250 -248 0 +244 234 256 0 +194 -210 133 191 -234 -251 243 0 +136 -176 250 -247 -244 0 +-258 261 -249 0 +160 -260 203 184 227 -246 0 +-259 253 260 0 +-254 -222 -256 230 -201 0 +233 -235 249 0 +253 202 -261 0 +198 248 249 0 +261 159 243 248 0 +-245 252 -243 -235 -222 0 +-226 -238 -168 -185 -259 -251 -253 257 -221 0 +-147 222 -255 0 +-231 -180 -257 -203 0 +-245 -251 248 0 +-208 256 196 -128 255 0 +249 245 261 0 +261 260 -256 257 0 +252 -222 -259 0 +257 -246 -238 -233 -254 0 +259 -116 254 196 -245 228 -248 0 +235 244 -246 -161 0 +235 -260 -258 0 +244 -247 184 261 -243 -191 -225 0 +-259 -185 190 0 +211 -196 -143 0 +243 -226 190 0 +204 251 227 -260 0 +229 256 165 245 0 +-253 -244 260 236 185 0 +197 217 -256 -249 0 +203 155 226 255 229 -240 257 224 254 0 +221 -244 231 245 0 +-260 245 -253 -258 243 220 0 +260 141 216 235 0 +246 -250 -255 226 -194 0 +171 -177 246 187 247 -227 -243 0 +-184 -203 153 -175 0 +-253 -215 0 +168 189 255 -181 -195 0 +202 -130 -255 -250 240 -248 198 -245 0 +258 -255 -98 0 +-120 253 -257 202 0 +186 252 47 0 +-250 260 -254 0 +228 256 182 0 +-196 188 206 0 +241 -182 -244 0 +260 -255 261 253 0 +-232 -254 246 244 -237 -243 0 +250 236 191 0 +-260 -199 209 259 0 +183 -242 -128 -189 261 0 +184 251 208 0 +187 -244 -255 0 +-260 -255 243 0 +248 -257 -258 0 +-211 -244 249 175 0 +-206 191 -160 216 0 +-257 243 0 +-256 -258 198 -185 0 +-232 166 188 0 +209 254 189 -165 249 0 +-213 -231 174 256 0 +-212 176 233 -252 -257 -249 -191 248 188 -230 0 +247 261 -215 260 0 +247 221 255 -193 251 0 +224 -179 -209 233 -261 250 230 186 -137 133 -245 185 258 249 -177 0 +254 261 -190 0 +184 -248 257 -243 244 0 +251 -51 121 183 -252 207 254 0 +258 -254 -252 -230 251 238 253 239 256 -248 0 +249 208 247 0 +-258 -253 -248 0 +-251 -213 -233 0 +158 -170 -244 200 0 +-257 -248 -190 250 0 +-231 -254 -199 -184 244 248 214 -236 -185 0 +-257 255 -193 260 0 +156 -173 -257 246 -216 0 +-252 251 -258 213 -250 170 0 +-259 250 -247 0 +253 -261 215 -131 260 0 +-252 -251 -194 -222 -247 -244 0 +-183 -242 195 247 238 0 +258 -214 -251 0 +-258 250 -157 0 +-261 -254 253 255 -183 -251 -260 0 +-183 -245 139 -260 128 0 +-260 240 177 -221 -258 248 168 -244 170 261 -182 -217 247 0 +251 -235 -164 253 -247 0 +254 -252 -221 -249 -202 -108 236 -238 0 +203 142 -216 0 +259 209 230 0 +-185 171 246 190 252 257 -255 228 201 261 159 -251 0 +-191 196 -258 173 -248 0 +261 -197 245 178 0 +-254 248 179 0 +-195 -70 248 192 0 +247 235 -239 260 -227 0 +-236 -251 197 -211 0 +260 -247 -258 0 +-258 260 238 -253 -251 259 257 -176 0 +137 -176 209 -250 222 0 +234 -222 -246 208 0 +195 -106 -252 255 -167 -258 -259 -220 0 +-141 188 -241 142 199 -246 227 0 +252 -196 245 -230 0 +-201 256 247 -252 0 +198 205 110 0 +230 -205 258 0 +-246 250 229 -248 0 +-253 250 -212 -244 -192 -233 -254 -251 187 -229 0 +-220 -247 186 260 -256 -243 -194 205 -229 -261 -183 -252 0 +-195 253 -260 -250 0 +254 186 249 0 +-251 179 -220 -214 144 0 +227 189 251 252 0 +189 -244 212 -255 -178 0 +258 210 -175 254 0 +-247 256 -245 179 0 +239 -210 254 0 +-191 -187 171 259 0 +-249 257 258 259 245 -220 196 244 -247 -193 -256 0 +-261 -240 -245 0 +246 -194 260 -188 189 -261 226 258 0 +248 -171 -244 0 +-188 256 -236 -198 261 -260 0 +227 238 -211 0 +245 -214 -248 -231 255 -247 -256 0 +-38 -235 212 -254 86 261 250 246 257 0 +244 -234 203 0 +184 -211 -244 -179 259 253 -136 252 0 +-199 -9 250 0 +140 196 247 0 +-258 -249 -259 -219 218 0 +231 191 -90 -237 254 -247 80 -204 -255 0 +-178 188 197 -253 243 0 +-223 213 245 0 +-247 -245 250 216 0 +253 153 230 -229 -192 0 +245 -231 229 -258 0 +246 -261 -247 254 -137 175 0 +244 -243 -195 -255 -252 0 +-247 -254 0 +255 177 -144 0 +185 -258 -223 0 +253 -256 -260 171 166 -176 0 +-167 194 -221 0 +-205 241 -253 186 223 0 +-252 161 132 193 0 +-237 -171 -246 224 0 +-255 -185 -250 212 -168 0 +176 254 -255 0 +260 -253 -243 -247 248 -208 0 +-259 247 -261 134 0 +-247 -199 -261 244 211 0 +187 -241 220 -257 247 217 0 +173 178 -258 0 +-241 245 259 256 0 +-238 -259 -204 0 +238 248 -177 -183 214 0 +-189 -238 -260 0 +-250 -204 -167 192 0 +251 170 224 0 +-221 -253 233 -257 0 +188 244 -261 197 0 +253 -227 250 -216 0 +252 260 247 255 229 -210 251 0 +-246 215 -230 260 245 217 0 +-103 185 245 0 +256 -182 -260 259 -253 215 -192 0 +-253 258 250 -191 -225 0 +-250 -200 249 187 -113 251 0 +-221 247 -259 206 249 0 +180 -241 199 125 0 +257 247 -243 -251 161 0 +203 157 199 -200 0 +-210 246 -183 -244 245 0 +-163 -214 -243 0 +224 -248 -192 -258 0 +-257 -231 -230 -226 0 +254 253 -178 251 0 +201 253 246 210 0 +191 -246 -183 0 +246 248 -186 244 -251 -234 0 +-209 253 243 186 0 +-236 256 254 252 -242 -243 0 +-189 251 -259 227 252 0 +258 163 -206 -187 252 0 +-250 -257 -192 0 +-246 200 -251 -257 0 +-253 257 180 192 243 199 221 -241 -212 0 +226 -249 207 0 +254 -255 -248 0 +235 -184 256 -253 -259 243 -260 181 213 255 0 +-256 -250 -185 -189 0 +-189 -225 246 -170 252 0 +197 193 -255 0 +-180 -250 -245 0 +-198 218 -261 -259 0 +-254 -259 247 256 -166 -176 -255 -136 -204 0 +23 -244 261 0 +209 -216 -174 -249 0 +257 -167 258 248 0 +217 254 245 137 -260 0 +198 225 -186 -253 245 0 +257 -147 -247 -215 258 0 +-253 -255 -148 0 +257 -249 224 0 +-254 -244 -184 0 +-242 235 246 0 +205 -259 -258 -230 -254 -248 251 -172 250 113 -228 171 0 +-199 184 256 -244 -247 0 +210 -245 -221 -198 -235 -219 251 195 -227 0 +254 -170 243 197 0 +-303 299 257 264 -64 0 +-270 -284 244 246 -282 285 283 291 0 +-300 286 -264 0 +-258 -299 297 0 +295 278 -206 245 279 0 +-292 -256 249 270 0 +268 -258 289 246 253 0 +250 171 -212 259 0 +257 -295 255 0 +-305 -227 280 -259 0 +287 -192 -165 -293 263 -217 -232 -283 0 +-220 269 -294 0 +-208 250 131 -290 0 +262 193 259 0 +272 275 282 -261 246 239 0 +-301 260 -217 0 +-291 259 -280 243 273 252 0 +256 -304 290 0 +305 -262 -273 0 +-289 281 256 210 -198 298 303 -279 277 -258 130 0 +294 -252 235 0 +-250 -230 -208 0 +-174 -287 266 265 0 +198 -263 -255 -254 301 0 +198 288 -267 0 +-274 -297 251 -265 0 +188 304 -253 -250 248 296 0 +-213 259 -249 0 +-250 300 -186 0 +-158 -302 254 0 +-157 -266 -281 209 192 0 +-277 302 2 0 +-275 -171 -285 0 +187 -288 245 293 -73 220 0 +229 196 244 -278 -248 0 +179 292 276 249 248 0 +225 255 -246 0 +-233 251 -228 0 +-220 260 284 271 -248 0 +194 -296 -250 -298 274 -276 -268 0 +-45 222 -286 0 +-269 267 244 0 +-272 -271 234 -278 -230 0 +268 254 285 0 +-264 270 -243 277 -268 -274 0 +305 299 258 261 0 +-261 175 0 +302 -182 -209 285 295 0 +263 -258 299 -168 262 169 -274 -143 293 275 0 +228 -287 299 -274 -261 -189 -297 -254 300 0 +252 -257 -245 289 0 +-193 287 -183 0 +-244 288 293 0 +288 -261 -252 301 217 299 271 -278 -258 -255 0 +-305 277 248 0 +300 -263 278 -271 -270 -171 0 +289 -300 -270 -243 -246 0 +282 294 -213 -299 0 +225 -304 265 242 268 0 +-192 -249 220 0 +-302 264 -132 218 164 -294 0 +-275 -305 263 0 +254 -281 -298 -191 206 -275 0 +-292 304 253 0 +-283 -240 178 205 0 +-292 -303 273 225 0 +-254 298 270 249 229 -194 284 0 +-277 -247 263 0 +301 247 268 0 +243 -286 179 242 0 +-305 192 -215 261 -270 237 0 +252 271 -258 269 236 263 0 +-266 -265 -263 -253 0 +-260 -296 279 -270 0 +-246 -245 251 200 0 +-243 185 246 249 190 0 +-275 -180 268 0 +-251 286 282 -272 0 +-202 -305 253 293 0 +274 298 -193 251 0 +-252 291 -257 0 +-302 284 278 0 +253 259 -285 -207 -257 0 +-253 304 -279 -237 0 +-170 254 263 -165 279 305 277 0 +213 258 226 293 -286 0 +-301 -247 -283 305 0 +-124 -232 -264 195 168 263 290 0 +275 297 -219 0 +259 -246 -288 273 -209 -262 -245 238 0 +-91 215 -235 0 +280 -261 248 0 +-249 255 293 -278 -283 0 +251 243 253 305 -270 204 0 +201 282 183 -213 -255 305 -290 0 +-289 290 227 -243 0 +174 -215 251 304 250 207 296 0 +-256 -167 -284 0 +-228 259 254 0 +-284 221 239 129 169 0 +-304 -293 279 0 +-268 -291 -284 -264 294 -244 0 +285 -284 -272 0 +-251 247 145 -248 0 +-262 243 -273 304 223 -275 287 0 +237 -248 266 0 +-274 249 298 254 281 -189 169 277 141 -292 263 -201 0 +115 -269 -146 -277 -260 264 290 -278 293 -232 292 -257 0 +-262 -285 -250 -241 -183 288 0 +-217 263 -302 -258 -271 245 0 +286 -288 -189 -165 255 0 +-280 259 261 262 281 -263 0 +187 -210 -270 0 +-251 -305 275 0 +-287 -251 277 0 +253 -246 -189 -243 -262 0 +268 294 250 243 0 +247 -258 278 275 -195 -299 -263 -255 194 -242 265 295 0 +-258 -283 -289 304 -196 -263 -220 0 +-305 -39 246 206 -275 193 0 +-286 288 -300 268 282 305 0 +-173 -223 269 249 0 +-251 -258 -267 -269 -259 -299 0 +-262 269 -253 230 0 +-248 -232 266 -301 -256 0 +-248 21 249 -189 -298 0 +-279 -283 -265 -227 -270 287 182 250 0 +278 -301 -283 277 -229 0 +271 253 156 -212 269 0 +282 -260 -9 -297 263 0 +-276 281 253 258 0 +261 268 253 -266 -251 0 +271 -254 257 -270 0 +255 -249 -295 0 +294 -288 -282 0 +281 -252 -284 0 +-182 -270 222 -251 213 175 0 +-259 -182 -293 0 +-256 279 273 -246 0 +-277 -200 -254 0 +293 -232 251 274 0 +248 -218 230 -12 241 0 +-230 284 186 -277 0 +-293 300 278 0 +-252 191 -271 0 +305 196 290 244 -254 222 276 -271 -235 0 +273 285 255 -271 298 -279 -259 -193 0 +-259 -225 -283 0 +229 252 298 0 +256 -291 242 0 +-243 -258 -304 0 +-234 -272 -192 153 204 0 +189 -282 201 301 291 -244 -283 -141 252 194 0 +-244 271 195 0 +300 209 262 278 0 +201 269 182 0 +-244 212 -250 0 +257 191 265 -294 254 280 -261 0 +184 -227 -300 -305 0 +196 -287 -244 283 0 +-219 -260 262 0 +271 221 251 -245 -287 285 -283 0 +292 -145 249 -238 -248 293 -250 -208 -251 -298 -258 0 +-224 -243 -251 -190 248 0 +268 -269 243 -200 217 -239 0 +-274 301 -222 -288 262 0 +-182 291 -186 -229 283 0 +-219 -281 288 0 +-216 -303 -294 256 249 -258 0 +-247 276 -291 253 242 -288 0 +-275 259 222 304 212 0 +-251 99 -275 0 +-129 274 -253 -267 -292 -233 0 +30 269 -265 181 0 +-181 -302 -274 0 +-252 -244 250 0 +-244 -284 -254 303 0 +284 -293 -249 -211 243 248 0 +293 -263 -303 -304 248 0 +-195 -298 -256 248 -219 0 +-186 292 249 -294 250 -228 0 +-271 258 282 0 +-55 -249 285 277 257 280 -268 235 266 261 199 0 +-149 -290 278 0 +-254 -256 292 0 +-187 286 249 197 -266 141 271 290 0 +-290 -272 -18 -293 111 -250 301 262 0 +-289 210 293 255 -285 263 256 -271 -267 253 288 0 +268 280 -245 -256 0 +-297 265 -190 147 264 0 +264 300 246 -276 -277 -170 -266 0 +262 -268 -281 0 +-300 269 236 0 +-279 -173 268 0 +284 247 -288 0 +-103 -265 242 0 +246 -253 199 0 +-166 -276 -289 -264 0 +-297 294 279 0 +214 -295 -294 -197 -189 0 +-256 -285 248 -199 0 +-256 247 -286 -192 -188 232 -283 268 0 +275 295 -244 0 +248 254 -299 -262 0 +300 -291 -244 102 -292 270 213 262 -301 -279 -285 0 +293 279 264 0 +261 -247 269 -270 0 +-262 304 -190 0 +-279 269 203 -247 276 236 0 +215 -230 252 -290 0 +-248 -263 -210 0 +335 -318 -282 341 329 268 262 -342 -306 320 0 +-334 -256 -287 -277 317 -313 327 302 295 0 +328 308 -286 0 +270 -333 342 -332 -286 -280 -314 -337 -167 334 281 -266 0 +285 273 229 0 +331 -253 343 0 +-340 -248 -260 263 0 +235 321 230 0 +199 347 336 303 0 +-321 -335 325 304 310 183 0 +-345 315 -343 0 +-331 -310 -339 330 288 332 -315 322 324 302 309 0 +333 311 -329 244 -289 0 +300 306 -319 254 -217 0 +-320 -348 -347 0 +-301 -326 0 +316 -295 323 0 +272 340 -211 251 -325 -336 0 +225 344 -328 -255 318 0 +-257 -265 254 -292 345 0 +-279 -349 -197 313 304 -324 220 -271 235 0 +338 302 0 +265 -284 307 271 -175 -330 0 +287 224 -276 0 +319 294 -233 254 0 +250 -261 245 277 -197 -327 0 +-309 283 -312 0 +-307 286 247 304 0 +326 337 349 298 -303 -322 348 252 0 +-338 -311 258 0 +-246 258 312 -323 339 -188 -308 167 -279 0 +-286 262 346 -344 0 +314 -346 -303 -316 -341 0 +-289 -280 283 0 +-274 -317 -276 -286 342 0 +349 -263 271 0 +-244 -267 -316 0 +-308 -286 331 -330 -255 -243 0 +-324 327 -252 258 -233 342 0 +195 318 323 0 +264 -318 -336 188 -304 -204 282 0 +260 297 324 -340 243 0 +311 269 306 244 0 +-339 209 348 337 -171 332 262 -317 285 0 +-327 316 -308 340 -71 170 315 0 +324 -223 299 0 +-328 -317 343 0 +-276 327 282 -320 0 +-294 -243 327 320 249 278 346 0 +-336 306 332 0 +-331 251 -310 -338 0 +-290 327 -329 305 -306 0 +244 -346 299 0 +309 -273 268 0 +-308 270 -261 -306 -207 0 +324 337 -261 269 316 0 +-180 247 251 -268 0 +293 139 338 -347 0 +335 275 273 248 0 +-227 -314 305 171 0 +285 -265 0 +-295 192 -330 262 274 0 +-311 -343 291 302 0 +318 -322 -266 314 -346 -262 -268 290 -186 -339 -272 -311 -248 -276 -193 0 +-312 -266 -347 0 +-334 319 257 0 +312 -291 270 -258 0 +319 315 256 264 -289 277 0 +327 -250 254 0 +318 341 -335 249 0 +-184 309 307 -246 243 -247 261 341 254 145 0 +-343 -171 -308 326 -192 0 +-251 259 265 168 246 254 318 256 0 +257 321 274 254 0 +308 -326 -309 -322 0 +216 344 -318 -211 -173 293 -213 324 -272 0 +316 -186 253 347 39 0 +-318 319 346 320 0 +274 169 303 316 241 341 334 -314 0 +287 -193 -320 0 +311 333 -339 319 0 +267 282 -310 0 +-303 -302 -285 251 0 +304 327 -309 0 +-281 -298 345 0 +281 -296 269 0 +313 297 -349 345 299 0 +-207 347 -296 -291 232 213 262 0 +-317 -249 346 0 +-322 247 -333 299 0 +-328 -298 299 344 329 0 +183 323 334 0 +307 263 258 0 +-313 261 346 0 +-326 -236 197 222 -187 -335 -332 208 0 +-276 -346 311 0 +278 -322 -178 0 +303 346 323 324 335 0 +-347 -317 -245 0 +292 205 -319 -301 266 0 +344 254 253 0 +-340 182 341 205 -162 -290 -311 325 268 0 +341 296 -290 -269 -307 -212 0 +-321 254 -320 307 -314 -280 278 0 +-317 -282 -332 0 +-234 306 -343 -314 0 +-252 -341 346 179 0 +258 317 -303 -318 -87 0 +324 -316 -336 0 +-310 205 325 -311 0 +328 -329 -198 237 244 -186 -259 -326 0 +251 -279 -282 0 +-251 345 -326 -335 289 336 255 247 -323 0 +-331 -221 -255 -306 292 0 +-329 249 -326 0 +-295 -298 341 346 0 +259 -272 -250 -308 307 258 -325 -122 0 +331 -326 232 0 +263 -245 265 0 +251 289 246 65 -268 0 +-303 -298 -306 0 +301 311 -253 0 +277 -274 291 0 +306 249 -335 333 0 +249 -343 -306 0 +326 334 314 -263 280 291 0 +323 265 334 -340 0 +306 324 -339 -349 -261 -244 191 263 0 +-333 215 294 339 265 0 +323 -333 318 311 -348 0 +-344 -292 -315 303 269 0 +-327 -265 -316 -132 -317 0 +-335 -294 342 0 +-312 -195 329 -267 0 +-345 309 -305 348 343 0 +-223 -250 -278 302 267 -334 0 +313 316 245 -275 0 +338 335 317 -303 331 -311 -298 260 -295 0 +-325 346 -257 0 +-302 -251 -336 0 +326 -341 190 -277 0 +-349 330 -226 -310 0 +-276 334 -349 342 244 315 0 +234 209 306 0 +-23 -342 -348 330 -344 248 -296 265 -316 306 -269 0 +344 327 -324 310 -270 0 +-346 283 -320 0 +-279 -313 290 0 +320 -331 300 -280 291 0 +-339 314 340 -276 -337 284 333 312 341 259 0 +342 -325 -228 349 307 0 +-341 317 -319 -310 281 -323 -208 0 +-340 341 281 -179 0 +-282 -201 -249 -296 0 +177 -261 -312 0 +-315 -258 -330 -326 -221 344 0 +-300 -272 338 -337 -312 0 +332 286 -329 341 319 0 +345 254 292 330 -331 -319 344 295 0 +-318 336 313 0 +335 -272 301 -307 294 -315 0 +-335 296 -330 -328 0 +-313 -286 334 0 +316 -314 278 0 +335 328 -322 311 327 206 315 -347 0 +-257 287 -281 0 +-322 -330 265 0 +-248 -336 333 0 +322 -266 310 337 300 0 +-276 346 243 298 0 +-342 -176 -306 -225 0 +338 323 -309 0 +-334 -274 -186 -309 -255 252 0 +295 318 289 0 +-265 -193 310 0 +-267 290 -218 0 +312 331 -337 -288 0 +-314 -169 224 -271 0 +-185 -262 259 0 +-342 337 -315 -186 -286 0 +-312 329 -280 0 +-202 311 325 0 +-313 261 248 -326 0 +-330 333 -324 -339 322 0 +310 -247 298 -312 0 +334 -297 306 0 +250 320 335 0 +289 -315 -208 0 +248 348 -316 -306 -309 -258 -311 0 +-317 -285 339 0 +325 254 -334 0 +278 -322 -303 -344 249 -247 -315 330 256 0 +-253 316 342 -243 282 344 -280 0 +325 -340 -253 312 -240 -291 0 +-289 -319 -344 312 0 +-319 -335 0 +343 282 -274 -303 261 0 +-258 -332 261 -188 297 346 0 +-337 -258 200 0 +256 -270 274 334 0 +-256 293 -333 301 270 260 347 0 +-292 -333 340 291 0 +-319 280 297 -286 336 -311 0 +311 -294 -222 -314 0 +-290 -346 273 259 313 326 255 -316 -256 288 0 +266 288 251 0 +-329 243 -334 0 +-328 326 306 -325 -315 246 -301 253 0 +256 -316 268 203 204 -185 -327 -288 346 0 +-348 -346 337 278 -267 332 0 +-300 -298 -225 269 330 0 +339 252 -330 0 +-315 -289 290 -318 0 +-335 -348 253 -205 -336 0 +-270 -311 337 192 0 +306 -331 -247 332 0 +333 268 -309 283 -291 0 +-296 291 -345 -328 0 +329 -308 -320 0 +206 269 302 273 0 +348 -261 -338 316 223 0 +308 -333 -307 0 +-336 344 -319 0 +321 345 265 328 -295 -258 0 +-254 -285 234 270 -267 323 344 182 -295 -304 0 +-330 266 241 -322 336 313 265 283 0 +-269 -283 194 -329 -293 311 0 +343 -254 -290 0 +285 300 -234 0 +-277 -295 -342 -270 0 +226 314 -282 -326 0 +339 -306 315 0 +295 -189 -334 -338 -270 0 +-327 -312 349 0 +-331 323 -332 0 +-325 302 293 0 +317 296 267 -229 0 +310 240 -312 -323 285 0 +-192 318 342 332 0 +313 -189 -320 346 273 0 +-333 268 -273 -316 0 +-315 335 319 -220 265 0 +332 345 -338 0 +-255 -275 -311 0 +-259 272 -215 -266 243 -297 -244 -292 -295 340 0 +-310 -246 -258 0 +-304 -271 234 341 0 +271 -208 -295 -318 0 +-253 -346 -317 333 -303 -269 -272 347 315 -342 -247 341 -273 -242 0 +313 -289 344 -172 0 +-310 -308 334 0 +284 -331 -326 323 0 +-167 -276 -314 -266 0 +-307 -197 -339 -250 230 0 +-326 -348 280 0 +302 -284 -290 326 -216 0 +341 -335 226 0 +-318 245 -303 344 -251 -287 343 0 +-330 283 -345 286 -327 -321 -177 -308 0 +334 -259 268 0 +-276 300 -324 306 0 +-337 70 307 336 -170 310 261 282 -345 0 +343 327 -264 319 -345 333 0 +322 291 182 -284 -325 -290 328 -264 -344 -280 0 +-290 326 -297 0 +-243 220 258 284 310 -260 303 -326 0 +-317 266 249 -327 0 +230 312 -265 271 0 +-176 -198 0 +-312 -69 -315 -272 -338 -349 0 +318 209 -330 337 -196 0 +324 -227 250 -258 -279 307 -311 -290 0 +-335 146 244 0 +261 -263 -213 0 +-347 -296 -344 321 0 +261 -308 -259 0 +-291 -272 260 0 +318 -269 -349 -345 0 +209 -348 328 317 -309 258 -283 0 +332 -261 -251 -346 310 -342 0 +311 245 -316 273 0 +-224 305 -336 284 0 +337 316 0 +-264 -310 0 +-347 -256 -208 338 -279 -342 345 0 +95 -345 -335 309 262 263 0 +345 312 -308 252 0 +-302 253 251 0 +-337 -278 -347 -261 0 +-307 -328 253 -327 0 +327 311 -196 337 0 +-255 279 -334 270 0 +320 248 257 0 +-325 306 -284 0 +343 333 -273 -267 -336 0 +339 301 -302 -253 271 198 -308 262 280 0 +-348 324 -245 0 +339 -300 -281 257 0 +-142 264 -348 -295 -331 -318 0 +239 322 -348 0 +314 -175 -282 273 0 +309 254 325 -184 300 337 213 344 -336 326 262 -340 -317 0 +-62 343 -336 0 +-294 -295 -313 0 +337 -220 -303 -203 0 +254 -291 -107 306 0 +250 256 -185 0 +-98 191 321 0 +-325 340 334 -330 -310 0 +255 -332 341 0 +239 271 226 -244 0 +-320 342 -177 346 -292 -247 -287 336 -267 335 326 332 0 +288 339 -256 282 -195 -333 342 -280 338 267 0 +312 119 -315 0 +-250 240 271 341 348 349 0 +-68 -331 195 0 +-254 249 338 0 +336 -319 270 -316 0 +-326 309 315 263 0 +-313 339 258 0 +293 -244 245 0 +269 -252 205 0 +263 -324 -329 0 +-273 -271 337 323 0 +312 334 -218 -240 -215 0 +193 -272 334 247 251 0 +-314 -343 315 0 +-327 -270 263 177 0 +345 193 -79 346 333 -217 310 -348 251 325 -327 308 0 +-264 -312 252 0 +339 -212 249 -326 257 239 315 -129 0 +305 294 273 0 +-265 253 -333 262 321 0 +333 -295 258 0 +349 -253 281 169 0 +233 310 329 333 -249 256 248 290 343 -220 261 -205 299 125 -201 0 +25 293 274 330 -255 -349 256 334 -336 342 0 +-299 306 325 -312 277 0 +-322 -337 304 339 321 314 182 309 0 +329 337 -286 0 +338 -337 -315 -246 332 302 -269 312 0 +348 -257 306 333 324 -216 0 +-319 -248 -344 -251 280 341 0 +263 333 -254 0 +256 -243 -268 -313 -334 0 +-345 -300 256 0 +-348 -192 240 0 +265 318 -218 322 238 0 +-321 -320 322 184 0 +324 -172 312 0 +-318 -260 326 -334 -257 0 +-321 -301 335 -326 -322 0 +-342 -321 -252 278 -338 -272 0 +318 263 -310 0 +-208 320 339 -309 -330 0 +-321 345 300 -252 -255 326 0 +333 -245 277 331 320 260 0 +-330 -244 -281 0 +234 -268 298 0 +-306 339 344 214 337 268 252 -349 0 +-315 259 320 -284 0 +-340 334 327 0 +347 312 313 0 +-348 312 218 225 272 0 +-305 -217 338 0 +-196 -327 299 0 +320 318 283 287 -268 -304 0 +-249 -336 -278 0 +243 349 325 293 0 +-182 172 320 307 0 +345 196 -339 -330 0 +333 -296 332 -319 305 -318 0 +334 322 -331 327 -344 -246 0 +296 261 240 -265 0 +267 -247 333 325 342 0 +-332 -347 -264 -267 -291 -340 -335 -313 0 +-287 -192 -323 310 279 0 +-299 -316 243 0 +-323 328 342 -281 343 0 +-267 -158 324 330 -277 -252 284 310 0 +264 -267 339 -235 0 +-324 -335 -308 253 340 278 307 0 +294 -318 280 -324 -169 335 314 0 +179 316 347 339 0 +270 -340 -333 -309 -310 319 -272 -349 345 -312 0 +-223 -312 -311 -284 -288 0 +272 -299 -332 -331 0 +315 341 -339 316 -311 344 0 +-262 201 -324 0 +-333 267 247 -320 0 +198 -267 -255 0 +259 341 -313 -349 -283 332 346 0 +309 366 -380 361 -362 0 +362 -301 289 370 254 0 +253 -364 352 -324 0 +387 -355 316 0 +-298 347 -338 368 371 -307 317 0 +-347 283 -342 0 +380 255 267 374 -313 -379 378 357 -291 0 +-237 -373 360 -348 364 -369 -339 248 0 +-299 -356 -253 386 0 +-301 -365 372 367 0 +-287 335 -370 -261 -310 0 +-376 -294 -366 381 0 +274 -377 -374 246 -350 316 318 0 +-387 287 -342 0 +359 322 -249 268 -371 0 +-313 363 278 284 0 +313 383 -342 -332 -348 0 +-363 353 -368 0 +382 -367 -314 0 +309 -331 -382 -318 325 -353 -272 0 +385 272 -347 0 +-381 -347 -375 -360 0 +354 245 -384 -297 379 0 +-273 376 -372 0 +377 -188 -351 0 +266 -385 -246 272 -358 0 +373 350 -357 365 -302 -352 0 +262 259 351 -330 0 +384 -313 -340 0 +-383 163 -251 355 0 +-378 356 358 0 +-361 -386 375 -359 -354 369 0 +378 -385 -364 0 +-249 -221 191 -363 -374 0 +-308 -363 -354 -371 -376 380 0 +-328 -282 273 0 +346 -367 372 0 +-354 -361 359 0 +387 338 352 0 +309 259 -384 -334 0 +262 -252 -357 0 +378 -348 -371 181 -368 0 +261 345 383 0 +-372 276 365 255 0 +259 -310 372 382 -292 0 +-310 352 -127 0 +313 317 312 -371 -367 338 0 +-338 -366 278 0 +-342 356 -347 330 0 +-266 206 -351 380 196 243 -374 333 -355 257 -356 305 0 +371 -352 -320 0 +-367 -329 385 0 +-276 307 -356 0 +-340 367 -331 341 -295 -285 344 0 +276 312 0 +339 -254 -353 -386 -364 255 -385 -304 0 +-375 372 329 0 +354 -243 351 -317 353 364 -374 370 0 +347 367 -356 383 0 +298 -310 347 0 +360 291 374 334 385 -384 -203 377 -326 0 +-381 -357 -342 332 350 0 +-368 -357 -374 0 +-374 383 214 0 +272 -256 264 356 0 +280 364 366 -357 0 +372 -358 382 360 324 -357 0 +-375 250 359 -244 376 -303 -382 0 +-304 353 -350 369 0 +289 -357 -235 0 +373 -322 379 375 -380 -381 0 +265 -363 287 -358 364 -291 0 +352 243 -325 334 271 0 +313 -376 266 297 260 0 +365 316 336 370 0 +-335 -361 -357 -383 300 356 0 +-254 362 319 -273 -272 0 +339 385 215 -376 0 +-342 347 -335 0 +-378 369 332 0 +382 -379 -369 301 312 -357 363 -268 367 -253 372 0 +-366 -254 -283 346 0 +243 -182 -287 206 0 +-368 298 350 377 371 -342 0 +323 -248 374 359 -363 0 +252 -248 -280 375 0 +363 311 253 0 +-316 -365 359 0 +-369 368 -305 366 0 +-357 336 281 -375 350 0 +-383 251 -333 0 +366 -307 255 343 384 319 -189 -320 324 383 -379 -247 0 +-383 -369 -371 -334 194 -292 356 363 -284 0 +370 383 377 384 0 +-350 -306 202 -357 373 0 +-348 332 190 -333 337 387 -310 -361 -198 371 -319 0 +183 352 308 0 +-301 -304 386 202 358 367 -370 -385 -376 -323 -374 0 +377 -384 366 0 +383 381 -307 -376 0 +-257 356 358 380 0 +-321 -335 -386 0 +-379 375 -367 0 +298 -256 343 0 +317 268 371 -385 -368 292 -359 -306 253 344 0 +373 -203 -298 0 +304 -347 246 385 290 -314 -259 0 +368 236 377 -354 0 +350 358 331 367 371 379 0 +323 371 -301 0 +201 -366 346 0 +-208 286 363 377 0 +292 249 369 0 +-314 362 304 360 305 -382 0 +380 -345 -385 0 +-377 -386 323 283 0 +302 -313 -320 322 385 0 +288 -340 292 0 +-186 339 250 0 +-383 -308 376 357 -360 -340 0 +378 -355 -366 0 +-379 317 -380 0 +-337 -361 310 -384 0 +364 -331 -303 307 0 +-363 387 379 -355 0 +-307 -215 -318 0 +-353 264 372 -373 0 +329 -377 -368 -334 307 363 0 +-358 365 263 320 -258 336 381 266 0 +-384 386 -282 285 0 +363 -214 -360 0 +324 268 -226 -364 -387 304 284 0 +-302 -296 -191 275 0 +-246 259 -386 311 261 360 -365 -333 366 -378 205 0 +-304 310 -371 -376 0 +290 387 -342 381 376 -382 0 +-379 -310 -361 -313 275 0 +263 306 387 -298 291 0 +-385 -365 -315 -321 330 0 +312 276 -371 322 315 -376 0 +377 -312 325 0 +-376 361 339 0 +-370 -363 -362 0 +252 -324 -306 329 -377 -255 0 +356 243 -315 0 +-362 -386 342 243 0 +266 368 -307 -308 0 +306 352 249 366 -357 0 +-366 226 380 0 +-251 119 -385 332 -383 -204 322 -300 -337 285 -342 311 -359 351 0 +356 361 324 0 +-298 -383 341 -309 0 +-250 373 -378 -321 -316 306 239 -385 248 0 +19 359 -356 -376 -381 354 291 369 -355 0 +359 -367 -285 0 +282 -321 369 -199 329 -376 320 0 +-313 367 269 0 +-321 316 -272 336 294 -353 -357 0 +-316 334 -279 333 -312 352 340 0 +-310 -178 -166 245 0 +-357 -386 374 -373 0 +-387 -371 -356 -358 0 +357 -343 352 -259 0 +362 -284 387 -357 0 +374 335 345 0 +-296 385 -314 377 371 288 -109 -363 0 +332 -373 374 0 +-316 -358 352 380 -371 -362 -377 0 +368 287 257 340 -321 260 0 +-352 -367 0 +-376 -355 320 0 +368 -277 -344 0 +-358 -376 -348 380 339 -316 0 +-372 -374 324 -326 0 +-361 -365 -378 -368 0 +323 -255 -359 0 +-376 360 373 0 +-377 382 -328 379 362 -372 -376 -355 -383 265 -318 0 +-127 345 -293 0 +-258 -352 -382 -332 -307 224 359 0 +297 332 365 0 +-381 197 349 206 0 +250 -369 -315 356 0 +322 377 361 374 -372 0 +-371 -292 -380 331 -321 -354 -353 0 +-356 347 382 -244 -283 0 +-355 -182 361 -381 0 +-361 365 -315 383 0 +-276 -312 -308 327 -256 372 -318 0 +303 347 -242 -365 0 +336 -248 376 360 380 -329 191 364 362 0 +377 -351 -352 -291 0 +307 -366 327 0 +367 -220 -383 -362 0 +367 348 372 0 +332 -262 -351 322 -306 0 +248 366 -129 0 +281 374 -308 -361 -373 -327 355 -338 -343 0 +375 358 -212 0 +-355 -312 -357 0 +332 361 170 -326 -256 -311 -385 0 +326 354 -244 355 291 -290 -332 0 +-347 357 -387 -327 0 +-267 -326 -249 253 378 0 +-373 368 371 -317 370 354 -361 -311 0 +325 285 -385 0 +365 -348 351 -250 0 +-376 -306 -277 379 -313 -354 0 +-365 -328 -337 0 +350 -366 271 -307 0 +-287 -384 -222 -387 -365 363 -385 0 +367 -372 249 360 -344 0 +-223 -280 -375 -337 0 +350 361 -380 -376 -349 0 +-316 -257 -270 366 373 385 0 +-372 -387 313 273 -357 249 0 +-305 370 372 -347 352 0 +-383 363 311 0 +292 332 -364 0 +283 -329 378 294 0 +-319 -366 301 0 +-358 374 -347 -369 0 +360 377 363 -378 -343 0 +384 -313 -382 -353 372 0 +308 -360 376 0 +368 364 358 0 +354 273 0 +-325 -376 -285 -355 386 -194 0 +-239 -326 -316 375 0 +360 -213 368 0 +304 -330 -358 0 +-372 -99 -386 294 0 +367 -353 366 0 +-366 383 337 -176 0 +-283 336 327 204 0 +360 185 191 363 298 -381 364 0 +-365 -322 339 387 -323 -360 -359 -350 364 0 +373 -296 -320 381 313 293 357 208 -368 -367 -356 0 +348 -368 336 386 367 0 +383 246 299 -342 -296 387 0 +256 -246 -356 258 -354 330 0 +300 162 334 -336 0 +267 -361 -329 -317 -355 345 264 -368 -297 -229 380 0 +-379 -281 349 358 0 +294 357 -256 245 356 -377 382 362 375 -286 0 +382 -320 -348 -372 -363 -367 334 266 0 +-358 -365 360 -201 278 0 +-356 -347 -334 -358 -340 -178 326 -370 0 +372 377 328 357 369 -358 272 311 345 305 -353 -246 -355 -380 364 -342 -334 0 +-382 -349 -321 376 368 0 +-253 -380 -362 -228 0 +324 -384 -359 -244 0 +-362 295 -307 0 +-356 -367 -384 0 +-372 -353 205 318 -279 -291 -264 0 +-376 -379 347 332 -356 0 +224 -282 -329 0 +-365 315 307 384 0 +230 385 -225 331 0 +-351 -358 -355 0 +345 272 -376 245 -350 0 +-356 334 -371 0 +-250 -351 357 283 -306 243 262 354 -379 -367 -318 -361 375 314 279 -358 0 +319 326 -221 246 -286 370 -369 262 350 371 0 +-385 185 -236 380 0 +374 -373 257 -282 0 +-351 368 353 0 +-178 -229 386 312 -374 356 378 334 363 -328 -295 0 +-356 -263 316 -366 0 +324 373 -299 -361 -207 344 -375 -319 0 +384 -385 -291 -367 374 0 +-371 -225 -374 0 +-351 360 -313 364 0 +304 326 -348 330 0 +206 72 346 0 +367 373 351 288 364 0 +377 381 383 365 0 +-273 -183 370 -280 325 363 0 +281 351 -285 371 -260 314 0 +386 368 293 358 0 +-368 383 -373 268 360 374 326 -309 -351 0 +-352 321 354 214 380 -353 -306 -381 277 0 +-368 -326 -328 349 -378 339 366 276 373 -265 -370 -259 -372 -365 0 +-329 362 256 369 382 286 -266 381 0 +-387 -375 291 358 -377 0 +-379 -382 328 0 +377 -354 -335 0 +-393 -335 267 411 -353 391 -398 -321 0 +408 399 404 0 +373 -248 -414 347 0 +-370 -362 321 -394 -391 397 0 +383 -333 412 0 +326 -257 252 0 +-326 -318 393 -405 413 -410 0 +376 -392 -416 329 0 +-408 401 -327 379 356 0 +-230 306 263 -383 405 0 +-397 364 395 355 -310 -378 363 -390 409 -388 0 +-402 379 414 312 0 +-350 -400 345 346 0 +-307 -383 342 -403 -350 256 310 394 406 -354 0 +319 396 389 0 +400 -399 376 388 0 +390 -401 -344 248 284 -409 403 -374 416 0 +-395 -404 251 -362 0 +-415 -412 -389 402 -407 0 +415 407 398 269 -406 -411 -251 410 -374 384 0 +356 392 -292 0 +-413 -396 415 -397 0 +398 -387 379 -390 -352 0 +400 416 397 -404 350 -274 377 -398 0 +404 -409 406 0 +-404 322 -313 -368 374 0 +408 -399 223 335 409 -326 0 +-384 370 304 0 +-367 -401 403 -410 400 0 +373 270 -408 -414 -312 -370 -324 0 +409 -182 -407 -353 -320 295 -244 0 +-388 -400 -405 399 410 0 +286 -315 -366 0 +-373 -410 403 -411 408 412 0 +406 408 -376 374 -388 0 +-397 314 -416 365 0 +269 285 -381 0 +-407 166 332 405 0 +-372 -269 376 0 +347 405 386 -399 -407 0 +-403 337 367 0 +-256 405 -384 0 +-246 -331 360 284 0 +345 -181 -381 0 +242 327 389 -392 -356 0 +-380 363 395 255 -397 0 +-256 410 -380 356 0 +-407 323 338 403 0 +-355 -280 405 250 -388 -254 0 +-314 384 280 -390 416 375 -381 -343 -399 394 382 -396 407 379 -406 356 0 +356 381 -403 393 -402 268 -390 312 -399 -376 0 +415 391 -255 0 +374 -409 -356 390 -406 -394 -399 0 +-362 -238 -366 309 -392 0 +251 375 396 0 +-408 -381 -265 -394 -413 278 0 +406 -391 -381 0 +-356 -278 396 0 +413 -400 403 -277 0 +351 416 352 -385 394 0 +403 -268 405 0 +393 388 412 402 0 +332 412 -404 0 +399 -391 303 374 390 -392 -394 0 +389 -392 409 0 +-382 373 384 0 +-395 415 416 -337 412 0 +-413 -352 291 -390 0 +226 373 -394 0 +-363 -366 -414 412 365 -409 331 -370 0 +349 -409 -367 0 +-324 -398 387 342 392 0 +-397 407 387 0 +399 375 408 -390 0 +-403 373 299 405 -357 -411 -399 0 +388 335 -394 0 +-405 404 329 0 +-163 368 -358 -283 -409 373 384 0 +201 376 329 -388 309 341 -350 0 +-395 -380 -410 -407 310 398 406 375 0 +-413 361 -295 -184 0 +333 -252 -375 394 410 -406 0 +388 338 -319 -359 -390 389 0 +388 255 -403 -408 290 -374 -397 0 +-403 -392 -407 0 +405 319 -413 -409 384 0 +403 -383 395 414 251 373 0 +396 -407 -394 0 +414 370 -398 -405 -401 -416 291 0 +-399 352 258 -407 0 +411 412 409 182 393 0 +-407 403 373 -410 -399 -415 0 +-198 -289 394 297 372 391 414 -356 0 +-320 -350 -414 0 +402 -407 -395 0 +244 -360 -403 0 +-416 -403 -356 0 +389 -336 412 0 +408 -261 353 -395 0 +362 -381 209 0 +-369 396 388 391 0 +-412 260 -391 -254 0 +398 -402 -412 407 0 +354 -262 355 -368 396 -405 -222 0 +-389 -303 405 412 -353 0 +381 -279 0 +-391 -354 408 0 +356 -390 -261 -364 416 -337 -336 353 -405 0 +392 361 -391 -398 -415 -381 289 403 371 0 +403 -377 -363 0 +-398 -309 411 -368 0 +415 394 -384 0 +389 403 -393 -362 -341 0 +411 -260 394 -401 0 +-347 395 403 -405 -381 -282 -404 388 -327 336 361 0 +-395 400 414 0 +410 -225 -394 0 +375 -402 414 0 +157 -377 399 384 -393 414 -403 0 +385 -382 -407 0 +-394 -403 397 -409 0 +263 392 404 0 +-356 391 353 367 -312 0 +-348 228 409 -360 0 +409 400 -197 0 +-392 -350 319 371 0 +-410 -393 -357 -394 -402 0 +388 295 -378 389 -404 -319 0 +-312 364 -359 409 338 397 -372 -366 -403 0 +-392 -380 340 -390 347 0 +-354 392 -403 0 +-393 362 406 0 +397 -362 -313 0 +388 243 317 -416 0 +389 415 -343 0 +-174 394 -415 0 +-356 -408 392 375 352 -336 412 414 -395 393 380 279 0 +322 336 364 0 +-364 328 399 0 +227 411 -407 -416 -394 278 -414 0 +413 -344 345 -356 0 +-274 245 402 367 390 0 +-405 391 374 -400 -389 306 370 -414 0 +-348 359 360 0 +-383 397 391 0 +315 -416 289 -404 0 +-228 -377 361 -382 407 -403 0 +-318 -406 292 0 +-313 415 -384 243 -396 -399 -402 -324 -376 0 +-406 397 -392 -307 -403 -407 387 0 +-371 -387 -328 397 409 395 0 +-393 -322 -364 -373 413 0 +-410 404 -409 -403 0 +-404 388 -414 -362 390 -351 0 +-412 -405 -267 410 319 -387 406 310 -408 415 -313 -399 274 -401 0 +-386 -394 -362 0 +-318 -411 -340 0 +295 282 -388 -260 342 0 +-381 -351 -412 -414 -404 389 -406 -410 -415 405 0 +-415 385 341 0 +-401 -296 -250 0 +-406 -416 -327 -403 310 405 -299 0 +388 342 -411 -379 0 +368 389 -409 0 +-386 408 402 323 247 -397 0 +361 307 386 -401 -390 -391 0 +345 -412 -401 0 +-399 376 275 403 0 +406 -274 404 0 +333 406 -407 0 +394 373 403 -411 0 +-406 -382 -403 -343 0 +-317 -415 -284 -334 -349 0 +391 -365 -411 401 0 +404 -394 -402 396 -397 267 -403 -398 370 209 0 +390 -372 314 -354 344 0 +329 -364 256 409 0 +362 407 380 393 0 +-377 -326 -247 0 +395 -372 190 0 +408 -244 -262 0 +-400 357 402 350 0 +384 413 -390 395 0 +377 252 286 -400 -356 -289 -388 0 +378 -394 -392 0 +395 363 371 0 +390 415 412 -395 -393 0 +-312 273 414 388 0 +-408 -411 -402 209 0 +288 -392 -381 0 +356 326 405 300 0 +416 -388 309 352 -366 -404 0 +365 375 393 -410 -328 0 +285 -362 -374 313 344 375 0 +359 -416 -171 406 -393 318 0 +391 307 -381 -349 0 +353 406 -321 393 0 +409 400 356 0 +-405 394 -361 0 +405 -391 -383 0 +-402 369 -410 326 -261 345 405 -388 -366 399 288 0 +-384 374 -267 277 395 -405 0 +399 283 300 0 +367 -377 -392 -388 -412 -390 -395 416 0 +-299 -281 388 363 -411 412 0 +316 396 380 0 +402 313 -339 -359 0 +-348 335 -389 0 +363 402 377 -399 0 +398 355 -263 0 +353 307 396 373 0 +-411 -383 397 409 407 -414 0 +-377 412 -410 312 0 +-406 -328 289 0 +398 -391 -410 0 +358 391 283 0 +-369 -405 -376 384 -410 -385 0 +-404 391 -313 354 411 -388 0 +401 -273 -312 -254 -344 -315 0 +-387 374 384 -396 406 413 0 +337 -355 -409 -314 -278 0 +350 364 -405 0 +390 403 -387 411 -377 0 +413 -385 365 416 -387 351 -391 -390 -360 0 +368 344 408 345 371 -279 0 +410 -378 356 -413 407 0 +391 402 375 0 +402 -447 285 -374 0 +-426 452 -449 422 420 406 0 +-446 427 -411 -418 -402 -461 0 +-374 -432 -401 -379 449 -300 419 -441 -428 -437 0 +-457 448 324 0 +-450 412 -431 460 -398 0 +410 247 -422 -387 0 +-420 355 450 423 -413 437 403 0 +-456 -394 458 399 0 +418 -433 -367 442 -356 0 +430 359 403 -383 0 +445 -313 -452 0 +363 -440 -425 0 +-448 443 455 0 +-385 -339 -453 373 -367 377 0 +-406 414 -369 0 +-399 435 425 -402 0 +-423 -399 -458 -429 0 +-379 -270 -444 446 -427 -359 -443 0 +-430 431 342 453 -419 428 0 +402 -435 -417 -416 456 461 0 +-413 -402 -424 414 0 +-387 -402 -445 0 +-400 421 385 433 -439 0 +393 429 439 438 -412 0 +285 440 -442 409 0 +-409 389 -434 447 444 0 +406 441 409 434 289 -438 -382 -459 414 -261 -455 0 +457 -412 417 0 +454 -401 -451 415 0 +451 293 391 408 -409 0 +-334 424 -436 0 +459 426 -277 432 436 -460 0 +-454 -421 -422 0 +422 -461 -452 -443 0 +-361 -419 426 -392 413 400 0 +-459 -413 430 0 +285 -376 -414 0 +-407 -388 -431 0 +395 -401 446 0 +-432 -255 -449 0 +417 -457 -458 446 408 -415 -448 -422 0 +-455 418 -433 0 +404 391 392 0 +446 -301 -435 0 +405 438 233 0 +444 -459 -415 373 0 +392 434 -443 0 +-312 -416 351 266 -460 0 +402 -414 -453 -437 0 +429 -401 408 -442 423 -269 406 407 295 0 +-418 391 439 -422 0 +-437 -433 449 -378 0 +-377 425 -392 -378 -405 -417 -415 449 0 +-417 -330 459 -376 -227 433 -455 287 0 +364 413 -458 442 312 319 0 +-426 457 -429 403 0 +-428 -442 -443 0 +419 -393 452 430 0 +-442 454 -347 368 -444 401 0 +393 -420 165 -432 0 +446 -395 422 -419 0 +401 -352 -407 -426 -461 458 0 +-446 426 436 410 0 +-443 452 -386 -331 0 +-409 378 -450 0 +360 -395 -446 365 391 0 +270 -378 -459 398 414 -365 413 0 +-417 -363 418 457 -448 -414 0 +-459 -436 408 0 +-354 215 -364 -335 -375 0 +404 430 397 419 372 0 +-420 -277 -395 -389 -425 -457 0 +-319 -277 442 356 -406 -375 0 +429 437 -451 -389 -249 364 0 +424 -340 334 350 0 +-411 -377 371 -434 0 +419 -282 418 -397 367 -362 455 -458 409 452 0 +-411 434 412 398 -353 440 0 +-387 -433 -411 0 +285 450 413 -431 0 +421 -413 337 -401 0 +450 -436 344 0 +387 -397 -459 438 0 +399 -378 411 0 +393 -411 -336 458 -420 0 +-437 -304 -418 -328 0 +-438 362 -415 409 -407 -453 -425 0 +-405 385 -354 -442 -398 0 +-361 -419 410 0 +362 418 -448 0 +-451 -392 -401 -440 0 +444 -438 396 388 -364 369 395 460 449 416 336 0 +329 -454 -436 0 +379 -420 -405 402 0 +395 388 -401 427 -244 368 -436 -451 0 +-244 -433 -459 -449 0 +423 439 452 -405 0 +432 411 354 0 +440 447 -406 429 0 +422 -446 284 252 -434 0 +444 -350 -443 -420 421 0 +-432 426 -375 0 +454 419 409 0 +-406 411 398 0 +-359 -310 -455 0 +-439 376 -433 423 -422 0 +411 249 185 -414 -413 0 +-404 -426 -456 -455 459 -356 -389 443 448 -397 340 -446 254 -457 405 0 +-382 -370 406 421 -342 -427 0 +281 -407 -423 -457 0 +-460 -198 -424 -397 412 426 409 346 427 0 +455 398 374 432 -405 430 0 +412 451 265 0 +449 -445 447 0 +-352 -399 -414 456 -427 0 +-449 -423 -406 -451 -446 453 407 0 +-420 -449 -329 0 +460 -326 455 -368 -382 -415 -428 -419 -447 0 +-397 -449 364 357 382 0 +-413 -407 454 0 +409 -452 -390 -418 419 451 -442 0 +390 -458 -373 -446 0 +-432 404 420 0 +375 454 -337 -461 -437 -358 -430 -450 -311 390 0 +-451 400 379 412 0 +-453 -338 442 443 0 +451 344 407 -291 -447 -364 316 0 +-400 -456 -450 -392 -427 -453 0 +-457 -319 413 353 -382 -430 393 -444 -358 0 +-438 323 -374 -339 0 +430 452 355 0 +-450 441 -439 -308 409 -407 0 +-441 -421 331 0 +-456 458 434 -328 425 0 +-452 -384 0 +375 407 439 0 +-441 337 -430 451 -457 -426 0 +422 -383 342 0 +-398 376 -407 0 +-456 -393 -396 -453 449 419 0 +288 406 436 -445 -447 0 +-384 -353 394 0 +415 -419 -424 0 +405 -440 351 -458 420 -446 0 +417 403 -449 0 +402 438 459 -418 -439 0 +-456 426 -431 0 +-431 227 -378 -294 -444 0 +-400 -439 -438 -434 0 +359 -412 -454 451 -439 0 +-314 403 -444 0 +353 410 378 419 330 0 +427 401 390 391 0 +-397 389 333 0 +371 268 416 216 388 -419 417 397 432 0 +-430 -384 433 0 +-409 354 432 -454 388 0 +-435 458 424 -448 -429 0 +-439 418 419 0 +-426 -246 448 -275 408 -447 0 +359 409 -421 401 0 +-421 458 446 359 362 0 +402 418 440 398 -435 432 0 +-404 432 -315 383 0 +393 -372 428 -422 -432 0 +407 -432 -251 402 0 +420 -425 396 0 +-328 -457 443 -454 439 -442 0 +426 -293 428 0 +-328 -414 250 447 0 +422 -364 -411 437 -440 0 +-457 -451 -373 388 0 +-457 391 -359 0 +-398 419 -414 407 443 396 381 434 0 +425 451 -400 375 -441 0 +394 -364 -427 -408 -396 -321 324 415 -379 -275 -446 0 +-449 420 -436 0 +-405 432 376 0 +-401 291 -257 0 +-403 445 404 406 -412 -392 456 -457 -433 379 356 444 -438 0 +456 314 -384 0 +-456 438 416 404 455 -436 -435 419 418 -460 -432 -383 -412 0 +-389 -390 445 407 344 0 +-432 -447 -418 -325 0 +-453 446 -451 0 +-414 -452 -406 -415 377 371 0 +-414 -423 443 0 +-398 440 -396 -393 0 +457 -395 -460 -410 437 435 0 +367 383 394 0 +331 421 -390 0 +408 -362 448 -310 403 -416 -353 428 0 +388 420 377 445 364 424 405 394 -389 0 +-440 448 319 -280 0 +425 -449 -435 0 +428 -393 352 350 -432 -331 -274 -421 0 +-459 415 414 0 +459 -252 -353 419 388 -436 423 354 -261 432 460 406 0 +409 216 450 0 +392 376 455 0 +425 -454 430 -396 -434 0 +441 417 359 -455 382 -459 -410 0 +-381 -429 -350 0 +460 402 -420 0 +408 430 422 -399 419 -317 0 +-436 450 -386 357 -369 451 373 0 +446 442 -433 -418 0 +-419 176 0 +441 412 -429 -460 393 442 387 453 0 +-439 418 430 0 +-443 284 287 -430 371 413 -432 0 +-442 406 451 0 +448 446 -412 447 434 455 -445 405 402 -378 0 +-302 406 -394 0 +353 -412 -117 380 458 0 +-356 438 426 447 -457 0 +-281 -436 -389 -399 -441 0 +-451 449 341 418 444 294 428 -460 -390 413 -438 0 +-461 -445 -454 -460 0 +-438 330 -431 392 -414 0 +401 404 -392 0 +-444 -450 439 302 460 0 +439 393 -401 -399 440 450 0 +434 451 380 -327 -389 0 +-443 -350 -452 0 +432 -452 0 +383 -454 435 -419 406 0 +-431 420 411 0 +-405 -452 -362 -436 0 +437 440 405 430 -447 -351 -276 -410 0 +-387 -445 -250 438 421 -426 0 +410 -403 -419 424 0 +441 450 369 0 +295 -438 370 0 +-407 -446 -434 0 +-453 -445 396 -350 -429 -402 0 +411 -460 -351 410 0 +-401 -305 459 -403 0 +-444 -146 -388 0 +378 307 449 -456 0 +-381 -338 380 -354 439 441 -422 0 +-405 -340 432 409 0 +452 -395 -449 -436 399 -385 0 +-441 395 298 -404 0 +368 458 429 0 +182 457 373 -390 -431 362 415 440 -253 -430 -393 0 +-418 -449 -447 411 -459 0 +441 445 399 0 +421 -429 402 0 +-393 -390 419 449 -340 0 +429 -436 435 0 +458 433 -411 406 0 +-451 -416 390 -361 0 +-390 293 430 417 0 +-431 397 400 -417 0 +-414 -394 -399 373 -260 431 333 0 +381 457 408 -431 0 +-424 -447 358 0 +-254 -437 -460 0 +-281 459 -427 360 -436 -415 0 +300 -441 364 406 0 +-443 341 -407 -435 0 +416 -395 353 -442 -401 -390 333 -424 0 +384 -453 324 -353 -405 0 +-425 -401 -454 244 421 0 +-422 398 -443 0 +-405 402 440 0 +457 392 429 355 -451 -432 -417 0 +-250 -426 -451 -357 -408 398 -391 0 +416 -450 -347 0 +-454 -389 -345 0 +371 439 -404 361 -443 442 273 -389 426 0 +434 -410 -402 0 +-459 -408 361 -378 315 0 +-448 234 -427 456 457 0 +-397 391 461 0 +397 -438 -437 -426 -389 -380 366 -439 -415 0 +318 -433 407 0 +-391 -342 444 451 -442 362 -449 -318 396 402 -426 336 -331 0 +449 -276 418 459 406 -437 -457 398 0 +-441 439 -431 -399 0 +428 -447 363 413 0 +425 448 399 0 +-444 -461 448 0 +446 -395 -397 351 -425 -297 0 +444 347 410 -371 400 -398 442 405 0 +-400 432 399 442 0 +-442 -388 -421 461 -411 -437 451 -460 0 +268 431 365 -438 0 +-426 402 -320 -450 -453 0 +-441 430 412 -418 0 +403 -389 412 410 0 +453 -424 426 405 455 0 +340 422 -351 -255 -405 -451 -434 -247 0 +-377 458 -450 -443 415 437 438 0 +437 403 388 435 418 0 +-417 431 383 392 -388 -276 -419 0 +355 -444 203 -330 406 -326 -456 0 +415 330 -461 -404 -442 0 +-365 -221 -442 0 +-341 420 -376 404 -377 0 +392 -432 -427 443 0 +-430 401 214 0 +-433 455 -398 448 0 +439 -379 -438 0 +-392 419 308 -306 -452 0 +-362 -389 454 421 0 +-255 -431 -435 0 +403 -353 -454 394 441 0 +-433 451 416 412 432 0 +417 -415 -392 -451 0 +399 460 454 0 +452 -429 403 -405 418 -419 -416 -401 0 +-345 -430 285 385 425 0 +419 393 -439 0 +444 436 -424 -456 0 +444 -459 -461 0 +445 -422 -332 0 +-443 -357 -437 -356 -436 428 -427 -339 404 -424 -384 441 0 +426 396 355 402 -409 423 447 -394 0 +451 407 -295 -456 -354 0 +-376 395 459 -440 -331 -396 0 +364 413 390 -400 430 428 -461 -386 -408 0 +-417 401 -342 410 -356 0 +-412 -419 438 -418 0 +-425 424 -349 0 +441 -430 -458 -410 371 -417 297 -356 432 0 +-382 -275 -288 0 +-430 456 -471 458 -447 489 496 433 0 +-491 486 -469 -473 418 -496 0 +-494 488 -478 441 0 +-355 472 -457 0 +473 442 456 -472 425 471 0 +450 -376 419 -342 0 +482 -259 -475 -490 -467 0 +452 467 412 -465 436 0 +-449 345 353 0 +479 444 492 -450 313 0 +329 401 -389 -470 0 +307 444 -477 421 481 0 +-488 -462 397 0 +341 470 276 416 0 +490 461 -221 0 +491 -456 392 410 -476 390 411 0 +493 464 402 -459 297 -486 364 0 +-466 461 -464 494 -358 -422 468 0 +-493 -479 -484 474 0 +-404 -468 469 -306 433 0 +484 480 396 0 +483 -397 -485 0 +465 -492 476 0 +485 -463 475 -482 0 +436 -489 423 0 +-410 417 466 0 +365 275 -291 424 0 +-407 -483 487 -460 251 -481 425 0 +462 303 495 -334 393 478 477 -487 -474 0 +-391 -480 398 463 0 +436 -495 476 446 0 +477 -488 362 388 0 +-270 472 -445 -468 474 488 0 +-394 427 -372 -413 -363 429 481 -412 424 462 -283 0 +463 480 -316 433 494 0 +-387 -495 444 487 0 +-489 409 391 -478 0 +492 480 479 0 +-446 432 -493 0 +429 383 -470 0 +-488 -409 478 0 +465 489 483 -469 0 +-487 -477 -473 0 +-413 -427 486 0 +-460 -353 -376 463 -311 418 0 +-469 -496 -467 491 -420 -492 -130 0 +-309 -403 229 493 0 +-401 -494 463 0 +440 407 -474 -309 342 477 -465 389 0 +485 -249 -474 0 +-351 -496 -440 -475 -480 0 +363 494 -484 -421 0 +-354 -487 388 -489 437 0 +-479 -444 429 0 +474 404 -488 467 -464 493 0 +447 420 0 +-418 -459 -491 -463 -478 -412 0 +-336 478 -445 -451 -446 -462 0 +414 -463 396 -404 487 -407 -488 434 0 +466 491 -310 0 +491 354 -490 0 +476 -422 496 -482 -491 0 +-478 -411 481 470 0 +-464 -473 478 0 +-468 432 -419 416 462 478 -414 0 +-438 -481 -364 0 +-481 492 0 +-471 -473 396 0 +-378 343 467 0 +-481 -459 -466 0 +423 -496 -473 0 +354 -413 182 -494 -496 -427 459 462 0 +427 458 -418 -494 481 471 -493 474 0 +-410 -473 -403 0 +490 368 489 440 -467 471 -311 -437 480 -316 417 -403 0 +-471 227 443 -491 478 409 379 0 +405 -474 421 441 -427 -476 377 0 +-476 -466 -487 -408 412 0 +-427 476 -467 0 +463 394 377 0 +-485 -433 -410 -424 0 +-446 -463 -399 494 474 0 +433 485 494 -389 0 +-279 474 346 -441 0 +-317 -477 488 -375 -413 471 308 -414 -478 496 406 -417 0 +-475 476 443 0 +474 -470 429 388 468 493 -482 -435 434 -488 0 +420 396 -393 475 -476 375 433 -439 0 +-408 -449 -472 -481 465 0 +429 441 477 -398 0 +473 -472 394 0 +-483 436 378 0 +437 373 -320 452 -453 438 0 +479 460 -496 0 +-430 -469 446 426 0 +-483 307 -393 468 -494 0 +-476 465 484 406 487 -254 -429 0 +-419 -468 462 -448 407 0 +-423 481 -488 -445 -493 458 487 449 0 +472 427 -435 375 -462 496 -476 -479 424 0 +-485 399 466 -416 0 +480 420 -477 245 -429 466 0 +-475 419 -319 0 +409 -364 469 496 -490 464 400 434 492 0 +472 -447 -456 0 +-495 -443 -476 0 +326 454 426 -463 0 +494 411 -477 0 +-388 392 477 0 +-476 254 -454 493 0 +491 -430 417 0 +476 462 -485 460 0 +471 -480 -430 0 +389 -480 -176 475 400 416 472 -446 436 0 +-471 -420 -484 433 459 0 +432 -488 -390 0 +-432 436 -412 -270 -467 0 +493 488 -396 0 +423 493 -496 -396 0 +-495 -224 -460 0 +-490 377 454 0 +464 -481 478 0 +426 -464 492 0 +180 454 389 -403 0 +298 339 492 473 -483 406 474 -414 0 +-466 491 393 0 +418 415 477 -311 472 -485 0 +-471 -476 -490 -472 0 +438 463 -371 0 +-440 470 -412 0 +-465 462 -493 0 +487 -476 458 -465 0 +444 -369 -465 0 +-463 488 -428 -483 -131 0 +-493 482 401 0 +-496 480 467 468 421 -473 -487 387 0 +-488 -479 489 -457 -367 -482 474 0 +-405 344 444 -435 -418 -441 0 +-465 -463 -478 -482 -422 -328 -470 451 425 -489 0 +-476 421 444 0 +489 -407 -487 -477 0 +-453 481 487 0 +430 -375 480 452 476 474 0 +-471 418 472 -427 -450 387 0 +-465 457 360 -471 0 +487 375 -364 0 +468 -464 -404 -475 457 0 +-482 465 -457 -487 0 +-496 448 -462 0 +466 -426 -476 -474 398 0 +-462 444 474 470 0 +-403 -426 -419 0 +-486 494 471 -424 0 +-389 -433 -464 0 +-473 -467 494 -412 253 -442 -427 363 469 0 +-465 434 -483 0 +-442 -486 400 0 +-484 -365 -477 483 0 +489 -371 437 477 474 0 +-474 -452 484 0 +393 -495 396 0 +-413 -491 -315 0 +-414 394 489 0 +-441 481 475 0 +-448 461 412 0 +-448 -430 417 490 -416 468 0 +492 485 -483 0 +486 -482 -428 -484 0 +-472 -465 496 -464 -476 0 +490 390 -408 -491 478 -459 483 445 407 465 482 283 0 +-469 -467 -472 476 0 +-427 -462 -467 0 +-405 -354 -392 489 477 -480 0 +391 -485 440 -433 0 +482 451 393 -486 -495 0 +489 -487 425 0 +401 -461 474 0 +-371 -402 -473 -482 -396 494 0 +362 468 452 -428 0 +474 446 325 485 -469 -424 451 0 +-491 -468 -451 0 +451 275 437 0 +-430 428 -410 0 +-493 -479 -468 459 0 +-463 -481 492 -490 -455 0 +-404 407 421 0 +-370 -374 484 458 278 423 0 +-479 -480 -450 -459 434 0 +476 -482 -488 478 398 0 +382 488 -357 -436 -467 -489 385 0 +-426 -398 439 388 405 444 -493 415 -485 482 -368 0 +-430 -452 479 0 +-485 -477 493 471 465 0 +-482 391 394 -436 -466 -463 -479 252 462 -289 456 393 473 0 +492 395 471 0 +441 480 -478 439 -484 443 0 +-447 492 -495 478 -419 -493 -480 0 +-479 -446 434 -459 494 -454 -461 -401 420 471 -476 0 +-466 483 467 444 -492 -421 0 +485 -460 358 -490 -472 -432 0 +488 425 -473 -463 486 409 427 0 +-455 -493 496 0 +-489 467 432 461 0 +487 493 -458 -445 496 326 0 +-400 334 436 491 0 +479 -434 -492 -419 398 467 0 +465 470 -466 417 0 +-485 -275 436 479 0 +-491 481 451 391 -477 0 +464 -463 427 415 -216 -321 385 0 +-399 -407 -485 0 +453 -480 -462 -469 0 +-490 -465 471 0 +490 -486 -464 487 -410 -484 0 +405 -495 -478 -471 0 +496 464 -491 0 +-479 -391 -448 474 445 0 +-413 439 -407 0 +-320 422 446 491 0 +-470 492 495 467 -457 393 0 +-481 -474 489 419 0 +-233 -483 -458 0 +-493 464 489 477 -482 471 -486 0 +-469 465 -367 -486 448 -395 470 -443 -440 0 +-459 495 -493 -489 0 +-446 -485 217 -449 0 +481 -483 463 454 -455 0 +487 -496 -466 -493 325 0 +-484 466 421 -281 0 +392 464 -391 0 +-495 467 453 0 +488 430 486 0 +-316 -470 482 0 +-424 -477 426 0 +406 444 -453 -354 443 386 473 0 +404 -483 409 -331 0 +494 472 492 0 +448 481 -490 477 -388 470 441 468 -447 -455 0 +476 -451 -429 -465 -414 -291 -392 0 +489 -481 444 -382 -494 305 0 +462 453 350 -480 0 +-471 -463 -413 -484 -482 -475 0 +372 -450 487 -486 474 0 +494 490 -464 -459 -387 421 0 +-436 433 461 -452 -486 0 +492 479 471 -469 474 342 426 488 0 +-483 476 -465 472 0 +480 485 487 0 +-425 -312 405 -439 -483 0 +-423 492 487 467 488 0 +-486 487 482 0 +440 389 -494 0 +371 -411 -378 473 0 +-473 493 416 0 +-465 367 443 0 +-411 391 462 0 +489 -470 0 +-362 -471 486 0 +441 -491 -456 -173 0 +-457 490 456 0 +436 494 463 0 +455 406 394 0 +-478 -470 -496 409 -375 435 0 +471 -480 -444 0 +-433 469 -456 -482 417 -488 490 -448 0 +462 -347 443 469 -440 0 +432 -462 -475 -361 -406 492 -495 0 +-465 -433 -415 464 0 +-490 -441 471 -407 0 +-453 -452 477 0 +-342 -266 468 -390 -379 391 0 +-481 477 -471 445 -396 0 +452 377 -420 322 0 +-479 408 487 -417 433 317 485 318 -480 -403 0 +-473 462 395 461 0 +-477 -474 -406 -437 0 +375 -485 -458 -429 379 -487 -306 0 +496 455 481 429 -491 0 +422 -433 263 0 +-452 368 493 0 +-496 495 201 473 0 +-477 -478 -428 0 +-426 -462 -496 421 -399 352 0 +-407 463 402 -488 -422 -481 -464 471 -308 0 +-428 477 401 -433 -447 -475 -493 0 +434 469 -400 -487 439 -455 426 -420 413 472 475 0 +-496 462 471 0 +-245 -480 292 0 +-481 389 494 0 +-423 -494 435 -464 -483 -489 479 446 0 +353 -482 -489 0 +-315 426 -415 0 +-462 475 483 425 -491 -404 0 +461 -486 369 0 +-480 483 435 0 +391 -495 -436 0 +-481 -411 -436 0 +416 -463 476 -455 -488 472 438 0 +248 -418 -451 342 0 +413 -481 -472 -449 0 +468 431 492 -464 -482 -367 440 356 0 +-476 368 -496 0 +426 402 -483 437 449 0 +420 -496 -484 0 +473 -486 -395 483 476 -481 -427 -488 -475 0 +-490 -487 464 -468 0 +-491 435 -443 0 +-468 416 -378 0 +486 263 463 0 +475 -472 -485 -466 0 +460 468 414 -493 -483 -430 0 +-441 419 460 -478 491 -397 -351 0 +-395 -491 474 0 +-339 488 -490 -443 373 367 468 0 +432 -464 306 307 0 +420 -413 -486 0 +467 -517 442 0 +461 456 -469 382 -453 0 +506 470 -487 -455 462 0 +-523 -477 460 0 +-502 510 -526 0 +-421 534 478 368 -536 0 +-525 -449 426 501 0 +494 502 -518 486 0 +517 533 527 441 0 +-351 -398 -507 536 -506 0 +-529 -463 -399 481 515 -474 -412 0 +485 -531 483 0 +475 -511 -455 523 507 0 +439 432 446 -534 -482 -490 -479 0 +464 -498 468 0 +509 535 467 -497 -516 -522 -515 524 0 +500 -450 -510 488 382 499 -527 -426 -530 0 +403 -350 -500 -462 469 -488 -513 0 +529 -492 518 -509 497 -514 530 0 +505 -464 480 0 +463 458 516 498 -501 0 +491 513 -535 206 0 +433 440 -415 0 +300 480 508 -520 0 +-244 -505 -331 -512 0 +504 528 511 -464 -499 459 0 +464 -532 0 +-508 -504 331 496 -466 503 0 +-403 521 477 0 +417 425 275 512 0 +531 491 532 488 525 0 +-521 520 -441 0 +-351 472 -445 0 +339 481 472 424 414 0 +472 491 495 -188 -528 404 -519 0 +522 -533 472 394 465 483 489 514 431 0 +395 526 -524 0 +-503 519 355 517 0 +468 524 432 -433 -504 528 0 +-505 -322 -527 508 531 425 515 406 483 0 +468 502 519 -483 532 -504 479 0 +-516 405 -421 -490 417 0 +487 531 502 0 +505 502 -515 -524 254 -501 -498 0 +-507 478 -506 -493 462 -522 -476 -516 -524 -526 0 +-396 463 -517 0 +500 517 -477 0 +463 -532 512 479 -496 -524 502 0 +-518 -464 -525 483 0 +536 468 -485 -497 -432 0 +-487 -514 532 0 +534 -467 -471 -485 415 0 +-423 528 -463 513 485 0 +489 408 -532 -530 0 +-479 513 425 507 -535 -462 0 +-472 -460 -536 474 448 -406 419 0 +437 -532 -531 -535 495 0 +468 -528 -501 -513 0 +-515 -504 -438 448 0 +530 -495 -444 478 -526 426 -534 479 0 +-518 -499 465 364 -525 502 -517 497 505 0 +394 -533 -524 -478 482 -464 0 +432 499 -478 -495 424 509 0 +516 528 476 473 493 530 -310 -462 0 +-511 488 528 0 +-508 531 -521 0 +501 -436 319 529 0 +-528 523 514 369 0 +490 535 494 501 0 +-514 -523 519 -522 0 +500 243 -469 0 +486 -505 508 -469 0 +508 529 -463 493 0 +520 531 -468 0 +513 507 495 -405 515 -526 421 -432 527 0 +490 529 -485 405 0 +514 456 509 -426 0 +-510 516 -520 524 -472 469 0 +471 -464 -435 -475 524 460 0 +510 500 -517 -531 -389 -286 0 +421 -521 -523 0 +-502 534 354 -524 0 +-477 -468 -480 0 +392 -355 534 0 +516 -447 521 -397 0 +-500 -409 -519 458 0 +517 532 -527 472 0 +-437 529 -536 0 +489 -403 -472 -492 0 +-521 513 518 478 531 0 +-475 522 -431 -524 0 +490 -251 509 -365 364 -524 0 +-536 512 497 0 +-323 -450 -519 0 +-525 530 495 0 +-514 399 -498 425 -486 526 0 +-482 -508 512 410 314 470 0 +-445 -507 -535 525 298 333 0 +381 502 -522 494 -498 516 -526 -512 0 +504 523 -445 -524 405 -519 0 +-517 -388 -497 0 +-501 504 -387 0 +-526 512 -489 488 -495 -515 -530 -437 0 +-417 -505 -356 0 +-512 -486 516 0 +519 525 431 0 +-515 -496 510 0 +-534 -450 377 406 0 +-516 496 -466 -502 0 +-477 -462 504 -475 -534 -486 502 0 +515 -501 -493 0 +520 449 498 -399 522 -525 523 0 +-499 467 -506 0 +-519 -408 -470 -501 503 533 -483 0 +-356 500 428 0 +510 522 504 -528 -530 0 +-447 520 -395 -484 0 +405 -526 529 -519 -521 0 +473 -526 -508 505 520 0 +-511 -520 -503 -470 -475 383 523 -430 -427 -388 380 0 +516 502 -438 397 499 0 +-465 -529 485 533 535 0 +-495 -316 532 -468 0 +489 505 529 500 0 +-475 391 -422 526 0 +505 462 503 0 +468 518 -401 455 463 0 +-527 536 -252 -471 520 498 507 -439 0 +521 515 511 0 +518 -487 -521 -510 527 -499 -530 516 465 0 +-506 -462 -458 -487 -484 0 +490 -453 -480 520 481 502 -486 0 +-536 472 526 -503 0 +-513 516 -455 -464 -525 -494 -535 0 +-497 -468 -528 -467 -508 407 518 0 +501 522 -534 0 +-481 503 416 477 0 +-534 -465 -476 371 0 +478 -373 418 0 +-530 533 -514 0 +-426 -439 528 -418 0 +-468 -409 462 0 +-514 -515 -491 0 +-520 -498 518 -497 -480 -483 500 0 +-494 500 -492 0 +498 -413 506 -492 415 509 -431 0 +510 359 -381 -521 513 -390 522 528 0 +506 502 -528 0 +-445 -524 -502 0 +534 465 -443 0 +-479 -451 -474 0 +493 433 -482 -474 476 528 0 +-518 532 370 529 0 +536 504 -481 457 506 -499 -529 0 +-257 -418 -480 0 +-247 -526 -516 0 +-437 525 436 482 -517 0 +-395 503 493 533 512 511 -532 0 +-486 -532 181 -479 0 +509 -480 428 526 506 516 -530 0 +503 -533 487 0 +467 515 489 0 +526 -475 -218 0 +-506 -369 498 -510 -520 -518 -496 0 +-505 506 514 532 0 +-495 496 -429 514 -420 525 -499 512 0 +-518 499 -341 0 +516 460 -466 0 +-479 504 528 0 +-493 436 -520 -532 0 +466 -532 -388 476 0 +522 496 -481 532 -448 -506 487 188 -531 -473 533 -426 -528 0 +475 531 464 530 480 0 +-492 477 482 -518 406 0 +436 -528 -517 487 0 +479 532 515 501 524 0 +-525 -527 487 -356 531 0 +499 -504 -435 482 506 -527 -458 -469 -428 0 +-489 -508 431 0 +-439 -428 -520 -416 448 530 396 -499 -502 0 +245 493 497 -522 -412 506 523 276 0 +-437 -378 -500 -530 535 -501 484 355 -287 -495 0 +485 -394 -519 0 +-525 503 535 0 +-486 -441 -482 0 +-495 490 366 -516 -441 0 +390 513 -474 0 +382 443 -468 -520 0 +-511 -510 477 522 521 -494 413 505 -465 -278 -529 0 +-509 -503 421 0 +406 512 383 -421 0 +533 -279 475 524 387 -466 0 +526 500 -512 0 +-529 -525 -406 509 -512 515 -524 463 0 +-515 514 -382 0 +535 -491 -481 0 +-504 -523 335 494 0 +-418 -521 527 -483 0 +500 -478 429 0 +532 439 -358 525 523 0 +-485 484 499 506 491 483 -529 0 +494 468 -350 0 +486 446 -526 0 +510 505 -518 -499 0 +-385 508 -276 470 -530 -483 485 534 0 +446 399 496 479 -506 412 -437 -489 520 505 483 334 486 -528 0 +-486 504 -534 -434 -478 0 +522 -534 477 0 +-524 -404 490 -473 -464 506 0 +498 -503 -440 -463 529 0 +488 -499 433 0 +519 512 517 -505 -465 0 +-528 -480 -475 508 530 -453 -518 -459 -446 0 +389 395 481 -523 528 -535 399 0 +501 -531 514 0 +525 497 -517 0 +-495 536 402 0 +-478 -521 359 487 -489 507 -454 0 +505 -470 525 0 +527 -507 492 499 -518 0 +416 -468 -525 -512 -531 419 472 513 518 495 -484 0 +450 -462 433 0 +-498 465 528 -474 0 +535 489 -398 -414 0 +-469 490 491 -444 -536 -464 0 +-533 481 -505 0 +-321 535 513 -421 523 502 401 0 +457 435 -490 0 +-500 -489 -492 0 +-536 -480 525 0 +528 529 471 0 +491 -472 470 0 +297 -469 -503 528 0 +513 524 -485 0 +511 -528 -518 407 0 +-467 487 511 0 +-531 437 463 -534 0 +-396 462 -512 -498 516 0 +-498 -532 522 -430 -434 -475 218 -496 0 +-532 522 -518 0 +504 466 -522 392 -500 0 +-415 532 -390 0 +470 -515 528 389 465 502 0 +454 441 489 -521 -445 -493 0 +-518 -342 -522 -505 -489 418 0 +-523 -493 481 -496 0 +359 503 401 466 443 388 -521 522 -146 530 0 +453 -474 470 -502 0 +403 -391 -505 522 -468 -489 516 0 +-534 -520 -505 518 -519 0 +525 -444 -481 -367 0 +533 -429 483 0 +-460 488 -415 0 +-487 445 516 523 423 0 +-523 -526 -474 0 +-314 519 -431 -454 460 -463 520 0 +466 -417 -568 -544 537 549 -495 548 0 +498 -581 466 -457 -506 -572 0 +572 -548 -570 -415 0 +-443 577 478 578 0 +-470 -552 574 0 +580 552 -521 -512 553 -557 540 543 560 575 0 +-508 -478 -472 -521 569 -495 0 +533 -495 -525 0 +474 359 532 -533 -534 -494 0 +-569 -546 538 437 558 -507 -562 -485 555 0 +-533 -560 509 554 -564 -429 -579 -506 559 529 -491 -577 -578 0 +-574 579 -550 0 +-558 570 -545 -553 0 +568 528 518 -571 567 0 +525 563 581 551 536 394 -480 539 571 -549 -561 -559 -537 -441 542 -533 0 +541 -554 -551 -575 -540 474 0 +550 -498 573 0 +561 508 -576 -519 565 -538 0 +515 566 546 0 +479 576 -405 -498 562 -542 -543 490 -580 0 +-555 564 468 503 -541 -566 -478 -255 -532 -473 -563 300 545 0 +524 556 547 544 413 -539 0 +-536 425 474 494 0 +-573 -500 496 0 +-565 -485 -556 557 -517 -547 472 0 +412 -567 564 0 +-548 574 542 525 0 +-565 -401 555 0 +-570 460 509 0 +-442 -405 -542 -469 556 539 557 546 -523 -467 0 +-574 477 537 0 +532 384 -550 565 0 +-562 -539 -498 557 0 +-569 553 460 -550 517 -555 -514 0 +573 -533 542 -574 -473 0 +-525 -517 540 567 578 -544 -440 0 +313 -571 -543 -566 -555 576 -465 -564 0 +508 550 532 0 +-567 -471 -548 0 +570 509 -532 -517 0 +513 -443 551 526 516 0 +-472 -468 -557 -552 0 +-499 577 501 571 -481 0 +-517 -404 -541 -540 0 +-474 -561 543 0 +574 470 373 -393 0 +-497 -579 460 -537 492 -570 -577 -549 0 +552 559 -485 0 +-554 544 435 -481 -579 0 +413 542 522 0 +519 -551 391 -581 -491 552 0 +-452 430 -579 514 0 +-424 566 -383 0 +-508 453 541 552 515 0 +514 -481 -564 -473 -488 -500 562 -482 0 +529 470 -420 -569 504 -557 0 +-567 -558 -579 -517 497 561 513 -569 419 0 +542 581 550 0 +508 -449 -557 -559 504 -555 -498 0 +-496 -563 -493 573 0 +549 -519 537 538 -571 534 -514 0 +-421 530 -550 540 0 +447 -528 578 -567 -518 0 +-507 -530 540 562 0 +-397 -557 360 -513 575 -472 0 +543 498 565 -580 0 +580 487 572 477 0 +564 -523 -512 0 +530 567 -535 0 +-558 -512 566 -467 0 +-576 493 522 0 +559 -463 494 556 0 +555 575 549 0 +-577 -374 454 312 -569 -511 481 0 +-558 580 562 -549 557 472 -495 0 +-545 510 -578 -543 -482 -566 -468 514 0 +-510 -478 -532 0 +567 573 463 -562 -505 550 403 0 +496 551 -538 389 434 0 +-513 -468 -394 521 0 +-565 498 -572 558 -512 0 +-516 -546 -535 0 +-564 -512 -265 -550 538 -530 -574 540 -573 -508 480 -514 0 +-573 581 -466 0 +507 445 554 0 +562 -462 -548 -420 -580 0 +524 518 -367 -493 0 +581 -424 -541 0 +518 -581 -563 557 478 568 0 +561 522 545 0 +-405 -418 -480 -560 0 +-533 567 545 -574 0 +572 503 -537 478 0 +539 -577 561 0 +-462 334 549 -558 -424 0 +411 -529 -571 490 0 +543 -548 -507 -570 0 +539 420 485 0 +549 517 568 570 562 521 -559 395 -561 0 +-553 538 -573 -481 547 0 +580 578 -373 566 520 -579 0 +-555 -580 577 565 560 0 +523 477 -507 0 +-536 581 -561 -471 0 +-485 -428 503 550 539 -465 -566 -573 473 -568 -523 0 +409 -522 -501 0 +541 549 -539 0 +-495 541 -566 0 +556 343 557 -483 -371 0 +546 499 418 536 0 +554 391 -573 -560 0 +513 531 -576 0 +519 523 -574 522 -565 564 -511 0 +471 559 552 544 0 +538 485 -539 578 0 +-440 469 371 519 463 -411 534 246 0 +539 -577 337 0 +545 548 462 515 561 -418 -574 533 556 503 0 +569 549 -562 -556 -577 493 0 +554 -552 576 0 +457 -565 -520 0 +-520 -532 -570 572 500 555 507 495 -493 578 -552 536 0 +569 -570 566 -301 527 0 +-567 542 565 0 +467 570 -545 -466 565 498 0 +577 -568 500 0 +-562 570 553 -579 0 +-542 -553 -476 0 +-544 -547 509 571 0 +-504 556 561 473 0 +-520 -566 -538 522 -471 0 +570 -562 549 -509 -504 -578 -558 0 +-502 539 -553 383 0 +-522 -581 -505 -503 0 +570 443 504 -546 0 +580 563 -522 569 -566 -495 547 -336 0 +-475 -504 -468 559 546 0 +455 553 522 -523 -581 -558 0 +378 550 -549 0 +574 523 472 537 483 462 553 -452 0 +-510 279 550 498 -540 0 +544 -486 557 558 526 0 +-517 -555 -511 467 496 -471 -495 -554 -520 -571 -553 470 0 +504 508 -554 0 +-556 -379 524 -427 561 0 +398 -497 -472 -482 -529 -511 -498 0 +569 -272 548 0 +530 -463 -547 -537 462 513 0 +565 536 -416 0 +512 539 554 0 +-581 510 -545 474 0 +571 555 -577 0 +555 -564 -559 0 +550 -340 557 0 +537 -518 544 0 +294 -518 -514 -567 565 -529 0 +267 -569 -474 460 440 0 +510 -420 560 -542 0 +498 541 499 -465 -557 0 +477 499 557 0 +-546 -534 550 0 +460 -522 -498 -539 -402 -569 0 +-387 -538 -567 -504 -539 575 534 -580 0 +555 511 -561 -575 0 +567 -512 -552 -570 -510 -534 409 0 +-504 -493 -393 565 541 554 0 +-536 -564 -554 524 0 +-578 549 -543 548 -504 -518 0 +571 -567 -518 -507 563 -529 -495 -544 548 470 0 +552 -580 518 0 +-553 -570 568 0 +-542 -442 456 507 530 -571 -564 561 -402 0 +-566 573 -509 -572 502 544 507 0 +-562 577 552 468 -534 514 -361 571 -559 546 537 -520 0 +493 567 -540 472 0 +-512 513 -569 0 +551 540 404 0 +-441 -508 528 298 -558 440 -547 543 0 +-559 -548 -532 554 543 -508 0 +-511 -468 -581 0 +-373 -560 -518 0 +-526 -569 -492 0 +-581 -561 567 473 0 +516 -581 -552 498 474 0 +-563 544 -541 -527 0 +-461 -476 -507 408 -581 -518 -557 -502 0 +533 465 -505 541 -534 -568 -403 0 +520 536 564 509 528 0 +-564 -533 576 -508 569 552 566 0 +-532 447 -550 506 0 +-442 537 565 457 506 539 423 -453 490 552 503 0 +393 264 499 -539 -557 0 +525 567 -566 578 577 -564 -428 -405 0 +-530 462 512 0 +511 580 -517 493 0 +-499 -548 -535 473 -458 -577 564 475 -547 557 0 +517 -463 -487 -549 0 +528 -470 529 0 +565 466 -513 -560 531 0 +-579 -569 561 527 0 +494 -576 -522 578 0 +558 530 -513 0 +-502 -553 551 469 528 -578 0 +431 -561 -535 572 550 -516 0 +-471 -567 543 -465 -227 0 +543 -573 535 552 546 564 0 +545 528 -541 574 -546 0 +-546 539 574 -542 576 -515 0 +-570 -487 -373 0 +529 550 568 -563 571 -490 559 0 +-422 -550 514 0 +536 580 -528 466 -562 0 +-541 540 -537 0 +-552 -570 -579 539 -514 -439 485 0 +532 -485 463 551 0 +507 -423 -576 -491 0 +-574 576 581 0 +556 539 -545 408 -487 -476 0 +-552 560 573 0 +485 -569 -549 0 +538 -545 565 0 +-565 -515 -346 551 552 0 +555 562 -82 -574 0 +557 579 -562 0 +205 -565 -543 499 0 +540 -566 -558 0 +319 -547 517 577 0 +580 511 556 563 546 577 0 +551 -516 -421 571 -559 0 +-548 -538 -567 543 566 -524 -509 0 +-486 -511 353 572 0 +-470 508 538 558 560 0 +-478 567 -552 0 +527 489 -480 -556 549 -571 -493 -494 0 +547 -499 -523 0 +581 405 -564 513 0 +-498 558 -567 541 0 +-502 530 574 552 0 +-557 564 0 +-514 538 -560 0 +-544 -558 -567 408 -485 -532 0 +-479 -525 477 547 0 +-465 530 559 -540 -542 -575 544 0 +568 -523 -517 0 +-460 -571 562 -446 -439 0 +557 533 -485 -508 -543 0 +571 490 -539 0 +559 -481 506 -524 -521 382 450 -565 -494 544 -535 556 0 +-493 -549 -528 -495 0 +-405 526 560 0 +511 526 -499 -552 454 -530 579 -498 506 565 -570 -421 0 +563 -474 -503 0 +-406 529 -480 577 0 +531 457 546 514 509 0 +-533 -566 337 390 511 -554 0 +-467 -542 527 0 +-565 -328 -554 0 +418 502 -544 516 0 +471 493 -556 567 560 508 449 0 +-540 -580 -568 0 +553 -485 552 -541 534 0 +-562 -499 -526 -561 -517 525 0 +498 575 562 580 0 +516 -490 518 -546 -556 -350 494 0 +539 549 -491 0 +558 572 -535 -574 -576 -459 336 509 -388 0 +-567 486 473 521 503 488 485 -532 0 +-554 465 -561 0 +565 -538 490 495 577 -540 0 +537 512 -578 0 +-559 554 -570 466 0 +-543 -464 443 519 0 +-537 510 555 0 +-514 397 -540 -581 404 -506 0 +496 -385 575 0 +527 -483 -517 -573 543 -570 0 +574 550 580 0 +550 560 -576 493 507 0 +-538 -558 462 0 +486 537 -552 569 0 +-480 -576 549 543 -548 0 +570 554 -493 -519 497 435 546 539 0 +553 556 -490 564 497 -351 0 +-550 509 -580 302 -468 0 +-565 535 -534 0 +571 -574 -566 0 +-370 573 504 0 +515 576 506 531 -572 559 0 +-573 433 -572 -505 569 0 +501 576 -504 0 +-354 -572 533 438 -557 485 -573 -553 0 +-539 550 529 -564 0 +-574 581 -540 -473 0 +-510 467 -492 0 +-492 564 -558 513 0 +545 578 -561 -503 -551 0 +572 523 -540 492 -522 0 +513 550 405 0 +-439 322 479 0 +391 -542 -553 -501 -549 0 +568 -557 -559 -363 0 +-534 -571 -401 0 +507 567 519 -574 0 +-568 578 357 0 +404 -565 561 567 0 +409 528 -559 -479 -536 520 -289 551 0 +570 -507 545 0 +408 566 530 -517 -359 553 0 +491 500 578 0 +-513 -558 537 -464 0 +489 405 0 +-489 -405 0 +-213 130 0 +213 -130 0 +126 -189 0 +-126 189 0 +501 -250 0 +-501 250 0 +377 -280 0 +-377 280 0 +-391 -556 0 +391 556 0 +346 -92 0 +-346 92 0 +225 429 0 +-225 -429 0 +-243 277 0 +243 -277 0 +-280 69 0 +280 -69 0 +-70 -504 0 +70 504 0 +461 48 0 +-461 -48 0 +-543 258 0 +543 -258 0 +-419 -225 0 +419 225 0 +211 -318 0 +-211 318 0 +-182 -562 0 +182 562 0 +35 153 0 +-35 -153 0 From 1f130c615350c841ef0c642bed0e5dfe6d1f5c91 Mon Sep 17 00:00:00 2001 From: Norbert Manthey Date: Mon, 13 Apr 2020 21:46:34 +0200 Subject: [PATCH 34/34] markarray: default step to 1 --- core/SolverTypes.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/SolverTypes.h b/core/SolverTypes.h index 9a376a9..9b92a29 100644 --- a/core/SolverTypes.h +++ b/core/SolverTypes.h @@ -966,7 +966,7 @@ class MarkArray public: MarkArray(): - step(0) + step(1) {} ~MarkArray() @@ -977,7 +977,7 @@ class MarkArray void destroy() { vector().swap(array); - step = 0; + step = 1; } void create(const uint32_t newSize) @@ -1014,7 +1014,7 @@ class MarkArray void reset() { memset(&(array[0]), 0, sizeof(uint32_t) * array.size()); - step = 0; + step = 1; } /** give number of next step. if value becomes critical, array will be reset