summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2026-10-25 09:55:30 -0700
committerScott Gasch <[email protected]>2026-10-25 09:55:30 -0700
commit874ef0478078ef4eb436af7d2b68a353f61f4d70 (patch)
treee9954c289393c64d88402beff04637b52732ca73
parent5f901d737b17c5f99b6e456d6c0c7d5e3c093dc4 (diff)
Learned FH% logistic-regression model (alpha full, beta whole-node-only)
Replaces the data.c histogram tables (g_uJointFHThousandths/ g_uBetaFHThousandths and their _NNUE counterparts) with two quantized logistic regressions as the default FH%-prediction mechanism under FH_USE_REGRESSION_MODEL=1, trained against real collected search data (fhcollect.c) per docs/REGRESSION.md. Alpha side is a full per-move regression, validated against the old table (0.119pp weighted mean deviation across 10,684 matched cells). Beta side is whole-node-only (matching the old table's own scope -- no functionality lost), refit on the NO_MOVE population after an earlier mixed-tier fit saturated and over-pruned; its skip threshold (FH_BETA_SKIP_THRESHOLD=99000) was confirmed by direct self-play sweeps, not just ECM solve-count intuition (see docs/REGRESSION.md's "Category A vs B" discussion). Gated by an overnight SPRT match (regression vs HEAD tables, same NNUE eval, sd8): at 4120 games, llr=+2.53 (never dipped negative, peaked +2.8), score=0.517, candidate reaching comparable depth at higher nps/ebf than head. Did not cross the H1=+2.94 SPRT bound, but the trend across the full run is unambiguous and the marginal value of waiting out the remaining games was judged not worth it. The data.c tables are left in place as the inactive #else branch of FH_USE_REGRESSION_MODEL for now; a follow-up commit will flip the build default and remove them once this commit's head_reference baseline and ECM numbers are recorded. Co-Authored-By: Claude Sonnet 5 <[email protected]>
-rw-r--r--src/GNUmakefile48
-rwxr-xr-xsrc/chess.h475
-rw-r--r--src/docs/DEEPER_PRUNING.md54
-rw-r--r--src/docs/REGRESSION.md1335
-rw-r--r--src/dynamic.c30
-rw-r--r--src/fhcollect.c574
-rw-r--r--src/fhmodel.c201
-rw-r--r--src/fhmodel_weights.h83
-rw-r--r--src/main.c7
-rw-r--r--src/root.c60
-rw-r--r--src/script.c269
-rw-r--r--src/search.c336
-rw-r--r--src/searchsup.c233
-rw-r--r--src/split.c22
14 files changed, 3121 insertions, 606 deletions
diff --git a/src/GNUmakefile b/src/GNUmakefile
index 041ffbd..f462b07 100644
--- a/src/GNUmakefile
+++ b/src/GNUmakefile
@@ -169,28 +169,27 @@ endif
ifdef PERF_COUNTERS
PROFILE += -DPERF_COUNTERS
endif
-# 2026-10-10: this flag was referenced (search.c's joint-table/marginal
-# collection block, #ifdef FH_TABLE_COLLECTION) but never actually wired
-# to a compiler define anywhere in this makefile -- every prior
-# collection run must have been built some other way (or this gap
-# predates the comment claiming it's "a live, in-progress collection
-# run"). Requires PERF_COUNTERS=1 too (the block this gates is nested
-# inside an outer #ifdef PERF_COUNTERS).
-#
-# Re-added 2026-10-20: this wiring was itself silently dropped at some
-# point after landing (collateral damage from the 2026-10-14 PRUNE_VERIFY/
-# PRUNE_LIVE dead-flag cleanup, going by GNUmakefile.orig's surviving copy)
-# -- every FH_TABLE_COLLECTION=1 build in between compiled clean but
-# never actually included the instrumentation. Caught before launching
-# the NNUE dual-table re-collection run; a smoke-test build+run with
-# this restored confirmed -DFH_TABLE_COLLECTION actually reaches the
-# compiler and the (currently 4D-alpha-only, no beta side -- see
-# docs/NNUE.md) FOURAXISRAW dump fires. The original run's richer
-# ALPHARAW/BETARAW/ESTRAW dump format no longer exists in this tree at
-# all (not just unwired) -- that's the separate, larger restoration
-# this collection run is waiting on, tracked alongside this fix.
-ifdef FH_TABLE_COLLECTION
-PROFILE += -DFH_TABLE_COLLECTION
+# 2026-10-24: FH_TABLE_COLLECTION (the discrete 5D-alpha/4D-beta
+# histogram collection, used to re-derive data.c's table) is retired in
+# favor of FH_REGRESSION_COLLECTION -- see docs/REGRESSION.md. The old
+# flag's history (two separate "was referenced but never wired to the
+# compiler" incidents, 2026-10-10 and 2026-10-20) is kept here for
+# context since the same per-shard build-sanity check ("confirm the
+# define actually reaches the compiler, don't just assume the ifdef
+# wiring survived the last refactor") applies to its replacement too.
+# Requires PERF_COUNTERS=1 (the block this gates is nested inside an
+# outer #ifdef PERF_COUNTERS), same as the old flag.
+ifdef FH_REGRESSION_COLLECTION
+PROFILE += -DFH_REGRESSION_COLLECTION
+endif
+# Safety toggle (2026-10-24) -- opt-in only, so the new regression
+# model (fhmodel.c) doesn't become the default until it's been through
+# the validation ladder docs/REGRESSION.md describes (DEBUG=1 TEST=1,
+# debug_smoke_test.sh, sd10/sn5000000 suite diffs, match_play.py).
+# Mutually exclusive with FH_REGRESSION_COLLECTION in practice (that
+# profile needs the OLD table live and uncensored to collect against).
+ifdef FH_USE_REGRESSION_MODEL
+PROFILE += -DFH_USE_REGRESSION_MODEL
endif
ifdef MOVE_ORDERING_EVIDENCE_COLLECTION
PROFILE += -DMOVE_ORDERING_EVIDENCE_COLLECTION
@@ -396,7 +395,7 @@ OBJS = main.o root.o search.o searchsup.o draw.o dynamic.o \
input.o vars.o util.o unix.o gamelist.o mersenne.o \
sig.o piece.o ics.o san.o fen.o book.o bench.o board.o \
data.o probe.o fathom.o recogn.o list.o x64.o \
- nnuefeatures.o nnueaccum.o nnueeval.o
+ nnuefeatures.o nnueaccum.o nnueeval.o fhmodel.o
ifdef TEST
# ---> .o, not .c! <---
@@ -414,6 +413,9 @@ endif
ifdef TREEDUMP
OBJS += dumptree.o
endif
+ifdef FH_REGRESSION_COLLECTION
+OBJS += fhcollect.o
+endif
ifdef MP
OBJS += split.o
endif
diff --git a/src/chess.h b/src/chess.h
index 05052c6..0d5a4a1 100755
--- a/src/chess.h
+++ b/src/chess.h
@@ -22,6 +22,9 @@ Revision History:
#define CHESS_
#include "compiler.h"
+#include <stdio.h> // FILE -- needed early for FH_COLLECT_WRITER below;
+ // the rest of this file's own <stdio.h> include
+ // further down is now redundant but left alone
//
// Datatype wrappers
@@ -2011,75 +2014,292 @@ KING_DEFECT_DUMP_INFO;
//
#define COUNTER_MOVE_TABLE_SIZE (0x20000)
-#ifdef FH_TABLE_COLLECTION
-// 2026-10-20: full dual-table (5D alpha + 4D beta) collection,
-// restored for the NNUE-eval re-collection run -- see docs/NNUE.md.
-// Deliberately NOT a member of COUNTERS (unlike every other
-// PERF_COUNTERS field) -- COUNTERS is embedded both in
-// SEARCHER_THREAD_CONTEXT *and* in SPLIT_INFO's g_SplitInfo[MAX_SPLITS]
-// array, so anything added there gets silently multiplied by
-// MAX_SPLITS. This struct alone is already ~19MB (the 5D alpha array
-// dominates); embedded in COUNTERS it inflated the binary's BSS to
-// ~1.47GB (confirmed via `size typhoon` + `nm --size-sort`) purely
-// from g_SplitInfo's replication -- harmless at runtime since a
-// --cpus 1 collection shard never touches g_SplitInfo's copies (pure
-// never-faulted zero pages), but it broke valgrind's fixed-address
-// mmap of the BSS segment outright, and would have silently dropped
-// any data a helper thread collected during a real MP split (no
-// merge-back code exists for these fields, unlike COUNTERS' other
-// per-split fields) if collection were ever run with --cpus > 1.
-// Giving it its own struct, referenced only from
-// SEARCHER_THREAD_CONTEXT below, fixes both: SPLIT_INFO never carries
-// a copy at all now.
-typedef struct _FH_COLLECTION_COUNTERS
+// Forward declaration -- SEARCHER_THREAD_CONTEXT itself isn't defined
+// until later in this header, but the FhCollect* prototypes below need
+// to name a pointer to it at file scope (not just function-prototype
+// scope, which is what a bare "struct _SEARCHER_THREAD_CONTEXT *"
+// inside a parameter list alone would give it).
+struct _SEARCHER_THREAD_CONTEXT;
+
+// 2026-10-24: per-event binary record collection for the learned FH%
+// regression (replaces the discrete 5D-alpha/4D-beta histogram
+// collection, FH_TABLE_COLLECTION -- see docs/REGRESSION.md). Each
+// logged event is written directly to a per-thread binary file as one
+// small fixed-width record; no shared/replicated array, no merge-back
+// code needed for a real MP split.
+//
+// Records store RAW measured quantities only (gap in centipawns,
+// remaining depth in quarter-plies, raw move ordinal, etc.) -- NOT
+// derived training features (log transforms, normalized ratios, cross
+// terms). Feature engineering happens in the offline training
+// pipeline, where it's far cheaper to iterate on than in committed,
+// compiled C.
+//
+// Call-site design: Search()/the move loop call the three FhCollect*
+// hook functions below UNCONDITIONALLY, with no #ifdef of their own --
+// the enums, FH_COLLECT_PENDING, and the three hook prototypes are
+// always visible (cheap: a handful of scalar fields, no large arrays)
+// so callers never need to know or care whether this is a collection
+// build. When FH_REGRESSION_COLLECTION isn't defined, the inline stubs
+// in the #else branch below compile to nothing. This keeps the
+// instrumentation entirely out of Search()'s own control flow -- it
+// reads like any other helper-function call -- and keeps the machinery
+// permanently in the tree (not a one-off diagnostic to rip out later)
+// in case a future model needs the same kind of per-node/per-move
+// hook. See fhcollect.c for the real implementation.
+typedef enum _FH_COLLECT_TABLE
+{
+ FHC_TABLE_ALPHA = 0, // iEval <= iAlpha
+ FHC_TABLE_BETA = 1 // iEval >= iBeta
+}
+FH_COLLECT_TABLE;
+
+typedef enum _FH_COLLECT_TIER
+{
+ FHC_TIER_NO_MOVE = 0, // is_whole_node sentinel row -- no
+ // specific move, logged once per
+ // eligible node before the move loop
+ // starts
+ FHC_TIER_NULL, // the null-move probe
+ FHC_TIER_HASH, // the hash move
+ FHC_TIER_GOOD_CAPTURE, // winning/even capture (SEE >= 0)
+ FHC_TIER_KILLER,
+ FHC_TIER_COUNTERMOVE,
+ FHC_TIER_LEFTOVER_QUIET,
+ FHC_TIER_LOSING_CAPTURE // SEE < 0
+}
+FH_COLLECT_TIER;
+
+// Per-node collection state, spanning from FhCollectNodeEntry (top of
+// Search(), once iEval is known) through one FhCollectMoveTried call
+// per move/null-move-probe tried, to FhCollectNodeExit (the end: label,
+// once iBestScore's real fate is known). Declared as an ordinary LOCAL
+// variable in Search() -- deliberately NOT stored in
+// SEARCHER_THREAD_CONTEXT or PLY_INFO, since Search() recurses and a
+// ctx-wide (or even uPly-indexed) copy would get clobbered by a child
+// node's own FhCollectNodeEntry before the parent reaches
+// FhCollectNodeExit. An ordinary C local, one per stack frame, is the
+// simplest thing that's automatically correct across recursion.
+typedef struct _FH_COLLECT_PENDING
+{
+ FLAG fEligible; // this node is eligible at all
+ // (iEval <= iAlpha or >= iBeta,
+ // MWS only) -- FALSE means every
+ // FhCollect* call below is a no-op
+ // for this node regardless of build
+ UCHAR bTable; // FH_COLLECT_TABLE, valid iff
+ // fEligible
+ UCHAR bNodeTypeGuess; // NODE_TYPE, as passed to
+ // FhCollectNodeEntry -- the caller's
+ // responsibility to pass the raw,
+ // PARENT-derived guess, never the
+ // refined one (see docs/REGRESSION.md)
+ SCORE iGap;
+ SCORE iImprove;
+ SCORE iEnemyOrOwnImprove;
+ ULONG uRemainingDepthTicks;
+ UINT64 u64PositionSig;
+ ULONG uGoodCapturesTriedNoCutoff; // running loop-state counter,
+ // incremented by
+ // FhCollectMoveTried itself as
+ // good/even captures are tried
+ ULONG uTotalNonPawnMaterial; // pos->uNonPawnMaterial[WHITE] +
+ // [BLACK] -- a coarse,
+ // essentially-free game-phase
+ // proxy, read straight off the
+ // position, no extra
+ // computation
+}
+FH_COLLECT_PENDING;
+
+#ifdef FH_REGRESSION_COLLECTION
+void FhCollectNodeEntry(struct _SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ SCORE iEval, SCORE iAlpha, SCORE iBeta,
+ ULONG uDepthTicks,
+ SCORE iImprove, SCORE iEnemyOrOwnImprove,
+ NODE_TYPE eNodeTypeGuess,
+ UINT64 u64PositionSig,
+ ULONG uTotalNonPawnMaterial);
+void FhCollectMoveTried(struct _SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ FH_COLLECT_TIER eTier,
+ SCORE iScore, SCORE iBeta,
+ ULONG uMoveOrdinal, SCORE iMoveValue,
+ ULONG uMoveFhPctThousandths, ULONG uMoveFhAttempts,
+ FLAG fMovesKnown, ULONG uTotalLegalMoves);
+void FhCollectNodeExit(struct _SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ SCORE iBestScore, SCORE iBeta, FLAG fAborted);
+#else
+// Non-collection build: every FhCollect* call in Search()/the move
+// loop compiles down to nothing. Real bodies live in fhcollect.c,
+// built only when FH_REGRESSION_COLLECTION is defined (GNUmakefile) --
+// these inline stubs are what let Search() call them unconditionally,
+// with no #ifdef of its own. See this section's opening comment above.
+static INLINE void
+FhCollectNodeEntry(struct _SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ SCORE iEval, SCORE iAlpha, SCORE iBeta,
+ ULONG uDepthTicks,
+ SCORE iImprove, SCORE iEnemyOrOwnImprove,
+ NODE_TYPE eNodeTypeGuess,
+ UINT64 u64PositionSig,
+ ULONG uTotalNonPawnMaterial)
+{
+ (void)(ctx);
+ (void)(pp);
+ (void)(iEval);
+ (void)(iAlpha);
+ (void)(iBeta);
+ (void)(uTotalNonPawnMaterial);
+ (void)(uDepthTicks);
+ (void)(iImprove);
+ (void)(iEnemyOrOwnImprove);
+ (void)(eNodeTypeGuess);
+ (void)(u64PositionSig);
+}
+
+static INLINE void
+FhCollectMoveTried(struct _SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ FH_COLLECT_TIER eTier,
+ SCORE iScore, SCORE iBeta,
+ ULONG uMoveOrdinal, SCORE iMoveValue,
+ ULONG uMoveFhPctThousandths, ULONG uMoveFhAttempts,
+ FLAG fMovesKnown, ULONG uTotalLegalMoves)
+{
+ (void)(ctx);
+ (void)(pp);
+ (void)(eTier);
+ (void)(iScore);
+ (void)(iBeta);
+ (void)(uMoveOrdinal);
+ (void)(iMoveValue);
+ (void)(uMoveFhPctThousandths);
+ (void)(uMoveFhAttempts);
+ (void)(fMovesKnown);
+ (void)(uTotalLegalMoves);
+}
+
+static INLINE void
+FhCollectNodeExit(struct _SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ SCORE iBestScore, SCORE iBeta, FLAG fAborted)
+{
+ (void)(ctx);
+ (void)(pp);
+ (void)(iBestScore);
+ (void)(iBeta);
+ (void)(fAborted);
+}
+#endif // FH_REGRESSION_COLLECTION
+
+// Decodes which tier a scored move belongs to, straight from
+// generate.c's _ScoreAllMoves packed iValue sort key -- no separate
+// tag is stored anywhere, so this is the one place that needs to know
+// FIRST_KILLER/SECOND_KILLER/.../COUNTERMOVE_TIER_BONUS/SORT_THESE_FIRST's
+// bit layout (see generate.c's _ScoreAllMoves and chess.h's own
+// comments on those constants). Checked in the same priority order
+// _ScoreAllMoves documents (killer-mate/winning-capture before killer
+// before countermove) since a move can in principle satisfy more than
+// one -- e.g. a stored killer that also clears the countermove-
+// evidence threshold -- and the bits alone don't otherwise say which
+// one search.c's own classification would treat as authoritative.
+// Always a real declaration now (searchsup.c, 2026-10-24) -- needed
+// unconditionally by fhmodel.c's production FH-regression inference,
+// not just FH_REGRESSION_COLLECTION builds.
+FH_COLLECT_TIER FhClassifyMoveTier(MOVE mv, MOVE mvHash,
+ FLAG fIsCaptureOrPromotion,
+ SCORE iValue);
+
+#ifdef FH_REGRESSION_COLLECTION
+// One record per logged event (a whole-node row, or one row per
+// move/null-move-probe tried at an eligible node). Fixed width,
+// largest-alignment fields first to avoid padding surprises.
+typedef struct _FH_COLLECT_RECORD
+{
+ UINT64 u64PositionSig; // pos->u64Sig at this node --
+ // for dedup/debugging only, not
+ // a training feature
+ SCORE iGap; // signed: (iEval-iAlpha) on the
+ // alpha side, (iEval-iBeta) on
+ // the beta side -- always >= 0
+ // by construction (this
+ // collection is MWS-only)
+ SCORE iMoveValue; // signed SEE/IID/hang-estimate
+ // centipawns; 0 for the
+ // FHC_TIER_NO_MOVE row
+ SCORE iImprove; // signed improving estimate
+ // (this side)
+ SCORE iEnemyOrOwnImprove; // alpha side: enemy-improving;
+ // beta side: own-improving --
+ // semantics depend on bTable,
+ // see docs/REGRESSION.md
+ ULONG uRemainingDepthTicks;
+ ULONG uMoveOrdinal; // 1-based; 0 for NO_MOVE/NULL
+ ULONG uTotalLegalMoves; // only meaningful if
+ // bMovesKnown
+ ULONG uMoveFhPctThousandths; // this move's own Wilson-bound
+ // FH estimate, 0..100000; 0 for
+ // NO_MOVE
+ ULONG uMoveFhAttempts; // raw evidence count backing
+ // uMoveFhPctThousandths -- lets
+ // training distinguish a cold
+ // move identity (0 attempts,
+ // reads as confidently-safe by
+ // construction, see
+ // GetMoveFailHighAttempts'
+ // comment) from a genuinely
+ // well-evidenced one, which the
+ // Wilson bound alone cannot
+ ULONG uGoodCapturesTriedNoCutoff; // running loop-state counter --
+ // generalizes the old
+ // IS_CAPTURE(mvHash) flag, see
+ // docs/REGRESSION.md
+ ULONG uTotalNonPawnMaterial; // pos->uNonPawnMaterial[WHITE] +
+ // [BLACK] at this node -- coarse
+ // game-phase proxy
+ UCHAR bTable; // FH_COLLECT_TABLE
+ UCHAR bTier; // FH_COLLECT_TIER
+ UCHAR bNodeTypeGuess; // NODE_TYPE, PARENT-derived
+ // only -- never the refined
+ // guess this model itself
+ // produces (would be leakage),
+ // see docs/REGRESSION.md
+ UCHAR bMovesKnown; // 0/1 -- paired with
+ // uTotalLegalMoves per
+ // docs/REGRESSION.md's
+ // moves_known/imputation design
+ UCHAR bLabel; // 0/1: did this resolve
+ // >= iBeta, committed at the
+ // same end: site the old
+ // histogram commit used
+ UCHAR bPad[3];
+}
+FH_COLLECT_RECORD;
+
+// One per-thread buffered writer -- flushed in whole-batch writes to
+// avoid a syscall per record. No cross-thread state: each thread owns
+// its own file, opened once at collection-build startup
+// (FhCollectOpen) and closed at shutdown (FhCollectClose), named by
+// thread number so a --cpus > 1 collection run never collides on one
+// fd.
+#define FH_COLLECT_BUFFER_RECORDS (4096)
+typedef struct _FH_COLLECT_WRITER
{
- // Alpha axes: [depth][dumb][gap][late][improve], same
- // fPruneReduceEligible population as u64JointTries/FH (COUNTERS.tree)
- // for late >= 2 (real per-move samples). late == 1 is the existing
- // "early move" extrapolation proxy used live at the null-move-skip
- // site (search.c) -- NOT collected here, it's a lookup-time
- // fiction, never a real sample. late == 0 is reserved and, before
- // this change, permanently unproduced (uMoveNum is 1-based and the
- // per-move eligibility gate requires uLegalMoves > 1) -- repurposed
- // here for a genuine NODE-level sample (hang pinned to 0, no
- // specific move) answering "will SOMETHING at this node fail
- // high", taken once per eligible node when iEval <= iAlpha, ground
- // truth = the real move loop's iBestScore >= iBeta at Search()'s
- // end: label. This is the alpha-side analog of the beta table's
- // own whole-node sample (which only covers iEval > iBeta) --
- // together the two cover every null-window child's self-estimate
- // with no gap, since alpha_child/beta_child are adjacent integers
- // for a null window. See docs/NNUE.md's node-type discussion.
- UINT64 u64Alpha5Tries[SEARCH_DEPTH_BUCKETS][HANG_CP_BUCKETS][GAP_CP_BUCKETS][MOVE_NUM_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64Alpha5FH[SEARCH_DEPTH_BUCKETS][HANG_CP_BUCKETS][GAP_CP_BUCKETS][MOVE_NUM_BUCKETS][IMPROVE_BUCKETS];
- // Beta axes: [depth][gapBeta][ownImprove][enemyImprove], one
- // sample per eligible node (iEval > iBeta), same real-move-loop
- // ground truth. Collecting this requires NOT taking the
- // static-null-move shortcut's early `goto end` during collection
- // builds (same reasoning as the LMP disable in searchsup.c) --
- // otherwise the current, soon-to-be-replaced data.c table would
- // censor exactly the population this collection is trying to
- // measure.
- UINT64 u64BetaTries[SEARCH_DEPTH_BUCKETS][GAP_BETA_BUCKETS][IMPROVE_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64BetaFH[SEARCH_DEPTH_BUCKETS][GAP_BETA_BUCKETS][IMPROVE_BUCKETS][IMPROVE_BUCKETS];
- // 1D marginals, independent INC() call sites (not derived from the
- // joints above) -- see marginal_crosscheck.py. The alpha table's
- // depth/dumb/gap/late marginals already exist in COUNTERS.tree
- // (u64DepthEstimateTries etc.) and are reused as-is for the 5D
- // cross-check; only the improve marginal is new, here.
- UINT64 u64ImproveEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64ImproveEstimateFH[IMPROVE_BUCKETS];
- UINT64 u64BetaDepthEstimateTries[SEARCH_DEPTH_BUCKETS];
- UINT64 u64BetaDepthEstimateFH[SEARCH_DEPTH_BUCKETS];
- UINT64 u64BetaGapEstimateTries[GAP_BETA_BUCKETS];
- UINT64 u64BetaGapEstimateFH[GAP_BETA_BUCKETS];
- UINT64 u64BetaOwnImpEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64BetaOwnImpEstimateFH[IMPROVE_BUCKETS];
- UINT64 u64BetaEnemyImpEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64BetaEnemyImpEstimateFH[IMPROVE_BUCKETS];
+ FILE *pFile;
+ ULONG uBufferedCount;
+ FH_COLLECT_RECORD rgBuffer[FH_COLLECT_BUFFER_RECORDS];
}
-FH_COLLECTION_COUNTERS;
-#endif // FH_TABLE_COLLECTION
+FH_COLLECT_WRITER;
+
+void FhCollectOpen(struct _SEARCHER_THREAD_CONTEXT *ctx, ULONG uThreadNumber);
+void FhCollectFlush(struct _SEARCHER_THREAD_CONTEXT *ctx);
+void FhCollectClose(struct _SEARCHER_THREAD_CONTEXT *ctx);
+void FhCollectEmit(struct _SEARCHER_THREAD_CONTEXT *ctx, const FH_COLLECT_RECORD *prec);
+void FhCollectCloseAll(void);
+#endif // FH_REGRESSION_COLLECTION
typedef struct _SEARCHER_THREAD_CONTEXT
{
@@ -2124,12 +2344,12 @@ typedef struct _SEARCHER_THREAD_CONTEXT
COOR cTrapped[MAX_PLY_PER_SEARCH]; // trapped piece hint
PIECE pTrapped[MAX_PLY_PER_SEARCH];
COUNTERS sCounters;
-#ifdef FH_TABLE_COLLECTION
- // Deliberately NOT inside sCounters -- see FH_COLLECTION_COUNTERS'
- // own comment (just above this struct) for why: sCounters is also
- // embedded in SPLIT_INFO's g_SplitInfo[MAX_SPLITS] array, and
- // anything added there gets silently multiplied by MAX_SPLITS.
- FH_COLLECTION_COUNTERS sFhCollection;
+#ifdef FH_REGRESSION_COLLECTION
+ // Deliberately NOT inside sCounters -- see FH_COLLECT_WRITER's own
+ // comment above for why that's no longer even a concern the way it
+ // was for the old histogram design (no shared/replicated array
+ // here to multiply across SPLIT_INFO in the first place).
+ FH_COLLECT_WRITER sFhCollectWriter;
#endif
ULONG uThreadNumber;
SPLIT_INFO *pSplitInfo[NUM_SPLIT_PTRS_IN_CONTEXT];
@@ -2251,6 +2471,8 @@ typedef struct _GAME_OPTIONS
UINT64 u64LeftoverTries;
UINT64 u64LeftoverAlpha;
UINT64 u64LeftoverFH;
+ UINT64 u64QuickNullMoves;
+ UINT64 u64QuickNullMoveSuccess;
#ifdef HASHCAP_COLLECTION
UINT64 u64HashCapTries[2][2];
UINT64 u64HashCapFH[2][2];
@@ -2274,24 +2496,6 @@ typedef struct _GAME_OPTIONS
UINT64 u64LMPPruned;
UINT64 u64NullMoveTriesByR[NULL_R_BUCKETS];
UINT64 u64NullMoveSuccessByR[NULL_R_BUCKETS];
-#ifdef FH_TABLE_COLLECTION
- // Mirrors SEARCHER_THREAD_CONTEXT's sCounters.tree fields of the
- // same name -- see that struct's comment for the full design.
- UINT64 u64Alpha5Tries[SEARCH_DEPTH_BUCKETS][HANG_CP_BUCKETS][GAP_CP_BUCKETS][MOVE_NUM_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64Alpha5FH[SEARCH_DEPTH_BUCKETS][HANG_CP_BUCKETS][GAP_CP_BUCKETS][MOVE_NUM_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64BetaTries[SEARCH_DEPTH_BUCKETS][GAP_BETA_BUCKETS][IMPROVE_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64BetaFH[SEARCH_DEPTH_BUCKETS][GAP_BETA_BUCKETS][IMPROVE_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64ImproveEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64ImproveEstimateFH[IMPROVE_BUCKETS];
- UINT64 u64BetaDepthEstimateTries[SEARCH_DEPTH_BUCKETS];
- UINT64 u64BetaDepthEstimateFH[SEARCH_DEPTH_BUCKETS];
- UINT64 u64BetaGapEstimateTries[GAP_BETA_BUCKETS];
- UINT64 u64BetaGapEstimateFH[GAP_BETA_BUCKETS];
- UINT64 u64BetaOwnImpEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64BetaOwnImpEstimateFH[IMPROVE_BUCKETS];
- UINT64 u64BetaEnemyImpEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64BetaEnemyImpEstimateFH[IMPROVE_BUCKETS];
-#endif // FH_TABLE_COLLECTION
#ifdef JOINT_EXTRA_VERIFY
UINT64 u64JointExtraVerifyTries[JOINT_EXTRA_TIER_COUNT][POST_REDUCE_DEPTH_BUCKETS];
UINT64 u64JointExtraVerifySilentMiss[JOINT_EXTRA_TIER_COUNT][POST_REDUCE_DEPTH_BUCKETS];
@@ -4370,6 +4574,9 @@ InitializeWilsonBoundTable(void);
ULONG
GetMoveFailHighWilsonUpperBoundThousandths(MOVE mv);
+ULONG
+GetMoveFailHighAttempts(MOVE mv);
+
FLAG
CanWeReduceOrPruneMove(IN SEARCHER_THREAD_CONTEXT *ctx,
IN MOVE mv,
@@ -4443,9 +4650,76 @@ _RefineNodeTypeGuess(IN SEARCHER_THREAD_CONTEXT *ctx,
IN SCORE iAlpha,
IN SCORE iBeta,
IN ULONG uDepth,
+ IN SCORE iImprovement,
IN SCORE iEnemyImprovement,
IN ULONG uRawImproveB);
+// fhmodel.c -- production inference for the FH% logistic-regression
+// models (FH_USE_REGRESSION_MODEL), see docs/REGRESSION.md. No
+// separate header -- matches fhcollect.c's own convention of
+// declaring everything here rather than a per-module header.
+//
+// Fully quantized fixed-point integer arithmetic -- no floats, no
+// runtime log()/exp() calls.
+//
+// HOISTED node-level/move-level split (alpha side): `gap` (and every
+// other node-level term -- depth, improve, enemy_improve, material,
+// node_type) is fixed for this node's ENTIRE move loop, so it's
+// computed exactly ONCE per node (FhModelAlphaNodeBaseQ16, called at
+// the same point FhCollectNodeEntry already is, in search.c) rather
+// than recomputed inside SearchOneMove on every move; SearchOneMove
+// then only adds the genuinely move-varying terms. FHM_MATE_GATED
+// mirrors JOINT_TABLE_SENTINEL/MOVE_FH_ESTIMATE_NO_DATA's existing
+// "no data" convention (same numeric value, 0xFFFF) -- callers
+// already handle that gracefully everywhere.
+//
+// Beta is whole-node only (the old beta table was never per-move, and
+// its sole production call site -- _RefineNodeTypeGuess -- is itself
+// a whole-node question), so it has no separate per-move function.
+#define FHM_MATE_GATED (MOVE_FH_ESTIMATE_NO_DATA)
+typedef INT FHM_NODE_BASE;
+
+FHM_NODE_BASE
+FhModelAlphaNodeBaseQ16(IN SCORE iEval,
+ IN SCORE iAlpha,
+ IN ULONG uDepth,
+ IN SCORE iImprovement,
+ IN SCORE iEnemyImprovement,
+ IN ULONG uTotalNonPawnMaterial,
+ IN NODE_TYPE eNodeTypeGuess);
+
+static INLINE FLAG
+FhModelNodeBaseIsMateGated(FHM_NODE_BASE base)
+{
+ return(FHM_MATE_GATED == (ULONG)base);
+}
+
+ULONG
+FhModelAlphaMoveThousandths(IN FHM_NODE_BASE nodeBase,
+ IN SCORE iMoveValue,
+ IN ULONG uMoveOrdinal,
+ IN ULONG uMoveFhPctThousandths,
+ IN ULONG uMoveFhAttempts,
+ IN FH_COLLECT_TIER eTier);
+
+ULONG
+FhModelBetaPredictedFHThousandths(IN SCORE iEval,
+ IN SCORE iBeta,
+ IN ULONG uDepth,
+ IN SCORE iImprovement,
+ IN SCORE iEnemyImprovement,
+ IN ULONG uTotalNonPawnMaterial,
+ IN NODE_TYPE eNodeTypeGuess);
+
+// Classifies a move's tier using this engine's own x==0-means-hash-
+// move convention (no separately stored mvHash exists anywhere to
+// compare against -- confirmed by grep) rather than
+// FhClassifyMoveTier's mv-vs-mvHash comparison. iMoveSortValue is the
+// move's packed _ScoreAllMoves key (ctx->sMoveStack.mvf[x-1].iValue
+// at the real call site).
+FH_COLLECT_TIER
+FhModelTierForMove(IN ULONG x, IN MOVE mv, IN SCORE iMoveSortValue);
+
FLAG
WeShouldTryNullmovePruning(IN SEARCHER_THREAD_CONTEXT *ctx,
IN SCORE iAlpha,
@@ -4555,6 +4829,12 @@ SearchOneMove(IN SEARCHER_THREAD_CONTEXT *ctx,
IN ULONG uRawImproveB, // caller computes once, not per-move
IN BITBOARD bbMinorAttacksSnapshot[2],
IN BITBOARD bbRookAttacksSnapshot[2],
+#ifdef FH_USE_REGRESSION_MODEL
+ IN FHM_NODE_BASE sFhAlphaNodeBase, // hoisted node-level
+ // precompute, same loop-invariant
+ // convention as uRawDepthB/
+ // uRawImproveB above
+#endif
#ifdef MOVE_ORDERING_EVIDENCE_COLLECTION
IN FLAG fThisMoveIsCountermoveMatch,
IN ULONG uCMEvidenceBucket,
@@ -4573,6 +4853,19 @@ SearchOneMove(IN SEARCHER_THREAD_CONTEXT *ctx,
, OUT ULONG *puThisMoveNumBucket
, OUT ULONG *puThisMoveDepthBucket
#endif
+#ifdef FH_REGRESSION_COLLECTION
+ // EstimateHangingMaterialCp (searchsup.c) asserts the
+ // move is already applied on the board -- it can only
+ // be called from inside this function's own Make/
+ // Unmake window, never by a caller after this function
+ // has already returned (and un-made the move). Computed
+ // once here, for every move (not just the leftover-
+ // eligible population PERF_COUNTERS' own hang bucket
+ // above is restricted to), and handed back for the
+ // caller's FhCollectMoveTried call. See
+ // docs/REGRESSION.md's session note on this bug.
+ , OUT SCORE *piMoveValueForFhCollect
+#endif
);
SCORE
diff --git a/src/docs/DEEPER_PRUNING.md b/src/docs/DEEPER_PRUNING.md
index e71cf21..fbb8599 100644
--- a/src/docs/DEEPER_PRUNING.md
+++ b/src/docs/DEEPER_PRUNING.md
@@ -320,6 +320,9 @@ if this motivates code changes.
by the ~34% exempt-population measurement above: Crafty/Stockfish
don't carve out an exempt tier at all, their reduction formulas just
naturally taper to near-zero for early/good moves.
+
+ #10 (below) is a precondition to doing this well.
+
- **#10 -- Apply the existing FH-rate evidence-calibration methodology
to the *exempted* population, not just the leftover one.** Unknown
whether the ~34% exempt moves are uniformly safe to leave untouched,
@@ -327,6 +330,10 @@ if this motivates code changes.
as opposed to hash-move/good-capture) would tolerate #9's light
reduction without a solve-rate cost. Needs the same per-node
exemption-reason tagging #9 depends on before picking a formula.
+
+ We are collecting data for a regression model to predict any move
+ or whole node's fail high probabilty to enable #9 (above).
+
- **#11 -- Guard against "deterministic re-pruning" / horizon
blindness from repeated reduction across iterative-deepening
iterations (Scott, 2026-10-23).** The concern: if a move is
@@ -534,6 +541,13 @@ corrected methodology:
stay near the existing ~0.4% baseline, or does it jump specifically in
the newly-added magnitude band?), then step 3/4.
+UPDATE: 2026-10-24: Increased magnitude LMR reductions on fIsLeftoverMove
+moves was designed (reduction magnitudes proportional to the predicted
+FH% of the move, Wilson bound overriding), play-tested (llr=~+1 over
+2k games -- not enough better to prove a 5 elo hypothesis but consistently
+positive llr over the entire test and likely not weaker), and committed
+and pushed to head_reference today.
+
### 2. Reinstate a cheap, unconditional move-level futility skip (EFP)
`searchsup.c:1094` documents that EFP ("extended futility pruning," a
@@ -551,6 +565,16 @@ this specific population would have had (useful data even though you're
accepting it), then step 3/4, then step 5 since this is unambiguously
Category B.
+Note from Scott: I really do like the cleanliness of using the FH%
+table (or, new regression model) to unify LMP and EFP. EFP is only
+based on one feature signal: the gap between eval and alpha. Instead
+of breaking it back out, we should first look hard at
+uLMPStaticMaxPctThousandths[] in ShouldLatePrune. This is designed to
+prune liberally at low depths (specifically to replicate the behavior
+and pruning rate of the old EFP) and also to prune with high remaining
+depth but only when pretty confident that the move is indeed dumb and
+useless.
+
### 3. Loosen null-move pruning's R factor / depth floor
`SelectNullmoveRFactor` and the `NULLMOVE_SKIP_FH_CEILING_THOUSANDTHS`
@@ -856,26 +880,12 @@ direction" answer first.
### What's running right now, and what happens next
-A self-play match is in flight (`eval_tune/test_vs_head.sh`, two
-hand-built wrapper scripts since the script's own `NNUE_WEIGHTS=`
-handling only NNUE-wraps the candidate side and this match needs NNUE
-on both): `typhoon_baseline_nnue` (git HEAD `69525eb`, unmodified, i.e.
-today's starting point, NNUE eval) vs. `typhoon_wilson_nnue` (HEAD +
-everything in this section, NNUE eval), `--st 4`, `--elo0 0 --elo1 15`,
-2000-game cap, label `nnue_pruning_check`. This answers: given the same
-NNUE eval (the actual bottleneck motivating this whole investigation --
-NNUE runs at ~400-500K nps vs HCE's ~1.3M+, and "buy a faster CPU" isn't
-an option), does today's more-aggressive reduction win or at least
-break even against the pre-session baseline?
+The self-play of deeper LMR reductions is finished, was slightly stronger,
+got an extra ply deeper, and was committed and pushed to head reference
+on 2026-10-24.
+
+Now a data collection run to train a linear regression model predicting
+FH% for ALL moves given several features is being run. This will produce
+two models (<alpha and >beta are separate, still) to replace the tables
+in data.c and give us the ammunition to reduce non fIsLeftoverMove moves.
-If it works out: commit, update `head_reference` (including its NNUE
-subtree, which doesn't exist yet -- "we just merged the NNUE branch
-today and didn't update head reference" per this session), then a
-*second* match (NNUE-with-new-pruning vs. the HCE-at-HEAD reference,
-same eval-architecture comparison this project already "knows" HCE
-currently wins at `--st 4`) to answer the actual motivating question:
-is the node-count saving from today's work enough to close any of the
-gap against HCE's raw 3x speed advantage (observed ~3 full plies deeper
-at `sd 4`), or at least move the needle. Then: revisit `IS_CAPTURE
-(mvHash)`, node type, and the table-vs-correction-factor question above
-with a real strength signal in hand instead of suite-solve-counts alone.
diff --git a/src/docs/REGRESSION.md b/src/docs/REGRESSION.md
new file mode 100644
index 0000000..9df388d
--- /dev/null
+++ b/src/docs/REGRESSION.md
@@ -0,0 +1,1335 @@
+# Learned FH% regression: design and collection plan
+
+Context: `g_uJointFHThousandths`/`g_uBetaFHThousandths` (`data.c`) are 5D/4D
+histogram tables predicting "will this move/node fail high," used to gate
+LMR/LMP admission (alpha side) and static null-move cutoff + node-type
+refinement (beta side). This doc designs their replacement: two small
+logistic regressions, one per side of the window, fit offline and baked
+into the engine as quantized integer weight vectors.
+
+## Why move off the table
+
+1. **Dimension growth is combinatorial, sample growth isn't.** The shipped
+ alpha table is already `12x11x11x17x11` ~= 268K cells; the NNUE
+ collection run (`../dual_table_run_nnue/README.md`) found 121,192 of
+ 271,524 cells still below the 500-sample floor even after a multi-day,
+ 16-shard run. Adding even one more binary axis roughly doubles the cell
+ count and thins every existing cell further. A regression's cost per
+ new feature is one more weight, not a multiplicative storage/sample
+ penalty.
+2. **New discriminating signals don't fit cleanly as new axes.** The
+ `docs/DEEPER_PRUNING.md` HASHCAP_COLLECTION side-study found two real
+ effects -- node-type (CUT vs ALL/PV) carries a measured ~9x effect on
+ leftover-move FH%, and whether the hash move was a capture carries a
+ separate ~2x effect, and the two *interact* (a CUT-node-survived-this-far
+ signal is itself evidence the CUT guess was wrong). Wiring either into
+ the existing table means a full axis-dimension expansion; a regression
+ just adds features and an interaction term.
+3. **Measured discrimination is real and worth capturing properly.**
+ Pulled directly from `../dual_table_run/pickles/baked_now.pkl`
+ (`compare_improve_axis.py` plus one-off marginal scripts written this
+ session):
+
+ Alpha side (`iEval <= iAlpha`), global marginal rate ratio per axis:
+
+ | axis | ratio (max/min FH%) |
+ |---|---|
+ | gap | 1647x |
+ | improve | 128x |
+ | dumb (hang estimate) | 96x |
+ | late (move lateness) | 40x |
+ | depth | 24x |
+
+ Beta side (`iEval >= iBeta`), using **miss-rate** (`100% - FH%`) ratio,
+ since raw FH% sits near a 95-99% ceiling where a percentage-ratio
+ understates real discrimination:
+
+ | axis | ratio (miss-rate max/min) |
+ |---|---|
+ | depth | 155x |
+ | gap | 91x |
+ | improve | 12x |
+ | own_improve | 4.8x |
+
+ Note depth is the *strongest* axis on the beta side and a middling one
+ on the alpha side -- a real, measured asymmetry, not an assumption. This
+ is the direct evidence behind building **two independent regressions**
+ rather than one shared model: even a feature both sides have in common
+ carries a different weight in each regime.
+
+## Model family: logistic regression, not trees or a net
+
+Considered and rejected for the inner loop:
+
+- **Small gradient-boosted tree ensemble** (e.g. 50 trees, depth 4): finds
+ interactions automatically, but each split is a data-dependent branch the
+ predictor can't learn a pattern for -- ~15-20 cycles mispredict penalty
+ *per split*, 50 trees x 4 levels is in the ~1us range. Disqualifying at
+ the throughput this needs to run at (every candidate move, every node).
+- **Small NNUE-style net**: fast once SIMD'd, but heavier infra for no
+ clear win over logistic regression at this feature count, and NNUE eval
+ itself is already the dominant per-node cost in this engine (~400-500K
+ nps vs HCE's ~1.3M+) -- not the place to add more float-heavy inference.
+- **Logistic regression**: one dot product (~16-20 terms) + one sigmoid.
+ Fully branch-free, pipelines well, same cost class as the existing
+ Wilson-bound table lookup + `MIN`. This is the one we're building.
+
+**Quantization**: fit in float offline (scikit-learn `LogisticRegression`,
+seconds on commodity CPU for millions of rows) exactly like
+`tune_eval_dna.py`'s DNA constants are tuned in float and only baked to
+engine-native representation afterward. Quantize the learned float weights
+to fixed-point integers (choose the scale *after* seeing real weight
+magnitudes -- don't squeeze to int16 preemptively, there's no storage
+pressure here forcing it the way there was with table axes). Inference:
+`score = (sum(w_i * f_i)) >> shift`, int64 accumulator, then one lookup
+into a small precomputed sigmoid table keyed on a coarse bucket of `score`
+-- no floating point anywhere in the hot path, no runtime `exp()`/`log()`.
+
+## Nonlinear raw quantities need an explicit feature transform
+
+Logistic regression is linear in log-odds *of the features you feed it*,
+not of whatever raw quantity you happened to measure. If the true
+relationship between depth and log-odds(FH) is logarithmic (which is why
+Stockfish's own reduction formula is `log(depth)*log(moveIndex)` to begin
+with), feeding raw depth in forces the model to approximate a curve with a
+straight line -- transform first (`log(depth)`, `log(moveIndex)`), don't
+rely on the model family to discover the right shape.
+
+Checked directly against the alpha table's real data (`baked_now.pkl`,
+marginalized per axis, logit = `log(p/(1-p))`):
+
+- **gap**: logit deltas per bucket are `-1.88, -2.30, -0.81, -0.48, -0.50,
+ -0.04, -0.07, -0.23, -0.28, -0.85` -- large early drops that flatten
+ hard, classic compressive-transform shape. `log(gap)` (or
+ `log(gap + const)`) is the right starting point for a continuous
+ feature; note the *existing* axis's bucket boundaries already encode
+ some of this nonlinearity implicitly via non-uniform bucket widths, so
+ this isn't a new discovery so much as confirmation to carry forward
+ explicitly.
+- **depth**: trends down through bucket ~12 but not cleanly log-shaped
+ (deltas bounce: `-0.12, -0.27, -0.43, -0.12, -0.06, -0.04, -0.31, ...`),
+ then goes noisy/non-monotonic past depth 13 (`+0.79`, `-0.90` swings) --
+ consistent with the NNUE README's own finding that per-cell sample
+ counts collapse toward zero past depth 13. Use `log(depth)` as the
+ default transform (matches every other engine's own formula and the
+ early-bucket trend direction), but don't trust the depth>13 region's
+ shape from this data -- validate against the regression's own residuals
+ once real feature-level (not axis-marginal) data exists, and treat
+ depth>13 behavior as an extrapolation, same caution the existing table
+ already applies there.
+- **move ordinal**: the existing `late` axis (alpha side) is the closest
+ historical proxy and gives a textbook-clean compressive shape --
+ logit deltas shrink smoothly from `-0.465` down to near-zero by bucket
+ ~27 (`-0.013`), then drift slightly positive in the extreme tail
+ (bucket 32, a wide catch-all bucket, likely a different population
+ mix rather than a reversal of the real trend). This is about as strong
+ a confirmation of `log(ordinal)` as old data can give. Combined with
+ the fact that Crafty and Stockfish both use a log-of-move-index term
+ regardless of which side of the window they're on, `log(ordinal)` is
+ adopted for **both** the alpha and beta side's move-ordinal feature,
+ not left as a side-specific guess.
+- **improve** (alpha side, axis 4): trends up with bucket index but
+ without gap's clean compressive shape -- deltas are noisy
+ (`+0.85, +0.10, +0.46, +0.63, +1.51, +0.74, -0.05, +0.14, +0.51,
+ -0.20`) though the overall direction holds across 11 buckets backed by
+ billions of tries each. Likely doesn't need an *additional* transform
+ beyond whatever the existing bucket boundaries already encode -- try
+ the raw underlying continuous quantity untransformed first, confirm
+ against the smoke test's own fresh data.
+- **improve / own_improve (beta side, axes 2-3)**: noisier still.
+ `own_improve` in particular shows a sharp level-shift -- bucket 0 sits
+ at 98.48%, every other bucket (1-10) sits in a tighter 92-96% band with
+ alternating-sign deltas -- which smells more like "own_improve == 0"
+ mattering as a distinct state than like a smooth magnitude effect.
+ Worth testing an explicit `(own_improve == 0)` indicator plus a
+ separate continuous magnitude feature against a single continuous
+ encoding once real data exists, rather than assuming either shape now.
+- **dumb (hang estimate, alpha side, axis 1)**: non-monotonic, no smooth
+ shape at all -- a huge spike at bucket 10 riding on a tiny 8.8M-try
+ sample (vs. neighboring buckets' billions), bucket 1 also spiking well
+ above its neighbors. Reads as a genuinely **categorical** signal
+ (discrete hang-severity tiers), not a continuous quantity -- which
+ confirms the decision already made above (the new, redesigned "move
+ value" feature is a continuous signed SEE/hang-estimate, not a
+ transform of this old discrete axis) rather than suggesting a log
+ transform was missing here.
+
+General rule for this project: any raw feature suspected non-linear in
+log-odds gets checked against real axis-marginal data (same style as
+above) before locking its transform, not assumed from other engines'
+formulas alone. Where no historical axis exists to check against (every
+brand-new feature: `is_whole_node`, the running counter, FH%-as-feature,
+both cross terms, and the *new* continuous move-value definition), the
+smoke test's own output is the first real opportunity to check -- see
+"Validating against the existing table" below for how that interacts
+with trusting the smoke test's small sample size.
+
+## One model, not two: NNUE-only collection (decided 2026-10-24)
+
+Originally planned as two independent collection runs (HCE and NNUE),
+matching `dual_table_run`/`dual_table_run_nnue`'s own split. Revised:
+**collect once, against NNUE only, and let HCE use the same model.**
+Rationale: NNUE is the strategic direction going forward, and running
+two full multi-day collections for a model that's meant to retire
+anyway isn't worth the cost. This is a reasonable call but carries a
+named, specific risk worth remembering rather than assuming away: the
+earlier HCE-vs-NNUE table comparison (see `dual_table_run_nnue/README.md`)
+found the **alpha** table's predictions tracked closely between the two
+evals (-0.11pp mean delta, flat across depth) -- clean support for
+reuse there -- but the **beta** table showed a real, systematic
+divergence (NNUE -0.6pp overall, growing to -1.1 to -1.9pp from depth
+bucket 2 on), plus a separate, never-investigated 3-9pp gap in one
+narrow alpha-side slice (depth=1, dumb=0, gap=0, early leftover moves).
+Before trusting one NNUE-trained model under an HCE build, the
+"rigorous spot-check against high-confidence table cells" step below
+should be run against **both** the HCE and NNUE tables' cells, not
+just whichever eval the collection happened to run under -- if the
+beta-side predictions land close to HCE's own historical cells too,
+that confirms the simplification; if not, that's exactly the thing
+worth knowing before shipping one model for both evals.
+
+Practically this requires no change to the collection design below --
+`FH_COLLECT_RECORD`/the hook API never reference `g_fUseNnueEval` at
+all, so the only real implications are: the collection run itself uses
+`typhoon_nnue` exclusively, and the eventual runtime dispatch in
+`searchsup.c` collapses to "always use the one model," no
+`g_fUseNnueEval` branch needed.
+
+## Scope: MWS (null-window) nodes only, for now
+
+Both regressions are trained and used only where `iAlpha + 1 == iBeta`
+(a null-window/MWS child). At a true PV node (`alpha < eval < beta` is a
+real, non-degenerate state), "fail high" isn't a well-defined single
+question the way it is here -- collecting and modeling PV nodes is
+explicitly **deferred as future work**, not attempted in this pass. The
+alpha/beta branch below is exhaustive specifically because MWS makes
+`iEval` always either `<= iAlpha` or `>= iBeta`, never strictly between:
+
+```c
+if (iEval <= iAlpha) {
+ uPredictedFHThousandths = RegressionA(...);
+} else if (iEval >= iBeta) {
+ uPredictedFHThousandths = RegressionB(...);
+}
+```
+
+## Shared design rules (both regressions)
+
+1. **`is_whole_node` sentinel bit, plus a dedicated `no-move` tier
+ category** -- not a raw-zero convention. The NNUE collection run's own
+ bucket-0/1/2 collision bug (raw `late` values 0, 1, and 2 all landing in
+ shipped bucket 0 because the placeholder and a real low-ordinal
+ population's natural value both mapped to zero) is exactly the failure
+ mode an implicit zero-as-"absent" convention invites. An explicit
+ indicator bit plus a genuinely separate categorical value avoids
+ repeating it.
+2. **`moves_known` bit + mean-imputation for total legal move count.** In
+ production, moves aren't generated until after the null-move and hash-
+ move tries, so the real count is genuinely unknown for the whole-node,
+ null-move, and hash-move predictions -- not zero, unknown. Pair the
+ feature with a binary indicator and impute the dataset mean when
+ unknown; the collection *build* can eagerly generate moves for every
+ logged event regardless of production's lazy order (collection already
+ pays extra cost for ground-truth correctness -- see LMP-disabling
+ precedent below), so training data always has the real count even where
+ production inference won't.
+3. **Node-type guess fed in must be the raw, parent-derived guess only** --
+ never the *refined* guess this same regression produces. Feeding a
+ model's own (even indirectly derived) output back in as an input is
+ leakage: it'll look great in training and be meaningless at inference
+ time, where the refined guess doesn't exist yet.
+4. **`in_check` is dropped entirely.** It's a hard upstream gate -- no
+ pruning, reduction, or null-move is ever attempted while in check -- so
+ the training population never contains an `in_check=true` row by
+ construction. A feature with zero variance in its own training
+ population carries zero information; it's a precondition for the model
+ running at all, not something for the model to weigh.
+5. **Evidence is the move's own calibrated FH% (Wilson-bound estimate),
+ not a raw history/continuation counter.** A raw counter has no natural
+ zero point or scale comparable to a percentage; the move's own FH%
+ estimate is already computed, already calibrated, and lives on the same
+ 0-100 scale as every other probability-flavored feature.
+6. **Generalized "good moves tried without a cutoff" running counter.**
+ Replaces the narrower "was the hash move a capture" binary flag with a
+ loop-state feature: the count (and fraction of moves-so-far) of
+ winning/even-capture moves already tried at this node that failed to
+ produce the relevant outcome. Mutates as the move loop progresses (zero
+ before any move, incrementing on each surviving good move) -- directly
+ operationalizes the "a CUT guess that survives this long is probably
+ wrong" finding rather than encoding one static fact about the hash move
+ alone.
+7. **Explicit hand-built cross terms for measured interactions.** Plain
+ logistic regression won't discover an interaction on its own -- only a
+ tree ensemble does that automatically, and we ruled trees out on speed.
+ Where there's real measured evidence of an interaction (node-type x
+ running-counter, per the ~9x CUT effect), add the product as its own
+ feature explicitly.
+8. **Nonlinear raw quantities get transformed before entering the model**
+ -- see above.
+
+## Feature list -- alpha side (`iEval <= iAlpha`)
+
+Predicts: did this move's (or the whole node's eventual best) resulting
+score end up `>= iBeta`.
+
+**Node-level** (computed once per node; shared by the whole-node row and
+every move-level row at this node):
+
+| # | feature | type / transform |
+|---|---|---|
+| 1 | `gap` = iAlpha - iEval | continuous, `log(gap)` |
+| 2 | remaining depth | continuous, `log(depth)` |
+| 3 | node-type guess (CUT/ALL/PV), **parent-derived only** | categorical |
+| 4 | improving | binary/continuous + trend (1st derivative) |
+| 5 | enemy improving | binary/continuous + trend |
+| 6 | hang/dumb estimate (position-wide) | continuous |
+| 7 | total legal move count | continuous, paired with `moves_known` bit + mean-imputation |
+| 8 | phase/material bucket | categorical, coarse |
+| 9 | `is_whole_node` | binary sentinel |
+
+**Move-level / loop-state** (one row per move actually tried: `null`,
+hash, good-capture, killer, countermove-match, leftover-quiet,
+losing-capture -- plus the `no-move` sentinel row paired with
+`is_whole_node=1`):
+
+| # | feature | type / transform |
+|---|---|---|
+| 10 | move tier tag (incl. `null`, `no-move`) | categorical |
+| 11 | move value, signed (SEE/IID/hang-estimate; +300/0/-900 style) | continuous |
+| 12 | move ordinal, raw | continuous, `log(ordinal)` |
+| 13 | move ordinal, normalized (ordinal / total legal moves) | continuous |
+| 14 | move's own FH% (Wilson-bound estimate) | continuous, 0-100 scale |
+| 15 | running counter: good/even captures tried without a cutoff, raw + fraction | continuous |
+| 16 | node-type-CUT x running-counter (cross term) | continuous |
+
+## Feature list -- beta side (`iEval >= iBeta`)
+
+Predicts: did this move's (or the null-move probe's, or the whole node's
+eventual best) resulting score end up `>= iBeta`. Same label definition as
+alpha side.
+
+**Node-level:**
+
+| # | feature | type / transform |
+|---|---|---|
+| 1 | `gap` = iEval - iBeta | continuous, transform TBD -- check logit-linearity against this side's own data before assuming `log(gap)` carries over unchanged from the alpha side |
+| 2 | remaining depth | continuous, `log(depth)` -- strongest single axis measured on this side (155x miss-rate ratio) |
+| 3 | node-type guess, **parent-derived only** | categorical |
+| 4 | improving / own-improving | binary/continuous + trend, both already real axes in the shipped table |
+| 5 | total legal move count | continuous, `moves_known` bit + mean-imputation |
+| 6 | phase/material bucket | categorical |
+| 7 | `is_whole_node` | binary sentinel |
+
+**Move-level / loop-state** (`null`, hash, good-capture, killer,
+countermove-match, leftover-quiet, losing-capture, `no-move`):
+
+| # | feature | type / transform |
+|---|---|---|
+| 8 | move tier tag | categorical |
+| 9 | move value, signed | continuous -- **flagged below, not yet trusted** |
+| 10 | move ordinal, raw + normalized | continuous, `log(ordinal)` for raw |
+| 11 | move's own FH% (Wilson-bound estimate) | continuous, 0-100 |
+| 12 | running counter: good/even captures tried without preserving the cutoff, raw + fraction | continuous |
+| 13 | node-type-CUT x running-counter | continuous |
+
+## Open items -- measure before trusting, don't assume symmetry with alpha
+
+- **Move value / SEE on the beta side is reported to have measured weak in
+ an earlier (undocumented) attempt, and the reason isn't understood.**
+ Candidate explanations, none verified: (a) a ceiling effect -- beta-side
+ outcomes already sit at 92-99%, leaving little residual probability for
+ any feature to explain; (b) collinearity with `gap` -- the node's static
+ eval may already reflect whatever material swing produced the
+ advantage, making a candidate move's own SEE partly redundant once gap
+ is in the model; (c) the original measurement itself may have been
+ flawed (bad bucketing, a confound) rather than the signal being
+ genuinely weak. Needs its own small, targeted diagnostic (same shape as
+ `HASHCAP_COLLECTION`) logging move value alongside outcome on this
+ population specifically, before deciding to keep, drop, or redefine it.
+- **The alpha-side `dumb`/hang-estimate axis measured strong (96x); its
+ beta-side analog is not assumed to be the same feature.** "Is material
+ propping up this favorable eval actually under threat" is a different
+ question than "is material hanging in general" -- needs its own
+ definition and its own measurement, not a copy-paste from the alpha
+ side.
+- **Speculative features to log now (cheap to add to the collection build)
+ and decide on later via measurement, not logged with any strong prior
+ they'll survive:**
+ - static eval magnitude itself, not just `gap` (a `+900`-eval node and a
+ `+50`-eval node with the same gap may not behave identically)
+ - ply-from-root, distinct from remaining depth (horizon/history-evidence
+ maturity effects near the root)
+ - repetition/50-move-adjacency (probably weak, cheap to check and drop)
+
+## Collection
+
+**Format: dense binary records, not text logs.** The existing
+`FH_TABLE_COLLECTION` instrumentation writes full per-node trace text via
+`Trace()`, which produced 13GB across 16 shards for the NNUE run and, per
+observation on this session's `sd 12` shallow-tier shard, grows especially
+fast on the shallow/high-diversity tier (`shard_15.log.bz2`, 5.3GB
+*compressed*). Fix this structurally rather than stripping after the fact:
+have the collection build emit one small fixed-width struct per logged
+event (whole-node row, or one row per move/null-move tried) directly to a
+per-shard binary file -- feature values and the outcome label, no text
+formatting, no field names repeated per line. This is both far smaller on
+disk and faster to load for training (straight into numpy via a dtype,
+no text parsing).
+
+**Keep the deep/shallow/medium shard tiering** (same idea as the existing
+run: one shard `sd 20`, one `sd 12`, the rest `sd 16`) -- the shallow
+tier's high position-diversity is valuable on its own terms and isn't the
+thing causing the disk problem; the disk problem was the text-log format,
+which the binary-record change solves independently of tiering.
+
+**Collection-build changes needed:**
+
+1. Disable LMP during alpha-side collection (existing `FH_TABLE_COLLECTION`
+ precedent -- still needed, same reasoning).
+2. Disable the static reverse-futility shortcut during beta-side
+ collection (new requirement, same reasoning as #1: the shortcut would
+ otherwise short-circuit the whole node before any real moves -- or even
+ the whole-node row itself -- get a chance to be logged).
+3. Eagerly generate moves for every eligible node regardless of whether
+ null-move/hash-move would have short-circuited it in production, so
+ `total legal move count` is real (not imputed) in every training row.
+4. Log one `is_whole_node` row per eligible node before the move loop
+ starts, then one row per move tried thereafter (`null` first where
+ applicable, then hash, then the rest in generation order) -- all gated
+ on the same `iEval <= iAlpha` / `iEval >= iBeta`, MWS-only eligibility
+ check used today.
+
+## Validating against the existing table: sanity check vs. rigorous gate
+
+The existing table's best-populated cells carry enormous sample sizes --
+the alpha table alone has individual `(depth,dumb,gap,late)` cells with
+over 2 billion tries (see the `improve`-axis within-cell check earlier in
+this doc's history). That's real, cheap ground truth, and it should be
+used twice, at two different points, for two different purposes --
+conflating them risks either dismissing a good model too early or
+trusting a bad one too late.
+
+1. **Cheap sanity check, against the smoke-test model.** Pick 3-4 of the
+ table's highest-tries cells, build the matching feature vector, and
+ confirm the smoke model's predicted FH% is at least in the right
+ ballpark (right order of magnitude, right direction) -- not a
+ rigorous statistical comparison, just a bug catcher. The smoke test's
+ training sample is deliberately small, so a real mismatch here is
+ more likely to mean a sign error, a scaling mistake, or a transform
+ bug than a genuine quality problem -- treat a failure here as "go
+ find the bug," not "the approach doesn't work." Run this right after
+ the smoke test's model is fit, before investing in the full run.
+2. **Rigorous pre-integration gate, against the full-run model.** After
+ the real multi-day collection and fit, compare the final model's
+ predictions against the same high-tries cells as the primary
+ calibration check before any production code changes -- this is the
+ one that actually answers "is this model trustworthy," since both
+ sides of the comparison now have enough data to be statistically
+ meaningful. Report predicted-vs-actual across a spread of cells (not
+ just the handful used for the quick sanity pass), the same
+ binned-calibration discipline the table itself would need if its own
+ boundaries were ever re-derived.
+
+## Plan
+
+1. ~~Finalize this doc.~~
+2. ~~Instrument the collection build.~~ Landed 2026-10-24:
+ `FH_REGRESSION_COLLECTION` (replaces `FH_TABLE_COLLECTION` outright --
+ see `GNUmakefile`) in `chess.h`/`search.c`/`searchsup.c`/`fhcollect.c`
+ (new file)/`main.c`/`root.c`. Call-site design matches the "function
+ calls, not big `#ifdef`s in the middle of `Search()`" guidance: three
+ always-callable hooks (`FhCollectNodeEntry`/`FhCollectMoveTried`/
+ `FhCollectNodeExit`, no-op inline stubs in a non-collection build) plus
+ `FhClassifyMoveTier` (decodes `generate.c`'s packed `_ScoreAllMoves`
+ sort key -- hash/good-capture/killer/countermove/leftover-quiet/
+ losing-capture -- back into a tier, checked in the same priority order
+ that scoring function documents, since `COUNTERMOVE_TIER_BONUS` shares
+ a bit with `GOOD_MOVE` and needs an exact match, not a bare AND). A
+ `FH_COLLECT_PENDING` struct, declared as an ordinary local in
+ `Search()` (deliberately not stored in `ctx`/`PLY_INFO` -- recursion
+ would clobber a shared copy before the parent node's own `NodeExit`
+ ran), carries state from node entry through each move tried to the
+ final whole-node commit. Per-thread binary files (`fhcollect_threadNN.bin`,
+ one `FH_COLLECT_RECORD` per logged event, buffered in
+ `FH_COLLECT_BUFFER_RECORDS`-sized batches) replace the old histogram
+ entirely -- no accumulation/merge code needed anywhere, so the
+ corresponding `root.c`/`script.c` copy-out-and-dump blocks were deleted
+ outright, not just renamed. Verified end-to-end on a smoke run (see
+ below) before moving on.
+3. **Smoke test before the real run**: ran a single-shard, `sd 6`,
+ one-position smoke test (`--cpus 1`, LMP confirmed disabled via "Overt
+ move skips: LMP=0 moves" in the engine's own output). Both build
+ profiles (`FH_REGRESSION_COLLECTION=1 PERF_COUNTERS=1 MP=1` and the
+ normal `GENETIC=1 PERF_COUNTERS=1 MP=1 SIXTYFOUR=1` production
+ profile) compile clean with no new warnings. Parsed the resulting
+ 16,384-record binary file in Python: zero suspicious rows, sane
+ table(alpha/beta)/tier/label distributions (dominated by
+ `LEFTOVER_QUIET` as expected with LMP off, a plausible handful of
+ `NULL`/`HASH`/`KILLER`/rare `COUNTERMOVE` rows), and matching
+ `NULL`/`NO_MOVE` row pairs sharing identical position signature/gap/
+ depth at the same node, confirming the stash-then-commit two-phase
+ design works correctly across the node's lifetime.
+
+ **Full soup-to-nuts pass completed 2026-10-24**, including a real
+ `sklearn` fit and a spot-check against the existing historical table
+ -- see "Running, training, and validating" below for the commands
+ and `regression_run/` for the scripts. Four real bugs were found and
+ fixed along the way, all caught by this smoke-testing, none by code
+ review alone:
+ 1. `FhClassifyMoveTier`'s capture check used `TRUE ==
+ IS_CAPTURE_OR_PROMOTION(mv)` -- that macro is a bitmask test
+ (`mv.uMove & 0x0FF00000`), not a 0/1 boolean, so it was almost
+ always false for real captures. Every capture silently
+ misclassified as a quiet move (mostly `LEFTOVER_QUIET`, some
+ `KILLER` -- a losing capture's negative `iValue` sign-extends
+ with its high bits all set, coincidentally matching the killer-
+ bit test). Fixed to a plain nonzero check, matching every other
+ real call site in the codebase.
+ 2. The per-move `move_value` feature for quiet moves was reading
+ `g_iPSQT[mv.pMoved][mv.cTo]` (a positional square-preference
+ number) via the packed sort key, not a material-safety estimate
+ -- a different signal than the one actually designed and
+ validated (the old table's `dumb` axis, 96x discrimination on
+ the alpha side). Fixed to call `EstimateHangingMaterialCp`
+ explicitly for quiet moves, matching `searchsup.c`'s own
+ existing call to it.
+ 3. `GetMoveFailHighWilsonUpperBoundThousandths` returns a
+ confidently-low value for a move identity with zero evidence
+ (the table's own `n=1,k=0` cold-start convention), not a neutral
+ "unknown" -- indistinguishable from a genuinely well-evidenced
+ safe move without more context. Added `uMoveFhAttempts`
+ (`GetMoveFailHighAttempts`, new function) as a companion raw
+ evidence-count field.
+ 4. `total_non_pawn_material` (the phase/material feature, itself
+ missing from the first implementation -- see the feature audit
+ below) initially summed `pos->uNonPawnMaterial[color]` directly,
+ which includes each side's own king at `VALUE_KING` ==
+ `INFINITY_SCORE` (32767) -- a ~65534 constant swamping the real
+ ~0-6725 of actual piece material riding on top of it. Fixed by
+ subtracting `VALUE_KING` per side, the same convention `eval.c`'s
+ own `uArmyScaler` already uses.
+
+ **Feature audit against this doc's own tables** (done after the
+ above fixes, before trusting anything further): every listed
+ feature is present and correctly wired except alpha-side node-level
+ feature #6, `hang/dumb estimate (position-wide)` -- never
+ implemented at all. Decision: leave it as a documented placeholder
+ (0) rather than build new code for it now -- the old table *also*
+ pinned this exact whole-node slot to a hardcoded 0 (there's no
+ natural move-independent analog of `EstimateHangingMaterialCp`
+ without a more expensive full-board threat scan), so this isn't a
+ regression, just an unfilled slot with real historical precedent.
+ Revisit only if the trained model's calibration specifically
+ implicates missing whole-node material-safety signal.
+
+ The MP/`StartParallelSearch` split path remains deliberately
+ uninstrumented (collection runs at `--cpus 1`, so this path is never
+ exercised in practice).
+4. Full multi-shard, multi-day collection run (binary format, same
+ deep/shallow/medium tiering), against `typhoon_nnue` only (see "One
+ model, not two" above).
+5. Fit both regressions offline, quantize, validate calibration
+ (predicted vs. actual FH%, binned, same discipline as validating the
+ existing table) before touching production code.
+6. Integrate into `search.c`/`searchsup.c`: replace the table-lookup call
+ sites with the quantized dot-product + sigmoid-lookup inference,
+ gated the same way the existing HCE/NNUE table pair is selected today
+ (`g_fUseNnueEval && g_fNnueWeightsLoaded`-style runtime switch -- TBD
+ whether this model needs a similar HCE/NNUE split or can be eval-
+ agnostic; check empirically rather than assume).
+7. Full validation ladder per `docs/DEEPER_PRUNING.md`'s existing
+ discipline: wiring sanity (`DEBUG=1 TEST=1` + `debug_smoke_test.sh`),
+ per-move FH-rate instrumentation, `sd 10` and `sn 5000000` suite diffs
+ on the three curated suites, `match_play.py` gated self-play
+ (`LOWER95 >= 0.5`) before this ever ships as the default.
+
+## Running, training, and validating
+
+Everything below lives in `regression_run/` (sibling of `src/`, same
+convention as `dual_table_run/`), and all of it already works end to
+end against real smoke-test data -- this is the actual, exercised
+procedure, not a forward-looking plan.
+
+### 1. Build the collection binary
+
+```sh
+cd src
+gmake clean # after any chess.h change touching many TUs
+gmake -j5 PERF_COUNTERS=1 MP=1 FH_REGRESSION_COLLECTION=1
+```
+
+Produces `src/typhoon` with the collection hooks live. **Never ship this
+binary for anything other than a collection run** -- LMP and the beta-
+side static-null-move shortcut are both disabled under this flag (see
+"Collection-build changes needed" above), a real strength regression in
+normal play.
+
+### 2. Launch a collection run
+
+Same invocation convention as the rest of this project's ECM testing
+(CLAUDE.md's "Testing: the ECM tactical suite" section) -- `--cpus 1`,
+book disabled, `easy` to stop background pondering from contaminating
+the logs, `sd <depth>` not `st <seconds>` for a reproducible, load-
+independent run:
+
+```sh
+mkdir -p /tmp/typhoon/<run_name> && cd /tmp/typhoon/<run_name>
+/path/to/typhoon --cpus 1 --hash 256m \
+ --logfile /tmp/typhoon/<run_name>/run.log \
+ --batch --command "force; book name /nonexistent.book.bin; easy; sd 10; \
+ script /usr/home/scott/typhoon/tests/<suite>.ep_"
+```
+
+Produces `fhcollect_thread00.bin` (and `fhcollect_threadNN.bin` per
+helper thread, if `MP=1` and `--cpus > 1`) in the current directory --
+one `FH_COLLECT_RECORD` per logged event, 64 bytes each as of this
+writing (confirmed via `offsetof`/`sizeof` against the real compiled
+struct, not assumed -- see `regression_run/load_records.py`'s own
+docstring for why that matters). A 90-position suite at `sd 10` runs in
+well under a minute and produces on the order of tens of millions of
+records to low hundreds of GB for the real multi-shard run -- launch
+in the background (`nohup ... &` or `run_in_background`), don't block
+the foreground on it.
+
+### 2b. Or launch a real multi-shard run (16 shards, like dual_table_run*)
+
+`regression_run/build_shards.py` is `dual_table_run_nnue/build_shards.py`
+copied verbatim -- it's pure EPD-pool slicing, no awareness of which
+table format reads the shard files it builds, so it needed no changes:
+
+```sh
+cd regression_run
+python3 build_shards.py --repo-root .. --num-shards 16 \
+ --medium-positions-per-shard <N> --out-dir shards
+```
+
+Then `launch_shards.sh <run_name>` -- same deep/shallow/medium depth
+tiering convention as the dual-table runs (1 `sd20`, 1 `sd12`, 14
+`sd16`, overridable via env vars, see the script's own header comment
+for the all-`sd10` smoke-test invocation), using `../src/typhoon_nnue`
+(NNUE-only collection, per the decision above):
+
+```sh
+./launch_shards.sh my_run_name
+```
+
+**One real difference from the old `FH_TABLE_COLLECTION` shard
+scripts, worth understanding before relying on this**: there, each
+shard's *data* lived in its own `--logfile`, so all 16 could safely
+share one working directory. Here, the data is
+`fhcollect_thread00.bin` -- named only by **thread number within a
+process** (`chess.h`'s `FH_COLLECT_WRITER` comment), since the file-
+naming scheme was designed around multiple *threads* in one engine
+(`MP=1`), not multiple independent shard *processes*. 16 shards
+sharing a directory would all collide on the same filename. Fixed with
+no C changes: `launch_shards.sh` gives each shard its own working
+directory (`runs/<run_name>/shard_NN/`) before `exec`ing the engine, so
+each one's `fhcollect_thread00.bin` is a distinct file on disk.
+
+**Recombining shards is simpler than the old design, not harder**:
+`load_records.py`'s `glob`-and-concatenate already treats "every
+matching file under a directory" as one dataset -- pointing it at
+`runs/<run_name>/shard_*/fhcollect_thread00.bin` (via the `pattern`
+argument) *is* the recombination step. There's no `aggregate.py`/
+`bake.py`-style merge needed, because there's no in-process histogram
+to sum across shards in the first place -- concatenating raw rows is
+the whole operation.
+
+**Checking progress and coverage while shards are still running**:
+
+```sh
+./dashboard.py my_run_name
+```
+
+Prints each shard's record count/file size and whether its process is
+still alive, then re-derives the old table's discrete-cell coverage
+view from the raw rows on the fly (via `old_table_buckets.py`'s exact
+port of `searchsup.c`'s bucket functions) -- populated-cell count,
+count below the same 500-sample floor the original table's own bake
+used, and the sparsest populated cells (the "dusty corners" view).
+Unlike the old `dashboard.py`, there's no accumulated histogram to
+read -- this one loads the shard files directly (with
+`snapshot=True`: a trailing partial record from a write caught mid-
+flight, or the writer's own `FH_COLLECT_BUFFER_RECORDS`-sized buffered-
+but-not-yet-flushed tail, is expected and silently dropped, not an
+error -- see `load_records.py`'s own docstring) each time it's run, so
+it's always reading real on-disk state, just never perfectly up to the
+instant.
+
+**Taking a mid-run snapshot to bake a model without stopping the
+shards** (the other thing the old workflow supported): works the same
+way -- pass `--snapshot` to either `explore_and_fit.py` or
+`spotcheck_vs_table.py` (e.g. `python3 explore_and_fit.py
+runs/my_run_name --snapshot` -- note these two scripts take the actual
+directory, not the bare run name `dashboard.py` takes) to read
+`<dir>/shard_*/fhcollect_thread00.bin` with `snapshot=True`, exactly
+like `dashboard.py` already does. The
+shards keep running throughout, same as the old workflow's "last
+checkpoint is authoritative" model -- nothing here needs them paused.
+
+**Stopping**: `./stop_shards.sh my_run_name` -- safe anytime, kills
+each shard by its recorded pid; the only loss on a hard kill (vs. a
+clean exit) is each shard's own still-buffered (not yet flushed)
+tail, same `FH_COLLECT_BUFFER_RECORDS - 1`-record caveat as any other
+abrupt stop.
+
+**Validated mechanically** (2026-10-24): a 2-shard, 10-position,
+`sd 8` pipeline smoke test exercised build → launch → dashboard
+(mid-run-shaped coverage output, including the sparsest-cells view) →
+stop end to end with no issues.
+
+### 3. Load and sanity-check
+
+```sh
+cd regression_run
+python3 load_records.py /tmp/typhoon/<run_name>
+```
+
+Prints row counts by table/tier and a label rate, and fails loudly
+(nonzero exit, listed problems) on any structural issue -- out-of-range
+table/tier/label/moves_known values, negative gap, implausible depth.
+Run this on every new collection directory before trusting it further.
+
+### 4. Explore and fit
+
+```sh
+python3 explore_and_fit.py /tmp/typhoon/<run_name>
+```
+
+Engineers features (log transforms, one-hot tier/node-type, normalized
+ordinal, the running-counter fraction, the node-type x running-counter
+cross term -- see `engineer_features()`), prints a per-feature
+discrimination report (correlation with label, bottom/top-quartile
+rate), fits a standardized logistic regression per table, and prints
+log-loss/AUC plus a calibration table (predicted-probability bucket vs.
+actual rate). This is the fast, routine command to re-run after any
+new collection pass.
+
+### 5. Spot-check against the existing historical table
+
+```sh
+python3 spotcheck_vs_table.py /tmp/typhoon/<run_name> \
+ ../dual_table_run/pickles/baked_now.pkl
+```
+
+Trains both models (same as step 4), then -- using Python
+re-implementations of `searchsup.c`'s exact bucket functions
+(`old_table_buckets.py`, constants pulled directly from `chess.h`, not
+guessed) -- finds real rows in the fresh collection that land in the
+*same discrete cell* as the old table's own highest-tries cells
+(`tier == LEFTOVER_QUIET` for the alpha side, matching the old table's
+real per-move population; `tier == NO_MOVE` for the beta side, matching
+its whole-node-only population), and prints old-table-rate vs.
+new-model-mean-prediction side by side. This is the "sanity version" of
+the two-tier validation plan described earlier in this doc -- cheap,
+fast, and meant to catch a sign/scaling bug, not to be the final
+calibration gate (that's step 5 of the numbered Plan above, against
+the real multi-day run, with the **rigorous** version of this same
+comparison).
+
+**What a good result looks like**, from the actual 11-position
+`ecm_ringers.ep_` smoke run: the large majority of matched cells (30/30
+found on both sides against the old table's top-30-by-tries cells)
+track within 1-3 percentage points of the historical rate, including
+several beta-side cells with billions of real historical tries. Isolated
+larger deviations are expected and not automatically alarming -- e.g.
+this run's one real outlier landed on the `late` axis's known-unusual
+saturated tail bucket (see "Why past LMR experiments failed"-adjacent
+discussion of bucket 32 earlier in this doc); a *systematic* drift
+across many cells in the same direction, rather than one isolated
+bucket, is the thing that would actually warrant stopping and
+investigating before trusting a model trained this way.
+
+### 6. Quantize and bake (not yet automated -- next piece of work)
+
+Not built yet. When this is wired up, the shape is: take the fitted
+`sklearn` `LogisticRegression` + `StandardScaler` (as returned by
+`explore_and_fit.fit_and_report`), fold the scaler's mean/scale
+affinely into the raw-scale weights and intercept (`coef /
+scaler.scale_`, with the intercept adjusted by `-sum(coef * mean /
+scale)` -- exact algebra, no approximation, since standardization is
+just an affine transform), quantize to fixed-point integers at a scale
+chosen *after* seeing the real weight magnitudes (don't pre-commit to
+e.g. int16 the way the old table's axes had to -- there's no storage
+pressure forcing a tight scale here), and emit a small C array (weights
++ bias + a sigmoid lookup table) analogous to how `bake_dna.py` splices
+tuned constants into `eval.c` today.
+
+### 7. Wire into the engine (not yet done -- after step 6 and the full validation ladder)
+
+Replace the `_JointTablePredictedFHThousandths`/
+`_BetaTablePredictedFHThousandths` call sites in `searchsup.c` with the
+quantized dot-product + sigmoid-lookup inference. Concretely:
+
+- The feature vector at each call site needs to be assembled from
+ values already computed there today (`iEval`/`iAlpha`/`iBeta` for
+ gap, `uDepth` for depth, the existing `uRawImproveB`-style locals,
+ the move's own tier/ordinal/`EstimateHangingMaterialCp`/SEE value,
+ `GetMoveFailHighWilsonUpperBoundThousandths`/`GetMoveFailHighAttempts`
+ for the evidence features) -- nothing new to compute, just reshaped
+ into the model's input order.
+- `_RefineNodeTypeGuess` and the null-move-skip site both currently
+ reuse one table lookup (`uNodeLocalFH`) across multiple call sites
+ per node specifically to avoid a duplicate table consult -- preserve
+ that same reuse discipline with the new inference call, which is not
+ free (a ~20-feature dot product), unlike a bare array index.
+- Per the "One model, not two" decision above, there is no
+ `g_fUseNnueEval` branch needed at the call site -- always use the one
+ NNUE-trained model, under both HCE and NNUE builds.
+- Full validation ladder before this ever ships as the default: `gmake
+ DEBUG=1 TEST=1` + `debug_smoke_test.sh`, per-move FH-rate
+ instrumentation, `sd 10`/`sn 5000000` suite diffs on the three
+ curated suites, `match_play.py` gated self-play (`LOWER95 >= 0.5`).
+ See `docs/DEEPER_PRUNING.md`'s existing validation-ladder discipline
+ -- this is the same ladder, not a new one.
+
+## Session note: depth-dependent sampling bias (2026-10-24 follow-up)
+
+After hours of `nnue_run1` collection with tier-dependent sampling live,
+Scott noticed the beta-side rigorous spot-check's depth-blowup
+(`spotcheck_vs_table.py`, depth-bucketed error climbing from ~2pp at
+shallow remaining depth to 20-37pp at the deepest buckets) wasn't
+shrinking despite more hours of collection -- surprising, since more
+data usually does narrow this kind of gap.
+
+Root cause: `fhcollect.c`'s tier-dependent subsampling classified
+beta-side `NO_MOVE` (the whole-node population, exactly what the
+spot-check compares against the old table) as "common," so it got hit
+by the aggressive `FH_COLLECT_SAMPLE_DENOM` (e.g. 1-in-250) uniformly
+across ALL remaining depths. But a large REMAINING depth means the
+node sits close to the root, where the branching factor makes nodes
+structurally scarce compared to the shallow-remaining-depth population
+near the leaves -- the deep tail's raw volume was always small
+relative to the shallow glut, for tree-shape reasons having nothing to
+do with how long collection runs. Subsampling both populations at the
+same flat rate preserves that same scarcity ratio forever: running
+longer scales the deep tail and the shallow glut up together, so the
+deep tail's SHARE of the data (what the spot-check's matched-cell `n`
+counts depend on) never improves. This is a sampling-design bug, not
+evidence the model itself can't fit deep cells -- confirmed by the
+matched-cell `n_new` counts themselves staying in the single/low double
+digits at depth 5+ even after a full extra collection pass.
+
+Fix: `FhCollectEmit`'s common/rare classification is now ALSO
+depth-aware, not just tier-aware -- once `uRemainingDepthTicks / ONE_PLY
+>= 3`, a record falls back to the gentle/rare denominator regardless of
+tier, on both tables. Cheap to do (the deep population is naturally
+small on its own, so relaxing its sampling doesn't meaningfully grow
+disk usage) and directly targets exactly the gap the spot-check kept
+surfacing.
+
+**Required a full shard restart** (the denominators, and now this
+depth check, are read/applied once per process -- a running shard
+keeps using the old binary's logic until restarted), same as the
+original tier-dependent-sampling fix. Restarting costs nothing but
+some redundant re-processing of each shard's already-seen opening
+positions (search is deterministic, so no bias is introduced -- see
+that section's discussion); existing collected data is kept (append-
+mode writer, never truncated). Re-run `spotcheck_vs_table.py` again
+after this fix has had a few more hours to accumulate deep-bucket
+coverage before concluding whether it actually closed the gap.
+
+## Beta-side spot-check disagreement, investigation, and resolution (2026-10-24)
+
+The rigorous spot-check (`spotcheck_vs_table.py`) consistently showed a
+real, unexplained disagreement between the fresh beta model and the
+old table, concentrated in two distinct ways at different points in
+the investigation -- both eventually resolved (or, for the second,
+found NOT to be a model problem), via direct measurement rather than
+guessing:
+
+**1. Mate-score window contamination (resolved).** The old table's
+`gapbeta_b=20` overflow bucket (gap >= 2000cp) showed the fresh
+model badly OVER-predicting (97-98%) against the old table's 25-58%.
+Checked directly: that bucket is 99.4% concentrated at `gap` in
+[31700, 32767] -- essentially `INFINITY_SCORE` -- with a complete gap
+in the data between 3,000 and 20,000, meaning it's not a continuum of
+"big material edge getting bigger" but two distinct populations: an
+ordinary cp-scale edge, and a detected-mate static eval compared
+against an ordinary beta window. The fresh collection's own recorded
+label rate for the mate-score population was high (90-99% at
+shallow/medium depth) -- the "disagreement" was the FRESH data being
+right and the OLD TABLE being stale for this one narrow, structurally
+different region (very likely a holdover from before the
+NODE_TYPE-refinement rewrite, commit `69525eb`, landed literally
+hours before the old table's own bake). Fixed by excluding `gap >
+MATE_GAP_THRESHOLD` (5000, chosen in the empirical no-data gap between
+the two populations) from BOTH training (`load_records.exclude_mate_window`)
+and the old-table comparison population (the old table's own
+overflow-bucket cells, since its ground truth there is the
+stale/mismatched side) -- see `old_table_buckets.py`'s
+`exclude_overflow` parameter to `spotcheck_vs_table.run_comparison`.
+This also directly validated Scott's independent hypothesis about
+`iBeta > +NMATE` windows being a structurally different regime not
+worth training on.
+
+**2. A second, smaller depth/improve-combo disagreement (ruled out as
+a model defect -- NOT the same issue).** After the mate-window fix,
+3-4pp average / up to 34pp disagreement remained at moderate depth,
+ordinary gap, specific own/enemy-improve combos. Two hypotheses were
+tested and ruled out: (a) more collection volume -- tested directly by
+resampling 5x bigger (15M vs. 3M rows, same already-collected data,
+no more time running shards) and the error got slightly WORSE, not
+better, which is the signature of a real bias, not sampling noise; (b)
+a missing `improve x enemy_improve` interaction term -- added and
+refit, no measurable effect. The test that actually settled it (Scott's
+own proposed validation criterion -- "run a zillion positions and see
+if it approximates the predicted rate"): a targeted calibration check
+on EXACTLY the disputed region, held out from training, with real
+observed outcomes. Over 258,349 held-out rows in that region, predicted
+probability matched realized frequency within 0.04-3.5pp at every
+decile, aggregate 46.10% predicted vs. 46.85% actual. The model's
+predictions ARE calibrated against real outcomes in the disputed
+region -- the old-table disagreement there is most likely explained by
+the same staleness mechanism as (1) (old table built before the
+NODE_TYPE-refinement rewrite), not a defect in the fresh model.
+
+**Validation methodology this settled on** (the actual answer to "how
+do we know this model is trustworthy," distinct from "does it agree
+with the old table," which can be unfair when the old table itself is
+stale): bucket held-out rows (never used in training) by their own
+predicted-probability decile, and check whether the REALIZED label
+rate in each decile matches the mean predicted probability for that
+decile. This is a direct test against ground truth (what actually
+happened), not against a second model (the old table) that may itself
+be wrong. Agreement with the old table is useful corroboration when it
+holds, but calibration against real outcomes is the primary trust
+criterion, and the one that should be re-run after any future
+search/eval change (the same risk that made the old table stale
+applies to this model too, just on a longer horizon).
+
+## Production implementation (`fhmodel.c`) and a serious open problem found by actually benchmarking it (2026-10-24)
+
+Implemented as fully quantized fixed-point integer arithmetic (Q16 for
+table/final-sum arithmetic, Q30 for the handful of raw-feature
+weights) -- explicitly NOT floats, per the original design premise
+("the whole premise of this regression model is that it would be
+fast, have few multiplies and adds, and could be quantized" -- not
+optional, corrected after an initial draft wrongly used floats by
+analogy to NNUE's L2/L3 tail, which Scott correctly pushed back on).
+See `fhmodel.c`/`chess.h` (declarations folded into chess.h, matching
+fhcollect.c's own no-separate-header convention) and
+`regression_run/export_model.py` (generates `fhmodel_weights.h`).
+
+**Hoisted node-level/move-level split** (Scott: "make sure to hoist as
+much of the inference out of the move loop as you can... gap to alpha
+is one of the terms that can be hoisted"): `gap`, `depth`, `improve`,
+`enemy_improve`, `material`, and `node_type` are all fixed for a
+node's entire move loop (none can change based on which move is being
+tried), so `FhModelAlphaNodeBaseQ16` computes them exactly ONCE per
+node (search.c, same point `FhCollectNodeEntry` already is), and
+`SearchOneMove` only adds the genuinely move-varying terms (move
+value, ordinal, tier, this move's own historical FH% evidence) per
+move.
+
+**Production feature-set scoping**: `good_captures_tried_no_cutoff`
+and its cross term were dropped from the production model (though kept
+for data collection/analysis) -- using them live would require adding
+new always-on state to `search.c`'s move loop (currently
+collection-only), and measured cost of dropping them was negligible
+(AUC -0.0004/-0.0002 on alpha/beta). `FhClassifyMoveTier` was moved
+from `fhcollect.c` (collection-only) to `searchsup.c` (always
+compiled) since production inference needs real tier classification
+unconditionally, not the collection-only build's no-op stub.
+
+**Real bugs found and fixed via actually building and running this**,
+not by inspection:
+- The sigmoid-output lookup table overflowed `INT` (32-bit): an
+ earlier version Q16-scaled `probability*100000` (max ~100000) on
+ top of an already-complete integer unit, producing values up to
+ ~6.55 billion, ~3x `INT32_MAX` -- caught via a real
+ `-Wconstant-conversion` warning on the actual generated header, not
+ by inspection. Fixed by not double-scaling: the table already
+ outputs the final integer unit directly.
+- `_RefineNodeTypeGuess`'s alpha whole-node branch initially called a
+ function name left over from an earlier (pre-quantization) draft
+ that no longer existed after the rewrite -- caught by the compiler
+ (`undeclared function`), not by review.
+
+**A serious, SERIOUS, still-UNRESOLVED problem found by running
+`bench`** (Scott's explicit ask: compare `bench` speed against HEAD
+with `git stash`): total nodes searched at the SAME fixed depths
+(`bench.c`'s own per-position depth, unaffected by this change)
+dropped from 1,678,274 (HEAD, table-based) to 302,251 (regression
+model) -- a 5.5x reduction, not a modest speed difference. Traced via
+temporary diagnostic instrumentation (added, used, and removed in this
+same session -- not left in the tree) directly logging
+`FhModelBetaPredictedFHThousandths`'s output: it returns 94.5-99.97%
+for EVERY sampled call, regardless of gap (9-1299), depth (1-7
+plies), or improve/enemy values varying widely. This saturates
+`_RefineNodeTypeGuess`'s band classification into `NODE_CUT` almost
+universally, which cascades into far more aggressive pruning
+everywhere else in the engine that reads `pi->eNodeType` -- almost
+certainly the real cause of the 5.5x node-count collapse, not a
+reduced-dynamic-range-but-still-reasonable-magnitude issue.
+
+**Root cause**: `FHM_BETA_INTERCEPT` is `+5.55` in real log-odds units
+(`sigmoid(5.55)` ~= 99.6%) -- confirmed present even in the
+PRE-quantization float fit, not introduced by the integer rewrite.
+`export_model.py`'s `fit_final()` trains on the FULL mixed-tier beta
+population (every per-move tier plus `NO_MOVE`) with just an additive
+per-tier offset, but the only thing production ever calls
+(`_RefineNodeTypeGuess`) is the `NO_MOVE`-specific whole-node case.
+`NO_MOVE` rows are inherently high-base-rate (the node's static eval
+already exceeds beta by construction of eligibility), and the shared
+node-level slopes -- fit across ALL tiers combined, dominated by the
+much larger per-move-tier population's own data -- are too flat
+relative to that large additive offset to meaningfully move `NO_MOVE`
+predictions away from it. The AUC=0.9234 reported during fitting is
+real but measures discrimination ACROSS tiers (tier identity alone
+separates classes well), not WITHIN the one tier (`NO_MOVE`) production
+actually consumes -- exactly the kind of gap the holdout-calibration
+methodology above would have caught if it had been re-run against the
+FINAL production (trimmed-feature, mixed-population-fit) model
+specifically restricted to `NO_MOVE` rows, rather than the earlier,
+differently-fit model that calibration check used.
+
+**Not yet fixed. Recommended next step**: refit the beta production
+model on the `NO_MOVE`-only population specifically (not the mixed
+population used for data collection/the general calibration work),
+so the intercept and node-level slopes reflect `NO_MOVE`'s own actual
+relationship to gap/depth/improve/material, not an average diluted by
+tiers production never queries this function for. Re-run the holdout
+calibration check (restricted to `NO_MOVE` rows specifically) and the
+`bench` node-count comparison against HEAD again before trusting this
+number -- do NOT re-attempt a speed comparison until this is fixed,
+since the current 5.5x node-count gap makes any NPS number measured
+against it meaningless (comparing search quality/aggressiveness, not
+per-node computational cost).
+
+**Build profiles verified clean** (all three): default (table-based,
+unchanged), `FH_REGRESSION_COLLECTION=1` (collection), and the new
+`FH_USE_REGRESSION_MODEL=1` (this implementation) all compile with
+`gmake clean && gmake release PERF_COUNTERS=1 MP=1 [flag]=1` with zero
+errors. `gmake DEBUG=1 TEST=1 FH_USE_REGRESSION_MODEL=1`'s self-test
+suite ran to completion with no assertion failures or crashes
+(`REAL_EXIT=0`) -- the new code path is memory/assert-safe even though
+its PRUNING BEHAVIOR is currently wrong per the above. Do not treat
+"doesn't crash" as "is correct" -- they were checked separately here on
+purpose, and only the first currently passes.
+
+## Trust audit (2026-10-24, same day): a close read before committing anything
+
+Scott's framing going in: the candidate won a 400-game match (54.4% was
+the actual score, see below -- "65%" was a misremembering, not what the
+log shows) and bench looked ~fixed, but the whole process "felt
+haphazard, seat-of-the-pants, rushed, and random," and he specifically
+distrusted (a) the beta-side saturation fix, (b) a verbal "the table was
+too conservative because of smoothing" explanation for a threshold
+change, and (c) a "this feature isn't a strong signal" dismissal of the
+good-captures-counter generalization. All three turned out to be worth
+distrusting, to different degrees -- see below. This section is the
+full audit trail; treat it as the actual state of the beta-side work,
+superseding the "Not yet fixed" framing a few sections up wherever they
+conflict.
+
+### A real, unrelated bug found while trying to build anything
+
+The working tree's `search.c` didn't compile at all, with no FH flags
+present -- a prior edit had collapsed `SCORE iBestScore;` (declared near
+the top of `Search()`) into `SCORE iBestScore = -INFINITY_SCORE;` and
+left the combined declaration *below* the early-QSearch-jump that
+already uses `iBestScore` at line ~402. Fixed by restoring the plain
+early declaration and leaving the assignment where it was. Unrelated to
+any FH work; just a reminder that "does it build" is step zero, not an
+assumption.
+
+### Match-play log: 54.4%, not 65%, and it fails the project's own gate
+
+`eval_tune/regmodel_vs_head_nnue.log` (400 games, built from binaries
+postdating the beta NO_MOVE-only refit) is 142W/151D/107L =
+**score 0.5438**. Recomputing with `match_play.py`'s own formula (plain
+normal-approximation CI, not Wilson): **LOWER95 ≈ 0.495** -- below the
+documented `>= 0.5` gate. So, as of that run, this candidate had not
+actually cleared the bar it needs to clear; "it won" was not an accurate
+read of the saved log.
+
+### Bench: NPS is the wrong metric; total nodes told a different story
+
+`bench.c` prints `"Searched N nodes in T sec"` *before* the NPS line.
+Comparing NPS across builds (as a first pass did) can look flat even
+when the tree collapsed, because fewer nodes in proportionally less
+time preserves throughput. Using the actual node-count line, same fixed
+depths both builds:
+
+| build | nodes | ratio vs HEAD |
+|---|---|---|
+| HEAD | 1,678,274 | 1.00x |
+| regression (threshold=96000, the shipped default at the time) | 450,852 | **3.72x collapse** |
+| regression (threshold=99000) | 1,489,894 | 1.13x (close) |
+
+The original bug report's 5.5x collapse (pre NO_MOVE-only refit) had
+shrunk to 3.72x post-refit -- a real improvement, but "the bench issue
+is ~fixed" (said based on NPS alone) was not correct; the collapse was
+still present, just smaller, until the threshold was also addressed
+(see below).
+
+### ECM suites confirm it, at real cost to tactical strength
+
+`sd 10`, three curated suites, HEAD vs regression at the then-default
+threshold (96000):
+
+| suite | HEAD solved | regression solved (96000) | regression solved (99000) |
+|---|---|---|---|
+| ecm_ringers (11) | 2 | 3 (noise-level, n too small) | -- |
+| ecm_confident_quick (90) | 56 | **41** (-15) | **56** (exact match) |
+| ecm_hard_quick (90) | 13 | **7** (-6) | **12** (within noise) |
+
+### `good_captures_tried_no_cutoff`: the signal is real, not broken by the generalization
+
+Checked both the doc's claimed ablation (-0.0004/-0.0002 AUC on
+alpha/beta for dropping it from the production feature set -- no saved
+artifact existed anywhere for this number, but re-measuring it
+independently, same methodology, confirms it: +0.0007/+0.0001 on
+4M rows, negligible either way) and the raw univariate signal:
+
+```
+good_captures_tried_no_cutoff=0 FH_rate=20.42%
+ =1 FH_rate= 3.10%
+ =2 FH_rate= 1.69%
+ =3+ FH_rate~ 1.0-1.8%
+```
+
+~15-20x effect on its own, univariate AUC=0.68. It wasn't broken by
+Scott's generalization from "hash move is a capture" -- it correlates
++0.41 with `log_ordinal`, a feature that didn't exist in the old
+table's axis set and does exist in the new model, so the generalized
+counter's real content is now redundant with (absorbed by) `log_ordinal`
+in the full model. The marginal-AUC number is a true statement about
+*redundancy given the richer feature set*, not a true statement about
+*whether the phenomenon is real* -- conflating the two, especially
+right next to a mention of not wanting new move-loop state, is exactly
+what produced the dismissive-sounding "meh, not a strong signal anyway"
+framing. The underlying finding stands; it just doesn't need its own
+dedicated feature once `log_ordinal` is present.
+
+### Calibration: the beta model is honest, both in aggregate and sliced
+
+Held-out decile calibration, NO_MOVE population, post-refit model:
+
+```
+pred [0.950,0.960) n=4,050 mean_pred=0.9549 realized=0.9533
+pred [0.960,0.970) n=3,966 mean_pred=0.9649 realized=0.9652
+pred [0.970,0.980) n=3,994 mean_pred=0.9751 realized=0.9735
+pred [0.980,0.985) n=1,979 mean_pred=0.9825 realized=0.9843
+```
+
+Sliced further by depth and material within the "would-skip" (pred>=0.96)
+population specifically (to hunt for a bad subpopulation before touching
+the global threshold): wrong-rate stays flat and low (0.6%-3.6%)
+everywhere checked, depth 1-9 plies and material 0-7000cp alike. No
+identifiable bad corner. **The "table was too conservative because of
+smoothing, the regression model is more accurate" explanation for
+needing `FH_BETA_SKIP_THRESHOLD=99000` is not supported by this data** --
+there's no smoothing gap to correct; the model's 96% output is already
+honest, on average and in every slice checked.
+
+### The real explanation: firing FREQUENCY, not per-decision accuracy
+
+Comparing the table's own real historical wrong-rate at its 96000
+threshold (`dual_table_run_nnue/pickles/baked_now.pkl`'s raw NO_MOVE
+cells, >=50,000 tries each, mate-window excluded) against the regression
+model's held-out wrong-rate at the same nominal threshold:
+
+| | wrong rate @ 96% |
+|---|---|
+| old table (historical, 66B real tries) | 1.77% |
+| regression model (held-out) | 2.02% |
+
+Close -- the two models roughly agree on what "96%" means in real risk,
+aggregate. So the ECM/bench collapse is not explained by the regression
+model being generically overconfident at 96% relative to the table.
+Added a small diagnostic (`u64QuickNullMoves`/`u64QuickNullMoveSuccess`
+tree counters, already existed; wired through to `g_Options` in
+`root.c`, accumulated across a suite in `script.c`'s
+`g_SuiteCounters.u64TotalQuickNullMove{s,Success}`, printed as a new
+"quick nullmove fire" line in `_PrintSuiteReport` -- kept, not a
+remove-after-session diagnostic, since it's cheap and generally useful)
+and re-ran the suites:
+
+| suite | HEAD fire rate | regression fire rate (96000) | regression fire rate (99000) |
+|---|---|---|---|
+| ecm_confident_quick | 47.09% (714K/1.52M) | 91.61% (745K/813K) | 71.05% (1.31M/1.84M) |
+| ecm_hard_quick | 40.83% (833K/2.04M) | 87.49% (800K/914K) | 64.74% (1.45M/2.23M) |
+
+The regression model fires the shortcut on roughly **twice** as many
+eligible nodes as the table did, at a similar per-decision risk level.
+Since each firing truncates a subtree, a ~2x per-node firing-rate
+increase compounding across depth plausibly explains the 3-4x total
+node collapse and the resulting solve-rate cost, without requiring
+either model to be locally miscalibrated anywhere checked.
+
+**Working hypothesis, not yet verified**: real search trees have
+correlated neighboring nodes (siblings/descendants down one line often
+share whatever feature combination drove a high prediction -- a recent
+capture's eval margin, say -- for several consecutive plies). The
+regression model's richer feature set can track that persistent
+condition precisely and fire at every one of those correlated nodes;
+the table's coarser, smoothed buckets more often scatter similar-but-
+not-identical real positions across different cells, diluting the same
+real condition below its own 96% cutoff more often. Same honesty per
+isolated decision, different firing frequency once correlated decisions
+down a real line are strung together. Worth checking directly (e.g.
+autocorrelation of the shortcut firing along a single PV) before
+leaning on this further.
+
+### Category A vs B: ECM was the wrong instrument to pick the threshold with
+
+`docs/DEEPER_PRUNING.md`'s framework: Category A (tighten safe-by-
+construction machinery, validate with FH-rate/suite-diff) vs Category B
+(deliberately accept a nonzero error rate for aggregate Elo, validate
+*only* with self-play -- "the FH-rate harness tells you where the errors
+are, but only self-play can tell you whether shipping them is a net
+win"). Tuning `FH_BETA_SKIP_THRESHOLD` to recover ECM solve parity (as
+this session initially did) applies the Category A instrument to what is
+actually a Category B decision -- ECM puzzles are curated worst-case
+tactical positions, exactly the population a deliberately more
+aggressive pruner is expected to cost solves on even when it's a real
+net win in ordinary games (cf. Crafty's own `search.c` comment on its
+forward pruning: "this is classic forward-pruning and can certainly
+introduce errors into the search. However, cluster testing has shown
+that this improves play in real games"). Given typhoon searches ~800x
+more nodes than Stockfish at comparable depth (`DEEPER_PRUNING.md`), the
+regression model's higher firing rate is not obviously a regression to
+correct back toward the table's rate -- it might be exactly the
+direction needed, and ECM solve-count alone cannot distinguish those two
+possibilities.
+
+The one artifact that bore on this before the sweep below was the
+match-play log quoted earlier, at the *aggressive* default (96000, 2x
+table firing rate) -- inconclusive on its own (LOWER95≈0.495).
+
+**Sweep run, 2026-10-24 (same day): 96000 vs 99000, head-to-head.**
+200 games, `sd 8`, `twic_filtered.pgn` openings, both sides the
+regression build differing only in `FH_BETA_SKIP_THRESHOLD` (two tiny
+shell wrappers setting the env var, passed to `match_play.py` as the
+two engine paths -- no code changes needed to run this). Result, 99000
+as candidate against 96000 as head:
+
+```
+CANDIDATE_SCORE=0.8425 GAMES=200 WINS=141 DRAWS=55 LOSSES=4
+ELO=+291.3+/-66.1 LOWER95=0.7920 TC=sd8
+nodes: candidate(99000)=1,239,521,567 head(96000)=468,297,174
+```
+
+Not a marginal result -- `LOWER95=0.79` clears the `>=0.5` gate by a
+wide margin, and 96000 lost decisively despite searching *fewer* total
+nodes and running at higher aggregate NPS (i.e. it wasn't losing because
+it did less work overall in wall-clock terms; it was losing because the
+extra static-shortcut firings were cutting real signal, not dead
+weight). This settles the Category A/B ambiguity raised above: for this
+particular knob, the self-play result and the ECM-based intuition agree
+once the right instrument is actually used -- 96000's ~2x-table firing
+rate is a real strength cost, not a Crafty-style acceptable trade-off.
+**`FH_BETA_SKIP_THRESHOLD`'s default (99000, `search.c`) is now
+confirmed by self-play, not just a conservative stand-in.**
+
+**Follow-up sweep, same day: 99500 vs 99000.** Same setup (200 games,
+`sd 8`, `twic_filtered.pgn`), 99500 as candidate against 99000 as head:
+
+```
+CANDIDATE_SCORE=0.5650 GAMES=200 WINS=64 DRAWS=98 LOSSES=38
+ELO=+45.4+/-48.6 LOWER95=0.4963 TC=sd8
+nodes: candidate(99500)=976,833,926 head(99000)=683,750,951
+```
+
+Inconclusive -- `LOWER95` sits just below the `>=0.5` gate, and the
+error bar (+/-48.6 Elo) is bigger than the point estimate. Slight nominal
+edge toward 99500, not a confirmed win. Combined picture across all
+three thresholds tested: a real cliff between 96000 and 99000 (+291 Elo,
+decisive), then a flattening -- consistent with a model that's
+genuinely miscalibrated-in-firing-frequency somewhere below ~98-99% and
+roughly fine above that. **No case for moving off 99000 based on this
+data**; pushing further (99500+) is unproven, not disproven -- would
+need a much bigger or SPRT-gated sample to resolve a ~45-Elo effect with
+this much game-to-game variance, and isn't worth prioritizing over
+finishing the validation ladder.
+
+### Queued: regression-model vs HEAD, both under NNUE eval (overnight, external)
+
+Every match-play comparison so far was threshold-vs-threshold *within*
+the regression build -- useful for tuning the knob, but it never
+actually compared the regression model against the thing it's meant to
+replace (the `data.c` tables) under the real eval the collection was
+done against. Queued to run overnight, outside this session:
+
+```sh
+cd /usr/home/scott/typhoon/src/eval_tune
+
+python3 match_play.py \
+ /tmp/typhoon/threshold_sweep/typhoon_head_nnue.sh \
+ /tmp/typhoon/threshold_sweep/typhoon_regmodel_nnue.sh \
+ --pgn ../../pgn/twic_filtered.pgn \
+ --games 20000 \
+ --workers 18 \
+ --sd 8 \
+ --sprt --elo0 0 --elo1 5 \
+ --scratch /usr/local/tmp/typhoon_match_regmodel_vs_head_nnue_overnight \
+ --log /tmp/typhoon/threshold_sweep/regmodel_vs_head_nnue_overnight.log
+```
+
+Both sides run under NNUE eval (thin wrappers at
+`/tmp/typhoon/threshold_sweep/typhoon_{head,regmodel}_nnue.sh`, each
+setting `TYPHOON_BIN` and exec'ing `src/typhoon_nnue`'s existing
+`--nnueweights`-injecting shim against `src/eval.nnue`, the same
+promoted-current net both ways) -- isolates the FH-model question
+(table vs. regression) from the eval question, which is the actual
+thing this match needs to answer. `typhoon_regmodel` carries the
+confirmed 99000 default. `--sprt` so an unattended overnight run stops
+on its own rather than always paying for a fixed game count regardless
+of effect size. Result pending; fold into this doc once it lands.
+
+### Scope note: the per-move beta prediction was lost, not just weakened
+
+Checked directly: `FhModelBetaPredictedFHThousandths` has exactly one
+call site in production (`searchsup.c`'s `_RefineNodeTypeGuess`,
+whole-node branch). There is no per-move beta call anywhere in
+`search.c`'s move loop. The original motivation for this whole model --
+getting an FH% estimate on individual candidate moves when
+`eval >= beta` and null-move didn't resolve things, to drive pruning on
+specific moves beyond the null-move probe -- isn't implemented at all.
+The NO_MOVE-only refit fixed the saturation bug by narrowing scope down
+to exactly the one thing still wired in, not by fixing the underlying
+shared-population-fit problem in a way that would let a per-move beta
+model come back.
+
+**Reframing, 2026-10-24 (Scott + this session)**: given the Category A/B
+discussion above, this may not be worth re-pursuing as originally
+scoped. The whole-node-only model that actually got built is already a
+deliberately-unsound, Crafty/Stockfish-style forward-pruning layer in
+spirit (predict the node's own FH% once, before the move loop, and skip
+it outright on a high-confidence prediction) -- rather than treating the
+missing per-move/post-null-move case as a gap to backfill, it may be
+more productive to lean into the whole-node framing that already exists,
+validate its firing-rate/threshold choice properly via self-play (above),
+and revisit the harder per-move case only if that doesn't pan out.
+
+### Alpha-side trust, quantitatively confirmed
+
+Re-ran `spotcheck_vs_table.py` against the real NNUE table
+(`dual_table_run_nnue/pickles/baked_now.pkl`), full rigor (old_tries
+>= 50,000 per cell, not the earlier small smoke sample):
+
+- **Alpha**: weighted mean |old_rate - new_rate| = **0.119pp**, median
+ 0.037pp, across 10,684 matched cells. Worst disagreements (up to
+ 7.6pp) are all in single-digit-`n_new` deep-depth cells -- sampling
+ noise, not a trend. This confirms, with real numbers, Scott's
+ standing trust in the alpha-side model: it tracks the old table
+ closely almost everywhere there's real data on both sides.
+- **Beta** (this same run, using `explore_and_fit`'s general mixed-tier
+ fit, i.e. the *pre-refit* shape): 3.528pp weighted mean, growing to
+ 20-30pp at depth -- reproduces the already-diagnosed saturation
+ problem through a script path (`spotcheck_vs_table.py`) that was never
+ updated to use the NO_MOVE-only refit. Not new information, but a
+ loose end: that script should be updated to match `export_model.py`'s
+ actual production fit before it's used as a beta-side trust check
+ again.
+
+## Explicitly out of scope for this pass
+
+- PV-node collection/modeling (real `alpha < eval < beta` states) --
+ future work, not attempted here.
+- Any model family beyond logistic regression for the production path --
+ trees and nets were considered and rejected on inference-speed grounds
+ for this specific inner-loop use; revisit only if logistic regression's
+ calibration proves insufficient after real collection.
diff --git a/src/dynamic.c b/src/dynamic.c
index 50bc36a..ebb3924 100644
--- a/src/dynamic.c
+++ b/src/dynamic.c
@@ -249,6 +249,36 @@ Return value:
}
+ULONG
+GetMoveFailHighAttempts(IN MOVE mv)
+/**
+
+Routine description:
+
+ Raw attempt count backing this move identity's Wilson upper bound
+ (GetMoveFailHighWilsonUpperBoundThousandths, just above) -- exists
+ so a caller (the FH_REGRESSION_COLLECTION hooks, search.c) can log
+ how much evidence backs that number, not just the number itself. A
+ cold move identity (0 attempts) and a well-evidenced, genuinely
+ safe one both report a low Wilson bound -- the bound alone can't
+ distinguish "no information yet" from "real, earned confidence,"
+ which this exists to let a consumer check separately.
+
+Parameters:
+
+ MOVE mv
+
+Return value:
+
+ ULONG : raw attempt count (not bucketed/thousandths-scaled)
+
+**/
+{
+ ULONG u = MOVE_TO_FH_INDEX(mv);
+ return(g_FailHighs[u].u16Attempts);
+}
+
+
void
InitializeLMRTable(void)
/**
diff --git a/src/fhcollect.c b/src/fhcollect.c
new file mode 100644
index 0000000..780a26d
--- /dev/null
+++ b/src/fhcollect.c
@@ -0,0 +1,574 @@
+/*
+
+ fhcollect.c
+
+ Per-thread binary record emission for the learned FH% regression
+ collection (FH_REGRESSION_COLLECTION) -- see docs/REGRESSION.md.
+ Replaces the old FH_TABLE_COLLECTION histogram design: each logged
+ event (a whole-node row, or one row per move/null-move-probe tried
+ at an eligible node) is written directly to a per-thread binary
+ file, buffered in FH_COLLECT_BUFFER_RECORDS-sized batches to avoid
+ a syscall per record. No cross-thread state and no merge-back --
+ each thread's file is independent; the offline Python training
+ pipeline concatenates/loads them together, not this process.
+
+*/
+#include "chess.h"
+
+#ifdef FH_REGRESSION_COLLECTION
+
+// Registry of every writer that's ever been opened, purely so
+// FhCollectCloseAll (called once from MainProgramCleanup at real
+// process shutdown) can find and flush every thread's file without
+// main.c needing to hold a pointer to any SEARCHER_THREAD_CONTEXT --
+// the root thread's own ctx is a function-static local inside root.c's
+// Think()/Ponder(), not reachable from main.c directly.
+#define FH_COLLECT_MAX_WRITERS (64)
+static FH_COLLECT_WRITER *g_rgpFhCollectWriters[FH_COLLECT_MAX_WRITERS];
+static ULONG g_uFhCollectWriterCount = 0;
+
+
+void
+FhCollectOpen(SEARCHER_THREAD_CONTEXT *ctx, ULONG uThreadNumber)
+/**
+
+Routine description:
+
+ Open this thread's collection file if it isn't already open, and
+ register its writer so FhCollectCloseAll can find it at shutdown.
+ Safe to call more than once for the same ctx -- a no-op if the
+ file is already open. This matters because ctx is frequently a
+ reused, repeatedly-reinitialized struct (root.c's Think/Ponder use
+ a function-static SEARCHER_THREAD_CONTEXT across many searches in
+ one process) -- InitializeSearcherContext preserves an already-open
+ pFile across its own memset specifically so this function only
+ ever does real work once per thread's lifetime.
+
+Parameters:
+
+ SEARCHER_THREAD_CONTEXT *ctx,
+ ULONG uThreadNumber -- names the file; the root/main thread is 0,
+ helper threads are split.c's uMyId + 1
+
+Return value:
+
+ void
+
+**/
+{
+ FH_COLLECT_WRITER *w = &ctx->sFhCollectWriter;
+ CHAR szPath[SMALL_STRING_LEN_CHAR];
+
+ if (NULL != w->pFile)
+ {
+ return;
+ }
+ sprintf(szPath, "fhcollect_thread%02lu.bin", (unsigned long)uThreadNumber);
+ w->pFile = fopen(szPath, "ab");
+ if (NULL == w->pFile)
+ {
+ Bug("FhCollectOpen: unable to open '%s' for append.\n", szPath);
+ return;
+ }
+ w->uBufferedCount = 0;
+ if (g_uFhCollectWriterCount < FH_COLLECT_MAX_WRITERS)
+ {
+ g_rgpFhCollectWriters[g_uFhCollectWriterCount++] = w;
+ }
+ else
+ {
+ // Not fatal -- this writer just won't be proactively flushed
+ // by FhCollectCloseAll; its buffered tail (up to
+ // FH_COLLECT_BUFFER_RECORDS - 1 records) would only be lost if
+ // the process is killed rather than exiting cleanly through
+ // MainProgramCleanup. FH_COLLECT_MAX_WRITERS (64) comfortably
+ // exceeds any realistic MAX_SPLITS + 1, so this should never
+ // actually fire.
+ Bug("FhCollectOpen: FH_COLLECT_MAX_WRITERS exceeded -- this "
+ "writer won't be flushed by FhCollectCloseAll.\n");
+ }
+}
+
+
+void
+FhCollectFlush(SEARCHER_THREAD_CONTEXT *ctx)
+/**
+
+Routine description:
+
+ Write out this thread's currently-buffered records, if any, and
+ reset the buffer. Does not close the file.
+
+Parameters:
+
+ SEARCHER_THREAD_CONTEXT *ctx
+
+Return value:
+
+ void
+
+**/
+{
+ FH_COLLECT_WRITER *w = &ctx->sFhCollectWriter;
+
+ if ((NULL != w->pFile) && (w->uBufferedCount > 0))
+ {
+ fwrite(w->rgBuffer, sizeof(FH_COLLECT_RECORD), w->uBufferedCount, w->pFile);
+ w->uBufferedCount = 0;
+ }
+}
+
+
+void
+FhCollectEmit(SEARCHER_THREAD_CONTEXT *ctx, const FH_COLLECT_RECORD *prec)
+/**
+
+Routine description:
+
+ Buffer one record for this thread, flushing the whole batch to
+ disk once FH_COLLECT_BUFFER_RECORDS have accumulated. Opens the
+ file lazily on first use if it isn't already open.
+
+ Deliberately NOT opened eagerly from InitializeSearcherContext: a
+ helper thread's ctx->uThreadNumber isn't set to its real value
+ until immediately AFTER that call returns (split.c calls
+ InitializeSearcherContext(NULL, ctx) then sets
+ ctx->uThreadNumber = uMyId + 1 on the very next line) -- opening
+ eagerly inside InitializeSearcherContext would race and every
+ helper thread's first-ever open would collide on thread number 0.
+ By the time any real search activity reaches this function,
+ uThreadNumber is already correct for both the root thread (stays 0
+ throughout) and every helper thread.
+
+Parameters:
+
+ SEARCHER_THREAD_CONTEXT *ctx,
+ const FH_COLLECT_RECORD *prec
+
+Return value:
+
+ void
+
+**/
+{
+ FH_COLLECT_WRITER *w = &ctx->sFhCollectWriter;
+
+ // Subsampling: keep roughly 1-in-N events, chosen independently
+ // per event via randomMT() (mersenne.c) -- cheap, unbiased, and
+ // preserves the exact joint continuous feature vector of every
+ // KEPT row (unlike aggregating/bucketizing, which would
+ // reintroduce the combinatorial cardinality problem this whole
+ // design moved off the old table to avoid -- see
+ // docs/REGRESSION.md's "On subsampling vs. aggregation" section).
+ // Both denominators read once per process, not per call; unset or
+ // invalid means no subsampling (denom 1, keep everything).
+ //
+ // TIER-DEPENDENT, not uniform (2026-10-24 session finding): the
+ // beta-side per-move population (a real move/null-move/hash-move
+ // tried after a QUICK_NULL_MOVE/static-cutoff check already said
+ // this node looks won) is structurally RARE -- null-move or one
+ // of the first moves resolves the cutoff the overwhelming
+ // majority of the time, so actually reaching deeper into the move
+ // list at an already-winning node is scarce almost by
+ // construction, not something that gets proportionally more
+ // common the longer collection runs. It's ALSO the one population
+ // with no historical analog at all to fall back on (the old
+ // table's beta side was whole-node-only, never per-move -- see
+ // docs/REGRESSION.md). Applying the same aggressive denominator
+ // there as to the overwhelmingly common alpha-side leftover
+ // population was actively discarding an already-scarce, already-
+ // irreplaceable signal for no real disk benefit (this rare
+ // population's total volume is small regardless of its sampling
+ // rate) -- so it gets its own, much gentler (default: none)
+ // denominator instead. NO_MOVE/NULL/HASH on the beta side are NOT
+ // rare this way (they fire at essentially every eligible node,
+ // same as the alpha side) and stay on the common rate.
+ static ULONG uSampleDenom = 0;
+ static ULONG uRareSampleDenom = 0;
+ if (0 == uSampleDenom)
+ {
+ CHAR *pszDenom = getenv("FH_COLLECT_SAMPLE_DENOM");
+ uSampleDenom = (pszDenom && atol(pszDenom) > 0) ?
+ (ULONG)atol(pszDenom) : 1;
+ }
+ if (0 == uRareSampleDenom)
+ {
+ CHAR *pszRareDenom = getenv("FH_COLLECT_SAMPLE_DENOM_RARE");
+ uRareSampleDenom = (pszRareDenom && atol(pszRareDenom) > 0) ?
+ (ULONG)atol(pszRareDenom) : 1;
+ }
+ {
+ // "Common" = has real old-table backing AND dominates raw
+ // volume; everything else is "rare" and gets the gentle
+ // denominator instead, on EITHER table (2026-10-24 session
+ // finding, generalized from beta-only after Scott's own
+ // question -- alpha's HASH/GOOD_CAPTURE/KILLER/COUNTERMOVE/
+ // NULL are exactly as old-table-absent as beta's, since
+ // _ScoreAllMoves structurally excludes good captures and any
+ // killer/countermove-bonus-bearing move from the
+ // fIsLeftoverMove population the old alpha table actually
+ // measured -- LEFTOVER_QUIET and LOSING_CAPTURE both stay
+ // below GOOD_MOVE and so were both really covered historically,
+ // but nothing else was, on either side).
+ FLAG fIsCommon;
+ if (FHC_TABLE_ALPHA == prec->bTable)
+ {
+ fIsCommon = (FHC_TIER_NO_MOVE == prec->bTier) ||
+ (FHC_TIER_LEFTOVER_QUIET == prec->bTier) ||
+ (FHC_TIER_LOSING_CAPTURE == prec->bTier);
+ }
+ else
+ {
+ fIsCommon = (FHC_TIER_NO_MOVE == prec->bTier);
+ }
+ // Depth-dependent, on top of tier (2026-10-24 follow-up
+ // finding): a large REMAINING depth means this node sits
+ // close to the root, where the branching factor makes nodes
+ // structurally scarce compared to the shallow-remaining-depth
+ // population near the leaves. Applying the common tier's
+ // aggressive denominator uniformly across depth discards this
+ // already-scarce deep tail at the SAME rate as the
+ // overwhelmingly abundant shallow population -- so letting
+ // collection run longer scales both up together and never
+ // improves the deep tail's SHARE of the data. This is exactly
+ // what the beta-side rigorous spot-check kept showing even
+ // after hours of additional collection (depth-bucketed error
+ // climbing from ~2pp at shallow depths to 37pp at the deepest,
+ // with matched-cell sample counts (n_new) in the single/low
+ // double digits there throughout). Fix: once remaining depth
+ // passes a few plies, fall back to the gentle/rare
+ // denominator regardless of tier -- cheap, since this
+ // population is naturally small on its own.
+ if (fIsCommon && ((prec->uRemainingDepthTicks / ONE_PLY) >= 3))
+ {
+ fIsCommon = FALSE;
+ }
+ ULONG uEffectiveDenom = fIsCommon ? uSampleDenom : uRareSampleDenom;
+ if ((uEffectiveDenom > 1) && ((randomMT() % uEffectiveDenom) != 0))
+ {
+ return;
+ }
+ }
+
+ if (NULL == w->pFile)
+ {
+ FhCollectOpen(ctx, ctx->uThreadNumber);
+ if (NULL == w->pFile)
+ {
+ return; // open failed, already Bug()'d inside FhCollectOpen
+ }
+ }
+ w->rgBuffer[w->uBufferedCount++] = *prec;
+ if (w->uBufferedCount >= FH_COLLECT_BUFFER_RECORDS)
+ {
+ FhCollectFlush(ctx);
+ }
+}
+
+
+void
+FhCollectClose(SEARCHER_THREAD_CONTEXT *ctx)
+/**
+
+Routine description:
+
+ Flush and close this one thread's file, and deregister it. Most
+ callers want FhCollectCloseAll (used by MainProgramCleanup)
+ instead; this per-ctx version exists for any future caller that
+ tracks its own ctx directly and wants to close it before process
+ shutdown.
+
+Parameters:
+
+ SEARCHER_THREAD_CONTEXT *ctx
+
+Return value:
+
+ void
+
+**/
+{
+ FH_COLLECT_WRITER *w = &ctx->sFhCollectWriter;
+ ULONG u;
+
+ if (NULL == w->pFile)
+ {
+ return;
+ }
+ FhCollectFlush(ctx);
+ fclose(w->pFile);
+ w->pFile = NULL;
+ for (u = 0; u < g_uFhCollectWriterCount; u++)
+ {
+ if (g_rgpFhCollectWriters[u] == w)
+ {
+ g_rgpFhCollectWriters[u] = g_rgpFhCollectWriters[--g_uFhCollectWriterCount];
+ break;
+ }
+ }
+}
+
+
+void
+FhCollectCloseAll(void)
+/**
+
+Routine description:
+
+ Flush and close every registered writer -- call once, from
+ MainProgramCleanup, at real process shutdown, so no thread's final
+ buffered-but-unflushed records (up to FH_COLLECT_BUFFER_RECORDS - 1
+ of them, per thread) are silently dropped.
+
+Parameters:
+
+ void
+
+Return value:
+
+ void
+
+**/
+{
+ ULONG u;
+
+ for (u = 0; u < g_uFhCollectWriterCount; u++)
+ {
+ FH_COLLECT_WRITER *w = g_rgpFhCollectWriters[u];
+ if (NULL != w->pFile)
+ {
+ if (w->uBufferedCount > 0)
+ {
+ fwrite(w->rgBuffer, sizeof(FH_COLLECT_RECORD), w->uBufferedCount, w->pFile);
+ w->uBufferedCount = 0;
+ }
+ fclose(w->pFile);
+ w->pFile = NULL;
+ }
+ }
+ g_uFhCollectWriterCount = 0;
+}
+
+
+void
+FhCollectNodeEntry(SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ SCORE iEval, SCORE iAlpha, SCORE iBeta,
+ ULONG uDepthTicks,
+ SCORE iImprove, SCORE iEnemyOrOwnImprove,
+ NODE_TYPE eNodeTypeGuess,
+ UINT64 u64PositionSig,
+ ULONG uTotalNonPawnMaterial)
+/**
+
+Routine description:
+
+ Decide this node's collection eligibility (iEval <= iAlpha -> alpha
+ table, iEval >= iBeta -> beta table, otherwise ineligible -- a real
+ PV node, out of scope for this collection per docs/REGRESSION.md)
+ and stash everything FhCollectMoveTried/FhCollectNodeExit will need
+ later into *pp. Does NOT emit anything yet -- the whole-node
+ (FHC_TIER_NO_MOVE) row's label isn't known until the real move
+ loop finishes, so its actual FhCollectEmit call happens in
+ FhCollectNodeExit, not here.
+
+Parameters:
+
+ SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ SCORE iEval, SCORE iAlpha, SCORE iBeta,
+ ULONG uDepthTicks,
+ SCORE iImprove, SCORE iEnemyOrOwnImprove -- the beta table's own
+ second improve axis (enemy-improving); unused/ignored for an
+ alpha-side node, which has only one improve axis
+ NODE_TYPE eNodeTypeGuess -- the caller's PARENT-derived guess, not
+ the refined one (caller's responsibility, see chess.h's
+ FH_COLLECT_PENDING comment)
+ UINT64 u64PositionSig,
+ ULONG uTotalNonPawnMaterial
+
+Return value:
+
+ void
+
+**/
+{
+ (void)(ctx);
+
+ memset(pp, 0, sizeof(*pp));
+ if (iEval <= iAlpha)
+ {
+ pp->fEligible = TRUE;
+ pp->bTable = FHC_TABLE_ALPHA;
+ pp->iGap = (SCORE)(iAlpha - iEval);
+ }
+ else if (iEval >= iBeta)
+ {
+ pp->fEligible = TRUE;
+ pp->bTable = FHC_TABLE_BETA;
+ pp->iGap = (SCORE)(iEval - iBeta);
+ }
+ else
+ {
+ // A real PV node (alpha < eval < beta) -- out of scope for
+ // this collection, see docs/REGRESSION.md's "Scope" section.
+ pp->fEligible = FALSE;
+ return;
+ }
+ pp->bNodeTypeGuess = (UCHAR)eNodeTypeGuess;
+ pp->iImprove = iImprove;
+ pp->iEnemyOrOwnImprove = iEnemyOrOwnImprove;
+ pp->uRemainingDepthTicks = uDepthTicks;
+ pp->u64PositionSig = u64PositionSig;
+ pp->uGoodCapturesTriedNoCutoff = 0;
+ pp->uTotalNonPawnMaterial = uTotalNonPawnMaterial;
+}
+
+
+void
+FhCollectMoveTried(SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ FH_COLLECT_TIER eTier,
+ SCORE iScore, SCORE iBeta,
+ ULONG uMoveOrdinal, SCORE iMoveValue,
+ ULONG uMoveFhPctThousandths, ULONG uMoveFhAttempts,
+ FLAG fMovesKnown, ULONG uTotalLegalMoves)
+/**
+
+Routine description:
+
+ Emit one record for a single move (or the null-move probe, or the
+ hash move) just tried at an eligible node, now that its own score
+ is known -- unlike the whole-node row, an individual move's label
+ (did IT resolve >= iBeta) is available immediately, no deferred
+ commit needed.
+
+ uGoodCapturesTriedNoCutoff is read into the emitted record BEFORE
+ being updated for this move, so the value a reader sees on any one
+ record reflects captures tried strictly before it, not including
+ it -- matching what would actually be knowable while this move was
+ being decided, were this feeding a live reduction/pruning decision
+ instead of just being logged.
+
+Parameters:
+
+ SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ FH_COLLECT_TIER eTier,
+ SCORE iScore, SCORE iBeta,
+ ULONG uMoveOrdinal, SCORE iMoveValue,
+ ULONG uMoveFhPctThousandths, ULONG uMoveFhAttempts,
+ FLAG fMovesKnown, ULONG uTotalLegalMoves -- FALSE/0 for a move tried
+ before real move generation (the null-move probe, the hash
+ move -- see docs/REGRESSION.md's moves_known/imputation design)
+
+Return value:
+
+ void
+
+**/
+{
+ FH_COLLECT_RECORD rec;
+
+ if (FALSE == pp->fEligible)
+ {
+ return;
+ }
+
+ memset(&rec, 0, sizeof(rec));
+ rec.u64PositionSig = pp->u64PositionSig;
+ rec.iGap = pp->iGap;
+ rec.iMoveValue = iMoveValue;
+ rec.iImprove = pp->iImprove;
+ rec.iEnemyOrOwnImprove = pp->iEnemyOrOwnImprove;
+ rec.uRemainingDepthTicks = pp->uRemainingDepthTicks;
+ rec.uMoveOrdinal = uMoveOrdinal;
+ rec.uTotalLegalMoves = (TRUE == fMovesKnown) ? uTotalLegalMoves : 0;
+ rec.uMoveFhPctThousandths = uMoveFhPctThousandths;
+ rec.uMoveFhAttempts = uMoveFhAttempts;
+ rec.uGoodCapturesTriedNoCutoff = pp->uGoodCapturesTriedNoCutoff;
+ rec.uTotalNonPawnMaterial = pp->uTotalNonPawnMaterial;
+ rec.bTable = pp->bTable;
+ rec.bTier = (UCHAR)eTier;
+ rec.bNodeTypeGuess = pp->bNodeTypeGuess;
+ rec.bMovesKnown = (TRUE == fMovesKnown) ? 1 : 0;
+ rec.bLabel = (iScore >= iBeta) ? 1 : 0;
+ FhCollectEmit(ctx, &rec);
+
+ if ((FHC_TIER_GOOD_CAPTURE == eTier) && (iScore < iBeta))
+ {
+ pp->uGoodCapturesTriedNoCutoff++;
+ }
+}
+
+
+void
+FhCollectNodeExit(SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ SCORE iBestScore, SCORE iBeta, FLAG fAborted)
+/**
+
+Routine description:
+
+ Emit the whole-node (FHC_TIER_NO_MOVE) row stashed by
+ FhCollectNodeEntry, now that iBestScore's real fate against iBeta
+ is known. Skipped entirely on an aborted/incomplete search
+ (iBestScore may not reflect a fully-searched node in that case, and
+ logging it as ground truth would bias the model toward whatever
+ got searched before the clock/node-limit fired) or if the node was
+ never eligible to begin with.
+
+Parameters:
+
+ SEARCHER_THREAD_CONTEXT *ctx,
+ FH_COLLECT_PENDING *pp,
+ SCORE iBestScore, SCORE iBeta, FLAG fAborted
+
+Return value:
+
+ void
+
+**/
+{
+ FH_COLLECT_RECORD rec;
+
+ if ((FALSE == pp->fEligible) || (TRUE == fAborted) ||
+ (!IS_VALID_SCORE(iBestScore)))
+ {
+ return;
+ }
+
+ memset(&rec, 0, sizeof(rec));
+ rec.u64PositionSig = pp->u64PositionSig;
+ rec.iGap = pp->iGap;
+ rec.iMoveValue = 0;
+ rec.iImprove = pp->iImprove;
+ rec.iEnemyOrOwnImprove = pp->iEnemyOrOwnImprove;
+ rec.uRemainingDepthTicks = pp->uRemainingDepthTicks;
+ rec.uMoveOrdinal = 0;
+ // Total legal moves is genuinely unknown to production at the
+ // point this whole-node prediction would actually run (before the
+ // move loop) -- logged as unknown here too, even though this
+ // collection build happens to know it by now (the real loop has
+ // already run by end:), so training data matches what's really
+ // available at inference time. See docs/REGRESSION.md.
+ rec.uTotalLegalMoves = 0;
+ rec.uMoveFhPctThousandths = 0;
+ rec.uGoodCapturesTriedNoCutoff = pp->uGoodCapturesTriedNoCutoff;
+ rec.uTotalNonPawnMaterial = pp->uTotalNonPawnMaterial;
+ rec.bTable = pp->bTable;
+ rec.bTier = FHC_TIER_NO_MOVE;
+ rec.bNodeTypeGuess = pp->bNodeTypeGuess;
+ rec.bMovesKnown = FALSE;
+ rec.bLabel = (iBestScore >= iBeta) ? 1 : 0;
+ FhCollectEmit(ctx, &rec);
+}
+
+
+#endif // FH_REGRESSION_COLLECTION
+// FhClassifyMoveTier itself moved to searchsup.c (always compiled,
+// not gated by FH_REGRESSION_COLLECTION) -- fhmodel.c's production
+// inference needs it unconditionally too, and it's pure/stateless (no
+// dependency on anything collection-specific), so there's no reason
+// to duplicate it or leave it gated. See searchsup.c for the
+// implementation and chess.h for the now-unconditional declaration.
diff --git a/src/fhmodel.c b/src/fhmodel.c
new file mode 100644
index 0000000..b3935bc
--- /dev/null
+++ b/src/fhmodel.c
@@ -0,0 +1,201 @@
+// fhmodel.c -- production inference for the FH% logistic-regression
+// models. See fhmodel.h and docs/REGRESSION.md.
+//
+// Fully quantized: every runtime computation here is integer
+// fixed-point (Q16 for table/final-sum arithmetic, Q30 for the
+// handful of raw-feature weights -- see fhmodel_weights.h's header
+// comment for why two scales). No floats, no log()/exp() calls.
+#include "chess.h"
+#include "fhmodel_weights.h"
+
+// Mate-score window gate -- see fhmodel_weights.h's
+// FHM_MATE_GAP_THRESHOLD (matches load_records.py's
+// MATE_GAP_THRESHOLD exactly) and docs/REGRESSION.md's mate-window
+// note. A `gap` this large means the static eval is itself encoding
+// a detected mate score compared against an ordinary cp-scale
+// window -- a structurally different regime this model was never
+// trained on (those rows were excluded entirely, not just clipped)
+// and must not extrapolate into.
+
+static INLINE INT
+_FhmLog1pLookup(const INT *table, ULONG uMaxIndex, ULONG uValue)
+{
+ ULONG uClamped = (uValue > uMaxIndex) ? uMaxIndex : uValue;
+ return(table[uClamped]);
+}
+
+// Converts a Q16 fixed-point logit into the sigmoid*100000 return
+// convention, via table lookup only (no exp() call). Linearly maps
+// the clamped logit into the table's index range.
+static ULONG
+_FhmLogitQ16ToThousandths(INT iLogitQ16)
+{
+ INT64 iRangeQ16 = (INT64)(FHM_SIGMOID_LOGIT_RANGE * (1 << FHM_Q_TABLE));
+ INT64 iClamped = iLogitQ16;
+ INT64 iIndex;
+
+ if (iClamped < -iRangeQ16) iClamped = -iRangeQ16;
+ if (iClamped > iRangeQ16) iClamped = iRangeQ16;
+
+ // index = (clamped + range) / (2*range) * (TABLE_SIZE - 1)
+ iIndex = ((iClamped + iRangeQ16) * (FHM_SIGMOID_TABLE_SIZE - 1)) /
+ (2 * iRangeQ16);
+ if (iIndex < 0) iIndex = 0;
+ if (iIndex >= FHM_SIGMOID_TABLE_SIZE) iIndex = FHM_SIGMOID_TABLE_SIZE - 1;
+
+ return((ULONG)g_rgiSigmoidThousandthsQ16[iIndex]);
+}
+
+// Shared node-level logit (Q16), common to both tables' identical
+// 7-feature node-level set. iGap is the caller's own "how far past
+// the relevant edge" quantity (always >= 0 by construction -- see
+// callers), already confirmed <= FHM_MATE_GAP_THRESHOLD by the
+// caller's own gate before this is ever reached.
+static INT
+_FhmNodeLogitQ16(const INT *rgiLogGap, const INT *rgiLogGapOverflow,
+ const INT *rgiLogDepth, const INT *rgiLogMaterial,
+ const INT *rgiNodeTypeWeight,
+ INT iWImprove, INT iWEnemyImprove, INT iWImproveXEnemy,
+ ULONG uGapCap, SCORE iGap, ULONG uDepth,
+ SCORE iImprovement, SCORE iEnemyImprovement,
+ ULONG uTotalNonPawnMaterial, NODE_TYPE eNodeTypeGuess)
+{
+ ULONG uGapNonNeg = (iGap > 0) ? (ULONG)iGap : 0;
+ ULONG uGapClipped = (uGapNonNeg < uGapCap) ? uGapNonNeg : uGapCap;
+ ULONG uGapOverflow = (uGapNonNeg > uGapCap) ? (uGapNonNeg - uGapCap) : 0;
+ ULONG uDepthPlies = uDepth / ONE_PLY;
+ INT64 iSumQ16 = 0;
+
+ iSumQ16 += _FhmLog1pLookup(rgiLogGap, uGapCap, uGapClipped);
+ iSumQ16 += _FhmLog1pLookup(rgiLogGapOverflow,
+ FHM_MATE_GAP_THRESHOLD - uGapCap, uGapOverflow);
+ iSumQ16 += _FhmLog1pLookup(rgiLogDepth, FHM_DEPTH_PLIES_MAX, uDepthPlies);
+ iSumQ16 += _FhmLog1pLookup(rgiLogMaterial, FHM_MATERIAL_MAX, uTotalNonPawnMaterial);
+ iSumQ16 += rgiNodeTypeWeight[(ULONG)eNodeTypeGuess];
+
+ // Raw (non-tabulated) terms: Q30 weight * raw integer value,
+ // rescaled down to the shared Q16 accumulation frame.
+ iSumQ16 += ((INT64)iWImprove * (INT64)iImprovement) >> FHM_RAW_SHIFT;
+ iSumQ16 += ((INT64)iWEnemyImprove * (INT64)iEnemyImprovement) >> FHM_RAW_SHIFT;
+ iSumQ16 += ((INT64)iWImproveXEnemy *
+ ((INT64)iImprovement * (INT64)iEnemyImprovement)) >> FHM_RAW_SHIFT;
+
+ return((INT)iSumQ16);
+}
+
+FHM_NODE_BASE
+FhModelAlphaNodeBaseQ16(IN SCORE iEval,
+ IN SCORE iAlpha,
+ IN ULONG uDepth,
+ IN SCORE iImprovement,
+ IN SCORE iEnemyImprovement,
+ IN ULONG uTotalNonPawnMaterial,
+ IN NODE_TYPE eNodeTypeGuess)
+{
+ SCORE iGap = (SCORE)(iAlpha - iEval);
+ INT iLogitQ16;
+
+ if (iGap > FHM_MATE_GAP_THRESHOLD)
+ {
+ return((FHM_NODE_BASE)FHM_MATE_GATED);
+ }
+ iLogitQ16 = _FhmNodeLogitQ16(
+ g_rgiAlphaLogGapQ16, g_rgiAlphaLogGapOverflowQ16,
+ g_rgiAlphaLogDepthQ16, g_rgiAlphaLogMaterialQ16,
+ g_rgiAlphaNodeTypeWeightQ16,
+ FHM_ALPHA_W_IMPROVE_Q30, FHM_ALPHA_W_ENEMY_IMPROVE_Q30,
+ FHM_ALPHA_W_IMPROVE_X_ENEMY_Q30,
+ FHM_GAP_CAP_ALPHA, iGap, uDepth, iImprovement, iEnemyImprovement,
+ uTotalNonPawnMaterial, eNodeTypeGuess);
+ iLogitQ16 += FHM_ALPHA_INTERCEPT_Q16;
+ return((FHM_NODE_BASE)iLogitQ16);
+}
+
+ULONG
+FhModelAlphaMoveThousandths(IN FHM_NODE_BASE nodeBase,
+ IN SCORE iMoveValue,
+ IN ULONG uMoveOrdinal,
+ IN ULONG uMoveFhPctThousandths,
+ IN ULONG uMoveFhAttempts,
+ IN FH_COLLECT_TIER eTier)
+{
+ INT64 iSumQ16 = (INT64)(INT)nodeBase;
+
+ iSumQ16 += _FhmLog1pLookup(g_rgiAlphaLogOrdinalQ16, FHM_ORDINAL_MAX, uMoveOrdinal);
+ iSumQ16 += _FhmLog1pLookup(g_rgiAlphaLogFhAttemptsQ16, FHM_FH_ATTEMPTS_MAX, uMoveFhAttempts);
+ iSumQ16 += g_rgiAlphaTierWeightQ16[(ULONG)eTier];
+ iSumQ16 += ((INT64)FHM_ALPHA_W_MOVE_VALUE_Q30 * (INT64)iMoveValue) >> FHM_RAW_SHIFT;
+ iSumQ16 += ((INT64)FHM_ALPHA_W_MOVE_FH_PCT_Q30 * (INT64)uMoveFhPctThousandths) >> FHM_RAW_SHIFT;
+
+ return(_FhmLogitQ16ToThousandths((INT)iSumQ16));
+}
+
+// Whole-node-only -- see fhmodel.h. Move-level terms fixed at exactly
+// the defaults a FHC_TIER_NO_MOVE training row had (fhcollect.c's
+// FhCollectNodeExit: iMoveValue=0, uMoveOrdinal=0,
+// uMoveFhPctThousandths=0, uMoveFhAttempts=0) -- log1p(0)==0 and
+// 0*weight==0 for all of them, so this collapses to the node logit +
+// tier weight + intercept, but computed via the same lookup path as
+// the alpha function for consistency.
+ULONG
+FhModelBetaPredictedFHThousandths(IN SCORE iEval,
+ IN SCORE iBeta,
+ IN ULONG uDepth,
+ IN SCORE iImprovement,
+ IN SCORE iEnemyImprovement,
+ IN ULONG uTotalNonPawnMaterial,
+ IN NODE_TYPE eNodeTypeGuess)
+{
+ SCORE iGap = (SCORE)(iEval - iBeta);
+ INT64 iSumQ16;
+
+ if (iGap > FHM_MATE_GAP_THRESHOLD)
+ {
+ return(MOVE_FH_ESTIMATE_NO_DATA);
+ }
+ iSumQ16 = _FhmNodeLogitQ16(
+ g_rgiBetaLogGapQ16, g_rgiBetaLogGapOverflowQ16,
+ g_rgiBetaLogDepthQ16, g_rgiBetaLogMaterialQ16,
+ g_rgiBetaNodeTypeWeightQ16,
+ FHM_BETA_W_IMPROVE_Q30, FHM_BETA_W_ENEMY_IMPROVE_Q30,
+ FHM_BETA_W_IMPROVE_X_ENEMY_Q30,
+ FHM_GAP_CAP_BETA, iGap, uDepth, iImprovement, iEnemyImprovement,
+ uTotalNonPawnMaterial, eNodeTypeGuess);
+ iSumQ16 += g_rgiBetaTierWeightQ16[(ULONG)FHC_TIER_NO_MOVE];
+ iSumQ16 += FHM_BETA_INTERCEPT_Q16;
+
+ return(_FhmLogitQ16ToThousandths((INT)iSumQ16));
+}
+
+// See fhmodel.h's comment: this engine's own convention for "is this
+// the hash move" is x==0 (confirmed by grep -- there's no separately
+// stored mvHash compared against mv anywhere in search.c's move
+// loop), so this does NOT reuse FhClassifyMoveTier's mv-vs-mvHash
+// comparison (which would need a real mvHash, not available here) --
+// it inlines the same capture/killer/countermove decode logic that
+// function uses for everything past the hash check.
+FH_COLLECT_TIER
+FhModelTierForMove(IN ULONG x, IN MOVE mv, IN SCORE iMoveSortValue)
+{
+ FLAG fIsCaptureOrPromotion;
+
+ if (0 == x)
+ {
+ return(FHC_TIER_HASH);
+ }
+ fIsCaptureOrPromotion = IS_CAPTURE_OR_PROMOTION(mv);
+ if (0 != fIsCaptureOrPromotion)
+ {
+ return((iMoveSortValue >= SORT_THESE_FIRST) ?
+ FHC_TIER_GOOD_CAPTURE : FHC_TIER_LOSING_CAPTURE);
+ }
+ if (0 != (iMoveSortValue & (FIRST_KILLER | SECOND_KILLER | THIRD_KILLER | FOURTH_KILLER)))
+ {
+ return(FHC_TIER_KILLER);
+ }
+ if (COUNTERMOVE_TIER_BONUS == (iMoveSortValue & COUNTERMOVE_TIER_BONUS))
+ {
+ return(FHC_TIER_COUNTERMOVE);
+ }
+ return(FHC_TIER_LEFTOVER_QUIET);
+}
diff --git a/src/fhmodel_weights.h b/src/fhmodel_weights.h
new file mode 100644
index 0000000..c5a7fc7
--- /dev/null
+++ b/src/fhmodel_weights.h
@@ -0,0 +1,83 @@
+// GENERATED by regression_run/export_model.py -- do not hand-edit.
+// Fully quantized: every value here is Q16 or Q30 fixed-point INT32,
+// no floats. See fhmodel.c for how these are consumed and
+// docs/REGRESSION.md for the model design/validation history.
+
+#define FHM_ALPHA_INTERCEPT_Q16 (137591)
+#define FHM_BETA_INTERCEPT_Q16 (156357)
+#define FHM_MATE_GAP_THRESHOLD (5000)
+#define FHM_GAP_CAP_ALPHA (1000)
+#define FHM_GAP_CAP_BETA (2000)
+#define FHM_DEPTH_PLIES_MAX (40)
+#define FHM_ORDINAL_MAX (224)
+#define FHM_FH_ATTEMPTS_MAX (65535)
+#define FHM_MATERIAL_MAX (8000)
+#define FHM_Q_TABLE (16)
+#define FHM_Q_RAW_WEIGHT (30)
+#define FHM_RAW_SHIFT (14)
+
+// weight*log1p(min(gap,1000)), Q16, domain [0,1000]
+static const INT g_rgiAlphaLogGapQ16[] = { 0, -19212, -30450, -38424, -44609, -49662, -53935, -57636, -60900, -63821, -66462, -68874, -71093, -73147, -75059, -76848, -78528, -80112, -81611, -83033, -84385, -85674, -86906, -88086, -89217, -90305, -91351, -92359, -93331, -94271, -95180, -96060, -96913, -97740, -98543, -99324, -100084, -100823, -101543, -102245, -102929, -103597, -104249, -104886, -105509, -106118, -106714, -107298, -107869, -108429, -108978, -109517, -110044, -110563, -111071, -111571, -112061, -112543, -113017, -113483, -113941, -114392, -114835, -115272, -115701, -116125, -116541, -116952, -117357, -117755, -118149, -118536, -118919, -119296, -119668, -120035, -120397, -120755, -121108, -121457, -121801, -122141, -122477, -122809, -123137, -123461, -123781, -124098, -124411, -124721, -125027, -125330, -125630, -125926, -126220, -126510, -126797, -127081, -127363, -127641, -127917, -128190, -128461, -128728, -128994, -129256, -129517, -129775, -130030, -130283, -130534, -130783, -131029, -131273, -131515, -131755, -131993, -132229, -132463, -132695, -132925, -133153, -133379, -133604, -133826, -134047, -134266, -134484, -134699, -134913, -135126, -135336, -135546, -135753, -135959, -136164, -136367, -136569, -136769, -136967, -137165, -137361, -137555, -137748, -137940, -138130, -138320, -138508, -138694, -138880, -139064, -139247, -139429, -139609, -139788, -139967, -140144, -140320, -140495, -140668, -140841, -141013, -141183, -141353, -141521, -141689, -141855, -142021, -142185, -142349, -142511, -142673, -142834, -142993, -143152, -143310, -143467, -143623, -143779, -143933, -144087, -144239, -144391, -144542, -144692, -144842, -144991, -145138, -145285, -145432, -145577, -145722, -145866, -146009, -146152, -146293, -146434, -146575, -146714, -146853, -146992, -147129, -147266, -147402, -147538, -147673, -147807, -147940, -148073, -148206, -148337, -148468, -148599, -148729, -148858, -148986, -149114, -149242, -149369, -149495, -149621, -149746, -149870, -149994, -150118, -150241, -150363, -150485, -150606, -150727, -150847, -150967, -151086, -151205, -151323, -151441, -151558, -151675, -151791, -151907, -152022, -152137, -152251, -152365, -152478, -152591, -152704, -152816, -152927, -153038, -153149, -153259, -153369, -153478, -153587, -153696, -153804, -153911, -154018, -154125, -154232, -154338, -154443, -154548, -154653, -154758, -154862, -154965, -155068, -155171, -155274, -155376, -155478, -155579, -155680, -155781, -155881, -155981, -156080, -156179, -156278, -156377, -156475, -156572, -156670, -156767, -156864, -156960, -157056, -157152, -157247, -157342, -157437, -157532, -157626, -157720, -157813, -157906, -157999, -158092, -158184, -158276, -158367, -158459, -158550, -158640, -158731, -158821, -158911, -159000, -159090, -159179, -159267, -159356, -159444, -159532, -159619, -159707, -159794, -159880, -159967, -160053, -160139, -160225, -160310, -160395, -160480, -160565, -160649, -160733, -160817, -160901, -160984, -161067, -161150, -161233, -161315, -161397, -161479, -161561, -161642, -161723, -161804, -161885, -161965, -162046, -162126, -162205, -162285, -162364, -162443, -162522, -162601, -162679, -162757, -162835, -162913, -162991, -163068, -163145, -163222, -163299, -163375, -163451, -163527, -163603, -163679, -163754, -163829, -163904, -163979, -164054, -164128, -164202, -164276, -164350, -164424, -164497, -164571, -164644, -164716, -164789, -164862, -164934, -165006, -165078, -165150, -165221, -165292, -165364, -165435, -165505, -165576, -165646, -165717, -165787, -165857, -165926, -165996, -166065, -166134, -166204, -166272, -166341, -166410, -166478, -166546, -166614, -166682, -166750, -166817, -166885, -166952, -167019, -167086, -167152, -167219, -167285, -167352, -167418, -167483, -167549, -167615, -167680, -167746, -167811, -167876, -167941, -168005, -168070, -168134, -168198, -168262, -168326, -168390, -168454, -168517, -168581, -168644, -168707, -168770, -168833, -168895, -168958, -169020, -169082, -169144, -169206, -169268, -169330, -169391, -169453, -169514, -169575, -169636, -169697, -169758, -169818, -169879, -169939, -169999, -170059, -170119, -170179, -170239, -170298, -170358, -170417, -170476, -170535, -170594, -170653, -170711, -170770, -170828, -170887, -170945, -171003, -171061, -171119, -171176, -171234, -171291, -171349, -171406, -171463, -171520, -171577, -171634, -171690, -171747, -171803, -171859, -171916, -171972, -172028, -172083, -172139, -172195, -172250, -172306, -172361, -172416, -172471, -172526, -172581, -172635, -172690, -172745, -172799, -172853, -172907, -172962, -173016, -173069, -173123, -173177, -173230, -173284, -173337, -173390, -173444, -173497, -173550, -173602, -173655, -173708, -173760, -173813, -173865, -173917, -173970, -174022, -174074, -174125, -174177, -174229, -174280, -174332, -174383, -174435, -174486, -174537, -174588, -174639, -174690, -174740, -174791, -174841, -174892, -174942, -174992, -175043, -175093, -175143, -175193, -175242, -175292, -175342, -175391, -175441, -175490, -175539, -175589, -175638, -175687, -175736, -175784, -175833, -175882, -175930, -175979, -176027, -176076, -176124, -176172, -176220, -176268, -176316, -176364, -176412, -176459, -176507, -176554, -176602, -176649, -176696, -176744, -176791, -176838, -176885, -176931, -176978, -177025, -177072, -177118, -177165, -177211, -177257, -177304, -177350, -177396, -177442, -177488, -177534, -177579, -177625, -177671, -177716, -177762, -177807, -177852, -177898, -177943, -177988, -178033, -178078, -178123, -178168, -178212, -178257, -178302, -178346, -178391, -178435, -178479, -178524, -178568, -178612, -178656, -178700, -178744, -178788, -178831, -178875, -178919, -178962, -179006, -179049, -179092, -179136, -179179, -179222, -179265, -179308, -179351, -179394, -179437, -179479, -179522, -179565, -179607, -179650, -179692, -179734, -179777, -179819, -179861, -179903, -179945, -179987, -180029, -180071, -180113, -180154, -180196, -180238, -180279, -180321, -180362, -180403, -180445, -180486, -180527, -180568, -180609, -180650, -180691, -180732, -180773, -180813, -180854, -180895, -180935, -180976, -181016, -181057, -181097, -181137, -181177, -181217, -181258, -181298, -181338, -181377, -181417, -181457, -181497, -181536, -181576, -181616, -181655, -181695, -181734, -181773, -181813, -181852, -181891, -181930, -181969, -182008, -182047, -182086, -182125, -182164, -182203, -182241, -182280, -182318, -182357, -182395, -182434, -182472, -182510, -182549, -182587, -182625, -182663, -182701, -182739, -182777, -182815, -182853, -182891, -182928, -182966, -183004, -183041, -183079, -183116, -183154, -183191, -183228, -183266, -183303, -183340, -183377, -183414, -183451, -183488, -183525, -183562, -183599, -183636, -183673, -183709, -183746, -183782, -183819, -183856, -183892, -183928, -183965, -184001, -184037, -184073, -184110, -184146, -184182, -184218, -184254, -184290, -184326, -184361, -184397, -184433, -184469, -184504, -184540, -184575, -184611, -184646, -184682, -184717, -184753, -184788, -184823, -184858, -184893, -184929, -184964, -184999, -185034, -185069, -185103, -185138, -185173, -185208, -185243, -185277, -185312, -185346, -185381, -185415, -185450, -185484, -185519, -185553, -185587, -185622, -185656, -185690, -185724, -185758, -185792, -185826, -185860, -185894, -185928, -185962, -185995, -186029, -186063, -186096, -186130, -186164, -186197, -186231, -186264, -186298, -186331, -186364, -186398, -186431, -186464, -186497, -186530, -186563, -186597, -186630, -186663, -186695, -186728, -186761, -186794, -186827, -186860, -186892, -186925, -186958, -186990, -187023, -187055, -187088, -187120, -187153, -187185, -187217, -187249, -187282, -187314, -187346, -187378, -187410, -187442, -187474, -187506, -187538, -187570, -187602, -187634, -187666, -187698, -187729, -187761, -187793, -187824, -187856, -187887, -187919, -187950, -187982, -188013, -188045, -188076, -188107, -188139, -188170, -188201, -188232, -188263, -188294, -188325, -188356, -188387, -188418, -188449, -188480, -188511, -188542, -188573, -188603, -188634, -188665, -188695, -188726, -188757, -188787, -188818, -188848, -188879, -188909, -188939, -188970, -189000, -189030, -189060, -189091, -189121, -189151, -189181, -189211, -189241, -189271, -189301, -189331, -189361, -189391, -189421, -189451, -189480, -189510, -189540, -189570, -189599, -189629, -189658, -189688, -189718, -189747, -189777, -189806, -189835, -189865, -189894, -189923, -189953, -189982, -190011, -190040, -190070, -190099, -190128, -190157, -190186, -190215, -190244, -190273, -190302, -190331, -190359, -190388, -190417, -190446, -190475, -190503, -190532, -190561, -190589, -190618, -190646, -190675, -190703, -190732, -190760, -190789, -190817, -190845, -190874, -190902, -190930, -190959, -190987, -191015, -191043, -191071, -191099, -191127, -191155, -191184, -191211, -191239, -191267, -191295, -191323, -191351, -191379, -191407, -191434, -191462, -191490 };
+
+// weight*log1p(max(gap-1000,0)), Q16, domain [0,4000]
+static const INT g_rgiAlphaLogGapOverflowQ16[] = { 0, -12203, -19341, -24405, -28333, -31543, -34257, -36608, -38681, -40536, -42214, -43746, -45155, -46459, -47674, -48810, -49877, -50884, -51835, -52738, -53597, -54416, -55199, -55948, -56667, -57357, -58022, -58662, -59280, -59876, -60454, -61013, -61554, -62080, -62590, -63086, -63568, -64038, -64495, -64941, -65376, -65800, -66214, -66619, -67014, -67401, -67780, -68151, -68514, -68869, -69218, -69560, -69895, -70224, -70547, -70864, -71176, -71482, -71783, -72079, -72370, -72656, -72938, -73215, -73488, -73757, -74022, -74282, -74539, -74793, -75042, -75289, -75531, -75771, -76007, -76240, -76471, -76698, -76922, -77143, -77362, -77578, -77792, -78002, -78211, -78417, -78620, -78821, -79020, -79217, -79411, -79604, -79794, -79982, -80169, -80353, -80536, -80716, -80895, -81072, -81247, -81420, -81592, -81762, -81931, -82098, -82263, -82427, -82589, -82750, -82909, -83067, -83223, -83378, -83532, -83685, -83836, -83986, -84134, -84281, -84428, -84572, -84716, -84859, -85000, -85140, -85280, -85418, -85555, -85691, -85825, -85959, -86092, -86224, -86355, -86485, -86614, -86742, -86869, -86995, -87120, -87245, -87368, -87491, -87613, -87734, -87854, -87973, -88092, -88210, -88327, -88443, -88558, -88673, -88787, -88900, -89013, -89124, -89236, -89346, -89456, -89565, -89673, -89781, -89888, -89994, -90100, -90205, -90309, -90413, -90516, -90619, -90721, -90823, -90924, -91024, -91124, -91223, -91321, -91419, -91517, -91614, -91710, -91806, -91902, -91997, -92091, -92185, -92278, -92371, -92464, -92556, -92647, -92738, -92829, -92919, -93008, -93097, -93186, -93274, -93362, -93449, -93536, -93623, -93709, -93795, -93880, -93965, -94049, -94133, -94217, -94300, -94383, -94465, -94547, -94629, -94710, -94791, -94872, -94952, -95032, -95111, -95191, -95269, -95348, -95426, -95504, -95581, -95658, -95735, -95811, -95887, -95963, -96038, -96113, -96188, -96262, -96337, -96410, -96484, -96557, -96630, -96703, -96775, -96847, -96919, -96990, -97061, -97132, -97203, -97273, -97343, -97413, -97482, -97551, -97620, -97689, -97757, -97825, -97893, -97961, -98028, -98095, -98162, -98228, -98295, -98361, -98427, -98492, -98557, -98623, -98687, -98752, -98816, -98880, -98944, -99008, -99071, -99135, -99198, -99260, -99323, -99385, -99447, -99509, -99571, -99632, -99694, -99755, -99815, -99876, -99936, -99997, -100057, -100116, -100176, -100235, -100295, -100353, -100412, -100471, -100529, -100587, -100645, -100703, -100761, -100818, -100876, -100933, -100990, -101046, -101103, -101159, -101215, -101271, -101327, -101383, -101438, -101493, -101548, -101603, -101658, -101713, -101767, -101821, -101875, -101929, -101983, -102037, -102090, -102143, -102197, -102249, -102302, -102355, -102407, -102460, -102512, -102564, -102616, -102667, -102719, -102770, -102822, -102873, -102924, -102974, -103025, -103076, -103126, -103176, -103226, -103276, -103326, -103376, -103425, -103475, -103524, -103573, -103622, -103671, -103719, -103768, -103816, -103865, -103913, -103961, -104009, -104057, -104104, -104152, -104199, -104246, -104294, -104341, -104387, -104434, -104481, -104527, -104574, -104620, -104666, -104712, -104758, -104804, -104850, -104895, -104941, -104986, -105031, -105076, -105121, -105166, -105211, -105255, -105300, -105344, -105389, -105433, -105477, -105521, -105565, -105608, -105652, -105695, -105739, -105782, -105825, -105868, -105911, -105954, -105997, -106040, -106082, -106125, -106167, -106209, -106252, -106294, -106336, -106378, -106419, -106461, -106503, -106544, -106585, -106627, -106668, -106709, -106750, -106791, -106832, -106872, -106913, -106953, -106994, -107034, -107074, -107115, -107155, -107195, -107234, -107274, -107314, -107354, -107393, -107433, -107472, -107511, -107550, -107589, -107628, -107667, -107706, -107745, -107783, -107822, -107861, -107899, -107937, -107975, -108014, -108052, -108090, -108128, -108165, -108203, -108241, -108278, -108316, -108353, -108391, -108428, -108465, -108502, -108539, -108576, -108613, -108650, -108686, -108723, -108760, -108796, -108833, -108869, -108905, -108941, -108977, -109013, -109049, -109085, -109121, -109157, -109193, -109228, -109264, -109299, -109335, -109370, -109405, -109440, -109475, -109510, -109545, -109580, -109615, -109650, -109685, -109719, -109754, -109788, -109823, -109857, -109891, -109925, -109960, -109994, -110028, -110062, -110096, -110129, -110163, -110197, -110230, -110264, -110298, -110331, -110364, -110398, -110431, -110464, -110497, -110530, -110563, -110596, -110629, -110662, -110695, -110727, -110760, -110793, -110825, -110857, -110890, -110922, -110954, -110987, -111019, -111051, -111083, -111115, -111147, -111179, -111211, -111242, -111274, -111306, -111337, -111369, -111400, -111432, -111463, -111494, -111525, -111557, -111588, -111619, -111650, -111681, -111712, -111743, -111773, -111804, -111835, -111866, -111896, -111927, -111957, -111988, -112018, -112048, -112079, -112109, -112139, -112169, -112199, -112229, -112259, -112289, -112319, -112349, -112378, -112408, -112438, -112467, -112497, -112527, -112556, -112585, -112615, -112644, -112673, -112703, -112732, -112761, -112790, -112819, -112848, -112877, -112906, -112935, -112963, -112992, -113021, -113049, -113078, -113107, -113135, -113164, -113192, -113220, -113249, -113277, -113305, -113333, -113362, -113390, -113418, -113446, -113474, -113502, -113530, -113557, -113585, -113613, -113641, -113668, -113696, -113723, -113751, -113778, -113806, -113833, -113861, -113888, -113915, -113942, -113970, -113997, -114024, -114051, -114078, -114105, -114132, -114159, -114186, -114212, -114239, -114266, -114293, -114319, -114346, -114373, -114399, -114426, -114452, -114478, -114505, -114531, -114557, -114584, -114610, -114636, -114662, -114688, -114714, -114740, -114766, -114792, -114818, -114844, -114870, -114896, -114921, -114947, -114973, -114999, -115024, -115050, -115075, -115101, -115126, -115152, -115177, -115202, -115228, -115253, -115278, -115303, -115329, -115354, -115379, -115404, -115429, -115454, -115479, -115504, -115529, -115553, -115578, -115603, -115628, -115652, -115677, -115702, -115726, -115751, -115775, -115800, -115824, -115849, -115873, -115898, -115922, -115946, -115971, -115995, -116019, -116043, -116067, -116091, -116115, -116139, -116163, -116187, -116211, -116235, -116259, -116283, -116307, -116331, -116354, -116378, -116402, -116425, -116449, -116473, -116496, -116520, -116543, -116567, -116590, -116613, -116637, -116660, -116683, -116707, -116730, -116753, -116776, -116799, -116823, -116846, -116869, -116892, -116915, -116938, -116961, -116984, -117006, -117029, -117052, -117075, -117098, -117120, -117143, -117166, -117188, -117211, -117234, -117256, -117279, -117301, -117324, -117346, -117368, -117391, -117413, -117436, -117458, -117480, -117502, -117525, -117547, -117569, -117591, -117613, -117635, -117657, -117679, -117701, -117723, -117745, -117767, -117789, -117811, -117833, -117854, -117876, -117898, -117920, -117941, -117963, -117985, -118006, -118028, -118049, -118071, -118093, -118114, -118135, -118157, -118178, -118200, -118221, -118242, -118264, -118285, -118306, -118327, -118349, -118370, -118391, -118412, -118433, -118454, -118475, -118496, -118517, -118538, -118559, -118580, -118601, -118622, -118643, -118664, -118684, -118705, -118726, -118747, -118767, -118788, -118809, -118829, -118850, -118870, -118891, -118911, -118932, -118952, -118973, -118993, -119014, -119034, -119055, -119075, -119095, -119115, -119136, -119156, -119176, -119196, -119217, -119237, -119257, -119277, -119297, -119317, -119337, -119357, -119377, -119397, -119417, -119437, -119457, -119477, -119497, -119516, -119536, -119556, -119576, -119596, -119615, -119635, -119655, -119674, -119694, -119714, -119733, -119753, -119772, -119792, -119811, -119831, -119850, -119870, -119889, -119909, -119928, -119947, -119967, -119986, -120005, -120025, -120044, -120063, -120082, -120101, -120121, -120140, -120159, -120178, -120197, -120216, -120235, -120254, -120273, -120292, -120311, -120330, -120349, -120368, -120387, -120406, -120424, -120443, -120462, -120481, -120500, -120518, -120537, -120556, -120574, -120593, -120612, -120630, -120649, -120668, -120686, -120705, -120723, -120742, -120760, -120779, -120797, -120815, -120834, -120852, -120871, -120889, -120907, -120926, -120944, -120962, -120980, -120999, -121017, -121035, -121053, -121071, -121090, -121108, -121126, -121144, -121162, -121180, -121198, -121216, -121234, -121252, -121270, -121288, -121306, -121324, -121342, -121359, -121377, -121395, -121413, -121431, -121448, -121466, -121484, -121502, -121519, -121537, -121555, -121572, -121590, -121608, -121625, -121643, -121660, -121678, -121695, -121713, -121730, -121748, -121765, -121783, -121800, -121818, -121835, -121852, -121870, -121887, -121904, -121922, -121939, -121956, -121973, -121991, -122008, -122025, -122042, -122059, -122077, -122094, -122111, -122128, -122145, -122162, -122179, -122196, -122213, -122230, -122247, -122264, -122281, -122298, -122315, -122332, -122349, -122366, -122383, -122399, -122416, -122433, -122450, -122467, -122483, -122500, -122517, -122533, -122550, -122567, -122584, -122600, -122617, -122633, -122650, -122667, -122683, -122700, -122716, -122733, -122749, -122766, -122782, -122799, -122815, -122832, -122848, -122864, -122881, -122897, -122914, -122930, -122946, -122962, -122979, -122995, -123011, -123028, -123044, -123060, -123076, -123092, -123109, -123125, -123141, -123157, -123173, -123189, -123205, -123221, -123237, -123253, -123269, -123286, -123302, -123317, -123333, -123349, -123365, -123381, -123397, -123413, -123429, -123445, -123461, -123477, -123492, -123508, -123524, -123540, -123555, -123571, -123587, -123603, -123618, -123634, -123650, -123665, -123681, -123697, -123712, -123728, -123744, -123759, -123775, -123790, -123806, -123821, -123837, -123852, -123868, -123883, -123899, -123914, -123930, -123945, -123961, -123976, -123991, -124007, -124022, -124037, -124053, -124068, -124083, -124099, -124114, -124129, -124144, -124160, -124175, -124190, -124205, -124220, -124236, -124251, -124266, -124281, -124296, -124311, -124326, -124341, -124357, -124372, -124387, -124402, -124417, -124432, -124447, -124462, -124477, -124492, -124506, -124521, -124536, -124551, -124566, -124581, -124596, -124611, -124626, -124640, -124655, -124670, -124685, -124700, -124714, -124729, -124744, -124759, -124773, -124788, -124803, -124817, -124832, -124847, -124861, -124876, -124890, -124905, -124920, -124934, -124949, -124963, -124978, -124992, -125007, -125021, -125036, -125050, -125065, -125079, -125094, -125108, -125123, -125137, -125152, -125166, -125180, -125195, -125209, -125223, -125238, -125252, -125266, -125281, -125295, -125309, -125323, -125338, -125352, -125366, -125380, -125395, -125409, -125423, -125437, -125451, -125465, -125480, -125494, -125508, -125522, -125536, -125550, -125564, -125578, -125592, -125606, -125620, -125634, -125648, -125662, -125676, -125690, -125704, -125718, -125732, -125746, -125760, -125774, -125788, -125802, -125815, -125829, -125843, -125857, -125871, -125885, -125898, -125912, -125926, -125940, -125953, -125967, -125981, -125995, -126008, -126022, -126036, -126049, -126063, -126077, -126090, -126104, -126118, -126131, -126145, -126159, -126172, -126186, -126199, -126213, -126226, -126240, -126253, -126267, -126280, -126294, -126307, -126321, -126334, -126348, -126361, -126375, -126388, -126402, -126415, -126428, -126442, -126455, -126468, -126482, -126495, -126509, -126522, -126535, -126548, -126562, -126575, -126588, -126602, -126615, -126628, -126641, -126655, -126668, -126681, -126694, -126707, -126720, -126734, -126747, -126760, -126773, -126786, -126799, -126812, -126825, -126839, -126852, -126865, -126878, -126891, -126904, -126917, -126930, -126943, -126956, -126969, -126982, -126995, -127008, -127021, -127034, -127047, -127060, -127072, -127085, -127098, -127111, -127124, -127137, -127150, -127163, -127175, -127188, -127201, -127214, -127227, -127239, -127252, -127265, -127278, -127290, -127303, -127316, -127329, -127341, -127354, -127367, -127379, -127392, -127405, -127418, -127430, -127443, -127455, -127468, -127481, -127493, -127506, -127518, -127531, -127544, -127556, -127569, -127581, -127594, -127606, -127619, -127631, -127644, -127656, -127669, -127681, -127694, -127706, -127719, -127731, -127744, -127756, -127768, -127781, -127793, -127806, -127818, -127830, -127843, -127855, -127867, -127880, -127892, -127904, -127917, -127929, -127941, -127953, -127966, -127978, -127990, -128003, -128015, -128027, -128039, -128051, -128064, -128076, -128088, -128100, -128112, -128125, -128137, -128149, -128161, -128173, -128185, -128197, -128209, -128222, -128234, -128246, -128258, -128270, -128282, -128294, -128306, -128318, -128330, -128342, -128354, -128366, -128378, -128390, -128402, -128414, -128426, -128438, -128450, -128462, -128474, -128486, -128497, -128509, -128521, -128533, -128545, -128557, -128569, -128581, -128592, -128604, -128616, -128628, -128640, -128651, -128663, -128675, -128687, -128699, -128710, -128722, -128734, -128746, -128757, -128769, -128781, -128793, -128804, -128816, -128828, -128839, -128851, -128863, -128874, -128886, -128898, -128909, -128921, -128932, -128944, -128956, -128967, -128979, -128990, -129002, -129014, -129025, -129037, -129048, -129060, -129071, -129083, -129094, -129106, -129117, -129129, -129140, -129152, -129163, -129175, -129186, -129197, -129209, -129220, -129232, -129243, -129255, -129266, -129277, -129289, -129300, -129312, -129323, -129334, -129346, -129357, -129368, -129380, -129391, -129402, -129414, -129425, -129436, -129447, -129459, -129470, -129481, -129492, -129504, -129515, -129526, -129537, -129549, -129560, -129571, -129582, -129593, -129605, -129616, -129627, -129638, -129649, -129660, -129671, -129683, -129694, -129705, -129716, -129727, -129738, -129749, -129760, -129771, -129782, -129794, -129805, -129816, -129827, -129838, -129849, -129860, -129871, -129882, -129893, -129904, -129915, -129926, -129937, -129948, -129959, -129970, -129981, -129991, -130002, -130013, -130024, -130035, -130046, -130057, -130068, -130079, -130090, -130100, -130111, -130122, -130133, -130144, -130155, -130166, -130176, -130187, -130198, -130209, -130220, -130230, -130241, -130252, -130263, -130274, -130284, -130295, -130306, -130316, -130327, -130338, -130349, -130359, -130370, -130381, -130391, -130402, -130413, -130424, -130434, -130445, -130455, -130466, -130477, -130487, -130498, -130509, -130519, -130530, -130540, -130551, -130562, -130572, -130583, -130593, -130604, -130615, -130625, -130636, -130646, -130657, -130667, -130678, -130688, -130699, -130709, -130720, -130730, -130741, -130751, -130762, -130772, -130783, -130793, -130803, -130814, -130824, -130835, -130845, -130856, -130866, -130876, -130887, -130897, -130908, -130918, -130928, -130939, -130949, -130959, -130970, -130980, -130990, -131001, -131011, -131021, -131032, -131042, -131052, -131063, -131073, -131083, -131093, -131104, -131114, -131124, -131134, -131145, -131155, -131165, -131175, -131186, -131196, -131206, -131216, -131226, -131237, -131247, -131257, -131267, -131277, -131288, -131298, -131308, -131318, -131328, -131338, -131348, -131358, -131369, -131379, -131389, -131399, -131409, -131419, -131429, -131439, -131449, -131459, -131469, -131479, -131490, -131500, -131510, -131520, -131530, -131540, -131550, -131560, -131570, -131580, -131590, -131600, -131610, -131620, -131630, -131640, -131649, -131659, -131669, -131679, -131689, -131699, -131709, -131719, -131729, -131739, -131749, -131759, -131768, -131778, -131788, -131798, -131808, -131818, -131828, -131838, -131847, -131857, -131867, -131877, -131887, -131897, -131906, -131916, -131926, -131936, -131946, -131955, -131965, -131975, -131985, -131994, -132004, -132014, -132024, -132033, -132043, -132053, -132063, -132072, -132082, -132092, -132101, -132111, -132121, -132130, -132140, -132150, -132160, -132169, -132179, -132188, -132198, -132208, -132217, -132227, -132237, -132246, -132256, -132266, -132275, -132285, -132294, -132304, -132314, -132323, -132333, -132342, -132352, -132361, -132371, -132380, -132390, -132400, -132409, -132419, -132428, -132438, -132447, -132457, -132466, -132476, -132485, -132495, -132504, -132514, -132523, -132533, -132542, -132551, -132561, -132570, -132580, -132589, -132599, -132608, -132618, -132627, -132636, -132646, -132655, -132665, -132674, -132683, -132693, -132702, -132711, -132721, -132730, -132740, -132749, -132758, -132768, -132777, -132786, -132796, -132805, -132814, -132824, -132833, -132842, -132851, -132861, -132870, -132879, -132889, -132898, -132907, -132916, -132926, -132935, -132944, -132953, -132963, -132972, -132981, -132990, -133000, -133009, -133018, -133027, -133036, -133046, -133055, -133064, -133073, -133082, -133091, -133101, -133110, -133119, -133128, -133137, -133146, -133156, -133165, -133174, -133183, -133192, -133201, -133210, -133219, -133228, -133238, -133247, -133256, -133265, -133274, -133283, -133292, -133301, -133310, -133319, -133328, -133337, -133346, -133355, -133364, -133373, -133382, -133391, -133400, -133410, -133419, -133428, -133436, -133445, -133454, -133463, -133472, -133481, -133490, -133499, -133508, -133517, -133526, -133535, -133544, -133553, -133562, -133571, -133580, -133589, -133598, -133607, -133615, -133624, -133633, -133642, -133651, -133660, -133669, -133678, -133686, -133695, -133704, -133713, -133722, -133731, -133740, -133748, -133757, -133766, -133775, -133784, -133793, -133801, -133810, -133819, -133828, -133837, -133845, -133854, -133863, -133872, -133880, -133889, -133898, -133907, -133915, -133924, -133933, -133942, -133950, -133959, -133968, -133977, -133985, -133994, -134003, -134011, -134020, -134029, -134038, -134046, -134055, -134064, -134072, -134081, -134090, -134098, -134107, -134116, -134124, -134133, -134141, -134150, -134159, -134167, -134176, -134185, -134193, -134202, -134210, -134219, -134228, -134236, -134245, -134253, -134262, -134271, -134279, -134288, -134296, -134305, -134313, -134322, -134330, -134339, -134348, -134356, -134365, -134373, -134382, -134390, -134399, -134407, -134416, -134424, -134433, -134441, -134450, -134458, -134467, -134475, -134484, -134492, -134501, -134509, -134518, -134526, -134534, -134543, -134551, -134560, -134568, -134577, -134585, -134593, -134602, -134610, -134619, -134627, -134635, -134644, -134652, -134661, -134669, -134677, -134686, -134694, -134703, -134711, -134719, -134728, -134736, -134744, -134753, -134761, -134769, -134778, -134786, -134794, -134803, -134811, -134819, -134828, -134836, -134844, -134853, -134861, -134869, -134877, -134886, -134894, -134902, -134911, -134919, -134927, -134935, -134944, -134952, -134960, -134968, -134977, -134985, -134993, -135001, -135009, -135018, -135026, -135034, -135042, -135051, -135059, -135067, -135075, -135083, -135091, -135100, -135108, -135116, -135124, -135132, -135141, -135149, -135157, -135165, -135173, -135181, -135189, -135198, -135206, -135214, -135222, -135230, -135238, -135246, -135254, -135263, -135271, -135279, -135287, -135295, -135303, -135311, -135319, -135327, -135335, -135343, -135351, -135360, -135368, -135376, -135384, -135392, -135400, -135408, -135416, -135424, -135432, -135440, -135448, -135456, -135464, -135472, -135480, -135488, -135496, -135504, -135512, -135520, -135528, -135536, -135544, -135552, -135560, -135568, -135576, -135584, -135592, -135600, -135608, -135616, -135624, -135631, -135639, -135647, -135655, -135663, -135671, -135679, -135687, -135695, -135703, -135711, -135719, -135726, -135734, -135742, -135750, -135758, -135766, -135774, -135782, -135789, -135797, -135805, -135813, -135821, -135829, -135837, -135844, -135852, -135860, -135868, -135876, -135884, -135891, -135899, -135907, -135915, -135923, -135931, -135938, -135946, -135954, -135962, -135969, -135977, -135985, -135993, -136001, -136008, -136016, -136024, -136032, -136039, -136047, -136055, -136063, -136070, -136078, -136086, -136094, -136101, -136109, -136117, -136125, -136132, -136140, -136148, -136155, -136163, -136171, -136178, -136186, -136194, -136202, -136209, -136217, -136225, -136232, -136240, -136248, -136255, -136263, -136271, -136278, -136286, -136294, -136301, -136309, -136316, -136324, -136332, -136339, -136347, -136355, -136362, -136370, -136377, -136385, -136393, -136400, -136408, -136415, -136423, -136431, -136438, -136446, -136453, -136461, -136468, -136476, -136484, -136491, -136499, -136506, -136514, -136521, -136529, -136536, -136544, -136552, -136559, -136567, -136574, -136582, -136589, -136597, -136604, -136612, -136619, -136627, -136634, -136642, -136649, -136657, -136664, -136672, -136679, -136687, -136694, -136702, -136709, -136716, -136724, -136731, -136739, -136746, -136754, -136761, -136769, -136776, -136784, -136791, -136798, -136806, -136813, -136821, -136828, -136835, -136843, -136850, -136858, -136865, -136872, -136880, -136887, -136895, -136902, -136909, -136917, -136924, -136932, -136939, -136946, -136954, -136961, -136968, -136976, -136983, -136990, -136998, -137005, -137012, -137020, -137027, -137034, -137042, -137049, -137056, -137064, -137071, -137078, -137086, -137093, -137100, -137108, -137115, -137122, -137129, -137137, -137144, -137151, -137159, -137166, -137173, -137180, -137188, -137195, -137202, -137209, -137217, -137224, -137231, -137239, -137246, -137253, -137260, -137267, -137275, -137282, -137289, -137296, -137304, -137311, -137318, -137325, -137332, -137340, -137347, -137354, -137361, -137368, -137376, -137383, -137390, -137397, -137404, -137412, -137419, -137426, -137433, -137440, -137447, -137455, -137462, -137469, -137476, -137483, -137490, -137497, -137505, -137512, -137519, -137526, -137533, -137540, -137547, -137554, -137562, -137569, -137576, -137583, -137590, -137597, -137604, -137611, -137618, -137625, -137633, -137640, -137647, -137654, -137661, -137668, -137675, -137682, -137689, -137696, -137703, -137710, -137717, -137724, -137731, -137738, -137746, -137753, -137760, -137767, -137774, -137781, -137788, -137795, -137802, -137809, -137816, -137823, -137830, -137837, -137844, -137851, -137858, -137865, -137872, -137879, -137886, -137893, -137900, -137907, -137914, -137921, -137928, -137935, -137941, -137948, -137955, -137962, -137969, -137976, -137983, -137990, -137997, -138004, -138011, -138018, -138025, -138032, -138039, -138046, -138053, -138059, -138066, -138073, -138080, -138087, -138094, -138101, -138108, -138115, -138122, -138128, -138135, -138142, -138149, -138156, -138163, -138170, -138177, -138183, -138190, -138197, -138204, -138211, -138218, -138225, -138231, -138238, -138245, -138252, -138259, -138266, -138272, -138279, -138286, -138293, -138300, -138307, -138313, -138320, -138327, -138334, -138341, -138347, -138354, -138361, -138368, -138375, -138381, -138388, -138395, -138402, -138409, -138415, -138422, -138429, -138436, -138442, -138449, -138456, -138463, -138470, -138476, -138483, -138490, -138497, -138503, -138510, -138517, -138523, -138530, -138537, -138544, -138550, -138557, -138564, -138571, -138577, -138584, -138591, -138597, -138604, -138611, -138617, -138624, -138631, -138638, -138644, -138651, -138658, -138664, -138671, -138678, -138684, -138691, -138698, -138704, -138711, -138718, -138724, -138731, -138738, -138744, -138751, -138758, -138764, -138771, -138778, -138784, -138791, -138797, -138804, -138811, -138817, -138824, -138831, -138837, -138844, -138850, -138857, -138864, -138870, -138877, -138883, -138890, -138897, -138903, -138910, -138916, -138923, -138930, -138936, -138943, -138949, -138956, -138962, -138969, -138976, -138982, -138989, -138995, -139002, -139008, -139015, -139021, -139028, -139035, -139041, -139048, -139054, -139061, -139067, -139074, -139080, -139087, -139093, -139100, -139106, -139113, -139119, -139126, -139132, -139139, -139145, -139152, -139158, -139165, -139171, -139178, -139184, -139191, -139197, -139204, -139210, -139217, -139223, -139230, -139236, -139243, -139249, -139256, -139262, -139268, -139275, -139281, -139288, -139294, -139301, -139307, -139314, -139320, -139326, -139333, -139339, -139346, -139352, -139359, -139365, -139371, -139378, -139384, -139391, -139397, -139404, -139410, -139416, -139423, -139429, -139436, -139442, -139448, -139455, -139461, -139467, -139474, -139480, -139487, -139493, -139499, -139506, -139512, -139518, -139525, -139531, -139538, -139544, -139550, -139557, -139563, -139569, -139576, -139582, -139588, -139595, -139601, -139607, -139614, -139620, -139626, -139633, -139639, -139645, -139652, -139658, -139664, -139671, -139677, -139683, -139689, -139696, -139702, -139708, -139715, -139721, -139727, -139734, -139740, -139746, -139752, -139759, -139765, -139771, -139778, -139784, -139790, -139796, -139803, -139809, -139815, -139821, -139828, -139834, -139840, -139846, -139853, -139859, -139865, -139871, -139878, -139884, -139890, -139896, -139903, -139909, -139915, -139921, -139927, -139934, -139940, -139946, -139952, -139958, -139965, -139971, -139977, -139983, -139989, -139996, -140002, -140008, -140014, -140020, -140027, -140033, -140039, -140045, -140051, -140057, -140064, -140070, -140076, -140082, -140088, -140094, -140101, -140107, -140113, -140119, -140125, -140131, -140138, -140144, -140150, -140156, -140162, -140168, -140174, -140181, -140187, -140193, -140199, -140205, -140211, -140217, -140223, -140229, -140236, -140242, -140248, -140254, -140260, -140266, -140272, -140278, -140284, -140291, -140297, -140303, -140309, -140315, -140321, -140327, -140333, -140339, -140345, -140351, -140357, -140363, -140370, -140376, -140382, -140388, -140394, -140400, -140406, -140412, -140418, -140424, -140430, -140436, -140442, -140448, -140454, -140460, -140466, -140472, -140478, -140484, -140490, -140496, -140502, -140508, -140514, -140520, -140526, -140533, -140539, -140545, -140551, -140557, -140563, -140569, -140575, -140581, -140586, -140592, -140598, -140604, -140610, -140616, -140622, -140628, -140634, -140640, -140646, -140652, -140658, -140664, -140670, -140676, -140682, -140688, -140694, -140700, -140706, -140712, -140718, -140724, -140730, -140736, -140742, -140747, -140753, -140759, -140765, -140771, -140777, -140783, -140789, -140795, -140801, -140807, -140813, -140819, -140824, -140830, -140836, -140842, -140848, -140854, -140860, -140866, -140872, -140878, -140883, -140889, -140895, -140901, -140907, -140913, -140919, -140925, -140931, -140936, -140942, -140948, -140954, -140960, -140966, -140972, -140977, -140983, -140989, -140995, -141001, -141007, -141013, -141018, -141024, -141030, -141036, -141042, -141048, -141053, -141059, -141065, -141071, -141077, -141083, -141088, -141094, -141100, -141106, -141112, -141118, -141123, -141129, -141135, -141141, -141147, -141152, -141158, -141164, -141170, -141176, -141181, -141187, -141193, -141199, -141204, -141210, -141216, -141222, -141228, -141233, -141239, -141245, -141251, -141256, -141262, -141268, -141274, -141279, -141285, -141291, -141297, -141303, -141308, -141314, -141320, -141325, -141331, -141337, -141343, -141348, -141354, -141360, -141366, -141371, -141377, -141383, -141389, -141394, -141400, -141406, -141411, -141417, -141423, -141429, -141434, -141440, -141446, -141451, -141457, -141463, -141469, -141474, -141480, -141486, -141491, -141497, -141503, -141508, -141514, -141520, -141525, -141531, -141537, -141542, -141548, -141554, -141559, -141565, -141571, -141576, -141582, -141588, -141593, -141599, -141605, -141610, -141616, -141622, -141627, -141633, -141639, -141644, -141650, -141656, -141661, -141667, -141672, -141678, -141684, -141689, -141695, -141701, -141706, -141712, -141717, -141723, -141729, -141734, -141740, -141745, -141751, -141757, -141762, -141768, -141774, -141779, -141785, -141790, -141796, -141801, -141807, -141813, -141818, -141824, -141829, -141835, -141841, -141846, -141852, -141857, -141863, -141868, -141874, -141880, -141885, -141891, -141896, -141902, -141907, -141913, -141918, -141924, -141930, -141935, -141941, -141946, -141952, -141957, -141963, -141968, -141974, -141979, -141985, -141991, -141996, -142002, -142007, -142013, -142018, -142024, -142029, -142035, -142040, -142046, -142051, -142057, -142062, -142068, -142073, -142079, -142084, -142090, -142095, -142101, -142106, -142112, -142117, -142123, -142128, -142134, -142139, -142145, -142150, -142156, -142161, -142167, -142172, -142178, -142183, -142189, -142194, -142199, -142205, -142210, -142216, -142221, -142227, -142232, -142238, -142243, -142249, -142254, -142259, -142265, -142270, -142276, -142281, -142287, -142292, -142298, -142303, -142308, -142314, -142319, -142325, -142330, -142336, -142341, -142346, -142352, -142357, -142363, -142368, -142373, -142379, -142384, -142390, -142395, -142401, -142406, -142411, -142417, -142422, -142428, -142433, -142438, -142444, -142449, -142454, -142460, -142465, -142471, -142476, -142481, -142487, -142492, -142498, -142503, -142508, -142514, -142519, -142524, -142530, -142535, -142540, -142546, -142551, -142557, -142562, -142567, -142573, -142578, -142583, -142589, -142594, -142599, -142605, -142610, -142615, -142621, -142626, -142631, -142637, -142642, -142647, -142653, -142658, -142663, -142669, -142674, -142679, -142685, -142690, -142695, -142701, -142706, -142711, -142716, -142722, -142727, -142732, -142738, -142743, -142748, -142754, -142759, -142764, -142769, -142775, -142780, -142785, -142791, -142796, -142801, -142806, -142812, -142817, -142822, -142828, -142833, -142838, -142843, -142849, -142854, -142859, -142864, -142870, -142875, -142880, -142886, -142891, -142896, -142901, -142907, -142912, -142917, -142922, -142928, -142933, -142938, -142943, -142948, -142954, -142959, -142964, -142969, -142975, -142980, -142985, -142990, -142996, -143001, -143006, -143011, -143016, -143022, -143027, -143032, -143037, -143043, -143048, -143053, -143058, -143063, -143069, -143074, -143079, -143084, -143089, -143095, -143100, -143105, -143110, -143115, -143120, -143126, -143131, -143136, -143141, -143146, -143152, -143157, -143162, -143167, -143172, -143177, -143183, -143188, -143193, -143198, -143203, -143208, -143214, -143219, -143224, -143229, -143234, -143239, -143245, -143250, -143255, -143260, -143265, -143270, -143275, -143281, -143286, -143291, -143296, -143301, -143306, -143311, -143316, -143322, -143327, -143332, -143337, -143342, -143347, -143352, -143357, -143363, -143368, -143373, -143378, -143383, -143388, -143393, -143398, -143403, -143409, -143414, -143419, -143424, -143429, -143434, -143439, -143444, -143449, -143454, -143460, -143465, -143470, -143475, -143480, -143485, -143490, -143495, -143500, -143505, -143510, -143515, -143520, -143526, -143531, -143536, -143541, -143546, -143551, -143556, -143561, -143566, -143571, -143576, -143581, -143586, -143591, -143596, -143601, -143606, -143612, -143617, -143622, -143627, -143632, -143637, -143642, -143647, -143652, -143657, -143662, -143667, -143672, -143677, -143682, -143687, -143692, -143697, -143702, -143707, -143712, -143717, -143722, -143727, -143732, -143737, -143742, -143747, -143752, -143757, -143762, -143767, -143772, -143777, -143782, -143787, -143792, -143797, -143802, -143807, -143812, -143817, -143822, -143827, -143832, -143837, -143842, -143847, -143852, -143857, -143862, -143867, -143872, -143877, -143882, -143887, -143892, -143897, -143902, -143907, -143912, -143917, -143922, -143926, -143931, -143936, -143941, -143946, -143951, -143956, -143961, -143966, -143971, -143976, -143981, -143986, -143991, -143996, -144001, -144006, -144011, -144015, -144020, -144025, -144030, -144035, -144040, -144045, -144050, -144055, -144060, -144065, -144070, -144074, -144079, -144084, -144089, -144094, -144099, -144104, -144109, -144114, -144119, -144124, -144128, -144133, -144138, -144143, -144148, -144153, -144158, -144163, -144168, -144172, -144177, -144182, -144187, -144192, -144197, -144202, -144207, -144212, -144216, -144221, -144226, -144231, -144236, -144241, -144246, -144250, -144255, -144260, -144265, -144270, -144275, -144280, -144285, -144289, -144294, -144299, -144304, -144309, -144314, -144318, -144323, -144328, -144333, -144338, -144343, -144348, -144352, -144357, -144362, -144367, -144372, -144377, -144381, -144386, -144391, -144396, -144401, -144405, -144410, -144415, -144420, -144425, -144430, -144434, -144439, -144444, -144449, -144454, -144458, -144463, -144468, -144473, -144478, -144482, -144487, -144492, -144497, -144502, -144506, -144511, -144516, -144521, -144526, -144530, -144535, -144540, -144545, -144550, -144554, -144559, -144564, -144569, -144573, -144578, -144583, -144588, -144593, -144597, -144602, -144607, -144612, -144616, -144621, -144626, -144631, -144635, -144640, -144645, -144650, -144654, -144659, -144664, -144669, -144673, -144678, -144683, -144688, -144692, -144697, -144702, -144707, -144711, -144716, -144721, -144726, -144730, -144735, -144740, -144745, -144749, -144754, -144759, -144763, -144768, -144773, -144778, -144782, -144787, -144792, -144796, -144801, -144806, -144811, -144815, -144820, -144825, -144829, -144834, -144839, -144844, -144848, -144853, -144858, -144862, -144867, -144872, -144876, -144881, -144886, -144891, -144895, -144900, -144905, -144909, -144914, -144919, -144923, -144928, -144933, -144937, -144942, -144947, -144951, -144956, -144961, -144965, -144970, -144975, -144979, -144984, -144989, -144993, -144998, -145003, -145007, -145012, -145017, -145021, -145026, -145031, -145035, -145040, -145045, -145049, -145054, -145059, -145063, -145068, -145073, -145077, -145082, -145086, -145091, -145096, -145100, -145105, -145110, -145114, -145119, -145124, -145128, -145133, -145137, -145142, -145147, -145151, -145156, -145161, -145165, -145170, -145174, -145179, -145184, -145188, -145193, -145197, -145202, -145207, -145211, -145216, -145220, -145225, -145230, -145234, -145239, -145243, -145248, -145253, -145257, -145262, -145266, -145271, -145276, -145280, -145285, -145289, -145294, -145299, -145303, -145308, -145312, -145317, -145321, -145326, -145331, -145335, -145340, -145344, -145349, -145353, -145358, -145363, -145367, -145372, -145376, -145381, -145385, -145390, -145395, -145399, -145404, -145408, -145413, -145417, -145422, -145426, -145431, -145436, -145440, -145445, -145449, -145454, -145458, -145463, -145467, -145472, -145476, -145481, -145485, -145490, -145495, -145499, -145504, -145508, -145513, -145517, -145522, -145526, -145531, -145535, -145540, -145544, -145549, -145553, -145558, -145562, -145567, -145571, -145576, -145580, -145585, -145589, -145594, -145599, -145603, -145608, -145612, -145617, -145621, -145626, -145630, -145635, -145639, -145644, -145648, -145652, -145657, -145661, -145666, -145670, -145675, -145679, -145684, -145688, -145693, -145697, -145702, -145706, -145711, -145715, -145720, -145724, -145729, -145733, -145738, -145742, -145747, -145751, -145756, -145760, -145764, -145769, -145773, -145778, -145782, -145787, -145791, -145796, -145800, -145805, -145809, -145813, -145818, -145822, -145827, -145831, -145836, -145840, -145845, -145849, -145853, -145858, -145862, -145867, -145871, -145876, -145880, -145885, -145889, -145893, -145898, -145902, -145907, -145911, -145916, -145920, -145924, -145929, -145933, -145938, -145942, -145947, -145951, -145955, -145960, -145964, -145969, -145973, -145977, -145982, -145986, -145991, -145995, -145999, -146004, -146008, -146013, -146017 };
+
+// weight*log1p(depth_plies), Q16, domain [0,40]
+static const INT g_rgiAlphaLogDepthQ16[] = { 0, -18037, -28588, -36074, -41880, -46625, -50636, -54111, -57176, -59917, -62397, -64662, -66744, -68673, -70468, -72148, -73725, -75213, -76619, -77954, -79224, -80434, -81591, -82699, -83761, -84781, -85763, -86710, -87623, -88505, -89358, -90185, -90985, -91762, -92516, -93249, -93962, -94656, -95332, -95991, -96634 };
+
+// weight*log1p(ordinal), Q16, domain [0,224]
+static const INT g_rgiAlphaLogOrdinalQ16[] = { 0, -120241, -190578, -240483, -279192, -310820, -337560, -360724, -381156, -399433, -415967, -431061, -444946, -457802, -469770, -480966, -491482, -501398, -510777, -519675, -528139, -536208, -543920, -551303, -558384, -565188, -571735, -578043, -584131, -590012, -595700, -601207, -606545, -611724, -616752, -621639, -626392, -631018, -635524, -639916, -644200, -648380, -652462, -656450, -660348, -664161, -667892, -671544, -675121, -678625, -682061, -685429, -688733, -691976, -695159, -698285, -701355, -704372, -707337, -710253, -713120, -715941, -718717, -721449, -724138, -726787, -729395, -731965, -734498, -736994, -739454, -741881, -744273, -746634, -748962, -751260, -753527, -755766, -757976, -760158, -762313, -764441, -766544, -768621, -770674, -772703, -774709, -776691, -778652, -780590, -782507, -784402, -786278, -788133, -789969, -791785, -793583, -795362, -797123, -798867, -800593, -802302, -803994, -805671, -807331, -808975, -810604, -812217, -813816, -815400, -816970, -818526, -820068, -821597, -823112, -824614, -826103, -827579, -829043, -830494, -831934, -833362, -834778, -836183, -837576, -838958, -840330, -841690, -843040, -844380, -845709, -847028, -848337, -849637, -850927, -852207, -853478, -854739, -855992, -857235, -858470, -859696, -860913, -862122, -863323, -864515, -865699, -866875, -868043, -869204, -870356, -871501, -872639, -873769, -874892, -876007, -877116, -878217, -879312, -880399, -881480, -882554, -883622, -884683, -885737, -886785, -887827, -888863, -889892, -890916, -891933, -892945, -893950, -894950, -895944, -896933, -897916, -898893, -899865, -900831, -901792, -902748, -903699, -904644, -905584, -906519, -907449, -908375, -909295, -910210, -911121, -912027, -912928, -913824, -914716, -915604, -916486, -917365, -918239, -919108, -919973, -920834, -921691, -922543, -923392, -924236, -925076, -925912, -926744, -927572, -928396, -929216, -930033, -930845, -931654, -932459, -933260, -934058, -934852, -935642, -936429, -937212, -937991, -938768, -939540 };
+
+// weight*log1p(fh_attempts), Q16, domain [0,65535]
+static const INT g_rgiAlphaLogFhAttemptsQ16[] = { 0, 767, 1216, 1534, 1781, 1982, 2153, 2301, 2431, 2548, 2653, 2749, 2838, 2920, 2996, 3068, 3135, 3198, 3258, 3314, 3368, 3420, 3469, 3516, 3561, 3605, 3647, 3687, 3726, 3763, 3799, 3834, 3869, 3902, 3934, 3965, 3995, 4025, 4053, 4081, 4109, 4135, 4161, 4187, 4212, 4236, 4260, 4283, 4306, 4328, 4350, 4372, 4393, 4413, 4434, 4454, 4473, 4492, 4511, 4530, 4548, 4566, 4584, 4601, 4619, 4635, 4652, 4668, 4685, 4701, 4716, 4732, 4747, 4762, 4777, 4792, 4806, 4820, 4834, 4848, 4862, 4876, 4889, 4902, 4915, 4928, 4941, 4954, 4966, 4979, 4991, 5003, 5015, 5027, 5038, 5050, 5061, 5073, 5084, 5095, 5106, 5117, 5128, 5139, 5149, 5160, 5170, 5180, 5191, 5201, 5211, 5221, 5230, 5240, 5250, 5259, 5269, 5278, 5288, 5297, 5306, 5315, 5324, 5333, 5342, 5351, 5360, 5368, 5377, 5385, 5394, 5402, 5411, 5419, 5427, 5435, 5443, 5452, 5460, 5467, 5475, 5483, 5491, 5499, 5506, 5514, 5521, 5529, 5536, 5544, 5551, 5558, 5566, 5573, 5580, 5587, 5594, 5601, 5608, 5615, 5622, 5629, 5636, 5643, 5649, 5656, 5663, 5669, 5676, 5682, 5689, 5695, 5702, 5708, 5714, 5721, 5727, 5733, 5739, 5745, 5752, 5758, 5764, 5770, 5776, 5782, 5788, 5794, 5799, 5805, 5811, 5817, 5823, 5828, 5834, 5840, 5845, 5851, 5857, 5862, 5868, 5873, 5879, 5884, 5889, 5895, 5900, 5905, 5911, 5916, 5921, 5927, 5932, 5937, 5942, 5947, 5952, 5957, 5962, 5968, 5973, 5978, 5983, 5987, 5992, 5997, 6002, 6007, 6012, 6017, 6022, 6026, 6031, 6036, 6040, 6045, 6050, 6055, 6059, 6064, 6068, 6073, 6078, 6082, 6087, 6091, 6096, 6100, 6105, 6109, 6113, 6118, 6122, 6127, 6131, 6135, 6140, 6144, 6148, 6152, 6157, 6161, 6165, 6169, 6173, 6178, 6182, 6186, 6190, 6194, 6198, 6202, 6206, 6210, 6214, 6218, 6222, 6226, 6230, 6234, 6238, 6242, 6246, 6250, 6254, 6258, 6262, 6266, 6269, 6273, 6277, 6281, 6285, 6288, 6292, 6296, 6300, 6303, 6307, 6311, 6314, 6318, 6322, 6325, 6329, 6333, 6336, 6340, 6343, 6347, 6351, 6354, 6358, 6361, 6365, 6368, 6372, 6375, 6379, 6382, 6386, 6389, 6392, 6396, 6399, 6403, 6406, 6409, 6413, 6416, 6419, 6423, 6426, 6429, 6433, 6436, 6439, 6443, 6446, 6449, 6452, 6456, 6459, 6462, 6465, 6469, 6472, 6475, 6478, 6481, 6484, 6488, 6491, 6494, 6497, 6500, 6503, 6506, 6509, 6512, 6515, 6519, 6522, 6525, 6528, 6531, 6534, 6537, 6540, 6543, 6546, 6549, 6552, 6555, 6558, 6561, 6563, 6566, 6569, 6572, 6575, 6578, 6581, 6584, 6587, 6590, 6592, 6595, 6598, 6601, 6604, 6607, 6609, 6612, 6615, 6618, 6621, 6623, 6626, 6629, 6632, 6634, 6637, 6640, 6643, 6645, 6648, 6651, 6654, 6656, 6659, 6662, 6664, 6667, 6670, 6672, 6675, 6678, 6680, 6683, 6686, 6688, 6691, 6693, 6696, 6699, 6701, 6704, 6706, 6709, 6712, 6714, 6717, 6719, 6722, 6724, 6727, 6729, 6732, 6734, 6737, 6739, 6742, 6744, 6747, 6749, 6752, 6754, 6757, 6759, 6762, 6764, 6767, 6769, 6772, 6774, 6776, 6779, 6781, 6784, 6786, 6788, 6791, 6793, 6796, 6798, 6800, 6803, 6805, 6807, 6810, 6812, 6814, 6817, 6819, 6821, 6824, 6826, 6828, 6831, 6833, 6835, 6838, 6840, 6842, 6844, 6847, 6849, 6851, 6854, 6856, 6858, 6860, 6862, 6865, 6867, 6869, 6871, 6874, 6876, 6878, 6880, 6882, 6885, 6887, 6889, 6891, 6893, 6896, 6898, 6900, 6902, 6904, 6906, 6909, 6911, 6913, 6915, 6917, 6919, 6921, 6923, 6926, 6928, 6930, 6932, 6934, 6936, 6938, 6940, 6942, 6944, 6947, 6949, 6951, 6953, 6955, 6957, 6959, 6961, 6963, 6965, 6967, 6969, 6971, 6973, 6975, 6977, 6979, 6981, 6983, 6985, 6987, 6989, 6991, 6993, 6995, 6997, 6999, 7001, 7003, 7005, 7007, 7009, 7011, 7013, 7015, 7017, 7019, 7021, 7023, 7025, 7027, 7029, 7030, 7032, 7034, 7036, 7038, 7040, 7042, 7044, 7046, 7048, 7050, 7051, 7053, 7055, 7057, 7059, 7061, 7063, 7065, 7066, 7068, 7070, 7072, 7074, 7076, 7078, 7079, 7081, 7083, 7085, 7087, 7089, 7090, 7092, 7094, 7096, 7098, 7099, 7101, 7103, 7105, 7107, 7108, 7110, 7112, 7114, 7116, 7117, 7119, 7121, 7123, 7125, 7126, 7128, 7130, 7132, 7133, 7135, 7137, 7139, 7140, 7142, 7144, 7146, 7147, 7149, 7151, 7152, 7154, 7156, 7158, 7159, 7161, 7163, 7164, 7166, 7168, 7170, 7171, 7173, 7175, 7176, 7178, 7180, 7181, 7183, 7185, 7186, 7188, 7190, 7191, 7193, 7195, 7196, 7198, 7200, 7201, 7203, 7205, 7206, 7208, 7210, 7211, 7213, 7214, 7216, 7218, 7219, 7221, 7223, 7224, 7226, 7227, 7229, 7231, 7232, 7234, 7235, 7237, 7239, 7240, 7242, 7243, 7245, 7247, 7248, 7250, 7251, 7253, 7254, 7256, 7258, 7259, 7261, 7262, 7264, 7265, 7267, 7268, 7270, 7272, 7273, 7275, 7276, 7278, 7279, 7281, 7282, 7284, 7285, 7287, 7288, 7290, 7292, 7293, 7295, 7296, 7298, 7299, 7301, 7302, 7304, 7305, 7307, 7308, 7310, 7311, 7313, 7314, 7316, 7317, 7319, 7320, 7322, 7323, 7324, 7326, 7327, 7329, 7330, 7332, 7333, 7335, 7336, 7338, 7339, 7341, 7342, 7343, 7345, 7346, 7348, 7349, 7351, 7352, 7354, 7355, 7356, 7358, 7359, 7361, 7362, 7364, 7365, 7366, 7368, 7369, 7371, 7372, 7374, 7375, 7376, 7378, 7379, 7381, 7382, 7383, 7385, 7386, 7388, 7389, 7390, 7392, 7393, 7394, 7396, 7397, 7399, 7400, 7401, 7403, 7404, 7406, 7407, 7408, 7410, 7411, 7412, 7414, 7415, 7416, 7418, 7419, 7420, 7422, 7423, 7425, 7426, 7427, 7429, 7430, 7431, 7433, 7434, 7435, 7437, 7438, 7439, 7441, 7442, 7443, 7445, 7446, 7447, 7449, 7450, 7451, 7452, 7454, 7455, 7456, 7458, 7459, 7460, 7462, 7463, 7464, 7466, 7467, 7468, 7469, 7471, 7472, 7473, 7475, 7476, 7477, 7478, 7480, 7481, 7482, 7484, 7485, 7486, 7487, 7489, 7490, 7491, 7492, 7494, 7495, 7496, 7498, 7499, 7500, 7501, 7503, 7504, 7505, 7506, 7508, 7509, 7510, 7511, 7513, 7514, 7515, 7516, 7518, 7519, 7520, 7521, 7522, 7524, 7525, 7526, 7527, 7529, 7530, 7531, 7532, 7534, 7535, 7536, 7537, 7538, 7540, 7541, 7542, 7543, 7544, 7546, 7547, 7548, 7549, 7551, 7552, 7553, 7554, 7555, 7556, 7558, 7559, 7560, 7561, 7562, 7564, 7565, 7566, 7567, 7568, 7570, 7571, 7572, 7573, 7574, 7575, 7577, 7578, 7579, 7580, 7581, 7583, 7584, 7585, 7586, 7587, 7588, 7589, 7591, 7592, 7593, 7594, 7595, 7596, 7598, 7599, 7600, 7601, 7602, 7603, 7604, 7606, 7607, 7608, 7609, 7610, 7611, 7612, 7614, 7615, 7616, 7617, 7618, 7619, 7620, 7622, 7623, 7624, 7625, 7626, 7627, 7628, 7629, 7631, 7632, 7633, 7634, 7635, 7636, 7637, 7638, 7639, 7641, 7642, 7643, 7644, 7645, 7646, 7647, 7648, 7649, 7650, 7652, 7653, 7654, 7655, 7656, 7657, 7658, 7659, 7660, 7661, 7662, 7664, 7665, 7666, 7667, 7668, 7669, 7670, 7671, 7672, 7673, 7674, 7675, 7677, 7678, 7679, 7680, 7681, 7682, 7683, 7684, 7685, 7686, 7687, 7688, 7689, 7690, 7691, 7693, 7694, 7695, 7696, 7697, 7698, 7699, 7700, 7701, 7702, 7703, 7704, 7705, 7706, 7707, 7708, 7709, 7710, 7711, 7712, 7713, 7715, 7716, 7717, 7718, 7719, 7720, 7721, 7722, 7723, 7724, 7725, 7726, 7727, 7728, 7729, 7730, 7731, 7732, 7733, 7734, 7735, 7736, 7737, 7738, 7739, 7740, 7741, 7742, 7743, 7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758, 7759, 7760, 7761, 7762, 7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777, 7778, 7779, 7780, 7781, 7782, 7783, 7784, 7785, 7786, 7787, 7788, 7789, 7790, 7791, 7792, 7793, 7794, 7794, 7795, 7796, 7797, 7798, 7799, 7800, 7801, 7802, 7803, 7804, 7805, 7806, 7807, 7808, 7809, 7810, 7811, 7812, 7813, 7814, 7815, 7816, 7816, 7817, 7818, 7819, 7820, 7821, 7822, 7823, 7824, 7825, 7826, 7827, 7828, 7829, 7830, 7831, 7831, 7832, 7833, 7834, 7835, 7836, 7837, 7838, 7839, 7840, 7841, 7842, 7843, 7844, 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7851, 7852, 7853, 7854, 7855, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7865, 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883, 7883, 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7891, 7892, 7893, 7894, 7895, 7896, 7897, 7898, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7905, 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7918, 7919, 7920, 7921, 7922, 7923, 7924, 7924, 7925, 7926, 7927, 7928, 7929, 7930, 7930, 7931, 7932, 7933, 7934, 7935, 7936, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7942, 7943, 7944, 7945, 7946, 7947, 7947, 7948, 7949, 7950, 7951, 7952, 7952, 7953, 7954, 7955, 7956, 7957, 7957, 7958, 7959, 7960, 7961, 7962, 7962, 7963, 7964, 7965, 7966, 7967, 7967, 7968, 7969, 7970, 7971, 7972, 7972, 7973, 7974, 7975, 7976, 7976, 7977, 7978, 7979, 7980, 7981, 7981, 7982, 7983, 7984, 7985, 7985, 7986, 7987, 7988, 7989, 7989, 7990, 7991, 7992, 7993, 7993, 7994, 7995, 7996, 7997, 7998, 7998, 7999, 8000, 8001, 8002, 8002, 8003, 8004, 8005, 8006, 8006, 8007, 8008, 8009, 8009, 8010, 8011, 8012, 8013, 8013, 8014, 8015, 8016, 8017, 8017, 8018, 8019, 8020, 8021, 8021, 8022, 8023, 8024, 8024, 8025, 8026, 8027, 8028, 8028, 8029, 8030, 8031, 8032, 8032, 8033, 8034, 8035, 8035, 8036, 8037, 8038, 8038, 8039, 8040, 8041, 8042, 8042, 8043, 8044, 8045, 8045, 8046, 8047, 8048, 8049, 8049, 8050, 8051, 8052, 8052, 8053, 8054, 8055, 8055, 8056, 8057, 8058, 8058, 8059, 8060, 8061, 8061, 8062, 8063, 8064, 8064, 8065, 8066, 8067, 8068, 8068, 8069, 8070, 8071, 8071, 8072, 8073, 8074, 8074, 8075, 8076, 8077, 8077, 8078, 8079, 8079, 8080, 8081, 8082, 8082, 8083, 8084, 8085, 8085, 8086, 8087, 8088, 8088, 8089, 8090, 8091, 8091, 8092, 8093, 8094, 8094, 8095, 8096, 8097, 8097, 8098, 8099, 8099, 8100, 8101, 8102, 8102, 8103, 8104, 8105, 8105, 8106, 8107, 8107, 8108, 8109, 8110, 8110, 8111, 8112, 8113, 8113, 8114, 8115, 8115, 8116, 8117, 8118, 8118, 8119, 8120, 8120, 8121, 8122, 8123, 8123, 8124, 8125, 8125, 8126, 8127, 8128, 8128, 8129, 8130, 8130, 8131, 8132, 8133, 8133, 8134, 8135, 8135, 8136, 8137, 8138, 8138, 8139, 8140, 8140, 8141, 8142, 8143, 8143, 8144, 8145, 8145, 8146, 8147, 8147, 8148, 8149, 8150, 8150, 8151, 8152, 8152, 8153, 8154, 8154, 8155, 8156, 8157, 8157, 8158, 8159, 8159, 8160, 8161, 8161, 8162, 8163, 8163, 8164, 8165, 8166, 8166, 8167, 8168, 8168, 8169, 8170, 8170, 8171, 8172, 8172, 8173, 8174, 8174, 8175, 8176, 8177, 8177, 8178, 8179, 8179, 8180, 8181, 8181, 8182, 8183, 8183, 8184, 8185, 8185, 8186, 8187, 8187, 8188, 8189, 8189, 8190, 8191, 8191, 8192, 8193, 8193, 8194, 8195, 8195, 8196, 8197, 8197, 8198, 8199, 8199, 8200, 8201, 8201, 8202, 8203, 8204, 8204, 8205, 8205, 8206, 8207, 8207, 8208, 8209, 8209, 8210, 8211, 8211, 8212, 8213, 8213, 8214, 8215, 8215, 8216, 8217, 8217, 8218, 8219, 8219, 8220, 8221, 8221, 8222, 8223, 8223, 8224, 8225, 8225, 8226, 8227, 8227, 8228, 8229, 8229, 8230, 8230, 8231, 8232, 8232, 8233, 8234, 8234, 8235, 8236, 8236, 8237, 8238, 8238, 8239, 8240, 8240, 8241, 8241, 8242, 8243, 8243, 8244, 8245, 8245, 8246, 8247, 8247, 8248, 8249, 8249, 8250, 8250, 8251, 8252, 8252, 8253, 8254, 8254, 8255, 8256, 8256, 8257, 8257, 8258, 8259, 8259, 8260, 8261, 8261, 8262, 8263, 8263, 8264, 8264, 8265, 8266, 8266, 8267, 8268, 8268, 8269, 8269, 8270, 8271, 8271, 8272, 8273, 8273, 8274, 8274, 8275, 8276, 8276, 8277, 8278, 8278, 8279, 8279, 8280, 8281, 8281, 8282, 8283, 8283, 8284, 8284, 8285, 8286, 8286, 8287, 8288, 8288, 8289, 8289, 8290, 8291, 8291, 8292, 8292, 8293, 8294, 8294, 8295, 8296, 8296, 8297, 8297, 8298, 8299, 8299, 8300, 8300, 8301, 8302, 8302, 8303, 8303, 8304, 8305, 8305, 8306, 8307, 8307, 8308, 8308, 8309, 8310, 8310, 8311, 8311, 8312, 8313, 8313, 8314, 8314, 8315, 8316, 8316, 8317, 8317, 8318, 8319, 8319, 8320, 8320, 8321, 8322, 8322, 8323, 8323, 8324, 8325, 8325, 8326, 8326, 8327, 8328, 8328, 8329, 8329, 8330, 8331, 8331, 8332, 8332, 8333, 8334, 8334, 8335, 8335, 8336, 8336, 8337, 8338, 8338, 8339, 8339, 8340, 8341, 8341, 8342, 8342, 8343, 8344, 8344, 8345, 8345, 8346, 8346, 8347, 8348, 8348, 8349, 8349, 8350, 8351, 8351, 8352, 8352, 8353, 8353, 8354, 8355, 8355, 8356, 8356, 8357, 8358, 8358, 8359, 8359, 8360, 8360, 8361, 8362, 8362, 8363, 8363, 8364, 8364, 8365, 8366, 8366, 8367, 8367, 8368, 8369, 8369, 8370, 8370, 8371, 8371, 8372, 8373, 8373, 8374, 8374, 8375, 8375, 8376, 8377, 8377, 8378, 8378, 8379, 8379, 8380, 8381, 8381, 8382, 8382, 8383, 8383, 8384, 8384, 8385, 8386, 8386, 8387, 8387, 8388, 8388, 8389, 8390, 8390, 8391, 8391, 8392, 8392, 8393, 8393, 8394, 8395, 8395, 8396, 8396, 8397, 8397, 8398, 8399, 8399, 8400, 8400, 8401, 8401, 8402, 8402, 8403, 8404, 8404, 8405, 8405, 8406, 8406, 8407, 8407, 8408, 8409, 8409, 8410, 8410, 8411, 8411, 8412, 8412, 8413, 8414, 8414, 8415, 8415, 8416, 8416, 8417, 8417, 8418, 8418, 8419, 8420, 8420, 8421, 8421, 8422, 8422, 8423, 8423, 8424, 8424, 8425, 8426, 8426, 8427, 8427, 8428, 8428, 8429, 8429, 8430, 8430, 8431, 8432, 8432, 8433, 8433, 8434, 8434, 8435, 8435, 8436, 8436, 8437, 8438, 8438, 8439, 8439, 8440, 8440, 8441, 8441, 8442, 8442, 8443, 8443, 8444, 8445, 8445, 8446, 8446, 8447, 8447, 8448, 8448, 8449, 8449, 8450, 8450, 8451, 8451, 8452, 8453, 8453, 8454, 8454, 8455, 8455, 8456, 8456, 8457, 8457, 8458, 8458, 8459, 8459, 8460, 8460, 8461, 8462, 8462, 8463, 8463, 8464, 8464, 8465, 8465, 8466, 8466, 8467, 8467, 8468, 8468, 8469, 8469, 8470, 8470, 8471, 8472, 8472, 8473, 8473, 8474, 8474, 8475, 8475, 8476, 8476, 8477, 8477, 8478, 8478, 8479, 8479, 8480, 8480, 8481, 8481, 8482, 8482, 8483, 8483, 8484, 8485, 8485, 8486, 8486, 8487, 8487, 8488, 8488, 8489, 8489, 8490, 8490, 8491, 8491, 8492, 8492, 8493, 8493, 8494, 8494, 8495, 8495, 8496, 8496, 8497, 8497, 8498, 8498, 8499, 8499, 8500, 8500, 8501, 8501, 8502, 8502, 8503, 8503, 8504, 8504, 8505, 8506, 8506, 8507, 8507, 8508, 8508, 8509, 8509, 8510, 8510, 8511, 8511, 8512, 8512, 8513, 8513, 8514, 8514, 8515, 8515, 8516, 8516, 8517, 8517, 8518, 8518, 8519, 8519, 8520, 8520, 8521, 8521, 8522, 8522, 8523, 8523, 8524, 8524, 8525, 8525, 8526, 8526, 8527, 8527, 8528, 8528, 8529, 8529, 8530, 8530, 8531, 8531, 8532, 8532, 8533, 8533, 8534, 8534, 8535, 8535, 8536, 8536, 8537, 8537, 8538, 8538, 8538, 8539, 8539, 8540, 8540, 8541, 8541, 8542, 8542, 8543, 8543, 8544, 8544, 8545, 8545, 8546, 8546, 8547, 8547, 8548, 8548, 8549, 8549, 8550, 8550, 8551, 8551, 8552, 8552, 8553, 8553, 8554, 8554, 8555, 8555, 8556, 8556, 8557, 8557, 8558, 8558, 8559, 8559, 8559, 8560, 8560, 8561, 8561, 8562, 8562, 8563, 8563, 8564, 8564, 8565, 8565, 8566, 8566, 8567, 8567, 8568, 8568, 8569, 8569, 8570, 8570, 8571, 8571, 8571, 8572, 8572, 8573, 8573, 8574, 8574, 8575, 8575, 8576, 8576, 8577, 8577, 8578, 8578, 8579, 8579, 8580, 8580, 8581, 8581, 8581, 8582, 8582, 8583, 8583, 8584, 8584, 8585, 8585, 8586, 8586, 8587, 8587, 8588, 8588, 8589, 8589, 8589, 8590, 8590, 8591, 8591, 8592, 8592, 8593, 8593, 8594, 8594, 8595, 8595, 8596, 8596, 8597, 8597, 8597, 8598, 8598, 8599, 8599, 8600, 8600, 8601, 8601, 8602, 8602, 8603, 8603, 8604, 8604, 8604, 8605, 8605, 8606, 8606, 8607, 8607, 8608, 8608, 8609, 8609, 8610, 8610, 8610, 8611, 8611, 8612, 8612, 8613, 8613, 8614, 8614, 8615, 8615, 8616, 8616, 8616, 8617, 8617, 8618, 8618, 8619, 8619, 8620, 8620, 8621, 8621, 8621, 8622, 8622, 8623, 8623, 8624, 8624, 8625, 8625, 8626, 8626, 8626, 8627, 8627, 8628, 8628, 8629, 8629, 8630, 8630, 8631, 8631, 8631, 8632, 8632, 8633, 8633, 8634, 8634, 8635, 8635, 8636, 8636, 8636, 8637, 8637, 8638, 8638, 8639, 8639, 8640, 8640, 8640, 8641, 8641, 8642, 8642, 8643, 8643, 8644, 8644, 8645, 8645, 8645, 8646, 8646, 8647, 8647, 8648, 8648, 8649, 8649, 8649, 8650, 8650, 8651, 8651, 8652, 8652, 8653, 8653, 8653, 8654, 8654, 8655, 8655, 8656, 8656, 8657, 8657, 8657, 8658, 8658, 8659, 8659, 8660, 8660, 8661, 8661, 8661, 8662, 8662, 8663, 8663, 8664, 8664, 8664, 8665, 8665, 8666, 8666, 8667, 8667, 8668, 8668, 8668, 8669, 8669, 8670, 8670, 8671, 8671, 8671, 8672, 8672, 8673, 8673, 8674, 8674, 8675, 8675, 8675, 8676, 8676, 8677, 8677, 8678, 8678, 8678, 8679, 8679, 8680, 8680, 8681, 8681, 8681, 8682, 8682, 8683, 8683, 8684, 8684, 8685, 8685, 8685, 8686, 8686, 8687, 8687, 8688, 8688, 8688, 8689, 8689, 8690, 8690, 8691, 8691, 8691, 8692, 8692, 8693, 8693, 8694, 8694, 8694, 8695, 8695, 8696, 8696, 8697, 8697, 8697, 8698, 8698, 8699, 8699, 8700, 8700, 8700, 8701, 8701, 8702, 8702, 8702, 8703, 8703, 8704, 8704, 8705, 8705, 8705, 8706, 8706, 8707, 8707, 8708, 8708, 8708, 8709, 8709, 8710, 8710, 8711, 8711, 8711, 8712, 8712, 8713, 8713, 8713, 8714, 8714, 8715, 8715, 8716, 8716, 8716, 8717, 8717, 8718, 8718, 8719, 8719, 8719, 8720, 8720, 8721, 8721, 8721, 8722, 8722, 8723, 8723, 8724, 8724, 8724, 8725, 8725, 8726, 8726, 8726, 8727, 8727, 8728, 8728, 8729, 8729, 8729, 8730, 8730, 8731, 8731, 8731, 8732, 8732, 8733, 8733, 8733, 8734, 8734, 8735, 8735, 8736, 8736, 8736, 8737, 8737, 8738, 8738, 8738, 8739, 8739, 8740, 8740, 8740, 8741, 8741, 8742, 8742, 8743, 8743, 8743, 8744, 8744, 8745, 8745, 8745, 8746, 8746, 8747, 8747, 8747, 8748, 8748, 8749, 8749, 8749, 8750, 8750, 8751, 8751, 8751, 8752, 8752, 8753, 8753, 8754, 8754, 8754, 8755, 8755, 8756, 8756, 8756, 8757, 8757, 8758, 8758, 8758, 8759, 8759, 8760, 8760, 8760, 8761, 8761, 8762, 8762, 8762, 8763, 8763, 8764, 8764, 8764, 8765, 8765, 8766, 8766, 8766, 8767, 8767, 8768, 8768, 8768, 8769, 8769, 8770, 8770, 8770, 8771, 8771, 8772, 8772, 8772, 8773, 8773, 8774, 8774, 8774, 8775, 8775, 8776, 8776, 8776, 8777, 8777, 8778, 8778, 8778, 8779, 8779, 8780, 8780, 8780, 8781, 8781, 8782, 8782, 8782, 8783, 8783, 8784, 8784, 8784, 8785, 8785, 8785, 8786, 8786, 8787, 8787, 8787, 8788, 8788, 8789, 8789, 8789, 8790, 8790, 8791, 8791, 8791, 8792, 8792, 8793, 8793, 8793, 8794, 8794, 8795, 8795, 8795, 8796, 8796, 8796, 8797, 8797, 8798, 8798, 8798, 8799, 8799, 8800, 8800, 8800, 8801, 8801, 8802, 8802, 8802, 8803, 8803, 8803, 8804, 8804, 8805, 8805, 8805, 8806, 8806, 8807, 8807, 8807, 8808, 8808, 8808, 8809, 8809, 8810, 8810, 8810, 8811, 8811, 8812, 8812, 8812, 8813, 8813, 8813, 8814, 8814, 8815, 8815, 8815, 8816, 8816, 8817, 8817, 8817, 8818, 8818, 8818, 8819, 8819, 8820, 8820, 8820, 8821, 8821, 8822, 8822, 8822, 8823, 8823, 8823, 8824, 8824, 8825, 8825, 8825, 8826, 8826, 8826, 8827, 8827, 8828, 8828, 8828, 8829, 8829, 8829, 8830, 8830, 8831, 8831, 8831, 8832, 8832, 8833, 8833, 8833, 8834, 8834, 8834, 8835, 8835, 8836, 8836, 8836, 8837, 8837, 8837, 8838, 8838, 8839, 8839, 8839, 8840, 8840, 8840, 8841, 8841, 8842, 8842, 8842, 8843, 8843, 8843, 8844, 8844, 8845, 8845, 8845, 8846, 8846, 8846, 8847, 8847, 8848, 8848, 8848, 8849, 8849, 8849, 8850, 8850, 8850, 8851, 8851, 8852, 8852, 8852, 8853, 8853, 8853, 8854, 8854, 8855, 8855, 8855, 8856, 8856, 8856, 8857, 8857, 8858, 8858, 8858, 8859, 8859, 8859, 8860, 8860, 8860, 8861, 8861, 8862, 8862, 8862, 8863, 8863, 8863, 8864, 8864, 8865, 8865, 8865, 8866, 8866, 8866, 8867, 8867, 8867, 8868, 8868, 8869, 8869, 8869, 8870, 8870, 8870, 8871, 8871, 8871, 8872, 8872, 8873, 8873, 8873, 8874, 8874, 8874, 8875, 8875, 8875, 8876, 8876, 8877, 8877, 8877, 8878, 8878, 8878, 8879, 8879, 8879, 8880, 8880, 8881, 8881, 8881, 8882, 8882, 8882, 8883, 8883, 8883, 8884, 8884, 8885, 8885, 8885, 8886, 8886, 8886, 8887, 8887, 8887, 8888, 8888, 8888, 8889, 8889, 8890, 8890, 8890, 8891, 8891, 8891, 8892, 8892, 8892, 8893, 8893, 8893, 8894, 8894, 8895, 8895, 8895, 8896, 8896, 8896, 8897, 8897, 8897, 8898, 8898, 8898, 8899, 8899, 8900, 8900, 8900, 8901, 8901, 8901, 8902, 8902, 8902, 8903, 8903, 8903, 8904, 8904, 8904, 8905, 8905, 8906, 8906, 8906, 8907, 8907, 8907, 8908, 8908, 8908, 8909, 8909, 8909, 8910, 8910, 8910, 8911, 8911, 8912, 8912, 8912, 8913, 8913, 8913, 8914, 8914, 8914, 8915, 8915, 8915, 8916, 8916, 8916, 8917, 8917, 8918, 8918, 8918, 8919, 8919, 8919, 8920, 8920, 8920, 8921, 8921, 8921, 8922, 8922, 8922, 8923, 8923, 8923, 8924, 8924, 8924, 8925, 8925, 8926, 8926, 8926, 8927, 8927, 8927, 8928, 8928, 8928, 8929, 8929, 8929, 8930, 8930, 8930, 8931, 8931, 8931, 8932, 8932, 8932, 8933, 8933, 8933, 8934, 8934, 8934, 8935, 8935, 8936, 8936, 8936, 8937, 8937, 8937, 8938, 8938, 8938, 8939, 8939, 8939, 8940, 8940, 8940, 8941, 8941, 8941, 8942, 8942, 8942, 8943, 8943, 8943, 8944, 8944, 8944, 8945, 8945, 8945, 8946, 8946, 8946, 8947, 8947, 8948, 8948, 8948, 8949, 8949, 8949, 8950, 8950, 8950, 8951, 8951, 8951, 8952, 8952, 8952, 8953, 8953, 8953, 8954, 8954, 8954, 8955, 8955, 8955, 8956, 8956, 8956, 8957, 8957, 8957, 8958, 8958, 8958, 8959, 8959, 8959, 8960, 8960, 8960, 8961, 8961, 8961, 8962, 8962, 8962, 8963, 8963, 8963, 8964, 8964, 8964, 8965, 8965, 8965, 8966, 8966, 8966, 8967, 8967, 8967, 8968, 8968, 8968, 8969, 8969, 8969, 8970, 8970, 8970, 8971, 8971, 8971, 8972, 8972, 8972, 8973, 8973, 8973, 8974, 8974, 8974, 8975, 8975, 8975, 8976, 8976, 8976, 8977, 8977, 8977, 8978, 8978, 8978, 8979, 8979, 8979, 8980, 8980, 8980, 8981, 8981, 8981, 8982, 8982, 8982, 8983, 8983, 8983, 8984, 8984, 8984, 8985, 8985, 8985, 8986, 8986, 8986, 8987, 8987, 8987, 8988, 8988, 8988, 8989, 8989, 8989, 8990, 8990, 8990, 8991, 8991, 8991, 8992, 8992, 8992, 8993, 8993, 8993, 8993, 8994, 8994, 8994, 8995, 8995, 8995, 8996, 8996, 8996, 8997, 8997, 8997, 8998, 8998, 8998, 8999, 8999, 8999, 9000, 9000, 9000, 9001, 9001, 9001, 9002, 9002, 9002, 9003, 9003, 9003, 9004, 9004, 9004, 9005, 9005, 9005, 9005, 9006, 9006, 9006, 9007, 9007, 9007, 9008, 9008, 9008, 9009, 9009, 9009, 9010, 9010, 9010, 9011, 9011, 9011, 9012, 9012, 9012, 9013, 9013, 9013, 9014, 9014, 9014, 9014, 9015, 9015, 9015, 9016, 9016, 9016, 9017, 9017, 9017, 9018, 9018, 9018, 9019, 9019, 9019, 9020, 9020, 9020, 9021, 9021, 9021, 9022, 9022, 9022, 9022, 9023, 9023, 9023, 9024, 9024, 9024, 9025, 9025, 9025, 9026, 9026, 9026, 9027, 9027, 9027, 9028, 9028, 9028, 9029, 9029, 9029, 9029, 9030, 9030, 9030, 9031, 9031, 9031, 9032, 9032, 9032, 9033, 9033, 9033, 9034, 9034, 9034, 9034, 9035, 9035, 9035, 9036, 9036, 9036, 9037, 9037, 9037, 9038, 9038, 9038, 9039, 9039, 9039, 9040, 9040, 9040, 9040, 9041, 9041, 9041, 9042, 9042, 9042, 9043, 9043, 9043, 9044, 9044, 9044, 9045, 9045, 9045, 9045, 9046, 9046, 9046, 9047, 9047, 9047, 9048, 9048, 9048, 9049, 9049, 9049, 9049, 9050, 9050, 9050, 9051, 9051, 9051, 9052, 9052, 9052, 9053, 9053, 9053, 9054, 9054, 9054, 9054, 9055, 9055, 9055, 9056, 9056, 9056, 9057, 9057, 9057, 9058, 9058, 9058, 9058, 9059, 9059, 9059, 9060, 9060, 9060, 9061, 9061, 9061, 9062, 9062, 9062, 9062, 9063, 9063, 9063, 9064, 9064, 9064, 9065, 9065, 9065, 9066, 9066, 9066, 9066, 9067, 9067, 9067, 9068, 9068, 9068, 9069, 9069, 9069, 9069, 9070, 9070, 9070, 9071, 9071, 9071, 9072, 9072, 9072, 9073, 9073, 9073, 9073, 9074, 9074, 9074, 9075, 9075, 9075, 9076, 9076, 9076, 9076, 9077, 9077, 9077, 9078, 9078, 9078, 9079, 9079, 9079, 9079, 9080, 9080, 9080, 9081, 9081, 9081, 9082, 9082, 9082, 9082, 9083, 9083, 9083, 9084, 9084, 9084, 9085, 9085, 9085, 9086, 9086, 9086, 9086, 9087, 9087, 9087, 9088, 9088, 9088, 9089, 9089, 9089, 9089, 9090, 9090, 9090, 9091, 9091, 9091, 9091, 9092, 9092, 9092, 9093, 9093, 9093, 9094, 9094, 9094, 9094, 9095, 9095, 9095, 9096, 9096, 9096, 9097, 9097, 9097, 9097, 9098, 9098, 9098, 9099, 9099, 9099, 9100, 9100, 9100, 9100, 9101, 9101, 9101, 9102, 9102, 9102, 9102, 9103, 9103, 9103, 9104, 9104, 9104, 9105, 9105, 9105, 9105, 9106, 9106, 9106, 9107, 9107, 9107, 9108, 9108, 9108, 9108, 9109, 9109, 9109, 9110, 9110, 9110, 9110, 9111, 9111, 9111, 9112, 9112, 9112, 9113, 9113, 9113, 9113, 9114, 9114, 9114, 9115, 9115, 9115, 9115, 9116, 9116, 9116, 9117, 9117, 9117, 9117, 9118, 9118, 9118, 9119, 9119, 9119, 9120, 9120, 9120, 9120, 9121, 9121, 9121, 9122, 9122, 9122, 9122, 9123, 9123, 9123, 9124, 9124, 9124, 9124, 9125, 9125, 9125, 9126, 9126, 9126, 9126, 9127, 9127, 9127, 9128, 9128, 9128, 9129, 9129, 9129, 9129, 9130, 9130, 9130, 9131, 9131, 9131, 9131, 9132, 9132, 9132, 9133, 9133, 9133, 9133, 9134, 9134, 9134, 9135, 9135, 9135, 9135, 9136, 9136, 9136, 9137, 9137, 9137, 9137, 9138, 9138, 9138, 9139, 9139, 9139, 9139, 9140, 9140, 9140, 9141, 9141, 9141, 9141, 9142, 9142, 9142, 9143, 9143, 9143, 9143, 9144, 9144, 9144, 9145, 9145, 9145, 9145, 9146, 9146, 9146, 9147, 9147, 9147, 9147, 9148, 9148, 9148, 9149, 9149, 9149, 9149, 9150, 9150, 9150, 9151, 9151, 9151, 9151, 9152, 9152, 9152, 9153, 9153, 9153, 9153, 9154, 9154, 9154, 9154, 9155, 9155, 9155, 9156, 9156, 9156, 9156, 9157, 9157, 9157, 9158, 9158, 9158, 9158, 9159, 9159, 9159, 9160, 9160, 9160, 9160, 9161, 9161, 9161, 9162, 9162, 9162, 9162, 9163, 9163, 9163, 9163, 9164, 9164, 9164, 9165, 9165, 9165, 9165, 9166, 9166, 9166, 9167, 9167, 9167, 9167, 9168, 9168, 9168, 9169, 9169, 9169, 9169, 9170, 9170, 9170, 9170, 9171, 9171, 9171, 9172, 9172, 9172, 9172, 9173, 9173, 9173, 9174, 9174, 9174, 9174, 9175, 9175, 9175, 9175, 9176, 9176, 9176, 9177, 9177, 9177, 9177, 9178, 9178, 9178, 9178, 9179, 9179, 9179, 9180, 9180, 9180, 9180, 9181, 9181, 9181, 9182, 9182, 9182, 9182, 9183, 9183, 9183, 9183, 9184, 9184, 9184, 9185, 9185, 9185, 9185, 9186, 9186, 9186, 9186, 9187, 9187, 9187, 9188, 9188, 9188, 9188, 9189, 9189, 9189, 9189, 9190, 9190, 9190, 9191, 9191, 9191, 9191, 9192, 9192, 9192, 9192, 9193, 9193, 9193, 9194, 9194, 9194, 9194, 9195, 9195, 9195, 9195, 9196, 9196, 9196, 9197, 9197, 9197, 9197, 9198, 9198, 9198, 9198, 9199, 9199, 9199, 9200, 9200, 9200, 9200, 9201, 9201, 9201, 9201, 9202, 9202, 9202, 9203, 9203, 9203, 9203, 9204, 9204, 9204, 9204, 9205, 9205, 9205, 9205, 9206, 9206, 9206, 9207, 9207, 9207, 9207, 9208, 9208, 9208, 9208, 9209, 9209, 9209, 9210, 9210, 9210, 9210, 9211, 9211, 9211, 9211, 9212, 9212, 9212, 9212, 9213, 9213, 9213, 9214, 9214, 9214, 9214, 9215, 9215, 9215, 9215, 9216, 9216, 9216, 9216, 9217, 9217, 9217, 9218, 9218, 9218, 9218, 9219, 9219, 9219, 9219, 9220, 9220, 9220, 9220, 9221, 9221, 9221, 9222, 9222, 9222, 9222, 9223, 9223, 9223, 9223, 9224, 9224, 9224, 9224, 9225, 9225, 9225, 9226, 9226, 9226, 9226, 9227, 9227, 9227, 9227, 9228, 9228, 9228, 9228, 9229, 9229, 9229, 9229, 9230, 9230, 9230, 9231, 9231, 9231, 9231, 9232, 9232, 9232, 9232, 9233, 9233, 9233, 9233, 9234, 9234, 9234, 9234, 9235, 9235, 9235, 9236, 9236, 9236, 9236, 9237, 9237, 9237, 9237, 9238, 9238, 9238, 9238, 9239, 9239, 9239, 9239, 9240, 9240, 9240, 9241, 9241, 9241, 9241, 9242, 9242, 9242, 9242, 9243, 9243, 9243, 9243, 9244, 9244, 9244, 9244, 9245, 9245, 9245, 9245, 9246, 9246, 9246, 9246, 9247, 9247, 9247, 9248, 9248, 9248, 9248, 9249, 9249, 9249, 9249, 9250, 9250, 9250, 9250, 9251, 9251, 9251, 9251, 9252, 9252, 9252, 9252, 9253, 9253, 9253, 9253, 9254, 9254, 9254, 9255, 9255, 9255, 9255, 9256, 9256, 9256, 9256, 9257, 9257, 9257, 9257, 9258, 9258, 9258, 9258, 9259, 9259, 9259, 9259, 9260, 9260, 9260, 9260, 9261, 9261, 9261, 9261, 9262, 9262, 9262, 9262, 9263, 9263, 9263, 9263, 9264, 9264, 9264, 9265, 9265, 9265, 9265, 9266, 9266, 9266, 9266, 9267, 9267, 9267, 9267, 9268, 9268, 9268, 9268, 9269, 9269, 9269, 9269, 9270, 9270, 9270, 9270, 9271, 9271, 9271, 9271, 9272, 9272, 9272, 9272, 9273, 9273, 9273, 9273, 9274, 9274, 9274, 9274, 9275, 9275, 9275, 9275, 9276, 9276, 9276, 9276, 9277, 9277, 9277, 9277, 9278, 9278, 9278, 9278, 9279, 9279, 9279, 9279, 9280, 9280, 9280, 9280, 9281, 9281, 9281, 9282, 9282, 9282, 9282, 9283, 9283, 9283, 9283, 9284, 9284, 9284, 9284, 9285, 9285, 9285, 9285, 9286, 9286, 9286, 9286, 9287, 9287, 9287, 9287, 9288, 9288, 9288, 9288, 9289, 9289, 9289, 9289, 9290, 9290, 9290, 9290, 9291, 9291, 9291, 9291, 9292, 9292, 9292, 9292, 9293, 9293, 9293, 9293, 9294, 9294, 9294, 9294, 9295, 9295, 9295, 9295, 9296, 9296, 9296, 9296, 9296, 9297, 9297, 9297, 9297, 9298, 9298, 9298, 9298, 9299, 9299, 9299, 9299, 9300, 9300, 9300, 9300, 9301, 9301, 9301, 9301, 9302, 9302, 9302, 9302, 9303, 9303, 9303, 9303, 9304, 9304, 9304, 9304, 9305, 9305, 9305, 9305, 9306, 9306, 9306, 9306, 9307, 9307, 9307, 9307, 9308, 9308, 9308, 9308, 9309, 9309, 9309, 9309, 9310, 9310, 9310, 9310, 9311, 9311, 9311, 9311, 9312, 9312, 9312, 9312, 9313, 9313, 9313, 9313, 9313, 9314, 9314, 9314, 9314, 9315, 9315, 9315, 9315, 9316, 9316, 9316, 9316, 9317, 9317, 9317, 9317, 9318, 9318, 9318, 9318, 9319, 9319, 9319, 9319, 9320, 9320, 9320, 9320, 9321, 9321, 9321, 9321, 9322, 9322, 9322, 9322, 9322, 9323, 9323, 9323, 9323, 9324, 9324, 9324, 9324, 9325, 9325, 9325, 9325, 9326, 9326, 9326, 9326, 9327, 9327, 9327, 9327, 9328, 9328, 9328, 9328, 9329, 9329, 9329, 9329, 9330, 9330, 9330, 9330, 9330, 9331, 9331, 9331, 9331, 9332, 9332, 9332, 9332, 9333, 9333, 9333, 9333, 9334, 9334, 9334, 9334, 9335, 9335, 9335, 9335, 9336, 9336, 9336, 9336, 9336, 9337, 9337, 9337, 9337, 9338, 9338, 9338, 9338, 9339, 9339, 9339, 9339, 9340, 9340, 9340, 9340, 9341, 9341, 9341, 9341, 9341, 9342, 9342, 9342, 9342, 9343, 9343, 9343, 9343, 9344, 9344, 9344, 9344, 9345, 9345, 9345, 9345, 9346, 9346, 9346, 9346, 9346, 9347, 9347, 9347, 9347, 9348, 9348, 9348, 9348, 9349, 9349, 9349, 9349, 9350, 9350, 9350, 9350, 9351, 9351, 9351, 9351, 9351, 9352, 9352, 9352, 9352, 9353, 9353, 9353, 9353, 9354, 9354, 9354, 9354, 9355, 9355, 9355, 9355, 9355, 9356, 9356, 9356, 9356, 9357, 9357, 9357, 9357, 9358, 9358, 9358, 9358, 9359, 9359, 9359, 9359, 9359, 9360, 9360, 9360, 9360, 9361, 9361, 9361, 9361, 9362, 9362, 9362, 9362, 9362, 9363, 9363, 9363, 9363, 9364, 9364, 9364, 9364, 9365, 9365, 9365, 9365, 9366, 9366, 9366, 9366, 9366, 9367, 9367, 9367, 9367, 9368, 9368, 9368, 9368, 9369, 9369, 9369, 9369, 9369, 9370, 9370, 9370, 9370, 9371, 9371, 9371, 9371, 9372, 9372, 9372, 9372, 9372, 9373, 9373, 9373, 9373, 9374, 9374, 9374, 9374, 9375, 9375, 9375, 9375, 9376, 9376, 9376, 9376, 9376, 9377, 9377, 9377, 9377, 9378, 9378, 9378, 9378, 9379, 9379, 9379, 9379, 9379, 9380, 9380, 9380, 9380, 9381, 9381, 9381, 9381, 9381, 9382, 9382, 9382, 9382, 9383, 9383, 9383, 9383, 9384, 9384, 9384, 9384, 9384, 9385, 9385, 9385, 9385, 9386, 9386, 9386, 9386, 9387, 9387, 9387, 9387, 9387, 9388, 9388, 9388, 9388, 9389, 9389, 9389, 9389, 9390, 9390, 9390, 9390, 9390, 9391, 9391, 9391, 9391, 9392, 9392, 9392, 9392, 9392, 9393, 9393, 9393, 9393, 9394, 9394, 9394, 9394, 9395, 9395, 9395, 9395, 9395, 9396, 9396, 9396, 9396, 9397, 9397, 9397, 9397, 9397, 9398, 9398, 9398, 9398, 9399, 9399, 9399, 9399, 9400, 9400, 9400, 9400, 9400, 9401, 9401, 9401, 9401, 9402, 9402, 9402, 9402, 9402, 9403, 9403, 9403, 9403, 9404, 9404, 9404, 9404, 9404, 9405, 9405, 9405, 9405, 9406, 9406, 9406, 9406, 9406, 9407, 9407, 9407, 9407, 9408, 9408, 9408, 9408, 9409, 9409, 9409, 9409, 9409, 9410, 9410, 9410, 9410, 9411, 9411, 9411, 9411, 9411, 9412, 9412, 9412, 9412, 9413, 9413, 9413, 9413, 9413, 9414, 9414, 9414, 9414, 9415, 9415, 9415, 9415, 9415, 9416, 9416, 9416, 9416, 9417, 9417, 9417, 9417, 9417, 9418, 9418, 9418, 9418, 9419, 9419, 9419, 9419, 9419, 9420, 9420, 9420, 9420, 9421, 9421, 9421, 9421, 9421, 9422, 9422, 9422, 9422, 9423, 9423, 9423, 9423, 9423, 9424, 9424, 9424, 9424, 9425, 9425, 9425, 9425, 9425, 9426, 9426, 9426, 9426, 9427, 9427, 9427, 9427, 9427, 9428, 9428, 9428, 9428, 9429, 9429, 9429, 9429, 9429, 9430, 9430, 9430, 9430, 9431, 9431, 9431, 9431, 9431, 9432, 9432, 9432, 9432, 9432, 9433, 9433, 9433, 9433, 9434, 9434, 9434, 9434, 9434, 9435, 9435, 9435, 9435, 9436, 9436, 9436, 9436, 9436, 9437, 9437, 9437, 9437, 9438, 9438, 9438, 9438, 9438, 9439, 9439, 9439, 9439, 9439, 9440, 9440, 9440, 9440, 9441, 9441, 9441, 9441, 9441, 9442, 9442, 9442, 9442, 9443, 9443, 9443, 9443, 9443, 9444, 9444, 9444, 9444, 9444, 9445, 9445, 9445, 9445, 9446, 9446, 9446, 9446, 9446, 9447, 9447, 9447, 9447, 9448, 9448, 9448, 9448, 9448, 9449, 9449, 9449, 9449, 9449, 9450, 9450, 9450, 9450, 9451, 9451, 9451, 9451, 9451, 9452, 9452, 9452, 9452, 9452, 9453, 9453, 9453, 9453, 9454, 9454, 9454, 9454, 9454, 9455, 9455, 9455, 9455, 9456, 9456, 9456, 9456, 9456, 9457, 9457, 9457, 9457, 9457, 9458, 9458, 9458, 9458, 9459, 9459, 9459, 9459, 9459, 9460, 9460, 9460, 9460, 9460, 9461, 9461, 9461, 9461, 9462, 9462, 9462, 9462, 9462, 9463, 9463, 9463, 9463, 9463, 9464, 9464, 9464, 9464, 9464, 9465, 9465, 9465, 9465, 9466, 9466, 9466, 9466, 9466, 9467, 9467, 9467, 9467, 9467, 9468, 9468, 9468, 9468, 9469, 9469, 9469, 9469, 9469, 9470, 9470, 9470, 9470, 9470, 9471, 9471, 9471, 9471, 9472, 9472, 9472, 9472, 9472, 9473, 9473, 9473, 9473, 9473, 9474, 9474, 9474, 9474, 9474, 9475, 9475, 9475, 9475, 9476, 9476, 9476, 9476, 9476, 9477, 9477, 9477, 9477, 9477, 9478, 9478, 9478, 9478, 9478, 9479, 9479, 9479, 9479, 9480, 9480, 9480, 9480, 9480, 9481, 9481, 9481, 9481, 9481, 9482, 9482, 9482, 9482, 9482, 9483, 9483, 9483, 9483, 9484, 9484, 9484, 9484, 9484, 9485, 9485, 9485, 9485, 9485, 9486, 9486, 9486, 9486, 9486, 9487, 9487, 9487, 9487, 9487, 9488, 9488, 9488, 9488, 9489, 9489, 9489, 9489, 9489, 9490, 9490, 9490, 9490, 9490, 9491, 9491, 9491, 9491, 9491, 9492, 9492, 9492, 9492, 9492, 9493, 9493, 9493, 9493, 9494, 9494, 9494, 9494, 9494, 9495, 9495, 9495, 9495, 9495, 9496, 9496, 9496, 9496, 9496, 9497, 9497, 9497, 9497, 9497, 9498, 9498, 9498, 9498, 9499, 9499, 9499, 9499, 9499, 9500, 9500, 9500, 9500, 9500, 9501, 9501, 9501, 9501, 9501, 9502, 9502, 9502, 9502, 9502, 9503, 9503, 9503, 9503, 9503, 9504, 9504, 9504, 9504, 9504, 9505, 9505, 9505, 9505, 9506, 9506, 9506, 9506, 9506, 9507, 9507, 9507, 9507, 9507, 9508, 9508, 9508, 9508, 9508, 9509, 9509, 9509, 9509, 9509, 9510, 9510, 9510, 9510, 9510, 9511, 9511, 9511, 9511, 9511, 9512, 9512, 9512, 9512, 9512, 9513, 9513, 9513, 9513, 9513, 9514, 9514, 9514, 9514, 9515, 9515, 9515, 9515, 9515, 9516, 9516, 9516, 9516, 9516, 9517, 9517, 9517, 9517, 9517, 9518, 9518, 9518, 9518, 9518, 9519, 9519, 9519, 9519, 9519, 9520, 9520, 9520, 9520, 9520, 9521, 9521, 9521, 9521, 9521, 9522, 9522, 9522, 9522, 9522, 9523, 9523, 9523, 9523, 9523, 9524, 9524, 9524, 9524, 9524, 9525, 9525, 9525, 9525, 9525, 9526, 9526, 9526, 9526, 9526, 9527, 9527, 9527, 9527, 9527, 9528, 9528, 9528, 9528, 9528, 9529, 9529, 9529, 9529, 9529, 9530, 9530, 9530, 9530, 9531, 9531, 9531, 9531, 9531, 9532, 9532, 9532, 9532, 9532, 9533, 9533, 9533, 9533, 9533, 9534, 9534, 9534, 9534, 9534, 9535, 9535, 9535, 9535, 9535, 9536, 9536, 9536, 9536, 9536, 9537, 9537, 9537, 9537, 9537, 9538, 9538, 9538, 9538, 9538, 9539, 9539, 9539, 9539, 9539, 9540, 9540, 9540, 9540, 9540, 9541, 9541, 9541, 9541, 9541, 9541, 9542, 9542, 9542, 9542, 9542, 9543, 9543, 9543, 9543, 9543, 9544, 9544, 9544, 9544, 9544, 9545, 9545, 9545, 9545, 9545, 9546, 9546, 9546, 9546, 9546, 9547, 9547, 9547, 9547, 9547, 9548, 9548, 9548, 9548, 9548, 9549, 9549, 9549, 9549, 9549, 9550, 9550, 9550, 9550, 9550, 9551, 9551, 9551, 9551, 9551, 9552, 9552, 9552, 9552, 9552, 9553, 9553, 9553, 9553, 9553, 9554, 9554, 9554, 9554, 9554, 9555, 9555, 9555, 9555, 9555, 9556, 9556, 9556, 9556, 9556, 9557, 9557, 9557, 9557, 9557, 9557, 9558, 9558, 9558, 9558, 9558, 9559, 9559, 9559, 9559, 9559, 9560, 9560, 9560, 9560, 9560, 9561, 9561, 9561, 9561, 9561, 9562, 9562, 9562, 9562, 9562, 9563, 9563, 9563, 9563, 9563, 9564, 9564, 9564, 9564, 9564, 9565, 9565, 9565, 9565, 9565, 9565, 9566, 9566, 9566, 9566, 9566, 9567, 9567, 9567, 9567, 9567, 9568, 9568, 9568, 9568, 9568, 9569, 9569, 9569, 9569, 9569, 9570, 9570, 9570, 9570, 9570, 9571, 9571, 9571, 9571, 9571, 9572, 9572, 9572, 9572, 9572, 9572, 9573, 9573, 9573, 9573, 9573, 9574, 9574, 9574, 9574, 9574, 9575, 9575, 9575, 9575, 9575, 9576, 9576, 9576, 9576, 9576, 9577, 9577, 9577, 9577, 9577, 9577, 9578, 9578, 9578, 9578, 9578, 9579, 9579, 9579, 9579, 9579, 9580, 9580, 9580, 9580, 9580, 9581, 9581, 9581, 9581, 9581, 9582, 9582, 9582, 9582, 9582, 9582, 9583, 9583, 9583, 9583, 9583, 9584, 9584, 9584, 9584, 9584, 9585, 9585, 9585, 9585, 9585, 9586, 9586, 9586, 9586, 9586, 9587, 9587, 9587, 9587, 9587, 9587, 9588, 9588, 9588, 9588, 9588, 9589, 9589, 9589, 9589, 9589, 9590, 9590, 9590, 9590, 9590, 9591, 9591, 9591, 9591, 9591, 9591, 9592, 9592, 9592, 9592, 9592, 9593, 9593, 9593, 9593, 9593, 9594, 9594, 9594, 9594, 9594, 9595, 9595, 9595, 9595, 9595, 9595, 9596, 9596, 9596, 9596, 9596, 9597, 9597, 9597, 9597, 9597, 9598, 9598, 9598, 9598, 9598, 9598, 9599, 9599, 9599, 9599, 9599, 9600, 9600, 9600, 9600, 9600, 9601, 9601, 9601, 9601, 9601, 9601, 9602, 9602, 9602, 9602, 9602, 9603, 9603, 9603, 9603, 9603, 9604, 9604, 9604, 9604, 9604, 9605, 9605, 9605, 9605, 9605, 9605, 9606, 9606, 9606, 9606, 9606, 9607, 9607, 9607, 9607, 9607, 9608, 9608, 9608, 9608, 9608, 9608, 9609, 9609, 9609, 9609, 9609, 9610, 9610, 9610, 9610, 9610, 9610, 9611, 9611, 9611, 9611, 9611, 9612, 9612, 9612, 9612, 9612, 9613, 9613, 9613, 9613, 9613, 9613, 9614, 9614, 9614, 9614, 9614, 9615, 9615, 9615, 9615, 9615, 9616, 9616, 9616, 9616, 9616, 9616, 9617, 9617, 9617, 9617, 9617, 9618, 9618, 9618, 9618, 9618, 9619, 9619, 9619, 9619, 9619, 9619, 9620, 9620, 9620, 9620, 9620, 9621, 9621, 9621, 9621, 9621, 9621, 9622, 9622, 9622, 9622, 9622, 9623, 9623, 9623, 9623, 9623, 9624, 9624, 9624, 9624, 9624, 9624, 9625, 9625, 9625, 9625, 9625, 9626, 9626, 9626, 9626, 9626, 9626, 9627, 9627, 9627, 9627, 9627, 9628, 9628, 9628, 9628, 9628, 9628, 9629, 9629, 9629, 9629, 9629, 9630, 9630, 9630, 9630, 9630, 9630, 9631, 9631, 9631, 9631, 9631, 9632, 9632, 9632, 9632, 9632, 9633, 9633, 9633, 9633, 9633, 9633, 9634, 9634, 9634, 9634, 9634, 9635, 9635, 9635, 9635, 9635, 9635, 9636, 9636, 9636, 9636, 9636, 9637, 9637, 9637, 9637, 9637, 9637, 9638, 9638, 9638, 9638, 9638, 9639, 9639, 9639, 9639, 9639, 9639, 9640, 9640, 9640, 9640, 9640, 9641, 9641, 9641, 9641, 9641, 9641, 9642, 9642, 9642, 9642, 9642, 9643, 9643, 9643, 9643, 9643, 9643, 9644, 9644, 9644, 9644, 9644, 9645, 9645, 9645, 9645, 9645, 9645, 9646, 9646, 9646, 9646, 9646, 9647, 9647, 9647, 9647, 9647, 9647, 9648, 9648, 9648, 9648, 9648, 9649, 9649, 9649, 9649, 9649, 9649, 9650, 9650, 9650, 9650, 9650, 9651, 9651, 9651, 9651, 9651, 9651, 9652, 9652, 9652, 9652, 9652, 9652, 9653, 9653, 9653, 9653, 9653, 9654, 9654, 9654, 9654, 9654, 9654, 9655, 9655, 9655, 9655, 9655, 9656, 9656, 9656, 9656, 9656, 9656, 9657, 9657, 9657, 9657, 9657, 9658, 9658, 9658, 9658, 9658, 9658, 9659, 9659, 9659, 9659, 9659, 9659, 9660, 9660, 9660, 9660, 9660, 9661, 9661, 9661, 9661, 9661, 9661, 9662, 9662, 9662, 9662, 9662, 9663, 9663, 9663, 9663, 9663, 9663, 9664, 9664, 9664, 9664, 9664, 9664, 9665, 9665, 9665, 9665, 9665, 9666, 9666, 9666, 9666, 9666, 9666, 9667, 9667, 9667, 9667, 9667, 9667, 9668, 9668, 9668, 9668, 9668, 9669, 9669, 9669, 9669, 9669, 9669, 9670, 9670, 9670, 9670, 9670, 9671, 9671, 9671, 9671, 9671, 9671, 9672, 9672, 9672, 9672, 9672, 9672, 9673, 9673, 9673, 9673, 9673, 9674, 9674, 9674, 9674, 9674, 9674, 9675, 9675, 9675, 9675, 9675, 9675, 9676, 9676, 9676, 9676, 9676, 9677, 9677, 9677, 9677, 9677, 9677, 9678, 9678, 9678, 9678, 9678, 9678, 9679, 9679, 9679, 9679, 9679, 9679, 9680, 9680, 9680, 9680, 9680, 9681, 9681, 9681, 9681, 9681, 9681, 9682, 9682, 9682, 9682, 9682, 9682, 9683, 9683, 9683, 9683, 9683, 9684, 9684, 9684, 9684, 9684, 9684, 9685, 9685, 9685, 9685, 9685, 9685, 9686, 9686, 9686, 9686, 9686, 9686, 9687, 9687, 9687, 9687, 9687, 9688, 9688, 9688, 9688, 9688, 9688, 9689, 9689, 9689, 9689, 9689, 9689, 9690, 9690, 9690, 9690, 9690, 9691, 9691, 9691, 9691, 9691, 9691, 9692, 9692, 9692, 9692, 9692, 9692, 9693, 9693, 9693, 9693, 9693, 9693, 9694, 9694, 9694, 9694, 9694, 9694, 9695, 9695, 9695, 9695, 9695, 9696, 9696, 9696, 9696, 9696, 9696, 9697, 9697, 9697, 9697, 9697, 9697, 9698, 9698, 9698, 9698, 9698, 9698, 9699, 9699, 9699, 9699, 9699, 9700, 9700, 9700, 9700, 9700, 9700, 9701, 9701, 9701, 9701, 9701, 9701, 9702, 9702, 9702, 9702, 9702, 9702, 9703, 9703, 9703, 9703, 9703, 9703, 9704, 9704, 9704, 9704, 9704, 9704, 9705, 9705, 9705, 9705, 9705, 9706, 9706, 9706, 9706, 9706, 9706, 9707, 9707, 9707, 9707, 9707, 9707, 9708, 9708, 9708, 9708, 9708, 9708, 9709, 9709, 9709, 9709, 9709, 9709, 9710, 9710, 9710, 9710, 9710, 9710, 9711, 9711, 9711, 9711, 9711, 9712, 9712, 9712, 9712, 9712, 9712, 9713, 9713, 9713, 9713, 9713, 9713, 9714, 9714, 9714, 9714, 9714, 9714, 9715, 9715, 9715, 9715, 9715, 9715, 9716, 9716, 9716, 9716, 9716, 9716, 9717, 9717, 9717, 9717, 9717, 9717, 9718, 9718, 9718, 9718, 9718, 9718, 9719, 9719, 9719, 9719, 9719, 9719, 9720, 9720, 9720, 9720, 9720, 9721, 9721, 9721, 9721, 9721, 9721, 9722, 9722, 9722, 9722, 9722, 9722, 9723, 9723, 9723, 9723, 9723, 9723, 9724, 9724, 9724, 9724, 9724, 9724, 9725, 9725, 9725, 9725, 9725, 9725, 9726, 9726, 9726, 9726, 9726, 9726, 9727, 9727, 9727, 9727, 9727, 9727, 9728, 9728, 9728, 9728, 9728, 9728, 9729, 9729, 9729, 9729, 9729, 9729, 9730, 9730, 9730, 9730, 9730, 9730, 9731, 9731, 9731, 9731, 9731, 9731, 9732, 9732, 9732, 9732, 9732, 9732, 9733, 9733, 9733, 9733, 9733, 9733, 9734, 9734, 9734, 9734, 9734, 9734, 9735, 9735, 9735, 9735, 9735, 9735, 9736, 9736, 9736, 9736, 9736, 9736, 9737, 9737, 9737, 9737, 9737, 9737, 9738, 9738, 9738, 9738, 9738, 9738, 9739, 9739, 9739, 9739, 9739, 9739, 9740, 9740, 9740, 9740, 9740, 9740, 9741, 9741, 9741, 9741, 9741, 9741, 9742, 9742, 9742, 9742, 9742, 9742, 9743, 9743, 9743, 9743, 9743, 9743, 9744, 9744, 9744, 9744, 9744, 9744, 9745, 9745, 9745, 9745, 9745, 9745, 9746, 9746, 9746, 9746, 9746, 9746, 9747, 9747, 9747, 9747, 9747, 9747, 9748, 9748, 9748, 9748, 9748, 9748, 9749, 9749, 9749, 9749, 9749, 9749, 9750, 9750, 9750, 9750, 9750, 9750, 9751, 9751, 9751, 9751, 9751, 9751, 9752, 9752, 9752, 9752, 9752, 9752, 9753, 9753, 9753, 9753, 9753, 9753, 9754, 9754, 9754, 9754, 9754, 9754, 9754, 9755, 9755, 9755, 9755, 9755, 9755, 9756, 9756, 9756, 9756, 9756, 9756, 9757, 9757, 9757, 9757, 9757, 9757, 9758, 9758, 9758, 9758, 9758, 9758, 9759, 9759, 9759, 9759, 9759, 9759, 9760, 9760, 9760, 9760, 9760, 9760, 9761, 9761, 9761, 9761, 9761, 9761, 9762, 9762, 9762, 9762, 9762, 9762, 9763, 9763, 9763, 9763, 9763, 9763, 9763, 9764, 9764, 9764, 9764, 9764, 9764, 9765, 9765, 9765, 9765, 9765, 9765, 9766, 9766, 9766, 9766, 9766, 9766, 9767, 9767, 9767, 9767, 9767, 9767, 9768, 9768, 9768, 9768, 9768, 9768, 9769, 9769, 9769, 9769, 9769, 9769, 9769, 9770, 9770, 9770, 9770, 9770, 9770, 9771, 9771, 9771, 9771, 9771, 9771, 9772, 9772, 9772, 9772, 9772, 9772, 9773, 9773, 9773, 9773, 9773, 9773, 9774, 9774, 9774, 9774, 9774, 9774, 9774, 9775, 9775, 9775, 9775, 9775, 9775, 9776, 9776, 9776, 9776, 9776, 9776, 9777, 9777, 9777, 9777, 9777, 9777, 9778, 9778, 9778, 9778, 9778, 9778, 9779, 9779, 9779, 9779, 9779, 9779, 9779, 9780, 9780, 9780, 9780, 9780, 9780, 9781, 9781, 9781, 9781, 9781, 9781, 9782, 9782, 9782, 9782, 9782, 9782, 9783, 9783, 9783, 9783, 9783, 9783, 9783, 9784, 9784, 9784, 9784, 9784, 9784, 9785, 9785, 9785, 9785, 9785, 9785, 9786, 9786, 9786, 9786, 9786, 9786, 9787, 9787, 9787, 9787, 9787, 9787, 9787, 9788, 9788, 9788, 9788, 9788, 9788, 9789, 9789, 9789, 9789, 9789, 9789, 9790, 9790, 9790, 9790, 9790, 9790, 9790, 9791, 9791, 9791, 9791, 9791, 9791, 9792, 9792, 9792, 9792, 9792, 9792, 9793, 9793, 9793, 9793, 9793, 9793, 9794, 9794, 9794, 9794, 9794, 9794, 9794, 9795, 9795, 9795, 9795, 9795, 9795, 9796, 9796, 9796, 9796, 9796, 9796, 9797, 9797, 9797, 9797, 9797, 9797, 9797, 9798, 9798, 9798, 9798, 9798, 9798, 9799, 9799, 9799, 9799, 9799, 9799, 9800, 9800, 9800, 9800, 9800, 9800, 9800, 9801, 9801, 9801, 9801, 9801, 9801, 9802, 9802, 9802, 9802, 9802, 9802, 9802, 9803, 9803, 9803, 9803, 9803, 9803, 9804, 9804, 9804, 9804, 9804, 9804, 9805, 9805, 9805, 9805, 9805, 9805, 9805, 9806, 9806, 9806, 9806, 9806, 9806, 9807, 9807, 9807, 9807, 9807, 9807, 9808, 9808, 9808, 9808, 9808, 9808, 9808, 9809, 9809, 9809, 9809, 9809, 9809, 9810, 9810, 9810, 9810, 9810, 9810, 9810, 9811, 9811, 9811, 9811, 9811, 9811, 9812, 9812, 9812, 9812, 9812, 9812, 9813, 9813, 9813, 9813, 9813, 9813, 9813, 9814, 9814, 9814, 9814, 9814, 9814, 9815, 9815, 9815, 9815, 9815, 9815, 9815, 9816, 9816, 9816, 9816, 9816, 9816, 9817, 9817, 9817, 9817, 9817, 9817, 9817, 9818, 9818, 9818, 9818, 9818, 9818, 9819, 9819, 9819, 9819, 9819, 9819, 9819, 9820, 9820, 9820, 9820, 9820, 9820, 9821, 9821, 9821, 9821, 9821, 9821, 9821, 9822, 9822, 9822, 9822, 9822, 9822, 9823, 9823, 9823, 9823, 9823, 9823, 9823, 9824, 9824, 9824, 9824, 9824, 9824, 9825, 9825, 9825, 9825, 9825, 9825, 9826, 9826, 9826, 9826, 9826, 9826, 9826, 9827, 9827, 9827, 9827, 9827, 9827, 9827, 9828, 9828, 9828, 9828, 9828, 9828, 9829, 9829, 9829, 9829, 9829, 9829, 9829, 9830, 9830, 9830, 9830, 9830, 9830, 9831, 9831, 9831, 9831, 9831, 9831, 9831, 9832, 9832, 9832, 9832, 9832, 9832, 9833, 9833, 9833, 9833, 9833, 9833, 9833, 9834, 9834, 9834, 9834, 9834, 9834, 9835, 9835, 9835, 9835, 9835, 9835, 9835, 9836, 9836, 9836, 9836, 9836, 9836, 9837, 9837, 9837, 9837, 9837, 9837, 9837, 9838, 9838, 9838, 9838, 9838, 9838, 9839, 9839, 9839, 9839, 9839, 9839, 9839, 9840, 9840, 9840, 9840, 9840, 9840, 9840, 9841, 9841, 9841, 9841, 9841, 9841, 9842, 9842, 9842, 9842, 9842, 9842, 9842, 9843, 9843, 9843, 9843, 9843, 9843, 9844, 9844, 9844, 9844, 9844, 9844, 9844, 9845, 9845, 9845, 9845, 9845, 9845, 9845, 9846, 9846, 9846, 9846, 9846, 9846, 9847, 9847, 9847, 9847, 9847, 9847, 9847, 9848, 9848, 9848, 9848, 9848, 9848, 9848, 9849, 9849, 9849, 9849, 9849, 9849, 9850, 9850, 9850, 9850, 9850, 9850, 9850, 9851, 9851, 9851, 9851, 9851, 9851, 9852, 9852, 9852, 9852, 9852, 9852, 9852, 9853, 9853, 9853, 9853, 9853, 9853, 9853, 9854, 9854, 9854, 9854, 9854, 9854, 9855, 9855, 9855, 9855, 9855, 9855, 9855, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9857, 9857, 9857, 9857, 9857, 9857, 9857, 9858, 9858, 9858, 9858, 9858, 9858, 9859, 9859, 9859, 9859, 9859, 9859, 9859, 9860, 9860, 9860, 9860, 9860, 9860, 9860, 9861, 9861, 9861, 9861, 9861, 9861, 9862, 9862, 9862, 9862, 9862, 9862, 9862, 9863, 9863, 9863, 9863, 9863, 9863, 9863, 9864, 9864, 9864, 9864, 9864, 9864, 9865, 9865, 9865, 9865, 9865, 9865, 9865, 9866, 9866, 9866, 9866, 9866, 9866, 9866, 9867, 9867, 9867, 9867, 9867, 9867, 9867, 9868, 9868, 9868, 9868, 9868, 9868, 9869, 9869, 9869, 9869, 9869, 9869, 9869, 9870, 9870, 9870, 9870, 9870, 9870, 9870, 9871, 9871, 9871, 9871, 9871, 9871, 9871, 9872, 9872, 9872, 9872, 9872, 9872, 9872, 9873, 9873, 9873, 9873, 9873, 9873, 9874, 9874, 9874, 9874, 9874, 9874, 9874, 9875, 9875, 9875, 9875, 9875, 9875, 9875, 9876, 9876, 9876, 9876, 9876, 9876, 9876, 9877, 9877, 9877, 9877, 9877, 9877, 9877, 9878, 9878, 9878, 9878, 9878, 9878, 9879, 9879, 9879, 9879, 9879, 9879, 9879, 9880, 9880, 9880, 9880, 9880, 9880, 9880, 9881, 9881, 9881, 9881, 9881, 9881, 9881, 9882, 9882, 9882, 9882, 9882, 9882, 9882, 9883, 9883, 9883, 9883, 9883, 9883, 9883, 9884, 9884, 9884, 9884, 9884, 9884, 9885, 9885, 9885, 9885, 9885, 9885, 9885, 9886, 9886, 9886, 9886, 9886, 9886, 9886, 9887, 9887, 9887, 9887, 9887, 9887, 9887, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9889, 9889, 9889, 9889, 9889, 9889, 9889, 9890, 9890, 9890, 9890, 9890, 9890, 9890, 9891, 9891, 9891, 9891, 9891, 9891, 9891, 9892, 9892, 9892, 9892, 9892, 9892, 9893, 9893, 9893, 9893, 9893, 9893, 9893, 9894, 9894, 9894, 9894, 9894, 9894, 9894, 9895, 9895, 9895, 9895, 9895, 9895, 9895, 9896, 9896, 9896, 9896, 9896, 9896, 9896, 9897, 9897, 9897, 9897, 9897, 9897, 9897, 9898, 9898, 9898, 9898, 9898, 9898, 9898, 9899, 9899, 9899, 9899, 9899, 9899, 9899, 9900, 9900, 9900, 9900, 9900, 9900, 9900, 9901, 9901, 9901, 9901, 9901, 9901, 9901, 9902, 9902, 9902, 9902, 9902, 9902, 9902, 9903, 9903, 9903, 9903, 9903, 9903, 9903, 9904, 9904, 9904, 9904, 9904, 9904, 9904, 9905, 9905, 9905, 9905, 9905, 9905, 9905, 9906, 9906, 9906, 9906, 9906, 9906, 9906, 9907, 9907, 9907, 9907, 9907, 9907, 9907, 9908, 9908, 9908, 9908, 9908, 9908, 9908, 9909, 9909, 9909, 9909, 9909, 9909, 9909, 9910, 9910, 9910, 9910, 9910, 9910, 9910, 9911, 9911, 9911, 9911, 9911, 9911, 9911, 9912, 9912, 9912, 9912, 9912, 9912, 9912, 9913, 9913, 9913, 9913, 9913, 9913, 9913, 9914, 9914, 9914, 9914, 9914, 9914, 9914, 9915, 9915, 9915, 9915, 9915, 9915, 9915, 9916, 9916, 9916, 9916, 9916, 9916, 9916, 9917, 9917, 9917, 9917, 9917, 9917, 9917, 9918, 9918, 9918, 9918, 9918, 9918, 9918, 9919, 9919, 9919, 9919, 9919, 9919, 9919, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9921, 9921, 9921, 9921, 9921, 9921, 9921, 9922, 9922, 9922, 9922, 9922, 9922, 9922, 9923, 9923, 9923, 9923, 9923, 9923, 9923, 9924, 9924, 9924, 9924, 9924, 9924, 9924, 9924, 9925, 9925, 9925, 9925, 9925, 9925, 9925, 9926, 9926, 9926, 9926, 9926, 9926, 9926, 9927, 9927, 9927, 9927, 9927, 9927, 9927, 9928, 9928, 9928, 9928, 9928, 9928, 9928, 9929, 9929, 9929, 9929, 9929, 9929, 9929, 9930, 9930, 9930, 9930, 9930, 9930, 9930, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9931, 9932, 9932, 9932, 9932, 9932, 9932, 9932, 9933, 9933, 9933, 9933, 9933, 9933, 9933, 9934, 9934, 9934, 9934, 9934, 9934, 9934, 9935, 9935, 9935, 9935, 9935, 9935, 9935, 9936, 9936, 9936, 9936, 9936, 9936, 9936, 9937, 9937, 9937, 9937, 9937, 9937, 9937, 9937, 9938, 9938, 9938, 9938, 9938, 9938, 9938, 9939, 9939, 9939, 9939, 9939, 9939, 9939, 9940, 9940, 9940, 9940, 9940, 9940, 9940, 9941, 9941, 9941, 9941, 9941, 9941, 9941, 9942, 9942, 9942, 9942, 9942, 9942, 9942, 9942, 9943, 9943, 9943, 9943, 9943, 9943, 9943, 9944, 9944, 9944, 9944, 9944, 9944, 9944, 9945, 9945, 9945, 9945, 9945, 9945, 9945, 9946, 9946, 9946, 9946, 9946, 9946, 9946, 9946, 9947, 9947, 9947, 9947, 9947, 9947, 9947, 9948, 9948, 9948, 9948, 9948, 9948, 9948, 9949, 9949, 9949, 9949, 9949, 9949, 9949, 9950, 9950, 9950, 9950, 9950, 9950, 9950, 9950, 9951, 9951, 9951, 9951, 9951, 9951, 9951, 9952, 9952, 9952, 9952, 9952, 9952, 9952, 9953, 9953, 9953, 9953, 9953, 9953, 9953, 9954, 9954, 9954, 9954, 9954, 9954, 9954, 9954, 9955, 9955, 9955, 9955, 9955, 9955, 9955, 9956, 9956, 9956, 9956, 9956, 9956, 9956, 9957, 9957, 9957, 9957, 9957, 9957, 9957, 9957, 9958, 9958, 9958, 9958, 9958, 9958, 9958, 9959, 9959, 9959, 9959, 9959, 9959, 9959, 9960, 9960, 9960, 9960, 9960, 9960, 9960, 9960, 9961, 9961, 9961, 9961, 9961, 9961, 9961, 9962, 9962, 9962, 9962, 9962, 9962, 9962, 9963, 9963, 9963, 9963, 9963, 9963, 9963, 9963, 9964, 9964, 9964, 9964, 9964, 9964, 9964, 9965, 9965, 9965, 9965, 9965, 9965, 9965, 9966, 9966, 9966, 9966, 9966, 9966, 9966, 9966, 9967, 9967, 9967, 9967, 9967, 9967, 9967, 9968, 9968, 9968, 9968, 9968, 9968, 9968, 9968, 9969, 9969, 9969, 9969, 9969, 9969, 9969, 9970, 9970, 9970, 9970, 9970, 9970, 9970, 9971, 9971, 9971, 9971, 9971, 9971, 9971, 9971, 9972, 9972, 9972, 9972, 9972, 9972, 9972, 9973, 9973, 9973, 9973, 9973, 9973, 9973, 9973, 9974, 9974, 9974, 9974, 9974, 9974, 9974, 9975, 9975, 9975, 9975, 9975, 9975, 9975, 9975, 9976, 9976, 9976, 9976, 9976, 9976, 9976, 9977, 9977, 9977, 9977, 9977, 9977, 9977, 9978, 9978, 9978, 9978, 9978, 9978, 9978, 9978, 9979, 9979, 9979, 9979, 9979, 9979, 9979, 9980, 9980, 9980, 9980, 9980, 9980, 9980, 9980, 9981, 9981, 9981, 9981, 9981, 9981, 9981, 9982, 9982, 9982, 9982, 9982, 9982, 9982, 9982, 9983, 9983, 9983, 9983, 9983, 9983, 9983, 9984, 9984, 9984, 9984, 9984, 9984, 9984, 9984, 9985, 9985, 9985, 9985, 9985, 9985, 9985, 9986, 9986, 9986, 9986, 9986, 9986, 9986, 9986, 9987, 9987, 9987, 9987, 9987, 9987, 9987, 9988, 9988, 9988, 9988, 9988, 9988, 9988, 9988, 9989, 9989, 9989, 9989, 9989, 9989, 9989, 9990, 9990, 9990, 9990, 9990, 9990, 9990, 9990, 9991, 9991, 9991, 9991, 9991, 9991, 9991, 9991, 9992, 9992, 9992, 9992, 9992, 9992, 9992, 9993, 9993, 9993, 9993, 9993, 9993, 9993, 9993, 9994, 9994, 9994, 9994, 9994, 9994, 9994, 9995, 9995, 9995, 9995, 9995, 9995, 9995, 9995, 9996, 9996, 9996, 9996, 9996, 9996, 9996, 9997, 9997, 9997, 9997, 9997, 9997, 9997, 9997, 9998, 9998, 9998, 9998, 9998, 9998, 9998, 9998, 9999, 9999, 9999, 9999, 9999, 9999, 9999, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10001, 10001, 10001, 10001, 10001, 10001, 10001, 10002, 10002, 10002, 10002, 10002, 10002, 10002, 10002, 10003, 10003, 10003, 10003, 10003, 10003, 10003, 10003, 10004, 10004, 10004, 10004, 10004, 10004, 10004, 10005, 10005, 10005, 10005, 10005, 10005, 10005, 10005, 10006, 10006, 10006, 10006, 10006, 10006, 10006, 10006, 10007, 10007, 10007, 10007, 10007, 10007, 10007, 10008, 10008, 10008, 10008, 10008, 10008, 10008, 10008, 10009, 10009, 10009, 10009, 10009, 10009, 10009, 10009, 10010, 10010, 10010, 10010, 10010, 10010, 10010, 10011, 10011, 10011, 10011, 10011, 10011, 10011, 10011, 10012, 10012, 10012, 10012, 10012, 10012, 10012, 10012, 10013, 10013, 10013, 10013, 10013, 10013, 10013, 10014, 10014, 10014, 10014, 10014, 10014, 10014, 10014, 10015, 10015, 10015, 10015, 10015, 10015, 10015, 10015, 10016, 10016, 10016, 10016, 10016, 10016, 10016, 10017, 10017, 10017, 10017, 10017, 10017, 10017, 10017, 10018, 10018, 10018, 10018, 10018, 10018, 10018, 10018, 10019, 10019, 10019, 10019, 10019, 10019, 10019, 10019, 10020, 10020, 10020, 10020, 10020, 10020, 10020, 10021, 10021, 10021, 10021, 10021, 10021, 10021, 10021, 10022, 10022, 10022, 10022, 10022, 10022, 10022, 10022, 10023, 10023, 10023, 10023, 10023, 10023, 10023, 10023, 10024, 10024, 10024, 10024, 10024, 10024, 10024, 10025, 10025, 10025, 10025, 10025, 10025, 10025, 10025, 10026, 10026, 10026, 10026, 10026, 10026, 10026, 10026, 10027, 10027, 10027, 10027, 10027, 10027, 10027, 10027, 10028, 10028, 10028, 10028, 10028, 10028, 10028, 10028, 10029, 10029, 10029, 10029, 10029, 10029, 10029, 10030, 10030, 10030, 10030, 10030, 10030, 10030, 10030, 10031, 10031, 10031, 10031, 10031, 10031, 10031, 10031, 10032, 10032, 10032, 10032, 10032, 10032, 10032, 10032, 10033, 10033, 10033, 10033, 10033, 10033, 10033, 10033, 10034, 10034, 10034, 10034, 10034, 10034, 10034, 10034, 10035, 10035, 10035, 10035, 10035, 10035, 10035, 10035, 10036, 10036, 10036, 10036, 10036, 10036, 10036, 10037, 10037, 10037, 10037, 10037, 10037, 10037, 10037, 10038, 10038, 10038, 10038, 10038, 10038, 10038, 10038, 10039, 10039, 10039, 10039, 10039, 10039, 10039, 10039, 10040, 10040, 10040, 10040, 10040, 10040, 10040, 10040, 10041, 10041, 10041, 10041, 10041, 10041, 10041, 10041, 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10042, 10043, 10043, 10043, 10043, 10043, 10043, 10043, 10043, 10044, 10044, 10044, 10044, 10044, 10044, 10044, 10044, 10045, 10045, 10045, 10045, 10045, 10045, 10045, 10046, 10046, 10046, 10046, 10046, 10046, 10046, 10046, 10047, 10047, 10047, 10047, 10047, 10047, 10047, 10047, 10048, 10048, 10048, 10048, 10048, 10048, 10048, 10048, 10049, 10049, 10049, 10049, 10049, 10049, 10049, 10049, 10050, 10050, 10050, 10050, 10050, 10050, 10050, 10050, 10051, 10051, 10051, 10051, 10051, 10051, 10051, 10051, 10052, 10052, 10052, 10052, 10052, 10052, 10052, 10052, 10053, 10053, 10053, 10053, 10053, 10053, 10053, 10053, 10054, 10054, 10054, 10054, 10054, 10054, 10054, 10054, 10055, 10055, 10055, 10055, 10055, 10055, 10055, 10055, 10056, 10056, 10056, 10056, 10056, 10056, 10056, 10056, 10057, 10057, 10057, 10057, 10057, 10057, 10057, 10057, 10058, 10058, 10058, 10058, 10058, 10058, 10058, 10058, 10059, 10059, 10059, 10059, 10059, 10059, 10059, 10059, 10060, 10060, 10060, 10060, 10060, 10060, 10060, 10060, 10061, 10061, 10061, 10061, 10061, 10061, 10061, 10061, 10062, 10062, 10062, 10062, 10062, 10062, 10062, 10062, 10063, 10063, 10063, 10063, 10063, 10063, 10063, 10063, 10064, 10064, 10064, 10064, 10064, 10064, 10064, 10064, 10065, 10065, 10065, 10065, 10065, 10065, 10065, 10065, 10066, 10066, 10066, 10066, 10066, 10066, 10066, 10066, 10066, 10067, 10067, 10067, 10067, 10067, 10067, 10067, 10067, 10068, 10068, 10068, 10068, 10068, 10068, 10068, 10068, 10069, 10069, 10069, 10069, 10069, 10069, 10069, 10069, 10070, 10070, 10070, 10070, 10070, 10070, 10070, 10070, 10071, 10071, 10071, 10071, 10071, 10071, 10071, 10071, 10072, 10072, 10072, 10072, 10072, 10072, 10072, 10072, 10073, 10073, 10073, 10073, 10073, 10073, 10073, 10073, 10074, 10074, 10074, 10074, 10074, 10074, 10074, 10074, 10075, 10075, 10075, 10075, 10075, 10075, 10075, 10075, 10075, 10076, 10076, 10076, 10076, 10076, 10076, 10076, 10076, 10077, 10077, 10077, 10077, 10077, 10077, 10077, 10077, 10078, 10078, 10078, 10078, 10078, 10078, 10078, 10078, 10079, 10079, 10079, 10079, 10079, 10079, 10079, 10079, 10080, 10080, 10080, 10080, 10080, 10080, 10080, 10080, 10081, 10081, 10081, 10081, 10081, 10081, 10081, 10081, 10081, 10082, 10082, 10082, 10082, 10082, 10082, 10082, 10082, 10083, 10083, 10083, 10083, 10083, 10083, 10083, 10083, 10084, 10084, 10084, 10084, 10084, 10084, 10084, 10084, 10085, 10085, 10085, 10085, 10085, 10085, 10085, 10085, 10086, 10086, 10086, 10086, 10086, 10086, 10086, 10086, 10086, 10087, 10087, 10087, 10087, 10087, 10087, 10087, 10087, 10088, 10088, 10088, 10088, 10088, 10088, 10088, 10088, 10089, 10089, 10089, 10089, 10089, 10089, 10089, 10089, 10090, 10090, 10090, 10090, 10090, 10090, 10090, 10090, 10090, 10091, 10091, 10091, 10091, 10091, 10091, 10091, 10091, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10092, 10093, 10093, 10093, 10093, 10093, 10093, 10093, 10093, 10094, 10094, 10094, 10094, 10094, 10094, 10094, 10094, 10094, 10095, 10095, 10095, 10095, 10095, 10095, 10095, 10095, 10096, 10096, 10096, 10096, 10096, 10096, 10096, 10096, 10097, 10097, 10097, 10097, 10097, 10097, 10097, 10097, 10097, 10098, 10098, 10098, 10098, 10098, 10098, 10098, 10098, 10099, 10099, 10099, 10099, 10099, 10099, 10099, 10099, 10100, 10100, 10100, 10100, 10100, 10100, 10100, 10100, 10100, 10101, 10101, 10101, 10101, 10101, 10101, 10101, 10101, 10102, 10102, 10102, 10102, 10102, 10102, 10102, 10102, 10103, 10103, 10103, 10103, 10103, 10103, 10103, 10103, 10103, 10104, 10104, 10104, 10104, 10104, 10104, 10104, 10104, 10105, 10105, 10105, 10105, 10105, 10105, 10105, 10105, 10106, 10106, 10106, 10106, 10106, 10106, 10106, 10106, 10106, 10107, 10107, 10107, 10107, 10107, 10107, 10107, 10107, 10108, 10108, 10108, 10108, 10108, 10108, 10108, 10108, 10109, 10109, 10109, 10109, 10109, 10109, 10109, 10109, 10109, 10110, 10110, 10110, 10110, 10110, 10110, 10110, 10110, 10111, 10111, 10111, 10111, 10111, 10111, 10111, 10111, 10111, 10112, 10112, 10112, 10112, 10112, 10112, 10112, 10112, 10113, 10113, 10113, 10113, 10113, 10113, 10113, 10113, 10113, 10114, 10114, 10114, 10114, 10114, 10114, 10114, 10114, 10115, 10115, 10115, 10115, 10115, 10115, 10115, 10115, 10116, 10116, 10116, 10116, 10116, 10116, 10116, 10116, 10116, 10117, 10117, 10117, 10117, 10117, 10117, 10117, 10117, 10118, 10118, 10118, 10118, 10118, 10118, 10118, 10118, 10118, 10119, 10119, 10119, 10119, 10119, 10119, 10119, 10119, 10120, 10120, 10120, 10120, 10120, 10120, 10120, 10120, 10120, 10121, 10121, 10121, 10121, 10121, 10121, 10121, 10121, 10122, 10122, 10122, 10122, 10122, 10122, 10122, 10122, 10122, 10123, 10123, 10123, 10123, 10123, 10123, 10123, 10123, 10124, 10124, 10124, 10124, 10124, 10124, 10124, 10124, 10124, 10125, 10125, 10125, 10125, 10125, 10125, 10125, 10125, 10126, 10126, 10126, 10126, 10126, 10126, 10126, 10126, 10126, 10127, 10127, 10127, 10127, 10127, 10127, 10127, 10127, 10128, 10128, 10128, 10128, 10128, 10128, 10128, 10128, 10128, 10129, 10129, 10129, 10129, 10129, 10129, 10129, 10129, 10130, 10130, 10130, 10130, 10130, 10130, 10130, 10130, 10130, 10131, 10131, 10131, 10131, 10131, 10131, 10131, 10131, 10131, 10132, 10132, 10132, 10132, 10132, 10132, 10132, 10132, 10133, 10133, 10133, 10133, 10133, 10133, 10133, 10133, 10133, 10134, 10134, 10134, 10134, 10134, 10134, 10134, 10134, 10135, 10135, 10135, 10135, 10135, 10135, 10135, 10135, 10135, 10136, 10136, 10136, 10136, 10136, 10136, 10136, 10136, 10136, 10137, 10137, 10137, 10137, 10137, 10137, 10137, 10137, 10138, 10138, 10138, 10138, 10138, 10138, 10138, 10138, 10138, 10139, 10139, 10139, 10139, 10139, 10139, 10139, 10139, 10140, 10140, 10140, 10140, 10140, 10140, 10140, 10140, 10140, 10141, 10141, 10141, 10141, 10141, 10141, 10141, 10141, 10141, 10142, 10142, 10142, 10142, 10142, 10142, 10142, 10142, 10143, 10143, 10143, 10143, 10143, 10143, 10143, 10143, 10143, 10144, 10144, 10144, 10144, 10144, 10144, 10144, 10144, 10144, 10145, 10145, 10145, 10145, 10145, 10145, 10145, 10145, 10146, 10146, 10146, 10146, 10146, 10146, 10146, 10146, 10146, 10147, 10147, 10147, 10147, 10147, 10147, 10147, 10147, 10147, 10148, 10148, 10148, 10148, 10148, 10148, 10148, 10148, 10149, 10149, 10149, 10149, 10149, 10149, 10149, 10149, 10149, 10150, 10150, 10150, 10150, 10150, 10150, 10150, 10150, 10150, 10151, 10151, 10151, 10151, 10151, 10151, 10151, 10151, 10151, 10152, 10152, 10152, 10152, 10152, 10152, 10152, 10152, 10153, 10153, 10153, 10153, 10153, 10153, 10153, 10153, 10153, 10154, 10154, 10154, 10154, 10154, 10154, 10154, 10154, 10154, 10155, 10155, 10155, 10155, 10155, 10155, 10155, 10155, 10156, 10156, 10156, 10156, 10156, 10156, 10156, 10156, 10156, 10157, 10157, 10157, 10157, 10157, 10157, 10157, 10157, 10157, 10158, 10158, 10158, 10158, 10158, 10158, 10158, 10158, 10158, 10159, 10159, 10159, 10159, 10159, 10159, 10159, 10159, 10159, 10160, 10160, 10160, 10160, 10160, 10160, 10160, 10160, 10161, 10161, 10161, 10161, 10161, 10161, 10161, 10161, 10161, 10162, 10162, 10162, 10162, 10162, 10162, 10162, 10162, 10162, 10163, 10163, 10163, 10163, 10163, 10163, 10163, 10163, 10163, 10164, 10164, 10164, 10164, 10164, 10164, 10164, 10164, 10164, 10165, 10165, 10165, 10165, 10165, 10165, 10165, 10165, 10166, 10166, 10166, 10166, 10166, 10166, 10166, 10166, 10166, 10167, 10167, 10167, 10167, 10167, 10167, 10167, 10167, 10167, 10168, 10168, 10168, 10168, 10168, 10168, 10168, 10168, 10168, 10169, 10169, 10169, 10169, 10169, 10169, 10169, 10169, 10169, 10170, 10170, 10170, 10170, 10170, 10170, 10170, 10170, 10170, 10171, 10171, 10171, 10171, 10171, 10171, 10171, 10171, 10171, 10172, 10172, 10172, 10172, 10172, 10172, 10172, 10172, 10172, 10173, 10173, 10173, 10173, 10173, 10173, 10173, 10173, 10174, 10174, 10174, 10174, 10174, 10174, 10174, 10174, 10174, 10175, 10175, 10175, 10175, 10175, 10175, 10175, 10175, 10175, 10176, 10176, 10176, 10176, 10176, 10176, 10176, 10176, 10176, 10177, 10177, 10177, 10177, 10177, 10177, 10177, 10177, 10177, 10178, 10178, 10178, 10178, 10178, 10178, 10178, 10178, 10178, 10179, 10179, 10179, 10179, 10179, 10179, 10179, 10179, 10179, 10180, 10180, 10180, 10180, 10180, 10180, 10180, 10180, 10180, 10181, 10181, 10181, 10181, 10181, 10181, 10181, 10181, 10181, 10182, 10182, 10182, 10182, 10182, 10182, 10182, 10182, 10182, 10183, 10183, 10183, 10183, 10183, 10183, 10183, 10183, 10183, 10184, 10184, 10184, 10184, 10184, 10184, 10184, 10184, 10184, 10185, 10185, 10185, 10185, 10185, 10185, 10185, 10185, 10185, 10186, 10186, 10186, 10186, 10186, 10186, 10186, 10186, 10186, 10187, 10187, 10187, 10187, 10187, 10187, 10187, 10187, 10187, 10188, 10188, 10188, 10188, 10188, 10188, 10188, 10188, 10188, 10189, 10189, 10189, 10189, 10189, 10189, 10189, 10189, 10189, 10190, 10190, 10190, 10190, 10190, 10190, 10190, 10190, 10190, 10191, 10191, 10191, 10191, 10191, 10191, 10191, 10191, 10191, 10192, 10192, 10192, 10192, 10192, 10192, 10192, 10192, 10192, 10193, 10193, 10193, 10193, 10193, 10193, 10193, 10193, 10193, 10194, 10194, 10194, 10194, 10194, 10194, 10194, 10194, 10194, 10195, 10195, 10195, 10195, 10195, 10195, 10195, 10195, 10195, 10196, 10196, 10196, 10196, 10196, 10196, 10196, 10196, 10196, 10197, 10197, 10197, 10197, 10197, 10197, 10197, 10197, 10197, 10198, 10198, 10198, 10198, 10198, 10198, 10198, 10198, 10198, 10198, 10199, 10199, 10199, 10199, 10199, 10199, 10199, 10199, 10199, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10200, 10201, 10201, 10201, 10201, 10201, 10201, 10201, 10201, 10201, 10202, 10202, 10202, 10202, 10202, 10202, 10202, 10202, 10202, 10203, 10203, 10203, 10203, 10203, 10203, 10203, 10203, 10203, 10204, 10204, 10204, 10204, 10204, 10204, 10204, 10204, 10204, 10205, 10205, 10205, 10205, 10205, 10205, 10205, 10205, 10205, 10206, 10206, 10206, 10206, 10206, 10206, 10206, 10206, 10206, 10206, 10207, 10207, 10207, 10207, 10207, 10207, 10207, 10207, 10207, 10208, 10208, 10208, 10208, 10208, 10208, 10208, 10208, 10208, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10210, 10210, 10210, 10210, 10210, 10210, 10210, 10210, 10210, 10211, 10211, 10211, 10211, 10211, 10211, 10211, 10211, 10211, 10211, 10212, 10212, 10212, 10212, 10212, 10212, 10212, 10212, 10212, 10213, 10213, 10213, 10213, 10213, 10213, 10213, 10213, 10213, 10214, 10214, 10214, 10214, 10214, 10214, 10214, 10214, 10214, 10215, 10215, 10215, 10215, 10215, 10215, 10215, 10215, 10215, 10216, 10216, 10216, 10216, 10216, 10216, 10216, 10216, 10216, 10216, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10217, 10218, 10218, 10218, 10218, 10218, 10218, 10218, 10218, 10218, 10219, 10219, 10219, 10219, 10219, 10219, 10219, 10219, 10219, 10219, 10220, 10220, 10220, 10220, 10220, 10220, 10220, 10220, 10220, 10221, 10221, 10221, 10221, 10221, 10221, 10221, 10221, 10221, 10222, 10222, 10222, 10222, 10222, 10222, 10222, 10222, 10222, 10223, 10223, 10223, 10223, 10223, 10223, 10223, 10223, 10223, 10223, 10224, 10224, 10224, 10224, 10224, 10224, 10224, 10224, 10224, 10225, 10225, 10225, 10225, 10225, 10225, 10225, 10225, 10225, 10226, 10226, 10226, 10226, 10226, 10226, 10226, 10226, 10226, 10226, 10227, 10227, 10227, 10227, 10227, 10227, 10227, 10227, 10227, 10228, 10228, 10228, 10228, 10228, 10228, 10228, 10228, 10228, 10229, 10229, 10229, 10229, 10229, 10229, 10229, 10229, 10229, 10229, 10230, 10230, 10230, 10230, 10230, 10230, 10230, 10230, 10230, 10231, 10231, 10231, 10231, 10231, 10231, 10231, 10231, 10231, 10231, 10232, 10232, 10232, 10232, 10232, 10232, 10232, 10232, 10232, 10233, 10233, 10233, 10233, 10233, 10233, 10233, 10233, 10233, 10234, 10234, 10234, 10234, 10234, 10234, 10234, 10234, 10234, 10234, 10235, 10235, 10235, 10235, 10235, 10235, 10235, 10235, 10235, 10236, 10236, 10236, 10236, 10236, 10236, 10236, 10236, 10236, 10236, 10237, 10237, 10237, 10237, 10237, 10237, 10237, 10237, 10237, 10238, 10238, 10238, 10238, 10238, 10238, 10238, 10238, 10238, 10239, 10239, 10239, 10239, 10239, 10239, 10239, 10239, 10239, 10239, 10240, 10240, 10240, 10240, 10240, 10240, 10240, 10240, 10240, 10241, 10241, 10241, 10241, 10241, 10241, 10241, 10241, 10241, 10241, 10242, 10242, 10242, 10242, 10242, 10242, 10242, 10242, 10242, 10243, 10243, 10243, 10243, 10243, 10243, 10243, 10243, 10243, 10243, 10244, 10244, 10244, 10244, 10244, 10244, 10244, 10244, 10244, 10245, 10245, 10245, 10245, 10245, 10245, 10245, 10245, 10245, 10245, 10246, 10246, 10246, 10246, 10246, 10246, 10246, 10246, 10246, 10247, 10247, 10247, 10247, 10247, 10247, 10247, 10247, 10247, 10247, 10248, 10248, 10248, 10248, 10248, 10248, 10248, 10248, 10248, 10249, 10249, 10249, 10249, 10249, 10249, 10249, 10249, 10249, 10249, 10250, 10250, 10250, 10250, 10250, 10250, 10250, 10250, 10250, 10251, 10251, 10251, 10251, 10251, 10251, 10251, 10251, 10251, 10251, 10252, 10252, 10252, 10252, 10252, 10252, 10252, 10252, 10252, 10253, 10253, 10253, 10253, 10253, 10253, 10253, 10253, 10253, 10253, 10254, 10254, 10254, 10254, 10254, 10254, 10254, 10254, 10254, 10254, 10255, 10255, 10255, 10255, 10255, 10255, 10255, 10255, 10255, 10256, 10256, 10256, 10256, 10256, 10256, 10256, 10256, 10256, 10256, 10257, 10257, 10257, 10257, 10257, 10257, 10257, 10257, 10257, 10258, 10258, 10258, 10258, 10258, 10258, 10258, 10258, 10258, 10258, 10259, 10259, 10259, 10259, 10259, 10259, 10259, 10259, 10259, 10259, 10260, 10260, 10260, 10260, 10260, 10260, 10260, 10260, 10260, 10261, 10261, 10261, 10261, 10261, 10261, 10261, 10261, 10261, 10261, 10262, 10262, 10262, 10262, 10262, 10262, 10262, 10262, 10262, 10263, 10263, 10263, 10263, 10263, 10263, 10263, 10263, 10263, 10263, 10264, 10264, 10264, 10264, 10264, 10264, 10264, 10264, 10264, 10264, 10265, 10265, 10265, 10265, 10265, 10265, 10265, 10265, 10265, 10266, 10266, 10266, 10266, 10266, 10266, 10266, 10266, 10266, 10266, 10267, 10267, 10267, 10267, 10267, 10267, 10267, 10267, 10267, 10267, 10268, 10268, 10268, 10268, 10268, 10268, 10268, 10268, 10268, 10269, 10269, 10269, 10269, 10269, 10269, 10269, 10269, 10269, 10269, 10270, 10270, 10270, 10270, 10270, 10270, 10270, 10270, 10270, 10270, 10271, 10271, 10271, 10271, 10271, 10271, 10271, 10271, 10271, 10271, 10272, 10272, 10272, 10272, 10272, 10272, 10272, 10272, 10272, 10273, 10273, 10273, 10273, 10273, 10273, 10273, 10273, 10273, 10273, 10274, 10274, 10274, 10274, 10274, 10274, 10274, 10274, 10274, 10274, 10275, 10275, 10275, 10275, 10275, 10275, 10275, 10275, 10275, 10275, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10276, 10277, 10277, 10277, 10277, 10277, 10277, 10277, 10277, 10277, 10277, 10278, 10278, 10278, 10278, 10278, 10278, 10278, 10278, 10278, 10278, 10279, 10279, 10279, 10279, 10279, 10279, 10279, 10279, 10279, 10279, 10280, 10280, 10280, 10280, 10280, 10280, 10280, 10280, 10280, 10281, 10281, 10281, 10281, 10281, 10281, 10281, 10281, 10281, 10281, 10282, 10282, 10282, 10282, 10282, 10282, 10282, 10282, 10282, 10282, 10283, 10283, 10283, 10283, 10283, 10283, 10283, 10283, 10283, 10283, 10284, 10284, 10284, 10284, 10284, 10284, 10284, 10284, 10284, 10284, 10285, 10285, 10285, 10285, 10285, 10285, 10285, 10285, 10285, 10285, 10286, 10286, 10286, 10286, 10286, 10286, 10286, 10286, 10286, 10287, 10287, 10287, 10287, 10287, 10287, 10287, 10287, 10287, 10287, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10289, 10289, 10289, 10289, 10289, 10289, 10289, 10289, 10289, 10289, 10290, 10290, 10290, 10290, 10290, 10290, 10290, 10290, 10290, 10290, 10291, 10291, 10291, 10291, 10291, 10291, 10291, 10291, 10291, 10291, 10292, 10292, 10292, 10292, 10292, 10292, 10292, 10292, 10292, 10292, 10293, 10293, 10293, 10293, 10293, 10293, 10293, 10293, 10293, 10293, 10294, 10294, 10294, 10294, 10294, 10294, 10294, 10294, 10294, 10294, 10295, 10295, 10295, 10295, 10295, 10295, 10295, 10295, 10295, 10295, 10296, 10296, 10296, 10296, 10296, 10296, 10296, 10296, 10296, 10296, 10297, 10297, 10297, 10297, 10297, 10297, 10297, 10297, 10297, 10298, 10298, 10298, 10298, 10298, 10298, 10298, 10298, 10298, 10298, 10299, 10299, 10299, 10299, 10299, 10299, 10299, 10299, 10299, 10299, 10300, 10300, 10300, 10300, 10300, 10300, 10300, 10300, 10300, 10300, 10301, 10301, 10301, 10301, 10301, 10301, 10301, 10301, 10301, 10301, 10302, 10302, 10302, 10302, 10302, 10302, 10302, 10302, 10302, 10302, 10303, 10303, 10303, 10303, 10303, 10303, 10303, 10303, 10303, 10303, 10304, 10304, 10304, 10304, 10304, 10304, 10304, 10304, 10304, 10304, 10305, 10305, 10305, 10305, 10305, 10305, 10305, 10305, 10305, 10305, 10306, 10306, 10306, 10306, 10306, 10306, 10306, 10306, 10306, 10306, 10307, 10307, 10307, 10307, 10307, 10307, 10307, 10307, 10307, 10307, 10307, 10308, 10308, 10308, 10308, 10308, 10308, 10308, 10308, 10308, 10308, 10309, 10309, 10309, 10309, 10309, 10309, 10309, 10309, 10309, 10309, 10310, 10310, 10310, 10310, 10310, 10310, 10310, 10310, 10310, 10310, 10311, 10311, 10311, 10311, 10311, 10311, 10311, 10311, 10311, 10311, 10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312, 10313, 10313, 10313, 10313, 10313, 10313, 10313, 10313, 10313, 10313, 10314, 10314, 10314, 10314, 10314, 10314, 10314, 10314, 10314, 10314, 10315, 10315, 10315, 10315, 10315, 10315, 10315, 10315, 10315, 10315, 10316, 10316, 10316, 10316, 10316, 10316, 10316, 10316, 10316, 10316, 10317, 10317, 10317, 10317, 10317, 10317, 10317, 10317, 10317, 10317, 10318, 10318, 10318, 10318, 10318, 10318, 10318, 10318, 10318, 10318, 10318, 10319, 10319, 10319, 10319, 10319, 10319, 10319, 10319, 10319, 10319, 10320, 10320, 10320, 10320, 10320, 10320, 10320, 10320, 10320, 10320, 10321, 10321, 10321, 10321, 10321, 10321, 10321, 10321, 10321, 10321, 10322, 10322, 10322, 10322, 10322, 10322, 10322, 10322, 10322, 10322, 10323, 10323, 10323, 10323, 10323, 10323, 10323, 10323, 10323, 10323, 10324, 10324, 10324, 10324, 10324, 10324, 10324, 10324, 10324, 10324, 10324, 10325, 10325, 10325, 10325, 10325, 10325, 10325, 10325, 10325, 10325, 10326, 10326, 10326, 10326, 10326, 10326, 10326, 10326, 10326, 10326, 10327, 10327, 10327, 10327, 10327, 10327, 10327, 10327, 10327, 10327, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10329, 10329, 10329, 10329, 10329, 10329, 10329, 10329, 10329, 10329, 10330, 10330, 10330, 10330, 10330, 10330, 10330, 10330, 10330, 10330, 10331, 10331, 10331, 10331, 10331, 10331, 10331, 10331, 10331, 10331, 10332, 10332, 10332, 10332, 10332, 10332, 10332, 10332, 10332, 10332, 10332, 10333, 10333, 10333, 10333, 10333, 10333, 10333, 10333, 10333, 10333, 10334, 10334, 10334, 10334, 10334, 10334, 10334, 10334, 10334, 10334, 10335, 10335, 10335, 10335, 10335, 10335, 10335, 10335, 10335, 10335, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10337, 10337, 10337, 10337, 10337, 10337, 10337, 10337, 10337, 10337, 10338, 10338, 10338, 10338, 10338, 10338, 10338, 10338, 10338, 10338, 10339, 10339, 10339, 10339, 10339, 10339, 10339, 10339, 10339, 10339, 10339, 10340, 10340, 10340, 10340, 10340, 10340, 10340, 10340, 10340, 10340, 10341, 10341, 10341, 10341, 10341, 10341, 10341, 10341, 10341, 10341, 10342, 10342, 10342, 10342, 10342, 10342, 10342, 10342, 10342, 10342, 10342, 10343, 10343, 10343, 10343, 10343, 10343, 10343, 10343, 10343, 10343, 10344, 10344, 10344, 10344, 10344, 10344, 10344, 10344, 10344, 10344, 10344, 10345, 10345, 10345, 10345, 10345, 10345, 10345, 10345, 10345, 10345, 10346, 10346, 10346, 10346, 10346, 10346, 10346, 10346, 10346, 10346, 10347, 10347, 10347, 10347, 10347, 10347, 10347, 10347, 10347, 10347, 10347, 10348, 10348, 10348, 10348, 10348, 10348, 10348, 10348, 10348, 10348, 10349, 10349, 10349, 10349, 10349, 10349, 10349, 10349, 10349, 10349, 10349, 10350, 10350, 10350, 10350, 10350, 10350, 10350, 10350, 10350, 10350, 10351, 10351, 10351, 10351, 10351, 10351, 10351, 10351, 10351, 10351, 10351, 10352, 10352, 10352, 10352, 10352, 10352, 10352, 10352, 10352, 10352, 10353, 10353, 10353, 10353, 10353, 10353, 10353, 10353, 10353, 10353, 10354, 10354, 10354, 10354, 10354, 10354, 10354, 10354, 10354, 10354, 10354, 10355, 10355, 10355, 10355, 10355, 10355, 10355, 10355, 10355, 10355, 10356, 10356, 10356, 10356, 10356, 10356, 10356, 10356, 10356, 10356, 10356, 10357, 10357, 10357, 10357, 10357, 10357, 10357, 10357, 10357, 10357, 10358, 10358, 10358, 10358, 10358, 10358, 10358, 10358, 10358, 10358, 10358, 10359, 10359, 10359, 10359, 10359, 10359, 10359, 10359, 10359, 10359, 10360, 10360, 10360, 10360, 10360, 10360, 10360, 10360, 10360, 10360, 10360, 10361, 10361, 10361, 10361, 10361, 10361, 10361, 10361, 10361, 10361, 10361, 10362, 10362, 10362, 10362, 10362, 10362, 10362, 10362, 10362, 10362, 10363, 10363, 10363, 10363, 10363, 10363, 10363, 10363, 10363, 10363, 10363, 10364, 10364, 10364, 10364, 10364, 10364, 10364, 10364, 10364, 10364, 10365, 10365, 10365, 10365, 10365, 10365, 10365, 10365, 10365, 10365, 10365, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10367, 10367, 10367, 10367, 10367, 10367, 10367, 10367, 10367, 10367, 10367, 10368, 10368, 10368, 10368, 10368, 10368, 10368, 10368, 10368, 10368, 10368, 10369, 10369, 10369, 10369, 10369, 10369, 10369, 10369, 10369, 10369, 10370, 10370, 10370, 10370, 10370, 10370, 10370, 10370, 10370, 10370, 10370, 10371, 10371, 10371, 10371, 10371, 10371, 10371, 10371, 10371, 10371, 10371, 10372, 10372, 10372, 10372, 10372, 10372, 10372, 10372, 10372, 10372, 10373, 10373, 10373, 10373, 10373, 10373, 10373, 10373, 10373, 10373, 10373, 10374, 10374, 10374, 10374, 10374, 10374, 10374, 10374, 10374, 10374, 10374, 10375, 10375, 10375, 10375, 10375, 10375, 10375, 10375, 10375, 10375, 10376, 10376, 10376, 10376, 10376, 10376, 10376, 10376, 10376, 10376, 10376, 10377, 10377, 10377, 10377, 10377, 10377, 10377, 10377, 10377, 10377, 10377, 10378, 10378, 10378, 10378, 10378, 10378, 10378, 10378, 10378, 10378, 10379, 10379, 10379, 10379, 10379, 10379, 10379, 10379, 10379, 10379, 10379, 10380, 10380, 10380, 10380, 10380, 10380, 10380, 10380, 10380, 10380, 10380, 10381, 10381, 10381, 10381, 10381, 10381, 10381, 10381, 10381, 10381, 10382, 10382, 10382, 10382, 10382, 10382, 10382, 10382, 10382, 10382, 10382, 10383, 10383, 10383, 10383, 10383, 10383, 10383, 10383, 10383, 10383, 10383, 10384, 10384, 10384, 10384, 10384, 10384, 10384, 10384, 10384, 10384, 10384, 10385, 10385, 10385, 10385, 10385, 10385, 10385, 10385, 10385, 10385, 10385, 10386, 10386, 10386, 10386, 10386, 10386, 10386, 10386, 10386, 10386, 10387, 10387, 10387, 10387, 10387, 10387, 10387, 10387, 10387, 10387, 10387, 10388, 10388, 10388, 10388, 10388, 10388, 10388, 10388, 10388, 10388, 10388, 10389, 10389, 10389, 10389, 10389, 10389, 10389, 10389, 10389, 10389, 10389, 10390, 10390, 10390, 10390, 10390, 10390, 10390, 10390, 10390, 10390, 10390, 10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391, 10391, 10392, 10392, 10392, 10392, 10392, 10392, 10392, 10392, 10392, 10392, 10392, 10393, 10393, 10393, 10393, 10393, 10393, 10393, 10393, 10393, 10393, 10393, 10394, 10394, 10394, 10394, 10394, 10394, 10394, 10394, 10394, 10394, 10394, 10395, 10395, 10395, 10395, 10395, 10395, 10395, 10395, 10395, 10395, 10395, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10397, 10397, 10397, 10397, 10397, 10397, 10397, 10397, 10397, 10397, 10397, 10398, 10398, 10398, 10398, 10398, 10398, 10398, 10398, 10398, 10398, 10398, 10399, 10399, 10399, 10399, 10399, 10399, 10399, 10399, 10399, 10399, 10400, 10400, 10400, 10400, 10400, 10400, 10400, 10400, 10400, 10400, 10400, 10401, 10401, 10401, 10401, 10401, 10401, 10401, 10401, 10401, 10401, 10401, 10402, 10402, 10402, 10402, 10402, 10402, 10402, 10402, 10402, 10402, 10402, 10403, 10403, 10403, 10403, 10403, 10403, 10403, 10403, 10403, 10403, 10403, 10404, 10404, 10404, 10404, 10404, 10404, 10404, 10404, 10404, 10404, 10404, 10405, 10405, 10405, 10405, 10405, 10405, 10405, 10405, 10405, 10405, 10405, 10406, 10406, 10406, 10406, 10406, 10406, 10406, 10406, 10406, 10406, 10406, 10407, 10407, 10407, 10407, 10407, 10407, 10407, 10407, 10407, 10407, 10407, 10408, 10408, 10408, 10408, 10408, 10408, 10408, 10408, 10408, 10408, 10408, 10409, 10409, 10409, 10409, 10409, 10409, 10409, 10409, 10409, 10409, 10409, 10410, 10410, 10410, 10410, 10410, 10410, 10410, 10410, 10410, 10410, 10410, 10411, 10411, 10411, 10411, 10411, 10411, 10411, 10411, 10411, 10411, 10411, 10412, 10412, 10412, 10412, 10412, 10412, 10412, 10412, 10412, 10412, 10412, 10413, 10413, 10413, 10413, 10413, 10413, 10413, 10413, 10413, 10413, 10413, 10414, 10414, 10414, 10414, 10414, 10414, 10414, 10414, 10414, 10414, 10414, 10415, 10415, 10415, 10415, 10415, 10415, 10415, 10415, 10415, 10415, 10415, 10416, 10416, 10416, 10416, 10416, 10416, 10416, 10416, 10416, 10416, 10416, 10417, 10417, 10417, 10417, 10417, 10417, 10417, 10417, 10417, 10417, 10417, 10417, 10418, 10418, 10418, 10418, 10418, 10418, 10418, 10418, 10418, 10418, 10418, 10419, 10419, 10419, 10419, 10419, 10419, 10419, 10419, 10419, 10419, 10419, 10420, 10420, 10420, 10420, 10420, 10420, 10420, 10420, 10420, 10420, 10420, 10421, 10421, 10421, 10421, 10421, 10421, 10421, 10421, 10421, 10421, 10421, 10422, 10422, 10422, 10422, 10422, 10422, 10422, 10422, 10422, 10422, 10422, 10423, 10423, 10423, 10423, 10423, 10423, 10423, 10423, 10423, 10423, 10423, 10424, 10424, 10424, 10424, 10424, 10424, 10424, 10424, 10424, 10424, 10424, 10424, 10425, 10425, 10425, 10425, 10425, 10425, 10425, 10425, 10425, 10425, 10425, 10426, 10426, 10426, 10426, 10426, 10426, 10426, 10426, 10426, 10426, 10426, 10427, 10427, 10427, 10427, 10427, 10427, 10427, 10427, 10427, 10427, 10427, 10428, 10428, 10428, 10428, 10428, 10428, 10428, 10428, 10428, 10428, 10428, 10429, 10429, 10429, 10429, 10429, 10429, 10429, 10429, 10429, 10429, 10429, 10430, 10430, 10430, 10430, 10430, 10430, 10430, 10430, 10430, 10430, 10430, 10430, 10431, 10431, 10431, 10431, 10431, 10431, 10431, 10431, 10431, 10431, 10431, 10432, 10432, 10432, 10432, 10432, 10432, 10432, 10432, 10432, 10432, 10432, 10433, 10433, 10433, 10433, 10433, 10433, 10433, 10433, 10433, 10433, 10433, 10434, 10434, 10434, 10434, 10434, 10434, 10434, 10434, 10434, 10434, 10434, 10434, 10435, 10435, 10435, 10435, 10435, 10435, 10435, 10435, 10435, 10435, 10435, 10436, 10436, 10436, 10436, 10436, 10436, 10436, 10436, 10436, 10436, 10436, 10437, 10437, 10437, 10437, 10437, 10437, 10437, 10437, 10437, 10437, 10437, 10437, 10438, 10438, 10438, 10438, 10438, 10438, 10438, 10438, 10438, 10438, 10438, 10439, 10439, 10439, 10439, 10439, 10439, 10439, 10439, 10439, 10439, 10439, 10440, 10440, 10440, 10440, 10440, 10440, 10440, 10440, 10440, 10440, 10440, 10440, 10441, 10441, 10441, 10441, 10441, 10441, 10441, 10441, 10441, 10441, 10441, 10442, 10442, 10442, 10442, 10442, 10442, 10442, 10442, 10442, 10442, 10442, 10443, 10443, 10443, 10443, 10443, 10443, 10443, 10443, 10443, 10443, 10443, 10443, 10444, 10444, 10444, 10444, 10444, 10444, 10444, 10444, 10444, 10444, 10444, 10445, 10445, 10445, 10445, 10445, 10445, 10445, 10445, 10445, 10445, 10445, 10446, 10446, 10446, 10446, 10446, 10446, 10446, 10446, 10446, 10446, 10446, 10446, 10447, 10447, 10447, 10447, 10447, 10447, 10447, 10447, 10447, 10447, 10447, 10448, 10448, 10448, 10448, 10448, 10448, 10448, 10448, 10448, 10448, 10448, 10449, 10449, 10449, 10449, 10449, 10449, 10449, 10449, 10449, 10449, 10449, 10449, 10450, 10450, 10450, 10450, 10450, 10450, 10450, 10450, 10450, 10450, 10450, 10451, 10451, 10451, 10451, 10451, 10451, 10451, 10451, 10451, 10451, 10451, 10451, 10452, 10452, 10452, 10452, 10452, 10452, 10452, 10452, 10452, 10452, 10452, 10453, 10453, 10453, 10453, 10453, 10453, 10453, 10453, 10453, 10453, 10453, 10453, 10454, 10454, 10454, 10454, 10454, 10454, 10454, 10454, 10454, 10454, 10454, 10455, 10455, 10455, 10455, 10455, 10455, 10455, 10455, 10455, 10455, 10455, 10455, 10456, 10456, 10456, 10456, 10456, 10456, 10456, 10456, 10456, 10456, 10456, 10457, 10457, 10457, 10457, 10457, 10457, 10457, 10457, 10457, 10457, 10457, 10457, 10458, 10458, 10458, 10458, 10458, 10458, 10458, 10458, 10458, 10458, 10458, 10459, 10459, 10459, 10459, 10459, 10459, 10459, 10459, 10459, 10459, 10459, 10459, 10460, 10460, 10460, 10460, 10460, 10460, 10460, 10460, 10460, 10460, 10460, 10461, 10461, 10461, 10461, 10461, 10461, 10461, 10461, 10461, 10461, 10461, 10461, 10462, 10462, 10462, 10462, 10462, 10462, 10462, 10462, 10462, 10462, 10462, 10463, 10463, 10463, 10463, 10463, 10463, 10463, 10463, 10463, 10463, 10463, 10463, 10464, 10464, 10464, 10464, 10464, 10464, 10464, 10464, 10464, 10464, 10464, 10465, 10465, 10465, 10465, 10465, 10465, 10465, 10465, 10465, 10465, 10465, 10465, 10466, 10466, 10466, 10466, 10466, 10466, 10466, 10466, 10466, 10466, 10466, 10466, 10467, 10467, 10467, 10467, 10467, 10467, 10467, 10467, 10467, 10467, 10467, 10468, 10468, 10468, 10468, 10468, 10468, 10468, 10468, 10468, 10468, 10468, 10468, 10469, 10469, 10469, 10469, 10469, 10469, 10469, 10469, 10469, 10469, 10469, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10470, 10471, 10471, 10471, 10471, 10471, 10471, 10471, 10471, 10471, 10471, 10471, 10471, 10472, 10472, 10472, 10472, 10472, 10472, 10472, 10472, 10472, 10472, 10472, 10473, 10473, 10473, 10473, 10473, 10473, 10473, 10473, 10473, 10473, 10473, 10473, 10474, 10474, 10474, 10474, 10474, 10474, 10474, 10474, 10474, 10474, 10474, 10474, 10475, 10475, 10475, 10475, 10475, 10475, 10475, 10475, 10475, 10475, 10475, 10476, 10476, 10476, 10476, 10476, 10476, 10476, 10476, 10476, 10476, 10476, 10476, 10477, 10477, 10477, 10477, 10477, 10477, 10477, 10477, 10477, 10477, 10477, 10477, 10478, 10478, 10478, 10478, 10478, 10478, 10478, 10478, 10478, 10478, 10478, 10478, 10479, 10479, 10479, 10479, 10479, 10479, 10479, 10479, 10479, 10479, 10479, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10481, 10481, 10481, 10481, 10481, 10481, 10481, 10481, 10481, 10481, 10481, 10481, 10482, 10482, 10482, 10482, 10482, 10482, 10482, 10482, 10482, 10482, 10482, 10482, 10483, 10483, 10483, 10483, 10483, 10483, 10483, 10483, 10483, 10483, 10483, 10484, 10484, 10484, 10484, 10484, 10484, 10484, 10484, 10484, 10484, 10484, 10484, 10485, 10485, 10485, 10485, 10485, 10485, 10485, 10485, 10485, 10485, 10485, 10485, 10486, 10486, 10486, 10486, 10486, 10486, 10486, 10486, 10486, 10486, 10486, 10486, 10487, 10487, 10487, 10487, 10487, 10487, 10487, 10487, 10487, 10487, 10487, 10487, 10488, 10488, 10488, 10488, 10488, 10488, 10488, 10488, 10488, 10488, 10488, 10489, 10489, 10489, 10489, 10489, 10489, 10489, 10489, 10489, 10489, 10489, 10489, 10490, 10490, 10490, 10490, 10490, 10490, 10490, 10490, 10490, 10490, 10490, 10490, 10491, 10491, 10491, 10491, 10491, 10491, 10491, 10491, 10491, 10491, 10491, 10491, 10492, 10492, 10492, 10492, 10492, 10492, 10492, 10492, 10492, 10492, 10492, 10492, 10493, 10493, 10493, 10493, 10493, 10493, 10493, 10493, 10493, 10493, 10493, 10493, 10494, 10494, 10494, 10494, 10494, 10494, 10494, 10494, 10494, 10494, 10494, 10494, 10495, 10495, 10495, 10495, 10495, 10495, 10495, 10495, 10495, 10495, 10495, 10496, 10496, 10496, 10496, 10496, 10496, 10496, 10496, 10496, 10496, 10496, 10496, 10497, 10497, 10497, 10497, 10497, 10497, 10497, 10497, 10497, 10497, 10497, 10497, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10499, 10499, 10499, 10499, 10499, 10499, 10499, 10499, 10499, 10499, 10499, 10499, 10500, 10500, 10500, 10500, 10500, 10500, 10500, 10500, 10500, 10500, 10500, 10500, 10501, 10501, 10501, 10501, 10501, 10501, 10501, 10501, 10501, 10501, 10501, 10501, 10502, 10502, 10502, 10502, 10502, 10502, 10502, 10502, 10502, 10502, 10502, 10502, 10503, 10503, 10503, 10503, 10503, 10503, 10503, 10503, 10503, 10503, 10503, 10503, 10504, 10504, 10504, 10504, 10504, 10504, 10504, 10504, 10504, 10504, 10504, 10504, 10505, 10505, 10505, 10505, 10505, 10505, 10505, 10505, 10505, 10505, 10505, 10505, 10506, 10506, 10506, 10506, 10506, 10506, 10506, 10506, 10506, 10506, 10506, 10506, 10507, 10507, 10507, 10507, 10507, 10507, 10507, 10507, 10507, 10507, 10507, 10507, 10508, 10508, 10508, 10508, 10508, 10508, 10508, 10508, 10508, 10508, 10508, 10508, 10509, 10509, 10509, 10509, 10509, 10509, 10509, 10509, 10509, 10509, 10509, 10509, 10510, 10510, 10510, 10510, 10510, 10510, 10510, 10510, 10510, 10510, 10510, 10510, 10511, 10511, 10511, 10511, 10511, 10511, 10511, 10511, 10511, 10511, 10511, 10511, 10512, 10512, 10512, 10512, 10512, 10512, 10512, 10512, 10512, 10512, 10512, 10512, 10513, 10513, 10513, 10513, 10513, 10513, 10513, 10513, 10513, 10513, 10513, 10513, 10513, 10514, 10514, 10514, 10514, 10514, 10514, 10514, 10514, 10514, 10514, 10514, 10514, 10515, 10515, 10515, 10515, 10515, 10515, 10515, 10515, 10515, 10515, 10515, 10515, 10516, 10516, 10516, 10516, 10516, 10516, 10516, 10516, 10516, 10516, 10516, 10516, 10517, 10517, 10517, 10517, 10517, 10517, 10517, 10517, 10517, 10517, 10517, 10517, 10518, 10518, 10518, 10518, 10518, 10518, 10518, 10518, 10518, 10518, 10518, 10518, 10519, 10519, 10519, 10519, 10519, 10519, 10519, 10519, 10519, 10519, 10519, 10519, 10520, 10520, 10520, 10520, 10520, 10520, 10520, 10520, 10520, 10520, 10520, 10520, 10520, 10521, 10521, 10521, 10521, 10521, 10521, 10521, 10521, 10521, 10521, 10521, 10521, 10522, 10522, 10522, 10522, 10522, 10522, 10522, 10522, 10522, 10522, 10522, 10522, 10523, 10523, 10523, 10523, 10523, 10523, 10523, 10523, 10523, 10523, 10523, 10523, 10524, 10524, 10524, 10524, 10524, 10524, 10524, 10524, 10524, 10524, 10524, 10524, 10525, 10525, 10525, 10525, 10525, 10525, 10525, 10525, 10525, 10525, 10525, 10525, 10525, 10526, 10526, 10526, 10526, 10526, 10526, 10526, 10526, 10526, 10526, 10526, 10526, 10527, 10527, 10527, 10527, 10527, 10527, 10527, 10527, 10527, 10527, 10527, 10527, 10528, 10528, 10528, 10528, 10528, 10528, 10528, 10528, 10528, 10528, 10528, 10528, 10529, 10529, 10529, 10529, 10529, 10529, 10529, 10529, 10529, 10529, 10529, 10529, 10529, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10530, 10531, 10531, 10531, 10531, 10531, 10531, 10531, 10531, 10531, 10531, 10531, 10531, 10532, 10532, 10532, 10532, 10532, 10532, 10532, 10532, 10532, 10532, 10532, 10532, 10532, 10533, 10533, 10533, 10533, 10533, 10533, 10533, 10533, 10533, 10533, 10533, 10533, 10534, 10534, 10534, 10534, 10534, 10534, 10534, 10534, 10534, 10534, 10534, 10534, 10535, 10535, 10535, 10535, 10535, 10535, 10535, 10535, 10535, 10535, 10535, 10535, 10535, 10536, 10536, 10536, 10536, 10536, 10536, 10536, 10536, 10536, 10536, 10536, 10536, 10537, 10537, 10537, 10537, 10537, 10537, 10537, 10537, 10537, 10537, 10537, 10537, 10538, 10538, 10538, 10538, 10538, 10538, 10538, 10538, 10538, 10538, 10538, 10538, 10538, 10539, 10539, 10539, 10539, 10539, 10539, 10539, 10539, 10539, 10539, 10539, 10539, 10540, 10540, 10540, 10540, 10540, 10540, 10540, 10540, 10540, 10540, 10540, 10540, 10541, 10541, 10541, 10541, 10541, 10541, 10541, 10541, 10541, 10541, 10541, 10541, 10541, 10542, 10542, 10542, 10542, 10542, 10542, 10542, 10542, 10542, 10542, 10542, 10542, 10543, 10543, 10543, 10543, 10543, 10543, 10543, 10543, 10543, 10543, 10543, 10543, 10543, 10544, 10544, 10544, 10544, 10544, 10544, 10544, 10544, 10544, 10544, 10544, 10544, 10545, 10545, 10545, 10545, 10545, 10545, 10545, 10545, 10545, 10545, 10545, 10545, 10545, 10546, 10546, 10546, 10546, 10546, 10546, 10546, 10546, 10546, 10546, 10546, 10546, 10547, 10547, 10547, 10547, 10547, 10547, 10547, 10547, 10547, 10547, 10547, 10547, 10547, 10548, 10548, 10548, 10548, 10548, 10548, 10548, 10548, 10548, 10548, 10548, 10548, 10549, 10549, 10549, 10549, 10549, 10549, 10549, 10549, 10549, 10549, 10549, 10549, 10549, 10550, 10550, 10550, 10550, 10550, 10550, 10550, 10550, 10550, 10550, 10550, 10550, 10551, 10551, 10551, 10551, 10551, 10551, 10551, 10551, 10551, 10551, 10551, 10551, 10551, 10552, 10552, 10552, 10552, 10552, 10552, 10552, 10552, 10552, 10552, 10552, 10552, 10553, 10553, 10553, 10553, 10553, 10553, 10553, 10553, 10553, 10553, 10553, 10553, 10553, 10554, 10554, 10554, 10554, 10554, 10554, 10554, 10554, 10554, 10554, 10554, 10554, 10555, 10555, 10555, 10555, 10555, 10555, 10555, 10555, 10555, 10555, 10555, 10555, 10555, 10556, 10556, 10556, 10556, 10556, 10556, 10556, 10556, 10556, 10556, 10556, 10556, 10557, 10557, 10557, 10557, 10557, 10557, 10557, 10557, 10557, 10557, 10557, 10557, 10557, 10558, 10558, 10558, 10558, 10558, 10558, 10558, 10558, 10558, 10558, 10558, 10558, 10558, 10559, 10559, 10559, 10559, 10559, 10559, 10559, 10559, 10559, 10559, 10559, 10559, 10560, 10560, 10560, 10560, 10560, 10560, 10560, 10560, 10560, 10560, 10560, 10560, 10560, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10562, 10563, 10563, 10563, 10563, 10563, 10563, 10563, 10563, 10563, 10563, 10563, 10563, 10563, 10564, 10564, 10564, 10564, 10564, 10564, 10564, 10564, 10564, 10564, 10564, 10564, 10565, 10565, 10565, 10565, 10565, 10565, 10565, 10565, 10565, 10565, 10565, 10565, 10565, 10566, 10566, 10566, 10566, 10566, 10566, 10566, 10566, 10566, 10566, 10566, 10566, 10566, 10567, 10567, 10567, 10567, 10567, 10567, 10567, 10567, 10567, 10567, 10567, 10567, 10568, 10568, 10568, 10568, 10568, 10568, 10568, 10568, 10568, 10568, 10568, 10568, 10568, 10569, 10569, 10569, 10569, 10569, 10569, 10569, 10569, 10569, 10569, 10569, 10569, 10569, 10570, 10570, 10570, 10570, 10570, 10570, 10570, 10570, 10570, 10570, 10570, 10570, 10570, 10571, 10571, 10571, 10571, 10571, 10571, 10571, 10571, 10571, 10571, 10571, 10571, 10572, 10572, 10572, 10572, 10572, 10572, 10572, 10572, 10572, 10572, 10572, 10572, 10572, 10573, 10573, 10573, 10573, 10573, 10573, 10573, 10573, 10573, 10573, 10573, 10573, 10573, 10574, 10574, 10574, 10574, 10574, 10574, 10574, 10574, 10574, 10574, 10574, 10574, 10574, 10575, 10575, 10575, 10575, 10575, 10575, 10575, 10575, 10575, 10575, 10575, 10575, 10576, 10576, 10576, 10576, 10576, 10576, 10576, 10576, 10576, 10576, 10576, 10576, 10576, 10577, 10577, 10577, 10577, 10577, 10577, 10577, 10577, 10577, 10577, 10577, 10577, 10577, 10578, 10578, 10578, 10578, 10578, 10578, 10578, 10578, 10578, 10578, 10578, 10578, 10578, 10579, 10579, 10579, 10579, 10579, 10579, 10579, 10579, 10579, 10579, 10579, 10579, 10579, 10580, 10580, 10580, 10580, 10580, 10580, 10580, 10580, 10580, 10580, 10580, 10580, 10580, 10581, 10581, 10581, 10581, 10581, 10581, 10581, 10581, 10581, 10581, 10581, 10581, 10581, 10582, 10582, 10582, 10582, 10582, 10582, 10582, 10582, 10582, 10582, 10582, 10582, 10583, 10583, 10583, 10583, 10583, 10583, 10583, 10583, 10583, 10583, 10583, 10583, 10583, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10585, 10585, 10585, 10585, 10585, 10585, 10585, 10585, 10585, 10585, 10585, 10585, 10585, 10586, 10586, 10586, 10586, 10586, 10586, 10586, 10586, 10586, 10586, 10586, 10586, 10586, 10587, 10587, 10587, 10587, 10587, 10587, 10587, 10587, 10587, 10587, 10587, 10587, 10587, 10588, 10588, 10588, 10588, 10588, 10588, 10588, 10588, 10588, 10588, 10588, 10588, 10588, 10589, 10589, 10589, 10589, 10589, 10589, 10589, 10589, 10589, 10589, 10589, 10589, 10589, 10590, 10590, 10590, 10590, 10590, 10590, 10590, 10590, 10590, 10590, 10590, 10590, 10590, 10591, 10591, 10591, 10591, 10591, 10591, 10591, 10591, 10591, 10591, 10591, 10591, 10591, 10592, 10592, 10592, 10592, 10592, 10592, 10592, 10592, 10592, 10592, 10592, 10592, 10592, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10593, 10594, 10594, 10594, 10594, 10594, 10594, 10594, 10594, 10594, 10594, 10594, 10594, 10594, 10595, 10595, 10595, 10595, 10595, 10595, 10595, 10595, 10595, 10595, 10595, 10595, 10595, 10596, 10596, 10596, 10596, 10596, 10596, 10596, 10596, 10596, 10596, 10596, 10596, 10596, 10597, 10597, 10597, 10597, 10597, 10597, 10597, 10597, 10597, 10597, 10597, 10597, 10597, 10598, 10598, 10598, 10598, 10598, 10598, 10598, 10598, 10598, 10598, 10598, 10598, 10598, 10599, 10599, 10599, 10599, 10599, 10599, 10599, 10599, 10599, 10599, 10599, 10599, 10599, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 10600, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10601, 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10602, 10603, 10603, 10603, 10603, 10603, 10603, 10603, 10603, 10603, 10603, 10603, 10603, 10603, 10603, 10604, 10604, 10604, 10604, 10604, 10604, 10604, 10604, 10604, 10604, 10604, 10604, 10604, 10605, 10605, 10605, 10605, 10605, 10605, 10605, 10605, 10605, 10605, 10605, 10605, 10605, 10606, 10606, 10606, 10606, 10606, 10606, 10606, 10606, 10606, 10606, 10606, 10606, 10606, 10607, 10607, 10607, 10607, 10607, 10607, 10607, 10607, 10607, 10607, 10607, 10607, 10607, 10608, 10608, 10608, 10608, 10608, 10608, 10608, 10608, 10608, 10608, 10608, 10608, 10608, 10609, 10609, 10609, 10609, 10609, 10609, 10609, 10609, 10609, 10609, 10609, 10609, 10609, 10609, 10610, 10610, 10610, 10610, 10610, 10610, 10610, 10610, 10610, 10610, 10610, 10610, 10610, 10611, 10611, 10611, 10611, 10611, 10611, 10611, 10611, 10611, 10611, 10611, 10611, 10611, 10612, 10612, 10612, 10612, 10612, 10612, 10612, 10612, 10612, 10612, 10612, 10612, 10612, 10613, 10613, 10613, 10613, 10613, 10613, 10613, 10613, 10613, 10613, 10613, 10613, 10613, 10614, 10614, 10614, 10614, 10614, 10614, 10614, 10614, 10614, 10614, 10614, 10614, 10614, 10614, 10615, 10615, 10615, 10615, 10615, 10615, 10615, 10615, 10615, 10615, 10615, 10615, 10615, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10617, 10617, 10617, 10617, 10617, 10617, 10617, 10617, 10617, 10617, 10617, 10617, 10617, 10618, 10618, 10618, 10618, 10618, 10618, 10618, 10618, 10618, 10618, 10618, 10618, 10618, 10618, 10619, 10619, 10619, 10619, 10619, 10619, 10619, 10619, 10619, 10619, 10619, 10619, 10619, 10620, 10620, 10620, 10620, 10620, 10620, 10620, 10620, 10620, 10620, 10620, 10620, 10620, 10621, 10621, 10621, 10621, 10621, 10621, 10621, 10621, 10621, 10621, 10621, 10621, 10621, 10621, 10622, 10622, 10622, 10622, 10622, 10622, 10622, 10622, 10622, 10622, 10622, 10622, 10622, 10623, 10623, 10623, 10623, 10623, 10623, 10623, 10623, 10623, 10623, 10623, 10623, 10623, 10624, 10624, 10624, 10624, 10624, 10624, 10624, 10624, 10624, 10624, 10624, 10624, 10624, 10624, 10625, 10625, 10625, 10625, 10625, 10625, 10625, 10625, 10625, 10625, 10625, 10625, 10625, 10626, 10626, 10626, 10626, 10626, 10626, 10626, 10626, 10626, 10626, 10626, 10626, 10626, 10626, 10627, 10627, 10627, 10627, 10627, 10627, 10627, 10627, 10627, 10627, 10627, 10627, 10627, 10628, 10628, 10628, 10628, 10628, 10628, 10628, 10628, 10628, 10628, 10628, 10628, 10628, 10629, 10629, 10629, 10629, 10629, 10629, 10629, 10629, 10629, 10629, 10629, 10629, 10629, 10629, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10631, 10632, 10632, 10632, 10632, 10632, 10632, 10632, 10632, 10632, 10632, 10632, 10632, 10632, 10633, 10633, 10633, 10633, 10633, 10633, 10633, 10633, 10633, 10633, 10633, 10633, 10633, 10633, 10634, 10634, 10634, 10634, 10634, 10634, 10634, 10634, 10634, 10634, 10634, 10634, 10634, 10635, 10635, 10635, 10635, 10635, 10635, 10635, 10635, 10635, 10635, 10635, 10635, 10635, 10635, 10636, 10636, 10636, 10636, 10636, 10636, 10636, 10636, 10636, 10636, 10636, 10636, 10636, 10637, 10637, 10637, 10637, 10637, 10637, 10637, 10637, 10637, 10637, 10637, 10637, 10637, 10637, 10638, 10638, 10638, 10638, 10638, 10638, 10638, 10638, 10638, 10638, 10638, 10638, 10638, 10639, 10639, 10639, 10639, 10639, 10639, 10639, 10639, 10639, 10639, 10639, 10639, 10639, 10639, 10640, 10640, 10640, 10640, 10640, 10640, 10640, 10640, 10640, 10640, 10640, 10640, 10640, 10640, 10641, 10641, 10641, 10641, 10641, 10641, 10641, 10641, 10641, 10641, 10641, 10641, 10641, 10642, 10642, 10642, 10642, 10642, 10642, 10642, 10642, 10642, 10642, 10642, 10642, 10642, 10642, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10643, 10644, 10644, 10644, 10644, 10644, 10644, 10644, 10644, 10644, 10644, 10644, 10644, 10644, 10644, 10645, 10645, 10645, 10645, 10645, 10645, 10645, 10645, 10645, 10645, 10645, 10645, 10645, 10645, 10646, 10646, 10646, 10646, 10646, 10646, 10646, 10646, 10646, 10646, 10646, 10646, 10646, 10647, 10647, 10647, 10647, 10647, 10647, 10647, 10647, 10647, 10647, 10647, 10647, 10647, 10647, 10648, 10648, 10648, 10648, 10648, 10648, 10648, 10648, 10648, 10648, 10648, 10648, 10648, 10648, 10649, 10649, 10649, 10649, 10649, 10649, 10649, 10649, 10649, 10649, 10649, 10649, 10649, 10650, 10650, 10650, 10650, 10650, 10650, 10650, 10650, 10650, 10650, 10650, 10650, 10650, 10650, 10651, 10651, 10651, 10651, 10651, 10651, 10651, 10651, 10651, 10651, 10651, 10651, 10651, 10651, 10652, 10652, 10652, 10652, 10652, 10652, 10652, 10652, 10652, 10652, 10652, 10652, 10652, 10653, 10653, 10653, 10653, 10653, 10653, 10653, 10653, 10653, 10653, 10653, 10653, 10653, 10653, 10654, 10654, 10654, 10654, 10654, 10654, 10654, 10654, 10654, 10654, 10654, 10654, 10654, 10654, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10656, 10656, 10656, 10656, 10656, 10656, 10656, 10656, 10656, 10656, 10656, 10656, 10656, 10657, 10657, 10657, 10657, 10657, 10657, 10657, 10657, 10657, 10657, 10657, 10657, 10657, 10657, 10658, 10658, 10658, 10658, 10658, 10658, 10658, 10658, 10658, 10658, 10658, 10658, 10658, 10658, 10659, 10659, 10659, 10659, 10659, 10659, 10659, 10659, 10659, 10659, 10659, 10659, 10659, 10659, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10660, 10661, 10661, 10661, 10661, 10661, 10661, 10661, 10661, 10661, 10661, 10661, 10661, 10661, 10662, 10662, 10662, 10662, 10662, 10662, 10662, 10662, 10662, 10662, 10662, 10662, 10662, 10662, 10663, 10663, 10663, 10663, 10663, 10663, 10663, 10663, 10663, 10663, 10663, 10663, 10663, 10663, 10664, 10664, 10664, 10664, 10664, 10664, 10664, 10664, 10664, 10664, 10664, 10664, 10664, 10664, 10665, 10665, 10665, 10665, 10665, 10665, 10665, 10665, 10665, 10665, 10665, 10665, 10665, 10665, 10666, 10666, 10666, 10666, 10666, 10666, 10666, 10666, 10666, 10666, 10666, 10666, 10666, 10666, 10667, 10667, 10667, 10667, 10667, 10667, 10667, 10667, 10667, 10667, 10667, 10667, 10667, 10667, 10668, 10668, 10668, 10668, 10668, 10668, 10668, 10668, 10668, 10668, 10668, 10668, 10668, 10668, 10669, 10669, 10669, 10669, 10669, 10669, 10669, 10669, 10669, 10669, 10669, 10669, 10669, 10670, 10670, 10670, 10670, 10670, 10670, 10670, 10670, 10670, 10670, 10670, 10670, 10670, 10670, 10671, 10671, 10671, 10671, 10671, 10671, 10671, 10671, 10671, 10671, 10671, 10671, 10671, 10671, 10672, 10672, 10672, 10672, 10672, 10672, 10672, 10672, 10672, 10672, 10672, 10672, 10672, 10672, 10673, 10673, 10673, 10673, 10673, 10673, 10673, 10673, 10673, 10673, 10673, 10673, 10673, 10673, 10674, 10674, 10674, 10674, 10674, 10674, 10674, 10674, 10674, 10674, 10674, 10674, 10674, 10674, 10675, 10675, 10675, 10675, 10675, 10675, 10675, 10675, 10675, 10675, 10675, 10675, 10675, 10675, 10676, 10676, 10676, 10676, 10676, 10676, 10676, 10676, 10676, 10676, 10676, 10676, 10676, 10676, 10677, 10677, 10677, 10677, 10677, 10677, 10677, 10677, 10677, 10677, 10677, 10677, 10677, 10677, 10678, 10678, 10678, 10678, 10678, 10678, 10678, 10678, 10678, 10678, 10678, 10678, 10678, 10678, 10679, 10679, 10679, 10679, 10679, 10679, 10679, 10679, 10679, 10679, 10679, 10679, 10679, 10679, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10681, 10681, 10681, 10681, 10681, 10681, 10681, 10681, 10681, 10681, 10681, 10681, 10681, 10681, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10682, 10683, 10683, 10683, 10683, 10683, 10683, 10683, 10683, 10683, 10683, 10683, 10683, 10683, 10683, 10684, 10684, 10684, 10684, 10684, 10684, 10684, 10684, 10684, 10684, 10684, 10684, 10684, 10684, 10685, 10685, 10685, 10685, 10685, 10685, 10685, 10685, 10685, 10685, 10685, 10685, 10685, 10685, 10686, 10686, 10686, 10686, 10686, 10686, 10686, 10686, 10686, 10686, 10686, 10686, 10686, 10686, 10687, 10687, 10687, 10687, 10687, 10687, 10687, 10687, 10687, 10687, 10687, 10687, 10687, 10687, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10689, 10689, 10689, 10689, 10689, 10689, 10689, 10689, 10689, 10689, 10689, 10689, 10689, 10689, 10690, 10690, 10690, 10690, 10690, 10690, 10690, 10690, 10690, 10690, 10690, 10690, 10690, 10690, 10691, 10691, 10691, 10691, 10691, 10691, 10691, 10691, 10691, 10691, 10691, 10691, 10691, 10691, 10692, 10692, 10692, 10692, 10692, 10692, 10692, 10692, 10692, 10692, 10692, 10692, 10692, 10692, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10693, 10694, 10694, 10694, 10694, 10694, 10694, 10694, 10694, 10694, 10694, 10694, 10694, 10694, 10694, 10695, 10695, 10695, 10695, 10695, 10695, 10695, 10695, 10695, 10695, 10695, 10695, 10695, 10695, 10696, 10696, 10696, 10696, 10696, 10696, 10696, 10696, 10696, 10696, 10696, 10696, 10696, 10696, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10697, 10698, 10698, 10698, 10698, 10698, 10698, 10698, 10698, 10698, 10698, 10698, 10698, 10698, 10698, 10699, 10699, 10699, 10699, 10699, 10699, 10699, 10699, 10699, 10699, 10699, 10699, 10699, 10699, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10700, 10701, 10701, 10701, 10701, 10701, 10701, 10701, 10701, 10701, 10701, 10701, 10701, 10701, 10701, 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10703, 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10704, 10705, 10705, 10705, 10705, 10705, 10705, 10705, 10705, 10705, 10705, 10705, 10705, 10705, 10705, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10706, 10707, 10707, 10707, 10707, 10707, 10707, 10707, 10707, 10707, 10707, 10707, 10707, 10707, 10707, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10708, 10709, 10709, 10709, 10709, 10709, 10709, 10709, 10709, 10709, 10709, 10709, 10709, 10709, 10709, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10710, 10711, 10711, 10711, 10711, 10711, 10711, 10711, 10711, 10711, 10711, 10711, 10711, 10711, 10711, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10712, 10713, 10713, 10713, 10713, 10713, 10713, 10713, 10713, 10713, 10713, 10713, 10713, 10713, 10713, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10714, 10715, 10715, 10715, 10715, 10715, 10715, 10715, 10715, 10715, 10715, 10715, 10715, 10715, 10715, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10716, 10717, 10717, 10717, 10717, 10717, 10717, 10717, 10717, 10717, 10717, 10717, 10717, 10717, 10717, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10718, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10720, 10721, 10721, 10721, 10721, 10721, 10721, 10721, 10721, 10721, 10721, 10721, 10721, 10721, 10721, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10722, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10723, 10724, 10724, 10724, 10724, 10724, 10724, 10724, 10724, 10724, 10724, 10724, 10724, 10724, 10724, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10725, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10726, 10727, 10727, 10727, 10727, 10727, 10727, 10727, 10727, 10727, 10727, 10727, 10727, 10727, 10727, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10728, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10729, 10730, 10730, 10730, 10730, 10730, 10730, 10730, 10730, 10730, 10730, 10730, 10730, 10730, 10730, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10731, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10732, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10733, 10734, 10734, 10734, 10734, 10734, 10734, 10734, 10734, 10734, 10734, 10734, 10734, 10734, 10734, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10735, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10736, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10737, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10738, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10739, 10740, 10740, 10740, 10740, 10740, 10740, 10740, 10740, 10740, 10740, 10740, 10740, 10740, 10740, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10741, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10743, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10744, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10745, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10746, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10747, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10748, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10749, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10750, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10751, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10752, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10753, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10754, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10755, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10756, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10757, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10758, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10759, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10760, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10763, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10764, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10765, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10766, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10767, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10768, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10769, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10770, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10771, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10772, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10773, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10774, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10775, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10777, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10779, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10780, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10781, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10782, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10783, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10784, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10785, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10786, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10787, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10788, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10789, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10791, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10792, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10793, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10794, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10795, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10796, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10797, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10798, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10799, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10800, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10801, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10802, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10803, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10804, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10805, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10806, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10807, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10808, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10809, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10810, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10811, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10813, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10814, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10815, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10816, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10817, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10818, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10819, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10820, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10821, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10822, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10823, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10824, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10825, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10826, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10827, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10828, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10829, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10830, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10831, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10832, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10833, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10834, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10835, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10836, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10837, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10838, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10839, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10840, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10841, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10842, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10843, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10844, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10845, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10846, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10847, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10848, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10849, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10850, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10852, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10853, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10854, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10855, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10856, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10857, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10859, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10860, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10861, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10862, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10864, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10865, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10866, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10867, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10868, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10869, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10870, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10871, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10872, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10873, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10874, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10875, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10876, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10877, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10878, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10879, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10880, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10881, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10882, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10883, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10884, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10885, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10886, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10887, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10888, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10889, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10890, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10891, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10892, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10893, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10894, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10895, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10896, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10897, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10898, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10899, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10900, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10901, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10902, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10903, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10904, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10905, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10906, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10907, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10908, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10909, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10910, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10911, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10912, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10913, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10914, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10915, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10916, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10917, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10918, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10919, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10920, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10921, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10922, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10923, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10924, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10925, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10926, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10927, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10928, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10929, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10930, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10931, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10932, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10933, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10934, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10935, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10936, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10937, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10938, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10939, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10941, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10942, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10943, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10944, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10945, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10946, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10947, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10948, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10949, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10950, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10951, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10952, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10953, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10954, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10957, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10958, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10959, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10960, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10961, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10962, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10963, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10964, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10965, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10966, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10967, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10968, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10969, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10970, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10971, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10972, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10973, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10974, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10975, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10976, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10977, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10978, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10979, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10980, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10981, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10982, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10984, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10985, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10986, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10987, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10988, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10989, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10990, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10991, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10992, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10993, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10994, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10995, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10996, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10997, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10998, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 10999, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11000, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11001, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11002, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11003, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11004, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11005, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11006, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11007, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11008, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11009, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11010, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11011, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11014, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11015, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11016, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11017, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11018, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11019, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11020, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11021, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11022, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11023, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11024, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11025, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11026, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11027, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11028, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11029, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11030, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11031, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11032, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11033, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11034, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11035, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11036, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11037, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11038, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11039, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11040, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11041, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11042, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11043, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11044, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11045, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11046, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11047, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11048, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11049, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11050, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11051, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11052, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11053, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11054, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11055, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11056, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11057, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11058, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11059, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11060, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11061, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11062, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11063, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11064, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11065, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11066, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11067, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11068, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11069, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11070, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11071, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11072, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11073, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11074, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11075, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11076, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11077, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11078, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11079, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11080, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11081, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11082, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11083, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11084, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11085, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11086, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11087, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11088, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11089, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11090, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11091, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11092, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11093, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11094, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11095, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11096, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11097, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11098, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11099, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11100, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11101, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11102, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11103, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11104, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11105, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11106, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11107, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11108, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11109, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11110, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11111, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11112, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11113, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11114, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11115, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11116, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11117, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11118, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11119, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11120, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11121, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11122, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11123, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11124, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11125, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11126, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11127, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11128, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11129, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11130, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11131, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11132, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11133, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11134, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11135, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11136, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11137, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11138, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11139, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11140, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11141, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11142, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11143, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11144, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11145, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11146, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11147, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11148, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11149, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11150, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11151, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11152, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11153, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11154, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11155, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11156, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11157, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11159, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11160, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11161, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11162, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11163, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11164, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11165, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11166, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11167, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11168, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11169, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11170, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11171, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11172, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11173, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11174, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11175, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11176, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11177, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11178, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11179, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11180, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11181, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11182, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11183, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11184, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11185, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11186, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11187, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11188, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11189, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11190, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11191, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11192, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11193, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11194, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11195, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11196, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11197, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11198, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11199, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11200, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11201, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11202, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11203, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11204, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11205, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11206, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11207, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11208, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11209, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11210, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11211, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11212, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11213, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11214, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11215, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11216, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11217, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11218, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11219, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11220, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11221, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11222, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11223, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11224, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11225, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11226, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11227, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11228, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11229, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11230, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11231, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11232, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11233, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11234, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11235, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11236, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11237, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11238, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11239, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11240, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11241, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11242, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11243, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11244, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11245, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11246, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11247, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11248, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11249, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11250, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11251, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11252, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11253, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11254, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11255, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11256, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11257, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11258, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11259, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11260, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11261, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11262, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11263, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11264, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11265, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11266, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11267, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11268, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11269, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11270, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11271, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11272, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11273, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11274, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11275, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11276, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11277, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11278, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11279, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11280, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11281, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11282, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11283, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11284, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11285, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11286, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11287, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11288, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11289, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11290, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11291, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11292, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11293, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11294, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11295, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11296, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11297, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11298, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11299, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11300, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11301, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11302, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11303, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11304, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11305, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11306, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11307, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11308, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11309, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11310, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11311, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11312, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11313, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11314, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11315, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11316, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11317, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11318, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11319, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11320, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11321, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11322, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11323, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11324, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11325, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11326, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11327, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11328, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11329, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11330, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11331, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11332, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11333, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11334, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11335, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11336, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11337, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11338, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11339, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11340, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11341, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11342, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11343, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11344, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11345, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11346, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11347, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11348, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11349, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11350, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11351, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11352, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11353, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11354, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11355, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11356, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11357, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11358, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11359, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11360, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11361, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11362, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11363, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11364, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11365, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11366, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11367, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11368, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11369, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11370, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11371, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11372, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11373, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11374, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11375, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11376, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11377, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11378, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11379, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11380, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11381, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11382, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11383, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11384, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11385, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11386, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11387, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11388, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11389, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11390, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11391, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11392, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11393, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11394, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11395, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11396, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11397, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11398, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11399, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11400, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11401, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11402, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11403, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11404, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11405, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11406, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11407, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11408, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11409, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11410, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11411, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11412, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11413, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11414, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11415, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11416, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11417, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11418, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11419, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11420, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11421, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11422, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11423, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11424, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11425, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11426, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11427, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11428, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11429, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11430, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11431, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11432, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11433, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11434, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11435, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11436, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11437, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11438, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11439, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11440, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11441, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11442, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11443, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11444, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11445, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11446, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11447, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11448, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11449, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11450, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11451, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11452, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11453, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11454, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11455, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11456, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11457, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11458, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11459, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11460, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11461, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11462, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11463, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11464, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11465, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11466, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11467, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11468, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11469, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11470, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11471, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11472, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11473, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11474, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11475, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11476, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11477, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11478, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11479, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11480, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11481, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11482, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11483, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11484, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11485, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11486, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11487, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11488, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11489, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11490, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11491, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11492, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11493, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11494, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11495, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11496, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11497, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11498, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11499, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11500, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11501, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11502, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11503, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11504, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11505, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11506, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11507, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11508, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11509, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11510, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11511, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11512, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11513, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11514, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11516, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11517, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11518, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11519, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11520, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11521, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11522, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11523, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11524, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11525, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11526, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11527, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11528, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11529, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11530, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11531, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11532, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11533, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11534, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11535, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11536, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11537, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11538, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11539, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11540, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11541, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11542, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11543, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11544, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11545, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11546, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11547, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11548, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11549, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11550, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11551, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11552, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11553, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11554, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11555, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11556, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11557, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11558, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11559, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11560, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11561, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11562, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11563, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11564, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11565, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11566, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11567, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11568, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11569, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11570, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11571, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11572, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11573, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11574, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11575, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11576, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11577, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11578, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11579, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11580, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11581, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11582, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11583, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11584, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11585, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11586, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11587, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11588, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11589, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11590, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11591, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11592, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11593, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11594, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11595, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11596, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11597, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11598, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11599, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11600, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11601, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11602, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11603, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11604, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11605, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11606, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11607, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11608, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11609, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11610, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11611, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11612, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11613, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11614, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11615, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11616, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11617, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11618, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11619, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11620, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11621, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11623, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11624, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11625, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11626, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11627, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11628, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11629, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11630, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11631, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11632, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11633, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11634, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11635, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11636, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11637, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11638, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11639, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11640, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11641, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11642, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11643, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11644, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11645, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11646, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11647, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11648, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11649, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11650, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11651, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11652, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11653, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11654, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11655, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11656, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11657, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11658, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11660, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11661, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11662, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11663, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11664, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11666, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11667, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11668, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11669, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11670, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11671, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11672, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11673, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11674, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11675, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11676, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11677, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11678, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11679, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11680, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11681, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11682, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11683, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11684, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11685, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11686, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11687, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11688, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11689, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11690, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11691, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11692, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11693, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11694, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11695, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11696, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11697, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11698, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11699, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11700, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11702, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11703, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11704, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11705, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11706, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11707, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11708, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11709, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11710, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11711, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11712, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11713, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11714, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11715, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11716, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11717, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11718, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11719, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11720, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11721, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11722, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11723, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11724, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11725, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11726, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11727, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11728, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11729, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11730, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11731, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11732, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11733, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11734, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11735, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11736, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11737, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11738, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11739, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11740, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11741, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11742, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11743, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11744, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11745, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11746, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11747, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11748, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11749, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11750, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11751, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11752, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11753, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11754, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11755, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11756, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11757, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11758, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11759, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11760, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11761, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11762, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11763, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11764, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11765, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11766, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11767, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11768, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11769, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11770, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11771, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11772, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11773, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11774, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11775, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11776, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11778, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11779, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11780, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11781, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11782, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11783, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11784, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11785, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11786, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11787, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11788, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11789, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11790, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11791, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11792, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11793, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11794, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11795, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11796, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11797, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11798, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11799, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11800, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11801, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11802, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11803, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11804, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11805, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11806, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11807, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11809, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11810, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11811, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11812, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11813, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11814, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11815, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11816, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11817, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11818, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11819, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11820, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11821, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11822, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11823, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11825, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11826, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11827, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11828, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11829, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11830, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11831, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11832, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11833, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11834, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11835, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11836, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11837, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11838, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11839, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11841, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11842, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11843, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11844, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11845, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11846, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11847, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11848, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11849, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11850, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11851, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11852, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11853, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11854, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11855, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11856, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11857, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11858, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11859, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11860, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11861, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11862, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11863, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11864, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11865, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11866, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11867, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11868, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11869, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11870, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11871, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11873, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11874, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11875, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11877, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11878, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11879, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11881, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11882, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11883, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11884, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11885, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11886, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11887, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11889, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11890, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11891, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11893, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11894, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11895, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11897, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11898, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11899, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11900, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11901, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11902, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11903, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11904, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11905, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11906, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11907, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11908, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11909, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11910, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11911, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11912, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11913, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11914, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11915, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11916, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11917, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11918, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11919, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11920, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11921, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11922, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11923, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11924, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11925, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11926, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11927, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11928, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11929, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11930, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11931, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11932, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11933, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11934, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11935, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11936, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11937, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11938, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11939, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11940, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11941, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11942, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11943, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11944, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11945, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11946, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11947, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11948, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11949, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11950, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11951, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11952, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11953, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11954, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11955, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11956, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11957, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11958, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11959, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11960, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11961, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11962, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11963, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11964, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11965, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11966, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11967, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11968, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11969, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11970, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11971, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11972, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11973, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11974, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11975, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11976, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11977, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11978, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11979, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11980, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11981, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11982, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11984, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11985, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11986, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11987, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11988, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11989, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11990, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11991, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11992, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11993, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11994, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11995, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11996, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11997, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11998, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 11999, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12001, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12002, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12003, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12004, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12005, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12006, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12007, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12008, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12009, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12010, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12011, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12012, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12013, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12014, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12015, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12016, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12017, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12018, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12019, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12020, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12021, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12022, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12023, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12024, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12025, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12026, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12027, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12028, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12029, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12030, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12031, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12032, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12033, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12035, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12036, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12037, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12038, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12039, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12040, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12041, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12042, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12043, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12044, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12045, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12046, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12047, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12048, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12049, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12050, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12051, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12052, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12053, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12054, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12055, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12056, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12057, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12058, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12059, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12060, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12061, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12062, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12063, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12064, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12065, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12066, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12067, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12068, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12069, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12070, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12071, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12072, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12073, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12074, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12075, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12076, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12077, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12078, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12079, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12080, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12081, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12082, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12083, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12084, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12085, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12086, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12087, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12088, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12089, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12090, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12091, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12092, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12093, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12094, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12095, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12096, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12097, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12098, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12099, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12101, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12102, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12103, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12104, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12105, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12106, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12107, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12108, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12109, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12110, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12111, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12112, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12113, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12114, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12115, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12116, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12117, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12118, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12119, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12120, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12121, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12122, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12123, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12124, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12125, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12126, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12127, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12128, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12129, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12130, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12131, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12132, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12133, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12134, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12136, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12137, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12138, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12139, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12140, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12141, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12142, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12143, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12144, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12145, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12146, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12147, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12148, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12149, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12150, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12151, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12152, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12153, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12154, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12155, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12156, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12157, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12158, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12159, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12160, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12161, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12162, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12163, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12164, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12165, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12166, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12167, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12168, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12169, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12170, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12171, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12172, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12173, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12174, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12175, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12176, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12177, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12178, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12179, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12180, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12181, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12182, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12183, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12184, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12185, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12186, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12187, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12188, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12190, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12191, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12192, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12193, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12194, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12195, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12196, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12197, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12198, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12199, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12200, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12201, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12202, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12203, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12204, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12205, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12206, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12207, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12208, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12209, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12210, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12211, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12212, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12213, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12214, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12215, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12216, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12217, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12218, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12219, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12220, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12221, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12222, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12223, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12224, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12225, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12226, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12227, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12228, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12229, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12230, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12231, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12232, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12233, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12234, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12235, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12236, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12237, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12238, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12239, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12240, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12241, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12242, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12243, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12244, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12245, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12246, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12247, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12248, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12249, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12250, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12251, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12252, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12253, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12254, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12255, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12256, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12257, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12258, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12259, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12260, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12261, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12262, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12263, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12264, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12265, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12266, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12267, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12268, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12269, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270, 12270 };
+
+// weight*log1p(material), Q16, domain [0,8000]
+static const INT g_rgiAlphaLogMaterialQ16[] = { 0, -2036, -3227, -4072, -4728, -5264, -5716, -6109, -6455, -6764, -7044, -7300, -7535, -7753, -7955, -8145, -8323, -8491, -8650, -8800, -8944, -9080, -9211, -9336, -9456, -9571, -9682, -9789, -9892, -9991, -10088, -10181, -10271, -10359, -10444, -10527, -10607, -10686, -10762, -10837, -10909, -10980, -11049, -11116, -11183, -11247, -11310, -11372, -11433, -11492, -11550, -11607, -11663, -11718, -11772, -11825, -11877, -11928, -11978, -12028, -12076, -12124, -12171, -12217, -12263, -12308, -12352, -12395, -12438, -12480, -12522, -12563, -12604, -12644, -12683, -12722, -12760, -12798, -12836, -12873, -12909, -12945, -12981, -13016, -13051, -13085, -13119, -13153, -13186, -13219, -13251, -13283, -13315, -13346, -13378, -13408, -13439, -13469, -13499, -13528, -13557, -13586, -13615, -13643, -13672, -13699, -13727, -13754, -13781, -13808, -13835, -13861, -13887, -13913, -13939, -13964, -13989, -14014, -14039, -14064, -14088, -14112, -14136, -14160, -14184, -14207, -14230, -14253, -14276, -14299, -14321, -14344, -14366, -14388, -14410, -14431, -14453, -14474, -14496, -14517, -14538, -14558, -14579, -14599, -14620, -14640, -14660, -14680, -14700, -14719, -14739, -14758, -14777, -14797, -14816, -14835, -14853, -14872, -14890, -14909, -14927, -14945, -14963, -14981, -14999, -15017, -15035, -15052, -15070, -15087, -15104, -15121, -15138, -15155, -15172, -15189, -15206, -15222, -15239, -15255, -15271, -15287, -15303, -15319, -15335, -15351, -15367, -15383, -15398, -15414, -15429, -15445, -15460, -15475, -15490, -15505, -15520, -15535, -15550, -15564, -15579, -15594, -15608, -15623, -15637, -15651, -15665, -15680, -15694, -15708, -15722, -15736, -15749, -15763, -15777, -15791, -15804, -15818, -15831, -15844, -15858, -15871, -15884, -15897, -15910, -15923, -15936, -15949, -15962, -15975, -15988, -16000, -16013, -16026, -16038, -16051, -16063, -16075, -16088, -16100, -16112, -16124, -16137, -16149, -16161, -16173, -16184, -16196, -16208, -16220, -16232, -16243, -16255, -16267, -16278, -16290, -16301, -16312, -16324, -16335, -16346, -16358, -16369, -16380, -16391, -16402, -16413, -16424, -16435, -16446, -16457, -16468, -16478, -16489, -16500, -16511, -16521, -16532, -16542, -16553, -16563, -16574, -16584, -16595, -16605, -16615, -16625, -16636, -16646, -16656, -16666, -16676, -16686, -16696, -16706, -16716, -16726, -16736, -16746, -16756, -16765, -16775, -16785, -16794, -16804, -16814, -16823, -16833, -16842, -16852, -16861, -16871, -16880, -16890, -16899, -16908, -16917, -16927, -16936, -16945, -16954, -16963, -16973, -16982, -16991, -17000, -17009, -17018, -17027, -17036, -17044, -17053, -17062, -17071, -17080, -17088, -17097, -17106, -17115, -17123, -17132, -17140, -17149, -17158, -17166, -17175, -17183, -17192, -17200, -17208, -17217, -17225, -17233, -17242, -17250, -17258, -17267, -17275, -17283, -17291, -17299, -17307, -17315, -17324, -17332, -17340, -17348, -17356, -17364, -17372, -17380, -17387, -17395, -17403, -17411, -17419, -17427, -17434, -17442, -17450, -17458, -17465, -17473, -17481, -17488, -17496, -17504, -17511, -17519, -17526, -17534, -17541, -17549, -17556, -17564, -17571, -17579, -17586, -17593, -17601, -17608, -17615, -17623, -17630, -17637, -17644, -17652, -17659, -17666, -17673, -17680, -17687, -17695, -17702, -17709, -17716, -17723, -17730, -17737, -17744, -17751, -17758, -17765, -17772, -17779, -17786, -17793, -17799, -17806, -17813, -17820, -17827, -17833, -17840, -17847, -17854, -17861, -17867, -17874, -17881, -17887, -17894, -17901, -17907, -17914, -17920, -17927, -17934, -17940, -17947, -17953, -17960, -17966, -17973, -17979, -17986, -17992, -17998, -18005, -18011, -18018, -18024, -18030, -18037, -18043, -18049, -18056, -18062, -18068, -18074, -18081, -18087, -18093, -18099, -18105, -18112, -18118, -18124, -18130, -18136, -18142, -18148, -18155, -18161, -18167, -18173, -18179, -18185, -18191, -18197, -18203, -18209, -18215, -18221, -18227, -18233, -18238, -18244, -18250, -18256, -18262, -18268, -18274, -18280, -18285, -18291, -18297, -18303, -18309, -18314, -18320, -18326, -18332, -18337, -18343, -18349, -18354, -18360, -18366, -18371, -18377, -18383, -18388, -18394, -18399, -18405, -18411, -18416, -18422, -18427, -18433, -18438, -18444, -18449, -18455, -18460, -18466, -18471, -18477, -18482, -18488, -18493, -18498, -18504, -18509, -18515, -18520, -18525, -18531, -18536, -18541, -18547, -18552, -18557, -18563, -18568, -18573, -18579, -18584, -18589, -18594, -18600, -18605, -18610, -18615, -18620, -18626, -18631, -18636, -18641, -18646, -18651, -18656, -18662, -18667, -18672, -18677, -18682, -18687, -18692, -18697, -18702, -18707, -18712, -18717, -18722, -18727, -18732, -18737, -18742, -18747, -18752, -18757, -18762, -18767, -18772, -18777, -18782, -18787, -18792, -18797, -18801, -18806, -18811, -18816, -18821, -18826, -18831, -18835, -18840, -18845, -18850, -18855, -18859, -18864, -18869, -18874, -18879, -18883, -18888, -18893, -18898, -18902, -18907, -18912, -18916, -18921, -18926, -18930, -18935, -18940, -18944, -18949, -18954, -18958, -18963, -18968, -18972, -18977, -18981, -18986, -18990, -18995, -19000, -19004, -19009, -19013, -19018, -19022, -19027, -19031, -19036, -19040, -19045, -19049, -19054, -19058, -19063, -19067, -19072, -19076, -19081, -19085, -19089, -19094, -19098, -19103, -19107, -19111, -19116, -19120, -19125, -19129, -19133, -19138, -19142, -19146, -19151, -19155, -19159, -19164, -19168, -19172, -19177, -19181, -19185, -19189, -19194, -19198, -19202, -19207, -19211, -19215, -19219, -19223, -19228, -19232, -19236, -19240, -19245, -19249, -19253, -19257, -19261, -19265, -19270, -19274, -19278, -19282, -19286, -19290, -19294, -19299, -19303, -19307, -19311, -19315, -19319, -19323, -19327, -19331, -19335, -19340, -19344, -19348, -19352, -19356, -19360, -19364, -19368, -19372, -19376, -19380, -19384, -19388, -19392, -19396, -19400, -19404, -19408, -19412, -19416, -19420, -19424, -19428, -19432, -19435, -19439, -19443, -19447, -19451, -19455, -19459, -19463, -19467, -19471, -19475, -19478, -19482, -19486, -19490, -19494, -19498, -19502, -19505, -19509, -19513, -19517, -19521, -19525, -19528, -19532, -19536, -19540, -19544, -19547, -19551, -19555, -19559, -19562, -19566, -19570, -19574, -19577, -19581, -19585, -19589, -19592, -19596, -19600, -19604, -19607, -19611, -19615, -19618, -19622, -19626, -19629, -19633, -19637, -19640, -19644, -19648, -19651, -19655, -19659, -19662, -19666, -19670, -19673, -19677, -19681, -19684, -19688, -19691, -19695, -19699, -19702, -19706, -19709, -19713, -19717, -19720, -19724, -19727, -19731, -19734, -19738, -19741, -19745, -19749, -19752, -19756, -19759, -19763, -19766, -19770, -19773, -19777, -19780, -19784, -19787, -19791, -19794, -19798, -19801, -19805, -19808, -19811, -19815, -19818, -19822, -19825, -19829, -19832, -19836, -19839, -19842, -19846, -19849, -19853, -19856, -19860, -19863, -19866, -19870, -19873, -19876, -19880, -19883, -19887, -19890, -19893, -19897, -19900, -19903, -19907, -19910, -19913, -19917, -19920, -19923, -19927, -19930, -19933, -19937, -19940, -19943, -19947, -19950, -19953, -19957, -19960, -19963, -19966, -19970, -19973, -19976, -19980, -19983, -19986, -19989, -19993, -19996, -19999, -20002, -20006, -20009, -20012, -20015, -20019, -20022, -20025, -20028, -20031, -20035, -20038, -20041, -20044, -20047, -20051, -20054, -20057, -20060, -20063, -20066, -20070, -20073, -20076, -20079, -20082, -20085, -20089, -20092, -20095, -20098, -20101, -20104, -20107, -20111, -20114, -20117, -20120, -20123, -20126, -20129, -20132, -20135, -20139, -20142, -20145, -20148, -20151, -20154, -20157, -20160, -20163, -20166, -20169, -20172, -20175, -20179, -20182, -20185, -20188, -20191, -20194, -20197, -20200, -20203, -20206, -20209, -20212, -20215, -20218, -20221, -20224, -20227, -20230, -20233, -20236, -20239, -20242, -20245, -20248, -20251, -20254, -20257, -20260, -20263, -20266, -20269, -20272, -20275, -20278, -20281, -20284, -20286, -20289, -20292, -20295, -20298, -20301, -20304, -20307, -20310, -20313, -20316, -20319, -20322, -20324, -20327, -20330, -20333, -20336, -20339, -20342, -20345, -20348, -20351, -20353, -20356, -20359, -20362, -20365, -20368, -20371, -20373, -20376, -20379, -20382, -20385, -20388, -20391, -20393, -20396, -20399, -20402, -20405, -20408, -20410, -20413, -20416, -20419, -20422, -20424, -20427, -20430, -20433, -20436, -20438, -20441, -20444, -20447, -20450, -20452, -20455, -20458, -20461, -20464, -20466, -20469, -20472, -20475, -20477, -20480, -20483, -20486, -20488, -20491, -20494, -20497, -20499, -20502, -20505, -20508, -20510, -20513, -20516, -20518, -20521, -20524, -20527, -20529, -20532, -20535, -20537, -20540, -20543, -20545, -20548, -20551, -20554, -20556, -20559, -20562, -20564, -20567, -20570, -20572, -20575, -20578, -20580, -20583, -20586, -20588, -20591, -20594, -20596, -20599, -20602, -20604, -20607, -20609, -20612, -20615, -20617, -20620, -20623, -20625, -20628, -20630, -20633, -20636, -20638, -20641, -20644, -20646, -20649, -20651, -20654, -20657, -20659, -20662, -20664, -20667, -20670, -20672, -20675, -20677, -20680, -20682, -20685, -20688, -20690, -20693, -20695, -20698, -20700, -20703, -20705, -20708, -20711, -20713, -20716, -20718, -20721, -20723, -20726, -20728, -20731, -20733, -20736, -20738, -20741, -20743, -20746, -20749, -20751, -20754, -20756, -20759, -20761, -20764, -20766, -20769, -20771, -20774, -20776, -20779, -20781, -20784, -20786, -20788, -20791, -20793, -20796, -20798, -20801, -20803, -20806, -20808, -20811, -20813, -20816, -20818, -20821, -20823, -20825, -20828, -20830, -20833, -20835, -20838, -20840, -20843, -20845, -20847, -20850, -20852, -20855, -20857, -20860, -20862, -20864, -20867, -20869, -20872, -20874, -20876, -20879, -20881, -20884, -20886, -20888, -20891, -20893, -20896, -20898, -20900, -20903, -20905, -20908, -20910, -20912, -20915, -20917, -20920, -20922, -20924, -20927, -20929, -20931, -20934, -20936, -20938, -20941, -20943, -20945, -20948, -20950, -20953, -20955, -20957, -20960, -20962, -20964, -20967, -20969, -20971, -20974, -20976, -20978, -20981, -20983, -20985, -20988, -20990, -20992, -20994, -20997, -20999, -21001, -21004, -21006, -21008, -21011, -21013, -21015, -21018, -21020, -21022, -21024, -21027, -21029, -21031, -21034, -21036, -21038, -21040, -21043, -21045, -21047, -21049, -21052, -21054, -21056, -21059, -21061, -21063, -21065, -21068, -21070, -21072, -21074, -21077, -21079, -21081, -21083, -21086, -21088, -21090, -21092, -21095, -21097, -21099, -21101, -21103, -21106, -21108, -21110, -21112, -21115, -21117, -21119, -21121, -21123, -21126, -21128, -21130, -21132, -21134, -21137, -21139, -21141, -21143, -21145, -21148, -21150, -21152, -21154, -21156, -21159, -21161, -21163, -21165, -21167, -21170, -21172, -21174, -21176, -21178, -21180, -21183, -21185, -21187, -21189, -21191, -21193, -21196, -21198, -21200, -21202, -21204, -21206, -21209, -21211, -21213, -21215, -21217, -21219, -21221, -21224, -21226, -21228, -21230, -21232, -21234, -21236, -21238, -21241, -21243, -21245, -21247, -21249, -21251, -21253, -21255, -21258, -21260, -21262, -21264, -21266, -21268, -21270, -21272, -21274, -21277, -21279, -21281, -21283, -21285, -21287, -21289, -21291, -21293, -21295, -21297, -21300, -21302, -21304, -21306, -21308, -21310, -21312, -21314, -21316, -21318, -21320, -21322, -21324, -21327, -21329, -21331, -21333, -21335, -21337, -21339, -21341, -21343, -21345, -21347, -21349, -21351, -21353, -21355, -21357, -21359, -21361, -21364, -21366, -21368, -21370, -21372, -21374, -21376, -21378, -21380, -21382, -21384, -21386, -21388, -21390, -21392, -21394, -21396, -21398, -21400, -21402, -21404, -21406, -21408, -21410, -21412, -21414, -21416, -21418, -21420, -21422, -21424, -21426, -21428, -21430, -21432, -21434, -21436, -21438, -21440, -21442, -21444, -21446, -21448, -21450, -21452, -21454, -21456, -21458, -21460, -21462, -21464, -21466, -21468, -21470, -21472, -21474, -21476, -21478, -21480, -21481, -21483, -21485, -21487, -21489, -21491, -21493, -21495, -21497, -21499, -21501, -21503, -21505, -21507, -21509, -21511, -21513, -21515, -21517, -21518, -21520, -21522, -21524, -21526, -21528, -21530, -21532, -21534, -21536, -21538, -21540, -21542, -21544, -21545, -21547, -21549, -21551, -21553, -21555, -21557, -21559, -21561, -21563, -21565, -21566, -21568, -21570, -21572, -21574, -21576, -21578, -21580, -21582, -21584, -21585, -21587, -21589, -21591, -21593, -21595, -21597, -21599, -21601, -21602, -21604, -21606, -21608, -21610, -21612, -21614, -21616, -21617, -21619, -21621, -21623, -21625, -21627, -21629, -21630, -21632, -21634, -21636, -21638, -21640, -21642, -21643, -21645, -21647, -21649, -21651, -21653, -21655, -21656, -21658, -21660, -21662, -21664, -21666, -21668, -21669, -21671, -21673, -21675, -21677, -21679, -21680, -21682, -21684, -21686, -21688, -21690, -21691, -21693, -21695, -21697, -21699, -21700, -21702, -21704, -21706, -21708, -21710, -21711, -21713, -21715, -21717, -21719, -21720, -21722, -21724, -21726, -21728, -21729, -21731, -21733, -21735, -21737, -21738, -21740, -21742, -21744, -21746, -21747, -21749, -21751, -21753, -21755, -21756, -21758, -21760, -21762, -21763, -21765, -21767, -21769, -21771, -21772, -21774, -21776, -21778, -21779, -21781, -21783, -21785, -21786, -21788, -21790, -21792, -21794, -21795, -21797, -21799, -21801, -21802, -21804, -21806, -21808, -21809, -21811, -21813, -21815, -21816, -21818, -21820, -21822, -21823, -21825, -21827, -21829, -21830, -21832, -21834, -21836, -21837, -21839, -21841, -21842, -21844, -21846, -21848, -21849, -21851, -21853, -21855, -21856, -21858, -21860, -21861, -21863, -21865, -21867, -21868, -21870, -21872, -21873, -21875, -21877, -21879, -21880, -21882, -21884, -21885, -21887, -21889, -21891, -21892, -21894, -21896, -21897, -21899, -21901, -21903, -21904, -21906, -21908, -21909, -21911, -21913, -21914, -21916, -21918, -21919, -21921, -21923, -21924, -21926, -21928, -21930, -21931, -21933, -21935, -21936, -21938, -21940, -21941, -21943, -21945, -21946, -21948, -21950, -21951, -21953, -21955, -21956, -21958, -21960, -21961, -21963, -21965, -21966, -21968, -21970, -21971, -21973, -21975, -21976, -21978, -21980, -21981, -21983, -21985, -21986, -21988, -21989, -21991, -21993, -21994, -21996, -21998, -21999, -22001, -22003, -22004, -22006, -22008, -22009, -22011, -22012, -22014, -22016, -22017, -22019, -22021, -22022, -22024, -22026, -22027, -22029, -22030, -22032, -22034, -22035, -22037, -22039, -22040, -22042, -22043, -22045, -22047, -22048, -22050, -22051, -22053, -22055, -22056, -22058, -22060, -22061, -22063, -22064, -22066, -22068, -22069, -22071, -22072, -22074, -22076, -22077, -22079, -22080, -22082, -22084, -22085, -22087, -22088, -22090, -22092, -22093, -22095, -22096, -22098, -22100, -22101, -22103, -22104, -22106, -22107, -22109, -22111, -22112, -22114, -22115, -22117, -22119, -22120, -22122, -22123, -22125, -22126, -22128, -22130, -22131, -22133, -22134, -22136, -22137, -22139, -22141, -22142, -22144, -22145, -22147, -22148, -22150, -22151, -22153, -22155, -22156, -22158, -22159, -22161, -22162, -22164, -22165, -22167, -22169, -22170, -22172, -22173, -22175, -22176, -22178, -22179, -22181, -22182, -22184, -22186, -22187, -22189, -22190, -22192, -22193, -22195, -22196, -22198, -22199, -22201, -22202, -22204, -22206, -22207, -22209, -22210, -22212, -22213, -22215, -22216, -22218, -22219, -22221, -22222, -22224, -22225, -22227, -22228, -22230, -22231, -22233, -22235, -22236, -22238, -22239, -22241, -22242, -22244, -22245, -22247, -22248, -22250, -22251, -22253, -22254, -22256, -22257, -22259, -22260, -22262, -22263, -22265, -22266, -22268, -22269, -22271, -22272, -22274, -22275, -22277, -22278, -22280, -22281, -22283, -22284, -22286, -22287, -22289, -22290, -22292, -22293, -22295, -22296, -22298, -22299, -22300, -22302, -22303, -22305, -22306, -22308, -22309, -22311, -22312, -22314, -22315, -22317, -22318, -22320, -22321, -22323, -22324, -22326, -22327, -22329, -22330, -22331, -22333, -22334, -22336, -22337, -22339, -22340, -22342, -22343, -22345, -22346, -22348, -22349, -22350, -22352, -22353, -22355, -22356, -22358, -22359, -22361, -22362, -22364, -22365, -22366, -22368, -22369, -22371, -22372, -22374, -22375, -22377, -22378, -22379, -22381, -22382, -22384, -22385, -22387, -22388, -22390, -22391, -22392, -22394, -22395, -22397, -22398, -22400, -22401, -22403, -22404, -22405, -22407, -22408, -22410, -22411, -22413, -22414, -22415, -22417, -22418, -22420, -22421, -22422, -22424, -22425, -22427, -22428, -22430, -22431, -22432, -22434, -22435, -22437, -22438, -22440, -22441, -22442, -22444, -22445, -22447, -22448, -22449, -22451, -22452, -22454, -22455, -22456, -22458, -22459, -22461, -22462, -22463, -22465, -22466, -22468, -22469, -22470, -22472, -22473, -22475, -22476, -22477, -22479, -22480, -22482, -22483, -22484, -22486, -22487, -22489, -22490, -22491, -22493, -22494, -22496, -22497, -22498, -22500, -22501, -22502, -22504, -22505, -22507, -22508, -22509, -22511, -22512, -22514, -22515, -22516, -22518, -22519, -22520, -22522, -22523, -22525, -22526, -22527, -22529, -22530, -22531, -22533, -22534, -22536, -22537, -22538, -22540, -22541, -22542, -22544, -22545, -22546, -22548, -22549, -22551, -22552, -22553, -22555, -22556, -22557, -22559, -22560, -22561, -22563, -22564, -22565, -22567, -22568, -22570, -22571, -22572, -22574, -22575, -22576, -22578, -22579, -22580, -22582, -22583, -22584, -22586, -22587, -22588, -22590, -22591, -22592, -22594, -22595, -22596, -22598, -22599, -22600, -22602, -22603, -22605, -22606, -22607, -22609, -22610, -22611, -22613, -22614, -22615, -22617, -22618, -22619, -22621, -22622, -22623, -22624, -22626, -22627, -22628, -22630, -22631, -22632, -22634, -22635, -22636, -22638, -22639, -22640, -22642, -22643, -22644, -22646, -22647, -22648, -22650, -22651, -22652, -22654, -22655, -22656, -22658, -22659, -22660, -22661, -22663, -22664, -22665, -22667, -22668, -22669, -22671, -22672, -22673, -22675, -22676, -22677, -22678, -22680, -22681, -22682, -22684, -22685, -22686, -22688, -22689, -22690, -22691, -22693, -22694, -22695, -22697, -22698, -22699, -22701, -22702, -22703, -22704, -22706, -22707, -22708, -22710, -22711, -22712, -22713, -22715, -22716, -22717, -22719, -22720, -22721, -22722, -22724, -22725, -22726, -22728, -22729, -22730, -22731, -22733, -22734, -22735, -22737, -22738, -22739, -22740, -22742, -22743, -22744, -22745, -22747, -22748, -22749, -22751, -22752, -22753, -22754, -22756, -22757, -22758, -22759, -22761, -22762, -22763, -22765, -22766, -22767, -22768, -22770, -22771, -22772, -22773, -22775, -22776, -22777, -22778, -22780, -22781, -22782, -22783, -22785, -22786, -22787, -22788, -22790, -22791, -22792, -22794, -22795, -22796, -22797, -22799, -22800, -22801, -22802, -22804, -22805, -22806, -22807, -22809, -22810, -22811, -22812, -22814, -22815, -22816, -22817, -22818, -22820, -22821, -22822, -22823, -22825, -22826, -22827, -22828, -22830, -22831, -22832, -22833, -22835, -22836, -22837, -22838, -22840, -22841, -22842, -22843, -22844, -22846, -22847, -22848, -22849, -22851, -22852, -22853, -22854, -22856, -22857, -22858, -22859, -22860, -22862, -22863, -22864, -22865, -22867, -22868, -22869, -22870, -22871, -22873, -22874, -22875, -22876, -22878, -22879, -22880, -22881, -22882, -22884, -22885, -22886, -22887, -22889, -22890, -22891, -22892, -22893, -22895, -22896, -22897, -22898, -22899, -22901, -22902, -22903, -22904, -22905, -22907, -22908, -22909, -22910, -22911, -22913, -22914, -22915, -22916, -22917, -22919, -22920, -22921, -22922, -22923, -22925, -22926, -22927, -22928, -22929, -22931, -22932, -22933, -22934, -22935, -22937, -22938, -22939, -22940, -22941, -22943, -22944, -22945, -22946, -22947, -22949, -22950, -22951, -22952, -22953, -22955, -22956, -22957, -22958, -22959, -22960, -22962, -22963, -22964, -22965, -22966, -22968, -22969, -22970, -22971, -22972, -22973, -22975, -22976, -22977, -22978, -22979, -22981, -22982, -22983, -22984, -22985, -22986, -22988, -22989, -22990, -22991, -22992, -22993, -22995, -22996, -22997, -22998, -22999, -23000, -23002, -23003, -23004, -23005, -23006, -23007, -23009, -23010, -23011, -23012, -23013, -23014, -23016, -23017, -23018, -23019, -23020, -23021, -23023, -23024, -23025, -23026, -23027, -23028, -23030, -23031, -23032, -23033, -23034, -23035, -23036, -23038, -23039, -23040, -23041, -23042, -23043, -23045, -23046, -23047, -23048, -23049, -23050, -23051, -23053, -23054, -23055, -23056, -23057, -23058, -23059, -23061, -23062, -23063, -23064, -23065, -23066, -23067, -23069, -23070, -23071, -23072, -23073, -23074, -23075, -23077, -23078, -23079, -23080, -23081, -23082, -23083, -23085, -23086, -23087, -23088, -23089, -23090, -23091, -23092, -23094, -23095, -23096, -23097, -23098, -23099, -23100, -23102, -23103, -23104, -23105, -23106, -23107, -23108, -23109, -23111, -23112, -23113, -23114, -23115, -23116, -23117, -23118, -23120, -23121, -23122, -23123, -23124, -23125, -23126, -23127, -23128, -23130, -23131, -23132, -23133, -23134, -23135, -23136, -23137, -23139, -23140, -23141, -23142, -23143, -23144, -23145, -23146, -23147, -23149, -23150, -23151, -23152, -23153, -23154, -23155, -23156, -23157, -23159, -23160, -23161, -23162, -23163, -23164, -23165, -23166, -23167, -23168, -23170, -23171, -23172, -23173, -23174, -23175, -23176, -23177, -23178, -23180, -23181, -23182, -23183, -23184, -23185, -23186, -23187, -23188, -23189, -23190, -23192, -23193, -23194, -23195, -23196, -23197, -23198, -23199, -23200, -23201, -23202, -23204, -23205, -23206, -23207, -23208, -23209, -23210, -23211, -23212, -23213, -23214, -23216, -23217, -23218, -23219, -23220, -23221, -23222, -23223, -23224, -23225, -23226, -23227, -23229, -23230, -23231, -23232, -23233, -23234, -23235, -23236, -23237, -23238, -23239, -23240, -23242, -23243, -23244, -23245, -23246, -23247, -23248, -23249, -23250, -23251, -23252, -23253, -23254, -23255, -23257, -23258, -23259, -23260, -23261, -23262, -23263, -23264, -23265, -23266, -23267, -23268, -23269, -23270, -23271, -23273, -23274, -23275, -23276, -23277, -23278, -23279, -23280, -23281, -23282, -23283, -23284, -23285, -23286, -23287, -23288, -23290, -23291, -23292, -23293, -23294, -23295, -23296, -23297, -23298, -23299, -23300, -23301, -23302, -23303, -23304, -23305, -23306, -23308, -23309, -23310, -23311, -23312, -23313, -23314, -23315, -23316, -23317, -23318, -23319, -23320, -23321, -23322, -23323, -23324, -23325, -23326, -23327, -23328, -23330, -23331, -23332, -23333, -23334, -23335, -23336, -23337, -23338, -23339, -23340, -23341, -23342, -23343, -23344, -23345, -23346, -23347, -23348, -23349, -23350, -23351, -23352, -23353, -23354, -23356, -23357, -23358, -23359, -23360, -23361, -23362, -23363, -23364, -23365, -23366, -23367, -23368, -23369, -23370, -23371, -23372, -23373, -23374, -23375, -23376, -23377, -23378, -23379, -23380, -23381, -23382, -23383, -23384, -23385, -23386, -23387, -23388, -23389, -23391, -23392, -23393, -23394, -23395, -23396, -23397, -23398, -23399, -23400, -23401, -23402, -23403, -23404, -23405, -23406, -23407, -23408, -23409, -23410, -23411, -23412, -23413, -23414, -23415, -23416, -23417, -23418, -23419, -23420, -23421, -23422, -23423, -23424, -23425, -23426, -23427, -23428, -23429, -23430, -23431, -23432, -23433, -23434, -23435, -23436, -23437, -23438, -23439, -23440, -23441, -23442, -23443, -23444, -23445, -23446, -23447, -23448, -23449, -23450, -23451, -23452, -23453, -23454, -23455, -23456, -23457, -23458, -23459, -23460, -23461, -23462, -23463, -23464, -23465, -23466, -23467, -23468, -23469, -23470, -23471, -23472, -23473, -23474, -23475, -23476, -23477, -23478, -23479, -23480, -23481, -23482, -23483, -23484, -23485, -23486, -23487, -23488, -23489, -23490, -23491, -23492, -23493, -23494, -23495, -23496, -23497, -23498, -23499, -23500, -23501, -23502, -23503, -23504, -23505, -23506, -23507, -23508, -23509, -23510, -23511, -23512, -23513, -23514, -23515, -23516, -23517, -23518, -23519, -23520, -23521, -23522, -23523, -23524, -23525, -23526, -23526, -23527, -23528, -23529, -23530, -23531, -23532, -23533, -23534, -23535, -23536, -23537, -23538, -23539, -23540, -23541, -23542, -23543, -23544, -23545, -23546, -23547, -23548, -23549, -23550, -23551, -23552, -23553, -23554, -23555, -23556, -23557, -23558, -23559, -23560, -23560, -23561, -23562, -23563, -23564, -23565, -23566, -23567, -23568, -23569, -23570, -23571, -23572, -23573, -23574, -23575, -23576, -23577, -23578, -23579, -23580, -23581, -23582, -23583, -23584, -23585, -23585, -23586, -23587, -23588, -23589, -23590, -23591, -23592, -23593, -23594, -23595, -23596, -23597, -23598, -23599, -23600, -23601, -23602, -23603, -23604, -23605, -23606, -23606, -23607, -23608, -23609, -23610, -23611, -23612, -23613, -23614, -23615, -23616, -23617, -23618, -23619, -23620, -23621, -23622, -23623, -23624, -23624, -23625, -23626, -23627, -23628, -23629, -23630, -23631, -23632, -23633, -23634, -23635, -23636, -23637, -23638, -23639, -23640, -23640, -23641, -23642, -23643, -23644, -23645, -23646, -23647, -23648, -23649, -23650, -23651, -23652, -23653, -23654, -23655, -23655, -23656, -23657, -23658, -23659, -23660, -23661, -23662, -23663, -23664, -23665, -23666, -23667, -23668, -23669, -23669, -23670, -23671, -23672, -23673, -23674, -23675, -23676, -23677, -23678, -23679, -23680, -23681, -23682, -23682, -23683, -23684, -23685, -23686, -23687, -23688, -23689, -23690, -23691, -23692, -23693, -23694, -23694, -23695, -23696, -23697, -23698, -23699, -23700, -23701, -23702, -23703, -23704, -23705, -23706, -23706, -23707, -23708, -23709, -23710, -23711, -23712, -23713, -23714, -23715, -23716, -23717, -23717, -23718, -23719, -23720, -23721, -23722, -23723, -23724, -23725, -23726, -23727, -23728, -23728, -23729, -23730, -23731, -23732, -23733, -23734, -23735, -23736, -23737, -23738, -23738, -23739, -23740, -23741, -23742, -23743, -23744, -23745, -23746, -23747, -23748, -23748, -23749, -23750, -23751, -23752, -23753, -23754, -23755, -23756, -23757, -23757, -23758, -23759, -23760, -23761, -23762, -23763, -23764, -23765, -23766, -23766, -23767, -23768, -23769, -23770, -23771, -23772, -23773, -23774, -23775, -23775, -23776, -23777, -23778, -23779, -23780, -23781, -23782, -23783, -23784, -23784, -23785, -23786, -23787, -23788, -23789, -23790, -23791, -23792, -23792, -23793, -23794, -23795, -23796, -23797, -23798, -23799, -23800, -23801, -23801, -23802, -23803, -23804, -23805, -23806, -23807, -23808, -23809, -23809, -23810, -23811, -23812, -23813, -23814, -23815, -23816, -23816, -23817, -23818, -23819, -23820, -23821, -23822, -23823, -23824, -23824, -23825, -23826, -23827, -23828, -23829, -23830, -23831, -23831, -23832, -23833, -23834, -23835, -23836, -23837, -23838, -23839, -23839, -23840, -23841, -23842, -23843, -23844, -23845, -23846, -23846, -23847, -23848, -23849, -23850, -23851, -23852, -23853, -23853, -23854, -23855, -23856, -23857, -23858, -23859, -23860, -23860, -23861, -23862, -23863, -23864, -23865, -23866, -23867, -23867, -23868, -23869, -23870, -23871, -23872, -23873, -23873, -23874, -23875, -23876, -23877, -23878, -23879, -23880, -23880, -23881, -23882, -23883, -23884, -23885, -23886, -23886, -23887, -23888, -23889, -23890, -23891, -23892, -23892, -23893, -23894, -23895, -23896, -23897, -23898, -23899, -23899, -23900, -23901, -23902, -23903, -23904, -23905, -23905, -23906, -23907, -23908, -23909, -23910, -23911, -23911, -23912, -23913, -23914, -23915, -23916, -23917, -23917, -23918, -23919, -23920, -23921, -23922, -23923, -23923, -23924, -23925, -23926, -23927, -23928, -23928, -23929, -23930, -23931, -23932, -23933, -23934, -23934, -23935, -23936, -23937, -23938, -23939, -23940, -23940, -23941, -23942, -23943, -23944, -23945, -23945, -23946, -23947, -23948, -23949, -23950, -23951, -23951, -23952, -23953, -23954, -23955, -23956, -23956, -23957, -23958, -23959, -23960, -23961, -23962, -23962, -23963, -23964, -23965, -23966, -23967, -23967, -23968, -23969, -23970, -23971, -23972, -23972, -23973, -23974, -23975, -23976, -23977, -23978, -23978, -23979, -23980, -23981, -23982, -23983, -23983, -23984, -23985, -23986, -23987, -23988, -23988, -23989, -23990, -23991, -23992, -23993, -23993, -23994, -23995, -23996, -23997, -23998, -23998, -23999, -24000, -24001, -24002, -24003, -24003, -24004, -24005, -24006, -24007, -24008, -24008, -24009, -24010, -24011, -24012, -24012, -24013, -24014, -24015, -24016, -24017, -24017, -24018, -24019, -24020, -24021, -24022, -24022, -24023, -24024, -24025, -24026, -24027, -24027, -24028, -24029, -24030, -24031, -24031, -24032, -24033, -24034, -24035, -24036, -24036, -24037, -24038, -24039, -24040, -24040, -24041, -24042, -24043, -24044, -24045, -24045, -24046, -24047, -24048, -24049, -24050, -24050, -24051, -24052, -24053, -24054, -24054, -24055, -24056, -24057, -24058, -24058, -24059, -24060, -24061, -24062, -24063, -24063, -24064, -24065, -24066, -24067, -24067, -24068, -24069, -24070, -24071, -24071, -24072, -24073, -24074, -24075, -24076, -24076, -24077, -24078, -24079, -24080, -24080, -24081, -24082, -24083, -24084, -24084, -24085, -24086, -24087, -24088, -24088, -24089, -24090, -24091, -24092, -24093, -24093, -24094, -24095, -24096, -24097, -24097, -24098, -24099, -24100, -24101, -24101, -24102, -24103, -24104, -24105, -24105, -24106, -24107, -24108, -24109, -24109, -24110, -24111, -24112, -24113, -24113, -24114, -24115, -24116, -24117, -24117, -24118, -24119, -24120, -24121, -24121, -24122, -24123, -24124, -24125, -24125, -24126, -24127, -24128, -24129, -24129, -24130, -24131, -24132, -24133, -24133, -24134, -24135, -24136, -24137, -24137, -24138, -24139, -24140, -24140, -24141, -24142, -24143, -24144, -24144, -24145, -24146, -24147, -24148, -24148, -24149, -24150, -24151, -24152, -24152, -24153, -24154, -24155, -24155, -24156, -24157, -24158, -24159, -24159, -24160, -24161, -24162, -24163, -24163, -24164, -24165, -24166, -24167, -24167, -24168, -24169, -24170, -24170, -24171, -24172, -24173, -24174, -24174, -24175, -24176, -24177, -24177, -24178, -24179, -24180, -24181, -24181, -24182, -24183, -24184, -24185, -24185, -24186, -24187, -24188, -24188, -24189, -24190, -24191, -24192, -24192, -24193, -24194, -24195, -24195, -24196, -24197, -24198, -24199, -24199, -24200, -24201, -24202, -24202, -24203, -24204, -24205, -24206, -24206, -24207, -24208, -24209, -24209, -24210, -24211, -24212, -24213, -24213, -24214, -24215, -24216, -24216, -24217, -24218, -24219, -24219, -24220, -24221, -24222, -24223, -24223, -24224, -24225, -24226, -24226, -24227, -24228, -24229, -24229, -24230, -24231, -24232, -24233, -24233, -24234, -24235, -24236, -24236, -24237, -24238, -24239, -24239, -24240, -24241, -24242, -24243, -24243, -24244, -24245, -24246, -24246, -24247, -24248, -24249, -24249, -24250, -24251, -24252, -24252, -24253, -24254, -24255, -24256, -24256, -24257, -24258, -24259, -24259, -24260, -24261, -24262, -24262, -24263, -24264, -24265, -24265, -24266, -24267, -24268, -24268, -24269, -24270, -24271, -24271, -24272, -24273, -24274, -24274, -24275, -24276, -24277, -24278, -24278, -24279, -24280, -24281, -24281, -24282, -24283, -24284, -24284, -24285, -24286, -24287, -24287, -24288, -24289, -24290, -24290, -24291, -24292, -24293, -24293, -24294, -24295, -24296, -24296, -24297, -24298, -24299, -24299, -24300, -24301, -24302, -24302, -24303, -24304, -24305, -24305, -24306, -24307, -24308, -24308, -24309, -24310, -24311, -24311, -24312, -24313, -24314, -24314, -24315, -24316, -24317, -24317, -24318, -24319, -24320, -24320, -24321, -24322, -24323, -24323, -24324, -24325, -24326, -24326, -24327, -24328, -24329, -24329, -24330, -24331, -24331, -24332, -24333, -24334, -24334, -24335, -24336, -24337, -24337, -24338, -24339, -24340, -24340, -24341, -24342, -24343, -24343, -24344, -24345, -24346, -24346, -24347, -24348, -24349, -24349, -24350, -24351, -24351, -24352, -24353, -24354, -24354, -24355, -24356, -24357, -24357, -24358, -24359, -24360, -24360, -24361, -24362, -24363, -24363, -24364, -24365, -24365, -24366, -24367, -24368, -24368, -24369, -24370, -24371, -24371, -24372, -24373, -24374, -24374, -24375, -24376, -24376, -24377, -24378, -24379, -24379, -24380, -24381, -24382, -24382, -24383, -24384, -24384, -24385, -24386, -24387, -24387, -24388, -24389, -24390, -24390, -24391, -24392, -24393, -24393, -24394, -24395, -24395, -24396, -24397, -24398, -24398, -24399, -24400, -24400, -24401, -24402, -24403, -24403, -24404, -24405, -24406, -24406, -24407, -24408, -24408, -24409, -24410, -24411, -24411, -24412, -24413, -24414, -24414, -24415, -24416, -24416, -24417, -24418, -24419, -24419, -24420, -24421, -24421, -24422, -24423, -24424, -24424, -24425, -24426, -24427, -24427, -24428, -24429, -24429, -24430, -24431, -24432, -24432, -24433, -24434, -24434, -24435, -24436, -24437, -24437, -24438, -24439, -24439, -24440, -24441, -24442, -24442, -24443, -24444, -24444, -24445, -24446, -24447, -24447, -24448, -24449, -24449, -24450, -24451, -24452, -24452, -24453, -24454, -24454, -24455, -24456, -24457, -24457, -24458, -24459, -24459, -24460, -24461, -24462, -24462, -24463, -24464, -24464, -24465, -24466, -24467, -24467, -24468, -24469, -24469, -24470, -24471, -24471, -24472, -24473, -24474, -24474, -24475, -24476, -24476, -24477, -24478, -24479, -24479, -24480, -24481, -24481, -24482, -24483, -24483, -24484, -24485, -24486, -24486, -24487, -24488, -24488, -24489, -24490, -24491, -24491, -24492, -24493, -24493, -24494, -24495, -24495, -24496, -24497, -24498, -24498, -24499, -24500, -24500, -24501, -24502, -24502, -24503, -24504, -24505, -24505, -24506, -24507, -24507, -24508, -24509, -24509, -24510, -24511, -24512, -24512, -24513, -24514, -24514, -24515, -24516, -24516, -24517, -24518, -24519, -24519, -24520, -24521, -24521, -24522, -24523, -24523, -24524, -24525, -24525, -24526, -24527, -24528, -24528, -24529, -24530, -24530, -24531, -24532, -24532, -24533, -24534, -24535, -24535, -24536, -24537, -24537, -24538, -24539, -24539, -24540, -24541, -24541, -24542, -24543, -24544, -24544, -24545, -24546, -24546, -24547, -24548, -24548, -24549, -24550, -24550, -24551, -24552, -24552, -24553, -24554, -24555, -24555, -24556, -24557, -24557, -24558, -24559, -24559, -24560, -24561, -24561, -24562, -24563, -24563, -24564, -24565, -24566, -24566, -24567, -24568, -24568, -24569, -24570, -24570, -24571, -24572, -24572, -24573, -24574, -24574, -24575, -24576, -24576, -24577, -24578, -24579, -24579, -24580, -24581, -24581, -24582, -24583, -24583, -24584, -24585, -24585, -24586, -24587, -24587, -24588, -24589, -24589, -24590, -24591, -24591, -24592, -24593, -24594, -24594, -24595, -24596, -24596, -24597, -24598, -24598, -24599, -24600, -24600, -24601, -24602, -24602, -24603, -24604, -24604, -24605, -24606, -24606, -24607, -24608, -24608, -24609, -24610, -24610, -24611, -24612, -24612, -24613, -24614, -24615, -24615, -24616, -24617, -24617, -24618, -24619, -24619, -24620, -24621, -24621, -24622, -24623, -24623, -24624, -24625, -24625, -24626, -24627, -24627, -24628, -24629, -24629, -24630, -24631, -24631, -24632, -24633, -24633, -24634, -24635, -24635, -24636, -24637, -24637, -24638, -24639, -24639, -24640, -24641, -24641, -24642, -24643, -24643, -24644, -24645, -24645, -24646, -24647, -24647, -24648, -24649, -24649, -24650, -24651, -24651, -24652, -24653, -24653, -24654, -24655, -24655, -24656, -24657, -24657, -24658, -24659, -24659, -24660, -24661, -24661, -24662, -24663, -24663, -24664, -24665, -24665, -24666, -24667, -24667, -24668, -24669, -24669, -24670, -24671, -24671, -24672, -24673, -24673, -24674, -24675, -24675, -24676, -24677, -24677, -24678, -24679, -24679, -24680, -24681, -24681, -24682, -24683, -24683, -24684, -24685, -24685, -24686, -24686, -24687, -24688, -24688, -24689, -24690, -24690, -24691, -24692, -24692, -24693, -24694, -24694, -24695, -24696, -24696, -24697, -24698, -24698, -24699, -24700, -24700, -24701, -24702, -24702, -24703, -24704, -24704, -24705, -24706, -24706, -24707, -24707, -24708, -24709, -24709, -24710, -24711, -24711, -24712, -24713, -24713, -24714, -24715, -24715, -24716, -24717, -24717, -24718, -24719, -24719, -24720, -24721, -24721, -24722, -24722, -24723, -24724, -24724, -24725, -24726, -24726, -24727, -24728, -24728, -24729, -24730, -24730, -24731, -24732, -24732, -24733, -24733, -24734, -24735, -24735, -24736, -24737, -24737, -24738, -24739, -24739, -24740, -24741, -24741, -24742, -24743, -24743, -24744, -24744, -24745, -24746, -24746, -24747, -24748, -24748, -24749, -24750, -24750, -24751, -24752, -24752, -24753, -24754, -24754, -24755, -24755, -24756, -24757, -24757, -24758, -24759, -24759, -24760, -24761, -24761, -24762, -24762, -24763, -24764, -24764, -24765, -24766, -24766, -24767, -24768, -24768, -24769, -24770, -24770, -24771, -24771, -24772, -24773, -24773, -24774, -24775, -24775, -24776, -24777, -24777, -24778, -24778, -24779, -24780, -24780, -24781, -24782, -24782, -24783, -24784, -24784, -24785, -24785, -24786, -24787, -24787, -24788, -24789, -24789, -24790, -24791, -24791, -24792, -24792, -24793, -24794, -24794, -24795, -24796, -24796, -24797, -24798, -24798, -24799, -24799, -24800, -24801, -24801, -24802, -24803, -24803, -24804, -24805, -24805, -24806, -24806, -24807, -24808, -24808, -24809, -24810, -24810, -24811, -24811, -24812, -24813, -24813, -24814, -24815, -24815, -24816, -24817, -24817, -24818, -24818, -24819, -24820, -24820, -24821, -24822, -24822, -24823, -24823, -24824, -24825, -24825, -24826, -24827, -24827, -24828, -24828, -24829, -24830, -24830, -24831, -24832, -24832, -24833, -24833, -24834, -24835, -24835, -24836, -24837, -24837, -24838, -24838, -24839, -24840, -24840, -24841, -24842, -24842, -24843, -24843, -24844, -24845, -24845, -24846, -24847, -24847, -24848, -24848, -24849, -24850, -24850, -24851, -24852, -24852, -24853, -24853, -24854, -24855, -24855, -24856, -24857, -24857, -24858, -24858, -24859, -24860, -24860, -24861, -24862, -24862, -24863, -24863, -24864, -24865, -24865, -24866, -24866, -24867, -24868, -24868, -24869, -24870, -24870, -24871, -24871, -24872, -24873, -24873, -24874, -24875, -24875, -24876, -24876, -24877, -24878, -24878, -24879, -24879, -24880, -24881, -24881, -24882, -24883, -24883, -24884, -24884, -24885, -24886, -24886, -24887, -24887, -24888, -24889, -24889, -24890, -24891, -24891, -24892, -24892, -24893, -24894, -24894, -24895, -24895, -24896, -24897, -24897, -24898, -24898, -24899, -24900, -24900, -24901, -24902, -24902, -24903, -24903, -24904, -24905, -24905, -24906, -24906, -24907, -24908, -24908, -24909, -24909, -24910, -24911, -24911, -24912, -24913, -24913, -24914, -24914, -24915, -24916, -24916, -24917, -24917, -24918, -24919, -24919, -24920, -24920, -24921, -24922, -24922, -24923, -24923, -24924, -24925, -24925, -24926, -24927, -24927, -24928, -24928, -24929, -24930, -24930, -24931, -24931, -24932, -24933, -24933, -24934, -24934, -24935, -24936, -24936, -24937, -24937, -24938, -24939, -24939, -24940, -24940, -24941, -24942, -24942, -24943, -24943, -24944, -24945, -24945, -24946, -24946, -24947, -24948, -24948, -24949, -24949, -24950, -24951, -24951, -24952, -24952, -24953, -24954, -24954, -24955, -24955, -24956, -24957, -24957, -24958, -24958, -24959, -24960, -24960, -24961, -24961, -24962, -24963, -24963, -24964, -24964, -24965, -24966, -24966, -24967, -24967, -24968, -24969, -24969, -24970, -24970, -24971, -24972, -24972, -24973, -24973, -24974, -24975, -24975, -24976, -24976, -24977, -24978, -24978, -24979, -24979, -24980, -24981, -24981, -24982, -24982, -24983, -24984, -24984, -24985, -24985, -24986, -24987, -24987, -24988, -24988, -24989, -24990, -24990, -24991, -24991, -24992, -24992, -24993, -24994, -24994, -24995, -24995, -24996, -24997, -24997, -24998, -24998, -24999, -25000, -25000, -25001, -25001, -25002, -25003, -25003, -25004, -25004, -25005, -25006, -25006, -25007, -25007, -25008, -25008, -25009, -25010, -25010, -25011, -25011, -25012, -25013, -25013, -25014, -25014, -25015, -25016, -25016, -25017, -25017, -25018, -25018, -25019, -25020, -25020, -25021, -25021, -25022, -25023, -25023, -25024, -25024, -25025, -25026, -25026, -25027, -25027, -25028, -25028, -25029, -25030, -25030, -25031, -25031, -25032, -25033, -25033, -25034, -25034, -25035, -25035, -25036, -25037, -25037, -25038, -25038, -25039, -25040, -25040, -25041, -25041, -25042, -25042, -25043, -25044, -25044, -25045, -25045, -25046, -25047, -25047, -25048, -25048, -25049, -25049, -25050, -25051, -25051, -25052, -25052, -25053, -25054, -25054, -25055, -25055, -25056, -25056, -25057, -25058, -25058, -25059, -25059, -25060, -25061, -25061, -25062, -25062, -25063, -25063, -25064, -25065, -25065, -25066, -25066, -25067, -25067, -25068, -25069, -25069, -25070, -25070, -25071, -25071, -25072, -25073, -25073, -25074, -25074, -25075, -25076, -25076, -25077, -25077, -25078, -25078, -25079, -25080, -25080, -25081, -25081, -25082, -25082, -25083, -25084, -25084, -25085, -25085, -25086, -25086, -25087, -25088, -25088, -25089, -25089, -25090, -25090, -25091, -25092, -25092, -25093, -25093, -25094, -25094, -25095, -25096, -25096, -25097, -25097, -25098, -25099, -25099, -25100, -25100, -25101, -25101, -25102, -25103, -25103, -25104, -25104, -25105, -25105, -25106, -25107, -25107, -25108, -25108, -25109, -25109, -25110, -25110, -25111, -25112, -25112, -25113, -25113, -25114, -25114, -25115, -25116, -25116, -25117, -25117, -25118, -25118, -25119, -25120, -25120, -25121, -25121, -25122, -25122, -25123, -25124, -25124, -25125, -25125, -25126, -25126, -25127, -25128, -25128, -25129, -25129, -25130, -25130, -25131, -25132, -25132, -25133, -25133, -25134, -25134, -25135, -25135, -25136, -25137, -25137, -25138, -25138, -25139, -25139, -25140, -25141, -25141, -25142, -25142, -25143, -25143, -25144, -25144, -25145, -25146, -25146, -25147, -25147, -25148, -25148, -25149, -25150, -25150, -25151, -25151, -25152, -25152, -25153, -25153, -25154, -25155, -25155, -25156, -25156, -25157, -25157, -25158, -25159, -25159, -25160, -25160, -25161, -25161, -25162, -25162, -25163, -25164, -25164, -25165, -25165, -25166, -25166, -25167, -25167, -25168, -25169, -25169, -25170, -25170, -25171, -25171, -25172, -25173, -25173, -25174, -25174, -25175, -25175, -25176, -25176, -25177, -25178, -25178, -25179, -25179, -25180, -25180, -25181, -25181, -25182, -25183, -25183, -25184, -25184, -25185, -25185, -25186, -25186, -25187, -25188, -25188, -25189, -25189, -25190, -25190, -25191, -25191, -25192, -25193, -25193, -25194, -25194, -25195, -25195, -25196, -25196, -25197, -25198, -25198, -25199, -25199, -25200, -25200, -25201, -25201, -25202, -25202, -25203, -25204, -25204, -25205, -25205, -25206, -25206, -25207, -25207, -25208, -25209, -25209, -25210, -25210, -25211, -25211, -25212, -25212, -25213, -25214, -25214, -25215, -25215, -25216, -25216, -25217, -25217, -25218, -25218, -25219, -25220, -25220, -25221, -25221, -25222, -25222, -25223, -25223, -25224, -25224, -25225, -25226, -25226, -25227, -25227, -25228, -25228, -25229, -25229, -25230, -25231, -25231, -25232, -25232, -25233, -25233, -25234, -25234, -25235, -25235, -25236, -25237, -25237, -25238, -25238, -25239, -25239, -25240, -25240, -25241, -25241, -25242, -25243, -25243, -25244, -25244, -25245, -25245, -25246, -25246, -25247, -25247, -25248, -25248, -25249, -25250, -25250, -25251, -25251, -25252, -25252, -25253, -25253, -25254, -25254, -25255, -25256, -25256, -25257, -25257, -25258, -25258, -25259, -25259, -25260, -25260, -25261, -25262, -25262, -25263, -25263, -25264, -25264, -25265, -25265, -25266, -25266, -25267, -25267, -25268, -25269, -25269, -25270, -25270, -25271, -25271, -25272, -25272, -25273, -25273, -25274, -25274, -25275, -25276, -25276, -25277, -25277, -25278, -25278, -25279, -25279, -25280, -25280, -25281, -25281, -25282, -25283, -25283, -25284, -25284, -25285, -25285, -25286, -25286, -25287, -25287, -25288, -25288, -25289, -25290, -25290, -25291, -25291, -25292, -25292, -25293, -25293, -25294, -25294, -25295, -25295, -25296, -25296, -25297, -25298, -25298, -25299, -25299, -25300, -25300, -25301, -25301, -25302, -25302, -25303, -25303, -25304, -25304, -25305, -25306, -25306, -25307, -25307, -25308, -25308, -25309, -25309, -25310, -25310, -25311, -25311, -25312, -25312, -25313, -25314, -25314, -25315, -25315, -25316, -25316, -25317, -25317, -25318, -25318, -25319, -25319, -25320, -25320, -25321, -25322, -25322, -25323, -25323, -25324, -25324, -25325, -25325, -25326, -25326, -25327, -25327, -25328, -25328, -25329, -25329, -25330, -25331, -25331, -25332, -25332, -25333, -25333, -25334, -25334, -25335, -25335, -25336, -25336, -25337, -25337, -25338, -25338, -25339, -25339, -25340, -25341, -25341, -25342, -25342, -25343, -25343, -25344, -25344, -25345, -25345, -25346, -25346, -25347, -25347, -25348, -25348, -25349, -25349, -25350, -25351, -25351, -25352, -25352, -25353, -25353, -25354, -25354, -25355, -25355, -25356, -25356, -25357, -25357, -25358, -25358, -25359, -25359, -25360, -25360, -25361, -25362, -25362, -25363, -25363, -25364, -25364, -25365, -25365, -25366, -25366, -25367, -25367, -25368, -25368, -25369, -25369, -25370, -25370, -25371, -25371, -25372, -25373, -25373, -25374, -25374, -25375, -25375, -25376, -25376, -25377, -25377, -25378, -25378, -25379, -25379, -25380, -25380, -25381, -25381, -25382, -25382, -25383, -25383, -25384, -25384, -25385, -25386, -25386, -25387, -25387, -25388, -25388, -25389, -25389, -25390, -25390, -25391, -25391, -25392, -25392, -25393, -25393, -25394, -25394, -25395, -25395, -25396, -25396, -25397, -25397, -25398, -25398, -25399, -25399, -25400, -25401, -25401, -25402, -25402, -25403, -25403, -25404, -25404, -25405, -25405, -25406, -25406, -25407, -25407, -25408, -25408, -25409, -25409, -25410, -25410, -25411, -25411, -25412, -25412, -25413, -25413, -25414, -25414, -25415, -25415, -25416, -25416, -25417, -25417, -25418, -25419, -25419, -25420, -25420, -25421, -25421, -25422, -25422, -25423, -25423, -25424, -25424, -25425, -25425, -25426, -25426, -25427, -25427, -25428, -25428, -25429, -25429, -25430, -25430, -25431, -25431, -25432, -25432, -25433, -25433, -25434, -25434, -25435, -25435, -25436, -25436, -25437, -25437, -25438, -25438, -25439, -25439, -25440, -25441, -25441, -25442, -25442, -25443, -25443, -25444, -25444, -25445, -25445, -25446, -25446, -25447, -25447, -25448, -25448, -25449, -25449, -25450, -25450, -25451, -25451, -25452, -25452, -25453, -25453, -25454, -25454, -25455, -25455, -25456, -25456, -25457, -25457, -25458, -25458, -25459, -25459, -25460, -25460, -25461, -25461, -25462, -25462, -25463, -25463, -25464, -25464, -25465, -25465, -25466, -25466, -25467, -25467, -25468, -25468, -25469, -25469, -25470, -25470, -25471, -25471, -25472, -25472, -25473, -25473, -25474, -25474, -25475, -25475, -25476, -25476, -25477, -25477, -25478, -25478, -25479, -25479, -25480, -25480, -25481, -25481, -25482, -25482, -25483, -25483, -25484, -25484, -25485, -25485, -25486, -25486, -25487, -25487, -25488, -25488, -25489, -25489, -25490, -25490, -25491, -25491, -25492, -25492, -25493, -25493, -25494, -25494, -25495, -25495, -25496, -25496, -25497, -25497, -25498, -25498, -25499, -25499, -25500, -25500, -25501, -25501, -25502, -25502, -25503, -25503, -25504, -25504, -25505, -25505, -25506, -25506, -25507, -25507, -25508, -25508, -25509, -25509, -25510, -25510, -25511, -25511, -25512, -25512, -25513, -25513, -25514, -25514, -25515, -25515, -25516, -25516, -25517, -25517, -25518, -25518, -25519, -25519, -25520, -25520, -25521, -25521, -25522, -25522, -25523, -25523, -25524, -25524, -25525, -25525, -25526, -25526, -25527, -25527, -25528, -25528, -25529, -25529, -25530, -25530, -25531, -25531, -25532, -25532, -25533, -25533, -25534, -25534, -25535, -25535, -25536, -25536, -25537, -25537, -25538, -25538, -25539, -25539, -25540, -25540, -25541, -25541, -25542, -25542, -25543, -25543, -25544, -25544, -25545, -25545, -25546, -25546, -25547, -25547, -25547, -25548, -25548, -25549, -25549, -25550, -25550, -25551, -25551, -25552, -25552, -25553, -25553, -25554, -25554, -25555, -25555, -25556, -25556, -25557, -25557, -25558, -25558, -25559, -25559, -25560, -25560, -25561, -25561, -25562, -25562, -25563, -25563, -25564, -25564, -25565, -25565, -25566, -25566, -25567, -25567, -25568, -25568, -25569, -25569, -25570, -25570, -25570, -25571, -25571, -25572, -25572, -25573, -25573, -25574, -25574, -25575, -25575, -25576, -25576, -25577, -25577, -25578, -25578, -25579, -25579, -25580, -25580, -25581, -25581, -25582, -25582, -25583, -25583, -25584, -25584, -25585, -25585, -25586, -25586, -25587, -25587, -25587, -25588, -25588, -25589, -25589, -25590, -25590, -25591, -25591, -25592, -25592, -25593, -25593, -25594, -25594, -25595, -25595, -25596, -25596, -25597, -25597, -25598, -25598, -25599, -25599, -25600, -25600, -25601, -25601, -25601, -25602, -25602, -25603, -25603, -25604, -25604, -25605, -25605, -25606, -25606, -25607, -25607, -25608, -25608, -25609, -25609, -25610, -25610, -25611, -25611, -25612, -25612, -25613, -25613, -25614, -25614, -25614, -25615, -25615, -25616, -25616, -25617, -25617, -25618, -25618, -25619, -25619, -25620, -25620, -25621, -25621, -25622, -25622, -25623, -25623, -25624, -25624, -25625, -25625, -25626, -25626, -25626, -25627, -25627, -25628, -25628, -25629, -25629, -25630, -25630, -25631, -25631, -25632, -25632, -25633, -25633, -25634, -25634, -25635, -25635, -25636, -25636, -25636, -25637, -25637, -25638, -25638, -25639, -25639, -25640, -25640, -25641, -25641, -25642, -25642, -25643, -25643, -25644, -25644, -25645, -25645, -25646, -25646, -25646, -25647, -25647, -25648, -25648, -25649, -25649, -25650, -25650, -25651, -25651, -25652, -25652, -25653, -25653, -25654, -25654, -25655, -25655, -25655, -25656, -25656, -25657, -25657, -25658, -25658, -25659, -25659, -25660, -25660, -25661, -25661, -25662, -25662, -25663, -25663, -25664, -25664, -25664, -25665, -25665, -25666, -25666, -25667, -25667, -25668, -25668, -25669, -25669, -25670, -25670, -25671, -25671, -25672, -25672, -25672, -25673, -25673, -25674, -25674, -25675, -25675, -25676, -25676, -25677, -25677, -25678, -25678, -25679, -25679, -25680, -25680, -25680, -25681, -25681, -25682, -25682, -25683, -25683, -25684, -25684, -25685, -25685, -25686, -25686, -25687, -25687, -25687, -25688, -25688, -25689, -25689, -25690, -25690, -25691, -25691, -25692, -25692, -25693, -25693, -25694, -25694, -25694, -25695, -25695, -25696, -25696, -25697, -25697, -25698, -25698, -25699, -25699, -25700, -25700, -25701, -25701, -25701, -25702, -25702, -25703, -25703, -25704, -25704, -25705, -25705, -25706, -25706, -25707, -25707, -25708, -25708, -25708, -25709, -25709, -25710, -25710, -25711, -25711, -25712, -25712, -25713, -25713, -25714, -25714, -25715, -25715, -25715, -25716, -25716, -25717, -25717, -25718, -25718, -25719, -25719, -25720, -25720, -25721, -25721, -25721, -25722, -25722, -25723, -25723, -25724, -25724, -25725, -25725, -25726, -25726, -25727, -25727, -25727, -25728, -25728, -25729, -25729, -25730, -25730, -25731, -25731, -25732, -25732, -25733, -25733, -25733, -25734, -25734, -25735, -25735, -25736, -25736, -25737, -25737, -25738, -25738, -25739, -25739, -25739, -25740, -25740, -25741, -25741, -25742, -25742, -25743, -25743, -25744, -25744, -25745, -25745, -25745, -25746, -25746, -25747, -25747, -25748, -25748, -25749, -25749, -25750, -25750, -25750, -25751, -25751, -25752, -25752, -25753, -25753, -25754, -25754, -25755, -25755, -25756, -25756, -25756, -25757, -25757, -25758, -25758, -25759, -25759, -25760, -25760, -25761, -25761, -25761, -25762, -25762, -25763, -25763, -25764, -25764, -25765, -25765, -25766, -25766, -25766, -25767, -25767, -25768, -25768, -25769, -25769, -25770, -25770, -25771, -25771, -25771, -25772, -25772, -25773, -25773, -25774, -25774, -25775, -25775, -25776, -25776, -25776, -25777, -25777, -25778, -25778, -25779, -25779, -25780, -25780, -25781, -25781, -25781, -25782, -25782, -25783, -25783, -25784, -25784, -25785, -25785, -25786, -25786, -25786, -25787, -25787, -25788, -25788, -25789, -25789, -25790, -25790, -25791, -25791, -25791, -25792, -25792, -25793, -25793, -25794, -25794, -25795, -25795, -25795, -25796, -25796, -25797, -25797, -25798, -25798, -25799, -25799, -25800, -25800, -25800, -25801, -25801, -25802, -25802, -25803, -25803, -25804, -25804, -25804, -25805, -25805, -25806, -25806, -25807, -25807, -25808, -25808, -25809, -25809, -25809, -25810, -25810, -25811, -25811, -25812, -25812, -25813, -25813, -25813, -25814, -25814, -25815, -25815, -25816, -25816, -25817, -25817, -25818, -25818, -25818, -25819, -25819, -25820, -25820, -25821, -25821, -25822, -25822, -25822, -25823, -25823, -25824, -25824, -25825, -25825, -25826, -25826, -25826, -25827, -25827, -25828, -25828, -25829, -25829, -25830, -25830, -25830, -25831, -25831, -25832, -25832, -25833, -25833, -25834, -25834, -25834, -25835, -25835, -25836, -25836, -25837, -25837, -25838, -25838, -25838, -25839, -25839, -25840, -25840, -25841, -25841, -25842, -25842, -25842, -25843, -25843, -25844, -25844, -25845, -25845, -25846, -25846, -25846, -25847, -25847, -25848, -25848, -25849, -25849, -25850, -25850, -25850, -25851, -25851, -25852, -25852, -25853, -25853, -25854, -25854, -25854, -25855, -25855, -25856, -25856, -25857, -25857, -25858, -25858, -25858, -25859, -25859, -25860, -25860, -25861, -25861, -25862, -25862, -25862, -25863, -25863, -25864, -25864, -25865, -25865, -25865, -25866, -25866, -25867, -25867, -25868, -25868, -25869, -25869, -25869, -25870, -25870, -25871, -25871, -25872, -25872, -25873, -25873, -25873, -25874, -25874, -25875, -25875, -25876, -25876, -25876, -25877, -25877, -25878, -25878, -25879, -25879, -25880, -25880, -25880, -25881, -25881, -25882, -25882, -25883, -25883, -25883, -25884, -25884, -25885, -25885, -25886, -25886, -25887, -25887, -25887, -25888, -25888, -25889, -25889, -25890, -25890, -25890, -25891, -25891, -25892, -25892, -25893, -25893, -25894, -25894, -25894, -25895, -25895, -25896, -25896, -25897, -25897, -25897, -25898, -25898, -25899, -25899, -25900, -25900, -25901, -25901, -25901, -25902, -25902, -25903, -25903, -25904, -25904, -25904, -25905, -25905, -25906, -25906, -25907, -25907, -25907, -25908, -25908, -25909, -25909, -25910, -25910, -25911, -25911, -25911, -25912, -25912, -25913, -25913, -25914, -25914, -25914, -25915, -25915, -25916, -25916, -25917, -25917, -25917, -25918, -25918, -25919, -25919, -25920, -25920, -25920, -25921, -25921, -25922, -25922, -25923, -25923, -25924, -25924, -25924, -25925, -25925, -25926, -25926, -25927, -25927, -25927, -25928, -25928, -25929, -25929, -25930, -25930, -25930, -25931, -25931, -25932, -25932, -25933, -25933, -25933, -25934, -25934, -25935, -25935, -25936, -25936, -25936, -25937, -25937, -25938, -25938, -25939, -25939, -25939, -25940, -25940, -25941, -25941, -25942, -25942, -25942, -25943, -25943, -25944, -25944, -25945, -25945, -25945, -25946, -25946, -25947, -25947, -25948, -25948, -25948, -25949, -25949, -25950, -25950, -25951, -25951, -25951, -25952, -25952, -25953, -25953, -25954, -25954, -25954, -25955, -25955, -25956, -25956, -25957, -25957, -25957, -25958, -25958, -25959, -25959, -25960, -25960, -25960, -25961, -25961, -25962, -25962, -25963, -25963, -25963, -25964, -25964, -25965, -25965, -25966, -25966, -25966, -25967, -25967, -25968, -25968, -25969, -25969, -25969, -25970, -25970, -25971, -25971, -25972, -25972, -25972, -25973, -25973, -25974, -25974, -25974, -25975, -25975, -25976, -25976, -25977, -25977, -25977, -25978, -25978, -25979, -25979, -25980, -25980, -25980, -25981, -25981, -25982, -25982, -25983, -25983, -25983, -25984, -25984, -25985, -25985, -25985, -25986, -25986, -25987, -25987, -25988, -25988, -25988, -25989, -25989, -25990, -25990, -25991, -25991, -25991, -25992, -25992, -25993, -25993, -25994, -25994, -25994, -25995, -25995, -25996, -25996, -25996, -25997, -25997, -25998, -25998, -25999, -25999, -25999, -26000, -26000, -26001, -26001, -26002, -26002, -26002, -26003, -26003, -26004, -26004, -26004, -26005, -26005, -26006, -26006, -26007, -26007, -26007, -26008, -26008, -26009, -26009, -26010, -26010, -26010, -26011, -26011, -26012, -26012, -26012, -26013, -26013, -26014, -26014, -26015, -26015, -26015, -26016, -26016, -26017, -26017, -26017, -26018, -26018, -26019, -26019, -26020, -26020, -26020, -26021, -26021, -26022, -26022, -26022, -26023, -26023, -26024, -26024, -26025, -26025, -26025, -26026, -26026, -26027, -26027, -26027, -26028, -26028, -26029, -26029, -26030, -26030, -26030, -26031, -26031, -26032, -26032, -26032, -26033, -26033, -26034, -26034, -26035, -26035, -26035, -26036, -26036, -26037, -26037, -26037, -26038, -26038, -26039, -26039, -26040, -26040, -26040, -26041, -26041, -26042, -26042, -26042, -26043, -26043, -26044, -26044, -26045, -26045, -26045, -26046, -26046, -26047, -26047, -26047, -26048, -26048, -26049, -26049, -26050, -26050, -26050, -26051, -26051, -26052, -26052, -26052, -26053, -26053, -26054, -26054, -26054, -26055, -26055, -26056, -26056, -26057, -26057, -26057, -26058, -26058, -26059, -26059, -26059, -26060, -26060, -26061, -26061, -26061, -26062, -26062, -26063, -26063, -26064, -26064, -26064, -26065, -26065, -26066, -26066, -26066, -26067, -26067, -26068, -26068, -26068, -26069, -26069, -26070, -26070, -26071, -26071, -26071, -26072, -26072, -26073, -26073, -26073, -26074, -26074, -26075, -26075, -26075, -26076, -26076, -26077, -26077, -26078, -26078, -26078, -26079, -26079, -26080, -26080, -26080, -26081, -26081, -26082, -26082, -26082, -26083, -26083, -26084, -26084, -26084, -26085, -26085, -26086, -26086, -26087, -26087, -26087, -26088, -26088, -26089, -26089, -26089, -26090, -26090, -26091, -26091, -26091, -26092, -26092, -26093, -26093, -26093, -26094, -26094, -26095, -26095, -26096, -26096, -26096, -26097, -26097, -26098, -26098, -26098, -26099, -26099, -26100, -26100, -26100, -26101, -26101, -26102, -26102, -26102, -26103, -26103, -26104, -26104, -26104, -26105, -26105, -26106, -26106, -26106, -26107, -26107, -26108, -26108, -26109, -26109, -26109, -26110, -26110, -26111, -26111, -26111, -26112, -26112, -26113, -26113, -26113, -26114, -26114, -26115, -26115, -26115, -26116, -26116, -26117, -26117, -26117, -26118, -26118, -26119, -26119, -26119, -26120, -26120, -26121, -26121, -26121, -26122, -26122, -26123, -26123, -26123, -26124, -26124, -26125, -26125, -26125, -26126, -26126, -26127, -26127, -26128, -26128, -26128, -26129, -26129, -26130, -26130, -26130, -26131, -26131, -26132, -26132, -26132, -26133, -26133, -26134, -26134, -26134, -26135, -26135, -26136, -26136, -26136, -26137, -26137, -26138, -26138, -26138, -26139, -26139, -26140, -26140, -26140, -26141, -26141, -26142, -26142, -26142, -26143, -26143, -26144, -26144, -26144, -26145, -26145, -26146, -26146, -26146, -26147, -26147, -26148, -26148, -26148, -26149, -26149, -26150, -26150, -26150, -26151, -26151, -26152, -26152, -26152, -26153, -26153, -26154, -26154, -26154, -26155, -26155, -26156, -26156, -26156, -26157, -26157, -26158, -26158, -26158, -26159, -26159, -26160, -26160, -26160, -26161, -26161, -26162, -26162, -26162, -26163, -26163, -26164, -26164, -26164, -26165, -26165, -26166, -26166, -26166, -26167, -26167, -26168, -26168, -26168, -26169, -26169, -26170, -26170, -26170, -26171, -26171, -26172, -26172, -26172, -26173, -26173, -26173, -26174, -26174, -26175, -26175, -26175, -26176, -26176, -26177, -26177, -26177, -26178, -26178, -26179, -26179, -26179, -26180, -26180, -26181, -26181, -26181, -26182, -26182, -26183, -26183, -26183, -26184, -26184, -26185, -26185, -26185, -26186, -26186, -26187, -26187, -26187, -26188, -26188, -26189, -26189, -26189, -26190, -26190, -26191, -26191, -26191, -26192, -26192, -26192, -26193, -26193, -26194, -26194, -26194, -26195, -26195, -26196, -26196, -26196, -26197, -26197, -26198, -26198, -26198, -26199, -26199, -26200, -26200, -26200, -26201, -26201, -26202, -26202, -26202, -26203, -26203, -26203, -26204, -26204, -26205, -26205, -26205, -26206, -26206, -26207, -26207, -26207, -26208, -26208, -26209, -26209, -26209, -26210, -26210, -26211, -26211, -26211, -26212, -26212, -26213, -26213, -26213, -26214, -26214, -26214, -26215, -26215, -26216, -26216, -26216, -26217, -26217, -26218, -26218, -26218, -26219, -26219, -26220, -26220, -26220, -26221, -26221, -26222, -26222, -26222, -26223, -26223, -26223, -26224, -26224, -26225, -26225, -26225, -26226, -26226, -26227, -26227, -26227, -26228, -26228, -26229, -26229, -26229, -26230, -26230, -26230, -26231, -26231, -26232, -26232, -26232, -26233, -26233, -26234, -26234, -26234, -26235, -26235, -26236, -26236, -26236, -26237, -26237, -26237, -26238, -26238, -26239, -26239, -26239, -26240, -26240, -26241, -26241, -26241, -26242, -26242, -26243, -26243, -26243, -26244, -26244, -26244, -26245, -26245, -26246, -26246, -26246, -26247, -26247, -26248, -26248, -26248, -26249, -26249, -26249, -26250, -26250, -26251, -26251, -26251, -26252, -26252, -26253, -26253, -26253, -26254, -26254, -26255, -26255, -26255, -26256, -26256, -26256, -26257, -26257, -26258, -26258, -26258, -26259, -26259, -26260, -26260, -26260, -26261, -26261, -26261, -26262, -26262, -26263, -26263, -26263, -26264, -26264, -26265, -26265, -26265, -26266, -26266, -26266, -26267, -26267, -26268, -26268, -26268, -26269, -26269, -26270, -26270, -26270, -26271, -26271, -26271, -26272, -26272, -26273, -26273, -26273, -26274, -26274, -26275, -26275, -26275, -26276, -26276, -26276, -26277, -26277, -26278, -26278, -26278, -26279, -26279, -26279, -26280, -26280, -26281, -26281, -26281, -26282, -26282, -26283, -26283, -26283, -26284, -26284, -26284, -26285, -26285, -26286, -26286, -26286, -26287, -26287, -26288, -26288, -26288, -26289, -26289, -26289, -26290, -26290, -26291, -26291, -26291, -26292, -26292, -26292, -26293, -26293, -26294, -26294, -26294, -26295, -26295, -26296, -26296, -26296, -26297, -26297, -26297, -26298, -26298, -26299, -26299, -26299, -26300, -26300, -26300, -26301, -26301, -26302, -26302, -26302, -26303, -26303, -26303, -26304, -26304, -26305, -26305, -26305, -26306, -26306, -26307, -26307, -26307, -26308, -26308, -26308, -26309, -26309, -26310, -26310, -26310, -26311, -26311, -26311, -26312, -26312, -26313, -26313, -26313, -26314, -26314, -26314, -26315, -26315, -26316, -26316, -26316, -26317, -26317, -26318, -26318, -26318, -26319, -26319, -26319, -26320, -26320, -26321, -26321, -26321, -26322, -26322, -26322, -26323, -26323, -26324, -26324, -26324, -26325, -26325, -26325, -26326, -26326, -26327, -26327, -26327, -26328, -26328, -26328, -26329, -26329, -26330, -26330, -26330, -26331, -26331, -26331, -26332, -26332, -26333, -26333, -26333, -26334, -26334, -26334, -26335, -26335, -26336, -26336, -26336, -26337, -26337, -26337, -26338, -26338, -26339, -26339, -26339, -26340, -26340, -26340, -26341, -26341, -26342, -26342, -26342, -26343, -26343, -26343, -26344, -26344, -26345, -26345, -26345, -26346, -26346, -26346, -26347, -26347, -26348, -26348, -26348, -26349, -26349, -26349, -26350, -26350, -26351, -26351, -26351, -26352, -26352, -26352, -26353, -26353, -26354, -26354, -26354, -26355, -26355, -26355, -26356, -26356, -26357, -26357, -26357, -26358, -26358, -26358, -26359, -26359, -26360, -26360, -26360, -26361, -26361, -26361, -26362, -26362, -26362, -26363, -26363, -26364, -26364, -26364, -26365, -26365, -26365, -26366, -26366, -26367, -26367, -26367, -26368, -26368, -26368, -26369, -26369, -26370, -26370, -26370, -26371, -26371, -26371, -26372, -26372, -26373, -26373, -26373, -26374, -26374, -26374, -26375, -26375, -26375, -26376, -26376, -26377, -26377, -26377, -26378, -26378, -26378, -26379, -26379, -26380, -26380, -26380, -26381, -26381, -26381, -26382, -26382, -26383, -26383, -26383, -26384, -26384, -26384, -26385, -26385, -26385, -26386, -26386, -26387, -26387, -26387, -26388, -26388, -26388, -26389, -26389, -26390, -26390, -26390, -26391, -26391, -26391, -26392, -26392, -26392, -26393, -26393, -26394, -26394, -26394, -26395, -26395, -26395, -26396, -26396, -26397, -26397, -26397, -26398, -26398, -26398, -26399, -26399, -26399, -26400, -26400, -26401, -26401, -26401 };
+
+// indexed by FH_COLLECT_TIER enum value: NO_MOVE, NULL, HASH, GOOD_CAPTURE, KILLER, COUNTERMOVE, LEFTOVER_QUIET, LOSING_CAPTURE
+static const INT g_rgiAlphaTierWeightQ16[] = { 0, -144115, 235871, 90245, 2718, 32792, -48525, 47465 };
+
+// indexed by NODE_TYPE enum value: NODE_PV, NODE_CUT, NODE_ALL
+static const INT g_rgiAlphaNodeTypeWeightQ16[] = { 0, 210219, 136887 };
+
+#define FHM_ALPHA_W_IMPROVE_Q30 (1348874)
+#define FHM_ALPHA_W_ENEMY_IMPROVE_Q30 (-202996)
+#define FHM_ALPHA_W_IMPROVE_X_ENEMY_Q30 (-18)
+#define FHM_ALPHA_W_MOVE_VALUE_Q30 (19681)
+#define FHM_ALPHA_W_MOVE_FH_PCT_Q30 (-926)
+
+// weight*log1p(min(gap,2000)), Q16, domain [0,2000]
+static const INT g_rgiBetaLogGapQ16[] = { 0, 9805, 15541, 19611, 22767, 25346, 27527, 29416, 31082, 32572, 33921, 35152, 36284, 37332, 38308, 39221, 40079, 40887, 41652, 42378, 43068, 43726, 44355, 44957, 45534, 46089, 46623, 47138, 47634, 48113, 48577, 49026, 49462, 49884, 50294, 50693, 51080, 51457, 51825, 52183, 52532, 52873, 53206, 53531, 53849, 54160, 54464, 54762, 55054, 55340, 55620, 55894, 56164, 56428, 56688, 56943, 57193, 57439, 57681, 57919, 58153, 58383, 58609, 58832, 59051, 59267, 59480, 59689, 59896, 60099, 60300, 60498, 60693, 60885, 61075, 61263, 61448, 61630, 61810, 61988, 62164, 62338, 62509, 62679, 62846, 63011, 63175, 63337, 63496, 63655, 63811, 63965, 64118, 64270, 64419, 64567, 64714, 64859, 65003, 65145, 65286, 65425, 65563, 65700, 65835, 65969, 66102, 66234, 66364, 66493, 66621, 66748, 66874, 66998, 67122, 67244, 67366, 67486, 67606, 67724, 67841, 67958, 68073, 68188, 68302, 68414, 68526, 68637, 68747, 68856, 68965, 69072, 69179, 69285, 69390, 69495, 69598, 69701, 69803, 69905, 70005, 70105, 70205, 70303, 70401, 70498, 70595, 70691, 70786, 70881, 70975, 71068, 71161, 71253, 71345, 71435, 71526, 71616, 71705, 71794, 71882, 71969, 72056, 72143, 72229, 72314, 72399, 72484, 72568, 72651, 72734, 72817, 72899, 72980, 73061, 73142, 73222, 73302, 73381, 73460, 73538, 73616, 73694, 73771, 73847, 73924, 73999, 74075, 74150, 74225, 74299, 74373, 74446, 74519, 74592, 74664, 74736, 74808, 74879, 74950, 75021, 75091, 75161, 75230, 75300, 75368, 75437, 75505, 75573, 75640, 75708, 75775, 75841, 75907, 75973, 76039, 76104, 76169, 76234, 76298, 76363, 76427, 76490, 76553, 76616, 76679, 76742, 76804, 76866, 76927, 76989, 77050, 77111, 77171, 77232, 77292, 77351, 77411, 77470, 77529, 77588, 77647, 77705, 77763, 77821, 77879, 77936, 77993, 78050, 78107, 78163, 78220, 78276, 78331, 78387, 78442, 78497, 78552, 78607, 78662, 78716, 78770, 78824, 78878, 78931, 78984, 79037, 79090, 79143, 79196, 79248, 79300, 79352, 79404, 79455, 79506, 79558, 79609, 79659, 79710, 79760, 79811, 79861, 79911, 79960, 80010, 80059, 80108, 80158, 80206, 80255, 80304, 80352, 80400, 80448, 80496, 80544, 80591, 80639, 80686, 80733, 80780, 80827, 80873, 80920, 80966, 81012, 81058, 81104, 81150, 81195, 81241, 81286, 81331, 81376, 81421, 81466, 81510, 81555, 81599, 81643, 81687, 81731, 81775, 81818, 81862, 81905, 81948, 81991, 82034, 82077, 82120, 82162, 82205, 82247, 82289, 82331, 82373, 82415, 82457, 82498, 82539, 82581, 82622, 82663, 82704, 82745, 82786, 82826, 82867, 82907, 82947, 82987, 83027, 83067, 83107, 83147, 83186, 83226, 83265, 83304, 83343, 83382, 83421, 83460, 83499, 83538, 83576, 83614, 83653, 83691, 83729, 83767, 83805, 83843, 83880, 83918, 83955, 83993, 84030, 84067, 84104, 84141, 84178, 84215, 84252, 84288, 84325, 84361, 84397, 84434, 84470, 84506, 84542, 84578, 84613, 84649, 84685, 84720, 84756, 84791, 84826, 84861, 84896, 84931, 84966, 85001, 85036, 85070, 85105, 85139, 85174, 85208, 85242, 85276, 85310, 85344, 85378, 85412, 85446, 85479, 85513, 85546, 85580, 85613, 85646, 85680, 85713, 85746, 85779, 85811, 85844, 85877, 85910, 85942, 85975, 86007, 86039, 86072, 86104, 86136, 86168, 86200, 86232, 86264, 86295, 86327, 86359, 86390, 86422, 86453, 86484, 86516, 86547, 86578, 86609, 86640, 86671, 86702, 86733, 86763, 86794, 86825, 86855, 86886, 86916, 86946, 86977, 87007, 87037, 87067, 87097, 87127, 87157, 87187, 87216, 87246, 87276, 87305, 87335, 87364, 87393, 87423, 87452, 87481, 87510, 87539, 87568, 87597, 87626, 87655, 87684, 87713, 87741, 87770, 87798, 87827, 87855, 87884, 87912, 87940, 87969, 87997, 88025, 88053, 88081, 88109, 88137, 88164, 88192, 88220, 88248, 88275, 88303, 88330, 88358, 88385, 88412, 88440, 88467, 88494, 88521, 88548, 88575, 88602, 88629, 88656, 88683, 88710, 88736, 88763, 88790, 88816, 88843, 88869, 88896, 88922, 88948, 88975, 89001, 89027, 89053, 89079, 89105, 89131, 89157, 89183, 89209, 89235, 89260, 89286, 89312, 89337, 89363, 89388, 89414, 89439, 89465, 89490, 89515, 89541, 89566, 89591, 89616, 89641, 89666, 89691, 89716, 89741, 89766, 89790, 89815, 89840, 89865, 89889, 89914, 89938, 89963, 89987, 90012, 90036, 90060, 90085, 90109, 90133, 90157, 90181, 90205, 90229, 90253, 90277, 90301, 90325, 90349, 90373, 90397, 90420, 90444, 90468, 90491, 90515, 90538, 90562, 90585, 90609, 90632, 90655, 90679, 90702, 90725, 90748, 90771, 90794, 90818, 90841, 90864, 90886, 90909, 90932, 90955, 90978, 91001, 91023, 91046, 91069, 91091, 91114, 91136, 91159, 91181, 91204, 91226, 91249, 91271, 91293, 91316, 91338, 91360, 91382, 91404, 91426, 91448, 91470, 91492, 91514, 91536, 91558, 91580, 91602, 91624, 91645, 91667, 91689, 91710, 91732, 91754, 91775, 91797, 91818, 91840, 91861, 91882, 91904, 91925, 91946, 91968, 91989, 92010, 92031, 92052, 92073, 92094, 92115, 92136, 92157, 92178, 92199, 92220, 92241, 92262, 92283, 92303, 92324, 92345, 92365, 92386, 92407, 92427, 92448, 92468, 92489, 92509, 92530, 92550, 92570, 92591, 92611, 92631, 92652, 92672, 92692, 92712, 92732, 92752, 92773, 92793, 92813, 92833, 92853, 92873, 92892, 92912, 92932, 92952, 92972, 92992, 93011, 93031, 93051, 93070, 93090, 93110, 93129, 93149, 93168, 93188, 93207, 93227, 93246, 93265, 93285, 93304, 93324, 93343, 93362, 93381, 93400, 93420, 93439, 93458, 93477, 93496, 93515, 93534, 93553, 93572, 93591, 93610, 93629, 93648, 93667, 93686, 93704, 93723, 93742, 93761, 93779, 93798, 93817, 93835, 93854, 93872, 93891, 93909, 93928, 93946, 93965, 93983, 94002, 94020, 94038, 94057, 94075, 94093, 94112, 94130, 94148, 94166, 94185, 94203, 94221, 94239, 94257, 94275, 94293, 94311, 94329, 94347, 94365, 94383, 94401, 94419, 94436, 94454, 94472, 94490, 94508, 94525, 94543, 94561, 94578, 94596, 94614, 94631, 94649, 94667, 94684, 94702, 94719, 94737, 94754, 94771, 94789, 94806, 94824, 94841, 94858, 94876, 94893, 94910, 94927, 94945, 94962, 94979, 94996, 95013, 95030, 95047, 95065, 95082, 95099, 95116, 95133, 95150, 95167, 95183, 95200, 95217, 95234, 95251, 95268, 95285, 95301, 95318, 95335, 95352, 95368, 95385, 95402, 95418, 95435, 95452, 95468, 95485, 95501, 95518, 95534, 95551, 95567, 95584, 95600, 95617, 95633, 95650, 95666, 95682, 95699, 95715, 95731, 95747, 95764, 95780, 95796, 95812, 95828, 95845, 95861, 95877, 95893, 95909, 95925, 95941, 95957, 95973, 95989, 96005, 96021, 96037, 96053, 96069, 96085, 96101, 96117, 96132, 96148, 96164, 96180, 96196, 96211, 96227, 96243, 96258, 96274, 96290, 96305, 96321, 96337, 96352, 96368, 96383, 96399, 96414, 96430, 96445, 96461, 96476, 96492, 96507, 96523, 96538, 96553, 96569, 96584, 96599, 96615, 96630, 96645, 96660, 96676, 96691, 96706, 96721, 96736, 96752, 96767, 96782, 96797, 96812, 96827, 96842, 96857, 96872, 96887, 96902, 96917, 96932, 96947, 96962, 96977, 96992, 97007, 97022, 97036, 97051, 97066, 97081, 97096, 97110, 97125, 97140, 97155, 97169, 97184, 97199, 97213, 97228, 97243, 97257, 97272, 97287, 97301, 97316, 97330, 97345, 97359, 97374, 97388, 97403, 97417, 97432, 97446, 97460, 97475, 97489, 97504, 97518, 97532, 97547, 97561, 97575, 97590, 97604, 97618, 97632, 97647, 97661, 97675, 97689, 97703, 97717, 97732, 97746, 97760, 97774, 97788, 97802, 97816, 97830, 97844, 97858, 97872, 97886, 97900, 97914, 97928, 97942, 97956, 97970, 97984, 97998, 98011, 98025, 98039, 98053, 98067, 98081, 98094, 98108, 98122, 98136, 98149, 98163, 98177, 98190, 98204, 98218, 98231, 98245, 98259, 98272, 98286, 98299, 98313, 98327, 98340, 98354, 98367, 98381, 98394, 98408, 98421, 98435, 98448, 98461, 98475, 98488, 98502, 98515, 98528, 98542, 98555, 98568, 98582, 98595, 98608, 98622, 98635, 98648, 98661, 98675, 98688, 98701, 98714, 98727, 98740, 98754, 98767, 98780, 98793, 98806, 98819, 98832, 98845, 98858, 98871, 98884, 98897, 98911, 98923, 98936, 98949, 98962, 98975, 98988, 99001, 99014, 99027, 99040, 99053, 99066, 99079, 99091, 99104, 99117, 99130, 99143, 99155, 99168, 99181, 99194, 99206, 99219, 99232, 99245, 99257, 99270, 99283, 99295, 99308, 99321, 99333, 99346, 99358, 99371, 99384, 99396, 99409, 99421, 99434, 99446, 99459, 99471, 99484, 99496, 99509, 99521, 99534, 99546, 99559, 99571, 99583, 99596, 99608, 99620, 99633, 99645, 99658, 99670, 99682, 99694, 99707, 99719, 99731, 99744, 99756, 99768, 99780, 99793, 99805, 99817, 99829, 99841, 99854, 99866, 99878, 99890, 99902, 99914, 99926, 99938, 99950, 99963, 99975, 99987, 99999, 100011, 100023, 100035, 100047, 100059, 100071, 100083, 100095, 100107, 100119, 100131, 100142, 100154, 100166, 100178, 100190, 100202, 100214, 100226, 100237, 100249, 100261, 100273, 100285, 100297, 100308, 100320, 100332, 100344, 100355, 100367, 100379, 100391, 100402, 100414, 100426, 100437, 100449, 100461, 100472, 100484, 100496, 100507, 100519, 100530, 100542, 100554, 100565, 100577, 100588, 100600, 100611, 100623, 100634, 100646, 100657, 100669, 100680, 100692, 100703, 100715, 100726, 100738, 100749, 100760, 100772, 100783, 100795, 100806, 100817, 100829, 100840, 100851, 100863, 100874, 100885, 100897, 100908, 100919, 100930, 100942, 100953, 100964, 100975, 100987, 100998, 101009, 101020, 101032, 101043, 101054, 101065, 101076, 101087, 101099, 101110, 101121, 101132, 101143, 101154, 101165, 101176, 101187, 101198, 101210, 101221, 101232, 101243, 101254, 101265, 101276, 101287, 101298, 101309, 101320, 101331, 101342, 101352, 101363, 101374, 101385, 101396, 101407, 101418, 101429, 101440, 101451, 101461, 101472, 101483, 101494, 101505, 101516, 101526, 101537, 101548, 101559, 101570, 101580, 101591, 101602, 101613, 101623, 101634, 101645, 101656, 101666, 101677, 101688, 101698, 101709, 101720, 101730, 101741, 101752, 101762, 101773, 101783, 101794, 101805, 101815, 101826, 101836, 101847, 101858, 101868, 101879, 101889, 101900, 101910, 101921, 101931, 101942, 101952, 101963, 101973, 101984, 101994, 102005, 102015, 102025, 102036, 102046, 102057, 102067, 102077, 102088, 102098, 102109, 102119, 102129, 102140, 102150, 102160, 102171, 102181, 102191, 102202, 102212, 102222, 102233, 102243, 102253, 102263, 102274, 102284, 102294, 102304, 102315, 102325, 102335, 102345, 102355, 102366, 102376, 102386, 102396, 102406, 102416, 102427, 102437, 102447, 102457, 102467, 102477, 102487, 102497, 102507, 102518, 102528, 102538, 102548, 102558, 102568, 102578, 102588, 102598, 102608, 102618, 102628, 102638, 102648, 102658, 102668, 102678, 102688, 102698, 102708, 102718, 102728, 102737, 102747, 102757, 102767, 102777, 102787, 102797, 102807, 102817, 102826, 102836, 102846, 102856, 102866, 102876, 102885, 102895, 102905, 102915, 102925, 102934, 102944, 102954, 102964, 102974, 102983, 102993, 103003, 103013, 103022, 103032, 103042, 103051, 103061, 103071, 103080, 103090, 103100, 103109, 103119, 103129, 103138, 103148, 103158, 103167, 103177, 103187, 103196, 103206, 103215, 103225, 103235, 103244, 103254, 103263, 103273, 103282, 103292, 103301, 103311, 103320, 103330, 103340, 103349, 103359, 103368, 103377, 103387, 103396, 103406, 103415, 103425, 103434, 103444, 103453, 103463, 103472, 103481, 103491, 103500, 103510, 103519, 103528, 103538, 103547, 103556, 103566, 103575, 103585, 103594, 103603, 103613, 103622, 103631, 103641, 103650, 103659, 103668, 103678, 103687, 103696, 103706, 103715, 103724, 103733, 103743, 103752, 103761, 103770, 103779, 103789, 103798, 103807, 103816, 103825, 103835, 103844, 103853, 103862, 103871, 103880, 103890, 103899, 103908, 103917, 103926, 103935, 103944, 103953, 103963, 103972, 103981, 103990, 103999, 104008, 104017, 104026, 104035, 104044, 104053, 104062, 104071, 104080, 104089, 104098, 104107, 104116, 104125, 104134, 104143, 104152, 104161, 104170, 104179, 104188, 104197, 104206, 104215, 104224, 104233, 104242, 104251, 104260, 104269, 104277, 104286, 104295, 104304, 104313, 104322, 104331, 104340, 104348, 104357, 104366, 104375, 104384, 104393, 104401, 104410, 104419, 104428, 104437, 104445, 104454, 104463, 104472, 104481, 104489, 104498, 104507, 104516, 104524, 104533, 104542, 104551, 104559, 104568, 104577, 104585, 104594, 104603, 104612, 104620, 104629, 104638, 104646, 104655, 104664, 104672, 104681, 104690, 104698, 104707, 104715, 104724, 104733, 104741, 104750, 104758, 104767, 104776, 104784, 104793, 104801, 104810, 104819, 104827, 104836, 104844, 104853, 104861, 104870, 104878, 104887, 104895, 104904, 104912, 104921, 104929, 104938, 104946, 104955, 104963, 104972, 104980, 104989, 104997, 105006, 105014, 105023, 105031, 105039, 105048, 105056, 105065, 105073, 105082, 105090, 105098, 105107, 105115, 105123, 105132, 105140, 105149, 105157, 105165, 105174, 105182, 105190, 105199, 105207, 105215, 105224, 105232, 105240, 105249, 105257, 105265, 105274, 105282, 105290, 105298, 105307, 105315, 105323, 105331, 105340, 105348, 105356, 105364, 105373, 105381, 105389, 105397, 105406, 105414, 105422, 105430, 105438, 105447, 105455, 105463, 105471, 105479, 105488, 105496, 105504, 105512, 105520, 105528, 105536, 105545, 105553, 105561, 105569, 105577, 105585, 105593, 105601, 105609, 105618, 105626, 105634, 105642, 105650, 105658, 105666, 105674, 105682, 105690, 105698, 105706, 105714, 105722, 105730, 105738, 105746, 105754, 105763, 105771, 105779, 105787, 105795, 105803, 105810, 105818, 105826, 105834, 105842, 105850, 105858, 105866, 105874, 105882, 105890, 105898, 105906, 105914, 105922, 105930, 105938, 105946, 105953, 105961, 105969, 105977, 105985, 105993, 106001, 106009, 106017, 106024, 106032, 106040, 106048, 106056, 106064, 106072, 106079, 106087, 106095, 106103, 106111, 106118, 106126, 106134, 106142, 106150, 106157, 106165, 106173, 106181, 106189, 106196, 106204, 106212, 106220, 106227, 106235, 106243, 106251, 106258, 106266, 106274, 106282, 106289, 106297, 106305, 106312, 106320, 106328, 106335, 106343, 106351, 106359, 106366, 106374, 106382, 106389, 106397, 106405, 106412, 106420, 106427, 106435, 106443, 106450, 106458, 106466, 106473, 106481, 106489, 106496, 106504, 106511, 106519, 106527, 106534, 106542, 106549, 106557, 106564, 106572, 106580, 106587, 106595, 106602, 106610, 106617, 106625, 106632, 106640, 106647, 106655, 106662, 106670, 106677, 106685, 106692, 106700, 106707, 106715, 106722, 106730, 106737, 106745, 106752, 106760, 106767, 106775, 106782, 106790, 106797, 106805, 106812, 106819, 106827, 106834, 106842, 106849, 106857, 106864, 106871, 106879, 106886, 106894, 106901, 106908, 106916, 106923, 106930, 106938, 106945, 106953, 106960, 106967, 106975, 106982, 106989, 106997, 107004, 107011, 107019, 107026, 107033, 107041, 107048, 107055, 107063, 107070, 107077, 107085, 107092, 107099, 107106, 107114, 107121, 107128, 107136, 107143, 107150, 107157, 107165, 107172, 107179, 107186, 107194, 107201, 107208, 107215, 107222, 107230, 107237, 107244, 107251, 107259, 107266, 107273, 107280, 107287, 107295, 107302, 107309, 107316, 107323, 107330, 107338, 107345, 107352, 107359, 107366, 107373, 107381, 107388, 107395, 107402, 107409, 107416, 107423, 107430, 107438, 107445, 107452, 107459, 107466, 107473, 107480, 107487, 107494, 107501, 107509, 107516, 107523, 107530 };
+
+// weight*log1p(max(gap-2000,0)), Q16, domain [0,3000]
+static const INT g_rgiBetaLogGapOverflowQ16[] = { 0, 67197, 106504, 134393, 156026, 173701, 188645, 201590, 213009, 223223, 232462, 240898, 248657, 255842, 262530, 268787, 274664, 280205, 285447, 290419, 295149, 299659, 303968, 308094, 312052, 315854, 319513, 323038, 326440, 329727, 332906, 335984, 338967, 341861, 344671, 347402, 350058, 352643, 355162, 357616, 360010, 362346, 364627, 366856, 369034, 371165, 373250, 375291, 377290, 379249, 381168, 383051, 384897, 386709, 388488, 390235, 391951, 393637, 395294, 396924, 398526, 400102, 401654, 403180, 404683, 406163, 407621, 409057, 410473, 411868, 413243, 414599, 415936, 417255, 418556, 419840, 421107, 422358, 423593, 424813, 426017, 427207, 428382, 429543, 430690, 431824, 432945, 434053, 435148, 436231, 437302, 438362, 439410, 440447, 441473, 442488, 443492, 444487, 445471, 446445, 447410, 448365, 449311, 450247, 451175, 452094, 453004, 453906, 454800, 455685, 456562, 457432, 458294, 459148, 459994, 460834, 461666, 462491, 463309, 464120, 464925, 465723, 466514, 467299, 468078, 468850, 469617, 470377, 471131, 471880, 472623, 473360, 474092, 474818, 475539, 476254, 476964, 477669, 478369, 479064, 479754, 480439, 481120, 481795, 482466, 483133, 483794, 484452, 485104, 485753, 486397, 487037, 487673, 488304, 488932, 489555, 490174, 490790, 491402, 492009, 492613, 493214, 493810, 494403, 494993, 495578, 496161, 496739, 497315, 497887, 498455, 499021, 499583, 500141, 500697, 501249, 501798, 502345, 502888, 503428, 503965, 504499, 505030, 505559, 506084, 506607, 507126, 507643, 508158, 508669, 509178, 509684, 510188, 510689, 511188, 511683, 512177, 512668, 513156, 513642, 514125, 514607, 515085, 515562, 516036, 516507, 516977, 517444, 517909, 518372, 518832, 519291, 519747, 520201, 520653, 521103, 521551, 521996, 522440, 522882, 523321, 523759, 524195, 524629, 525060, 525490, 525918, 526344, 526769, 527191, 527612, 528030, 528447, 528863, 529276, 529688, 530098, 530506, 530912, 531317, 531720, 532122, 532521, 532919, 533316, 533711, 534104, 534496, 534886, 535274, 535661, 536047, 536431, 536813, 537194, 537574, 537952, 538328, 538703, 539077, 539449, 539820, 540189, 540557, 540923, 541288, 541652, 542015, 542376, 542735, 543094, 543451, 543807, 544161, 544514, 544866, 545217, 545566, 545914, 546261, 546607, 546951, 547294, 547636, 547977, 548316, 548655, 548992, 549328, 549663, 549997, 550329, 550661, 550991, 551320, 551648, 551975, 552301, 552626, 552949, 553272, 553594, 553914, 554234, 554552, 554869, 555186, 555501, 555815, 556128, 556440, 556752, 557062, 557371, 557679, 557987, 558293, 558598, 558903, 559206, 559509, 559810, 560111, 560410, 560709, 561007, 561304, 561600, 561895, 562189, 562483, 562775, 563067, 563357, 563647, 563936, 564224, 564511, 564798, 565083, 565368, 565652, 565935, 566217, 566499, 566779, 567059, 567338, 567616, 567894, 568170, 568446, 568721, 568995, 569269, 569541, 569813, 570084, 570355, 570625, 570893, 571162, 571429, 571696, 571962, 572227, 572491, 572755, 573018, 573281, 573542, 573803, 574064, 574323, 574582, 574840, 575098, 575354, 575611, 575866, 576121, 576375, 576628, 576881, 577133, 577385, 577636, 577886, 578135, 578384, 578632, 578880, 579127, 579373, 579619, 579864, 580109, 580353, 580596, 580839, 581081, 581322, 581563, 581803, 582043, 582282, 582520, 582758, 582996, 583232, 583469, 583704, 583939, 584174, 584408, 584641, 584874, 585106, 585337, 585569, 585799, 586029, 586259, 586487, 586716, 586944, 587171, 587398, 587624, 587850, 588075, 588300, 588524, 588747, 588970, 589193, 589415, 589637, 589858, 590078, 590299, 590518, 590737, 590956, 591174, 591391, 591609, 591825, 592041, 592257, 592472, 592687, 592901, 593115, 593328, 593541, 593753, 593965, 594177, 594388, 594598, 594808, 595018, 595227, 595436, 595644, 595852, 596059, 596266, 596473, 596679, 596884, 597090, 597294, 597499, 597702, 597906, 598109, 598312, 598514, 598715, 598917, 599118, 599318, 599518, 599718, 599917, 600116, 600315, 600513, 600710, 600907, 601104, 601301, 601497, 601692, 601888, 602083, 602277, 602471, 602665, 602858, 603051, 603244, 603436, 603628, 603819, 604010, 604201, 604391, 604581, 604770, 604959, 605148, 605337, 605525, 605712, 605900, 606087, 606273, 606460, 606646, 606831, 607016, 607201, 607386, 607570, 607753, 607937, 608120, 608303, 608485, 608667, 608849, 609030, 609211, 609392, 609572, 609752, 609932, 610111, 610290, 610469, 610648, 610826, 611003, 611181, 611358, 611535, 611711, 611887, 612063, 612238, 612413, 612588, 612763, 612937, 613111, 613284, 613458, 613631, 613803, 613976, 614148, 614319, 614491, 614662, 614833, 615003, 615174, 615344, 615513, 615682, 615852, 616020, 616189, 616357, 616525, 616692, 616860, 617027, 617193, 617360, 617526, 617692, 617857, 618023, 618188, 618352, 618517, 618681, 618845, 619009, 619172, 619335, 619498, 619660, 619823, 619984, 620146, 620308, 620469, 620630, 620790, 620951, 621111, 621271, 621430, 621590, 621749, 621907, 622066, 622224, 622382, 622540, 622698, 622855, 623012, 623168, 623325, 623481, 623637, 623793, 623948, 624104, 624259, 624413, 624568, 624722, 624876, 625030, 625183, 625337, 625490, 625642, 625795, 625947, 626099, 626251, 626403, 626554, 626705, 626856, 627007, 627157, 627307, 627457, 627607, 627757, 627906, 628055, 628204, 628352, 628501, 628649, 628797, 628944, 629092, 629239, 629386, 629533, 629679, 629826, 629972, 630118, 630263, 630409, 630554, 630699, 630844, 630988, 631133, 631277, 631421, 631565, 631708, 631851, 631995, 632137, 632280, 632423, 632565, 632707, 632849, 632990, 633132, 633273, 633414, 633555, 633695, 633836, 633976, 634116, 634256, 634395, 634535, 634674, 634813, 634952, 635090, 635229, 635367, 635505, 635643, 635780, 635918, 636055, 636192, 636329, 636465, 636602, 636738, 636874, 637010, 637146, 637281, 637416, 637552, 637687, 637821, 637956, 638090, 638224, 638358, 638492, 638626, 638759, 638892, 639026, 639158, 639291, 639424, 639556, 639688, 639820, 639952, 640084, 640215, 640346, 640477, 640608, 640739, 640870, 641000, 641130, 641260, 641390, 641520, 641649, 641779, 641908, 642037, 642166, 642294, 642423, 642551, 642679, 642807, 642935, 643063, 643190, 643318, 643445, 643572, 643698, 643825, 643952, 644078, 644204, 644330, 644456, 644581, 644707, 644832, 644957, 645082, 645207, 645332, 645457, 645581, 645705, 645829, 645953, 646077, 646200, 646324, 646447, 646570, 646693, 646816, 646939, 647061, 647183, 647306, 647428, 647549, 647671, 647793, 647914, 648035, 648156, 648277, 648398, 648519, 648639, 648760, 648880, 649000, 649120, 649240, 649359, 649479, 649598, 649717, 649836, 649955, 650074, 650192, 650311, 650429, 650547, 650665, 650783, 650901, 651018, 651136, 651253, 651370, 651487, 651604, 651721, 651838, 651954, 652070, 652187, 652303, 652418, 652534, 652650, 652765, 652881, 652996, 653111, 653226, 653341, 653455, 653570, 653684, 653798, 653913, 654027, 654140, 654254, 654368, 654481, 654594, 654708, 654821, 654934, 655046, 655159, 655272, 655384, 655496, 655608, 655720, 655832, 655944, 656056, 656167, 656279, 656390, 656501, 656612, 656723, 656833, 656944, 657055, 657165, 657275, 657385, 657495, 657605, 657715, 657824, 657934, 658043, 658152, 658262, 658371, 658479, 658588, 658697, 658805, 658914, 659022, 659130, 659238, 659346, 659454, 659561, 659669, 659776, 659884, 659991, 660098, 660205, 660312, 660418, 660525, 660631, 660738, 660844, 660950, 661056, 661162, 661268, 661373, 661479, 661584, 661690, 661795, 661900, 662005, 662110, 662215, 662319, 662424, 662528, 662633, 662737, 662841, 662945, 663049, 663152, 663256, 663359, 663463, 663566, 663669, 663772, 663875, 663978, 664081, 664184, 664286, 664389, 664491, 664593, 664695, 664797, 664899, 665001, 665103, 665204, 665306, 665407, 665508, 665609, 665710, 665811, 665912, 666013, 666113, 666214, 666314, 666415, 666515, 666615, 666715, 666815, 666915, 667014, 667114, 667213, 667313, 667412, 667511, 667610, 667709, 667808, 667907, 668006, 668104, 668203, 668301, 668399, 668497, 668596, 668694, 668791, 668889, 668987, 669084, 669182, 669279, 669377, 669474, 669571, 669668, 669765, 669862, 669958, 670055, 670151, 670248, 670344, 670440, 670536, 670632, 670728, 670824, 670920, 671016, 671111, 671207, 671302, 671397, 671493, 671588, 671683, 671778, 671872, 671967, 672062, 672156, 672251, 672345, 672439, 672533, 672627, 672721, 672815, 672909, 673003, 673096, 673190, 673283, 673377, 673470, 673563, 673656, 673749, 673842, 673935, 674028, 674120, 674213, 674305, 674398, 674490, 674582, 674674, 674766, 674858, 674950, 675042, 675134, 675225, 675317, 675408, 675499, 675591, 675682, 675773, 675864, 675955, 676046, 676136, 676227, 676318, 676408, 676498, 676589, 676679, 676769, 676859, 676949, 677039, 677129, 677219, 677308, 677398, 677487, 677577, 677666, 677755, 677844, 677933, 678022, 678111, 678200, 678289, 678377, 678466, 678554, 678643, 678731, 678819, 678908, 678996, 679084, 679172, 679260, 679347, 679435, 679523, 679610, 679698, 679785, 679872, 679959, 680047, 680134, 680221, 680308, 680394, 680481, 680568, 680654, 680741, 680827, 680914, 681000, 681086, 681172, 681258, 681344, 681430, 681516, 681602, 681688, 681773, 681859, 681944, 682030, 682115, 682200, 682285, 682370, 682455, 682540, 682625, 682710, 682795, 682879, 682964, 683048, 683133, 683217, 683301, 683385, 683470, 683554, 683638, 683721, 683805, 683889, 683973, 684056, 684140, 684223, 684307, 684390, 684473, 684556, 684640, 684723, 684806, 684888, 684971, 685054, 685137, 685219, 685302, 685384, 685467, 685549, 685631, 685714, 685796, 685878, 685960, 686042, 686123, 686205, 686287, 686369, 686450, 686532, 686613, 686694, 686776, 686857, 686938, 687019, 687100, 687181, 687262, 687343, 687424, 687504, 687585, 687666, 687746, 687826, 687907, 687987, 688067, 688147, 688228, 688308, 688387, 688467, 688547, 688627, 688707, 688786, 688866, 688945, 689025, 689104, 689183, 689263, 689342, 689421, 689500, 689579, 689658, 689737, 689815, 689894, 689973, 690051, 690130, 690208, 690287, 690365, 690443, 690522, 690600, 690678, 690756, 690834, 690912, 690990, 691067, 691145, 691223, 691300, 691378, 691455, 691533, 691610, 691687, 691765, 691842, 691919, 691996, 692073, 692150, 692227, 692303, 692380, 692457, 692533, 692610, 692686, 692763, 692839, 692915, 692992, 693068, 693144, 693220, 693296, 693372, 693448, 693524, 693600, 693675, 693751, 693826, 693902, 693977, 694053, 694128, 694204, 694279, 694354, 694429, 694504, 694579, 694654, 694729, 694804, 694879, 694953, 695028, 695103, 695177, 695252, 695326, 695400, 695475, 695549, 695623, 695697, 695771, 695845, 695919, 695993, 696067, 696141, 696215, 696288, 696362, 696436, 696509, 696583, 696656, 696729, 696803, 696876, 696949, 697022, 697095, 697168, 697241, 697314, 697387, 697460, 697533, 697605, 697678, 697751, 697823, 697896, 697968, 698041, 698113, 698185, 698257, 698329, 698402, 698474, 698546, 698618, 698689, 698761, 698833, 698905, 698976, 699048, 699120, 699191, 699263, 699334, 699405, 699477, 699548, 699619, 699690, 699761, 699833, 699904, 699974, 700045, 700116, 700187, 700258, 700328, 700399, 700470, 700540, 700611, 700681, 700751, 700822, 700892, 700962, 701032, 701103, 701173, 701243, 701313, 701383, 701452, 701522, 701592, 701662, 701731, 701801, 701871, 701940, 702010, 702079, 702148, 702218, 702287, 702356, 702425, 702494, 702564, 702633, 702702, 702770, 702839, 702908, 702977, 703046, 703114, 703183, 703252, 703320, 703389, 703457, 703525, 703594, 703662, 703730, 703799, 703867, 703935, 704003, 704071, 704139, 704207, 704275, 704342, 704410, 704478, 704546, 704613, 704681, 704748, 704816, 704883, 704951, 705018, 705085, 705152, 705220, 705287, 705354, 705421, 705488, 705555, 705622, 705689, 705756, 705822, 705889, 705956, 706023, 706089, 706156, 706222, 706289, 706355, 706422, 706488, 706554, 706620, 706687, 706753, 706819, 706885, 706951, 707017, 707083, 707149, 707215, 707280, 707346, 707412, 707477, 707543, 707609, 707674, 707740, 707805, 707870, 707936, 708001, 708066, 708132, 708197, 708262, 708327, 708392, 708457, 708522, 708587, 708652, 708717, 708781, 708846, 708911, 708975, 709040, 709105, 709169, 709234, 709298, 709362, 709427, 709491, 709555, 709620, 709684, 709748, 709812, 709876, 709940, 710004, 710068, 710132, 710196, 710259, 710323, 710387, 710451, 710514, 710578, 710641, 710705, 710768, 710832, 710895, 710959, 711022, 711085, 711148, 711211, 711275, 711338, 711401, 711464, 711527, 711590, 711653, 711715, 711778, 711841, 711904, 711966, 712029, 712092, 712154, 712217, 712279, 712342, 712404, 712466, 712529, 712591, 712653, 712715, 712778, 712840, 712902, 712964, 713026, 713088, 713150, 713212, 713274, 713335, 713397, 713459, 713521, 713582, 713644, 713705, 713767, 713828, 713890, 713951, 714013, 714074, 714135, 714197, 714258, 714319, 714380, 714441, 714502, 714563, 714624, 714685, 714746, 714807, 714868, 714929, 714989, 715050, 715111, 715171, 715232, 715293, 715353, 715414, 715474, 715535, 715595, 715655, 715716, 715776, 715836, 715896, 715956, 716017, 716077, 716137, 716197, 716257, 716317, 716376, 716436, 716496, 716556, 716616, 716675, 716735, 716795, 716854, 716914, 716973, 717033, 717092, 717152, 717211, 717271, 717330, 717389, 717448, 717508, 717567, 717626, 717685, 717744, 717803, 717862, 717921, 717980, 718039, 718098, 718156, 718215, 718274, 718333, 718391, 718450, 718509, 718567, 718626, 718684, 718743, 718801, 718859, 718918, 718976, 719034, 719093, 719151, 719209, 719267, 719325, 719383, 719441, 719499, 719557, 719615, 719673, 719731, 719789, 719847, 719904, 719962, 720020, 720077, 720135, 720193, 720250, 720308, 720365, 720423, 720480, 720537, 720595, 720652, 720709, 720767, 720824, 720881, 720938, 720995, 721052, 721109, 721166, 721223, 721280, 721337, 721394, 721451, 721508, 721564, 721621, 721678, 721735, 721791, 721848, 721904, 721961, 722017, 722074, 722130, 722187, 722243, 722299, 722356, 722412, 722468, 722525, 722581, 722637, 722693, 722749, 722805, 722861, 722917, 722973, 723029, 723085, 723141, 723197, 723252, 723308, 723364, 723420, 723475, 723531, 723586, 723642, 723698, 723753, 723809, 723864, 723919, 723975, 724030, 724085, 724141, 724196, 724251, 724306, 724362, 724417, 724472, 724527, 724582, 724637, 724692, 724747, 724802, 724857, 724911, 724966, 725021, 725076, 725131, 725185, 725240, 725295, 725349, 725404, 725458, 725513, 725567, 725622, 725676, 725731, 725785, 725839, 725893, 725948, 726002, 726056, 726110, 726165, 726219, 726273, 726327, 726381, 726435, 726489, 726543, 726597, 726650, 726704, 726758, 726812, 726866, 726919, 726973, 727027, 727080, 727134, 727188, 727241, 727295, 727348, 727402, 727455, 727508, 727562, 727615, 727668, 727722, 727775, 727828, 727881, 727935, 727988, 728041, 728094, 728147, 728200, 728253, 728306, 728359, 728412, 728465, 728517, 728570, 728623, 728676, 728728, 728781, 728834, 728886, 728939, 728992, 729044, 729097, 729149, 729202, 729254, 729307, 729359, 729411, 729464, 729516, 729568, 729621, 729673, 729725, 729777, 729829, 729881, 729933, 729985, 730037, 730089, 730141, 730193, 730245, 730297, 730349, 730401, 730453, 730504, 730556, 730608, 730660, 730711, 730763, 730815, 730866, 730918, 730969, 731021, 731072, 731124, 731175, 731226, 731278, 731329, 731380, 731432, 731483, 731534, 731585, 731637, 731688, 731739, 731790, 731841, 731892, 731943, 731994, 732045, 732096, 732147, 732198, 732248, 732299, 732350, 732401, 732452, 732502, 732553, 732604, 732654, 732705, 732756, 732806, 732857, 732907, 732958, 733008, 733058, 733109, 733159, 733210, 733260, 733310, 733360, 733411, 733461, 733511, 733561, 733611, 733662, 733712, 733762, 733812, 733862, 733912, 733962, 734012, 734062, 734111, 734161, 734211, 734261, 734311, 734360, 734410, 734460, 734510, 734559, 734609, 734658, 734708, 734758, 734807, 734857, 734906, 734955, 735005, 735054, 735104, 735153, 735202, 735252, 735301, 735350, 735399, 735449, 735498, 735547, 735596, 735645, 735694, 735743, 735792, 735841, 735890, 735939, 735988, 736037, 736086, 736135, 736184, 736232, 736281, 736330, 736379, 736427, 736476, 736525, 736573, 736622, 736670, 736719, 736768, 736816, 736865, 736913, 736961, 737010, 737058, 737107, 737155, 737203, 737252, 737300, 737348, 737396, 737444, 737493, 737541, 737589, 737637, 737685, 737733, 737781, 737829, 737877, 737925, 737973, 738021, 738069, 738117, 738165, 738212, 738260, 738308, 738356, 738403, 738451, 738499, 738546, 738594, 738642, 738689, 738737, 738784, 738832, 738879, 738927, 738974, 739022, 739069, 739116, 739164, 739211, 739258, 739306, 739353, 739400, 739447, 739495, 739542, 739589, 739636, 739683, 739730, 739777, 739824, 739871, 739918, 739965, 740012, 740059, 740106, 740153, 740200, 740246, 740293, 740340, 740387, 740433, 740480, 740527, 740574, 740620, 740667, 740713, 740760, 740807, 740853, 740900, 740946, 740992, 741039, 741085, 741132, 741178, 741224, 741271, 741317, 741363, 741410, 741456, 741502, 741548, 741594, 741641, 741687, 741733, 741779, 741825, 741871, 741917, 741963, 742009, 742055, 742101, 742147, 742193, 742239, 742284, 742330, 742376, 742422, 742468, 742513, 742559, 742605, 742650, 742696, 742742, 742787, 742833, 742879, 742924, 742970, 743015, 743061, 743106, 743151, 743197, 743242, 743288, 743333, 743378, 743424, 743469, 743514, 743559, 743605, 743650, 743695, 743740, 743785, 743831, 743876, 743921, 743966, 744011, 744056, 744101, 744146, 744191, 744236, 744281, 744325, 744370, 744415, 744460, 744505, 744550, 744594, 744639, 744684, 744729, 744773, 744818, 744863, 744907, 744952, 744996, 745041, 745085, 745130, 745175, 745219, 745263, 745308, 745352, 745397, 745441, 745485, 745530, 745574, 745618, 745663, 745707, 745751, 745795, 745840, 745884, 745928, 745972, 746016, 746060, 746104, 746148, 746192, 746236, 746280, 746324, 746368, 746412, 746456, 746500, 746544, 746588, 746632, 746676, 746719, 746763, 746807, 746851, 746894, 746938, 746982, 747025, 747069, 747113, 747156, 747200, 747243, 747287, 747330, 747374, 747417, 747461, 747504, 747548, 747591, 747634, 747678, 747721, 747765, 747808, 747851, 747894, 747938, 747981, 748024, 748067, 748110, 748154, 748197, 748240, 748283, 748326, 748369, 748412, 748455, 748498, 748541, 748584, 748627, 748670, 748713, 748756, 748799, 748841, 748884, 748927, 748970, 749013, 749055, 749098, 749141, 749184, 749226, 749269, 749312, 749354, 749397, 749439, 749482, 749524, 749567, 749610, 749652, 749694, 749737, 749779, 749822, 749864, 749907, 749949, 749991, 750034, 750076, 750118, 750160, 750203, 750245, 750287, 750329, 750372, 750414, 750456, 750498, 750540, 750582, 750624, 750666, 750708, 750750, 750792, 750834, 750876, 750918, 750960, 751002, 751044, 751086, 751128, 751169, 751211, 751253, 751295, 751337, 751378, 751420, 751462, 751503, 751545, 751587, 751628, 751670, 751712, 751753, 751795, 751836, 751878, 751919, 751961, 752002, 752044, 752085, 752127, 752168, 752209, 752251, 752292, 752333, 752375, 752416, 752457, 752499, 752540, 752581, 752622, 752663, 752705, 752746, 752787, 752828, 752869, 752910, 752951, 752992, 753033, 753074, 753115, 753156, 753197, 753238, 753279, 753320, 753361, 753402, 753443, 753484, 753524, 753565, 753606, 753647, 753688, 753728, 753769, 753810, 753850, 753891, 753932, 753972, 754013, 754054, 754094, 754135, 754175, 754216, 754256, 754297, 754337, 754378, 754418, 754459, 754499, 754540, 754580, 754620, 754661, 754701, 754741, 754782, 754822, 754862, 754902, 754943, 754983, 755023, 755063, 755103, 755144, 755184, 755224, 755264, 755304, 755344, 755384, 755424, 755464, 755504, 755544, 755584, 755624, 755664, 755704, 755744, 755784, 755824, 755864, 755903, 755943, 755983, 756023, 756063, 756102, 756142, 756182, 756221, 756261, 756301, 756340, 756380, 756420, 756459, 756499, 756539, 756578, 756618, 756657, 756697, 756736, 756776, 756815, 756855, 756894, 756933, 756973, 757012, 757052, 757091, 757130, 757170, 757209, 757248, 757287, 757327, 757366, 757405, 757444, 757484, 757523, 757562, 757601, 757640, 757679, 757718, 757757, 757797, 757836, 757875, 757914, 757953, 757992, 758031, 758070, 758109, 758147, 758186, 758225, 758264, 758303, 758342, 758381, 758419, 758458, 758497, 758536, 758575, 758613, 758652, 758691, 758729, 758768, 758807, 758845, 758884, 758923, 758961, 759000, 759038, 759077, 759116, 759154, 759193, 759231, 759270, 759308, 759346, 759385, 759423, 759462, 759500, 759538, 759577, 759615, 759653, 759692, 759730, 759768, 759807, 759845, 759883, 759921, 759960, 759998, 760036, 760074, 760112, 760150, 760188, 760227, 760265, 760303, 760341, 760379, 760417, 760455, 760493, 760531, 760569, 760607, 760645, 760683, 760720, 760758, 760796, 760834, 760872, 760910, 760948, 760985, 761023, 761061, 761099, 761136, 761174, 761212, 761250, 761287, 761325, 761363, 761400, 761438, 761476, 761513, 761551, 761588, 761626, 761663, 761701, 761738, 761776, 761813, 761851, 761888, 761926, 761963, 762001, 762038, 762075, 762113, 762150, 762187, 762225, 762262, 762299, 762337, 762374, 762411, 762448, 762486, 762523, 762560, 762597, 762634, 762671, 762709, 762746, 762783, 762820, 762857, 762894, 762931, 762968, 763005, 763042, 763079, 763116, 763153, 763190, 763227, 763264, 763301, 763338, 763375, 763411, 763448, 763485, 763522, 763559, 763596, 763632, 763669, 763706, 763743, 763779, 763816, 763853, 763889, 763926, 763963, 763999, 764036, 764073, 764109, 764146, 764182, 764219, 764256, 764292, 764329, 764365, 764402, 764438, 764475, 764511, 764547, 764584, 764620, 764657, 764693, 764729, 764766, 764802, 764838, 764875, 764911, 764947, 764984, 765020, 765056, 765092, 765129, 765165, 765201, 765237, 765273, 765310, 765346, 765382, 765418, 765454, 765490, 765526, 765562, 765598, 765634, 765670, 765706, 765742, 765778, 765814, 765850, 765886, 765922, 765958, 765994, 766030, 766066, 766102, 766137, 766173, 766209, 766245, 766281, 766316, 766352, 766388, 766424, 766459, 766495, 766531, 766566, 766602, 766638, 766673, 766709, 766745, 766780, 766816, 766852, 766887, 766923, 766958, 766994, 767029, 767065, 767100, 767136, 767171, 767207, 767242, 767277, 767313, 767348, 767384, 767419, 767454, 767490, 767525, 767560, 767596, 767631, 767666, 767702, 767737, 767772, 767807, 767843, 767878, 767913, 767948, 767983, 768018, 768054, 768089, 768124, 768159, 768194, 768229, 768264, 768299, 768334, 768369, 768404, 768439, 768474, 768509, 768544, 768579, 768614, 768649, 768684, 768719, 768754, 768789, 768824, 768858, 768893, 768928, 768963, 768998, 769032, 769067, 769102, 769137, 769172, 769206, 769241, 769276, 769310, 769345, 769380, 769414, 769449, 769484, 769518, 769553, 769587, 769622, 769657, 769691, 769726, 769760, 769795, 769829, 769864, 769898, 769933, 769967, 770002, 770036, 770070, 770105, 770139, 770174, 770208, 770242, 770277, 770311, 770345, 770380, 770414, 770448, 770483, 770517, 770551, 770585, 770620, 770654, 770688, 770722, 770756, 770790, 770825, 770859, 770893, 770927, 770961, 770995, 771029, 771063, 771097, 771131, 771165, 771200, 771234, 771268, 771302, 771335, 771369, 771403, 771437, 771471, 771505, 771539, 771573, 771607, 771641, 771675, 771708, 771742, 771776, 771810, 771844, 771877, 771911, 771945, 771979, 772012, 772046, 772080, 772114, 772147, 772181, 772215, 772248, 772282, 772316, 772349, 772383, 772416, 772450, 772484, 772517, 772551, 772584, 772618, 772651, 772685, 772718, 772752, 772785, 772819, 772852, 772886, 772919, 772952, 772986, 773019, 773053, 773086, 773119, 773153, 773186, 773219, 773253, 773286, 773319, 773352, 773386, 773419, 773452, 773485, 773519, 773552, 773585, 773618, 773651, 773685, 773718, 773751, 773784, 773817, 773850, 773883, 773916, 773949, 773982, 774016, 774049, 774082, 774115, 774148, 774181, 774214, 774247, 774279, 774312, 774345, 774378, 774411, 774444, 774477, 774510, 774543, 774576, 774608, 774641, 774674, 774707, 774740, 774773, 774805, 774838, 774871, 774904, 774936, 774969, 775002, 775034, 775067, 775100, 775132, 775165, 775198, 775230, 775263, 775296, 775328, 775361, 775393, 775426, 775459, 775491, 775524, 775556, 775589, 775621, 775654, 775686, 775719, 775751, 775784, 775816, 775848, 775881, 775913, 775946, 775978, 776010, 776043, 776075, 776107, 776140, 776172, 776204 };
+
+// weight*log1p(depth_plies), Q16, domain [0,40]
+static const INT g_rgiBetaLogDepthQ16[] = { 0, -17113, -27123, -34226, -39735, -44236, -48042, -51339, -54246, -56848, -59201, -61349, -63325, -65155, -66858, -68451, -69948, -71359, -72694, -73960, -75165, -76314, -77411, -78462, -79470, -80438, -81370, -82268, -83134, -83971, -84780, -85564, -86324, -87061, -87777, -88472, -89149, -89807, -90448, -91073, -91683 };
+
+// weight*log1p(ordinal), Q16, domain [0,224]
+static const INT g_rgiBetaLogOrdinalQ16[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+
+// weight*log1p(fh_attempts), Q16, domain [0,65535]
+static const INT g_rgiBetaLogFhAttemptsQ16[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+
+// weight*log1p(material), Q16, domain [0,8000]
+static const INT g_rgiBetaLogMaterialQ16[] = { 0, -2136, -3385, -4272, -4959, -5521, -5996, -6408, -6771, -7095, -7389, -7657, -7904, -8132, -8345, -8544, -8730, -8907, -9073, -9231, -9382, -9525, -9662, -9793, -9919, -10040, -10156, -10268, -10376, -10481, -10582, -10680, -10774, -10866, -10956, -11043, -11127, -11209, -11289, -11367, -11443, -11518, -11590, -11661, -11730, -11798, -11864, -11929, -11993, -12055, -12116, -12176, -12234, -12292, -12349, -12404, -12459, -12512, -12565, -12617, -12668, -12718, -12767, -12816, -12863, -12910, -12957, -13002, -13047, -13092, -13135, -13178, -13221, -13263, -13304, -13345, -13385, -13425, -13464, -13503, -13541, -13579, -13617, -13653, -13690, -13726, -13762, -13797, -13832, -13866, -13900, -13934, -13967, -14000, -14033, -14065, -14097, -14128, -14160, -14191, -14221, -14252, -14282, -14312, -14341, -14370, -14399, -14428, -14456, -14484, -14512, -14540, -14567, -14595, -14621, -14648, -14675, -14701, -14727, -14753, -14778, -14803, -14829, -14854, -14878, -14903, -14927, -14951, -14975, -14999, -15023, -15046, -15070, -15093, -15116, -15138, -15161, -15183, -15205, -15228, -15250, -15271, -15293, -15314, -15336, -15357, -15378, -15399, -15420, -15440, -15461, -15481, -15501, -15521, -15541, -15561, -15581, -15600, -15620, -15639, -15658, -15677, -15696, -15715, -15734, -15752, -15771, -15789, -15808, -15826, -15844, -15862, -15880, -15898, -15915, -15933, -15950, -15968, -15985, -16002, -16019, -16036, -16053, -16070, -16086, -16103, -16120, -16136, -16152, -16169, -16185, -16201, -16217, -16233, -16249, -16264, -16280, -16296, -16311, -16327, -16342, -16357, -16373, -16388, -16403, -16418, -16433, -16448, -16462, -16477, -16492, -16506, -16521, -16535, -16550, -16564, -16578, -16592, -16606, -16620, -16634, -16648, -16662, -16676, -16690, -16703, -16717, -16730, -16744, -16757, -16771, -16784, -16797, -16810, -16824, -16837, -16850, -16863, -16876, -16888, -16901, -16914, -16927, -16939, -16952, -16965, -16977, -16990, -17002, -17014, -17027, -17039, -17051, -17063, -17075, -17087, -17099, -17111, -17123, -17135, -17147, -17159, -17170, -17182, -17194, -17205, -17217, -17229, -17240, -17251, -17263, -17274, -17285, -17297, -17308, -17319, -17330, -17341, -17352, -17363, -17374, -17385, -17396, -17407, -17418, -17429, -17440, -17450, -17461, -17472, -17482, -17493, -17503, -17514, -17524, -17535, -17545, -17555, -17566, -17576, -17586, -17597, -17607, -17617, -17627, -17637, -17647, -17657, -17667, -17677, -17687, -17697, -17707, -17717, -17726, -17736, -17746, -17756, -17765, -17775, -17785, -17794, -17804, -17813, -17823, -17832, -17842, -17851, -17860, -17870, -17879, -17888, -17898, -17907, -17916, -17925, -17934, -17944, -17953, -17962, -17971, -17980, -17989, -17998, -18007, -18016, -18025, -18033, -18042, -18051, -18060, -18069, -18077, -18086, -18095, -18103, -18112, -18121, -18129, -18138, -18146, -18155, -18163, -18172, -18180, -18189, -18197, -18206, -18214, -18222, -18231, -18239, -18247, -18255, -18264, -18272, -18280, -18288, -18296, -18305, -18313, -18321, -18329, -18337, -18345, -18353, -18361, -18369, -18377, -18385, -18392, -18400, -18408, -18416, -18424, -18432, -18439, -18447, -18455, -18463, -18470, -18478, -18486, -18493, -18501, -18508, -18516, -18524, -18531, -18539, -18546, -18554, -18561, -18569, -18576, -18583, -18591, -18598, -18606, -18613, -18620, -18628, -18635, -18642, -18649, -18657, -18664, -18671, -18678, -18685, -18693, -18700, -18707, -18714, -18721, -18728, -18735, -18742, -18749, -18756, -18763, -18770, -18777, -18784, -18791, -18798, -18805, -18812, -18819, -18826, -18832, -18839, -18846, -18853, -18860, -18866, -18873, -18880, -18887, -18893, -18900, -18907, -18913, -18920, -18927, -18933, -18940, -18946, -18953, -18960, -18966, -18973, -18979, -18986, -18992, -18999, -19005, -19012, -19018, -19024, -19031, -19037, -19044, -19050, -19056, -19063, -19069, -19075, -19082, -19088, -19094, -19100, -19107, -19113, -19119, -19125, -19132, -19138, -19144, -19150, -19156, -19162, -19169, -19175, -19181, -19187, -19193, -19199, -19205, -19211, -19217, -19223, -19229, -19235, -19241, -19247, -19253, -19259, -19265, -19271, -19277, -19283, -19289, -19295, -19301, -19306, -19312, -19318, -19324, -19330, -19336, -19341, -19347, -19353, -19359, -19364, -19370, -19376, -19382, -19387, -19393, -19399, -19404, -19410, -19416, -19421, -19427, -19433, -19438, -19444, -19449, -19455, -19461, -19466, -19472, -19477, -19483, -19488, -19494, -19499, -19505, -19510, -19516, -19521, -19527, -19532, -19538, -19543, -19549, -19554, -19559, -19565, -19570, -19576, -19581, -19586, -19592, -19597, -19602, -19608, -19613, -19618, -19623, -19629, -19634, -19639, -19645, -19650, -19655, -19660, -19665, -19671, -19676, -19681, -19686, -19691, -19697, -19702, -19707, -19712, -19717, -19722, -19727, -19732, -19738, -19743, -19748, -19753, -19758, -19763, -19768, -19773, -19778, -19783, -19788, -19793, -19798, -19803, -19808, -19813, -19818, -19823, -19828, -19833, -19838, -19843, -19848, -19853, -19857, -19862, -19867, -19872, -19877, -19882, -19887, -19892, -19896, -19901, -19906, -19911, -19916, -19920, -19925, -19930, -19935, -19940, -19944, -19949, -19954, -19959, -19963, -19968, -19973, -19978, -19982, -19987, -19992, -19996, -20001, -20006, -20010, -20015, -20020, -20024, -20029, -20034, -20038, -20043, -20047, -20052, -20057, -20061, -20066, -20070, -20075, -20080, -20084, -20089, -20093, -20098, -20102, -20107, -20111, -20116, -20120, -20125, -20129, -20134, -20138, -20143, -20147, -20152, -20156, -20160, -20165, -20169, -20174, -20178, -20183, -20187, -20191, -20196, -20200, -20205, -20209, -20213, -20218, -20222, -20226, -20231, -20235, -20239, -20244, -20248, -20252, -20257, -20261, -20265, -20270, -20274, -20278, -20282, -20287, -20291, -20295, -20299, -20304, -20308, -20312, -20316, -20321, -20325, -20329, -20333, -20337, -20342, -20346, -20350, -20354, -20358, -20362, -20367, -20371, -20375, -20379, -20383, -20387, -20391, -20396, -20400, -20404, -20408, -20412, -20416, -20420, -20424, -20428, -20432, -20436, -20440, -20444, -20449, -20453, -20457, -20461, -20465, -20469, -20473, -20477, -20481, -20485, -20489, -20493, -20497, -20501, -20505, -20509, -20513, -20517, -20520, -20524, -20528, -20532, -20536, -20540, -20544, -20548, -20552, -20556, -20560, -20564, -20568, -20571, -20575, -20579, -20583, -20587, -20591, -20595, -20598, -20602, -20606, -20610, -20614, -20618, -20622, -20625, -20629, -20633, -20637, -20641, -20644, -20648, -20652, -20656, -20660, -20663, -20667, -20671, -20675, -20678, -20682, -20686, -20690, -20693, -20697, -20701, -20705, -20708, -20712, -20716, -20719, -20723, -20727, -20730, -20734, -20738, -20741, -20745, -20749, -20753, -20756, -20760, -20763, -20767, -20771, -20774, -20778, -20782, -20785, -20789, -20793, -20796, -20800, -20803, -20807, -20811, -20814, -20818, -20821, -20825, -20829, -20832, -20836, -20839, -20843, -20846, -20850, -20853, -20857, -20861, -20864, -20868, -20871, -20875, -20878, -20882, -20885, -20889, -20892, -20896, -20899, -20903, -20906, -20910, -20913, -20917, -20920, -20924, -20927, -20930, -20934, -20937, -20941, -20944, -20948, -20951, -20955, -20958, -20961, -20965, -20968, -20972, -20975, -20979, -20982, -20985, -20989, -20992, -20995, -20999, -21002, -21006, -21009, -21012, -21016, -21019, -21022, -21026, -21029, -21033, -21036, -21039, -21043, -21046, -21049, -21053, -21056, -21059, -21062, -21066, -21069, -21072, -21076, -21079, -21082, -21086, -21089, -21092, -21095, -21099, -21102, -21105, -21109, -21112, -21115, -21118, -21122, -21125, -21128, -21131, -21135, -21138, -21141, -21144, -21147, -21151, -21154, -21157, -21160, -21164, -21167, -21170, -21173, -21176, -21180, -21183, -21186, -21189, -21192, -21195, -21199, -21202, -21205, -21208, -21211, -21214, -21218, -21221, -21224, -21227, -21230, -21233, -21236, -21240, -21243, -21246, -21249, -21252, -21255, -21258, -21261, -21264, -21268, -21271, -21274, -21277, -21280, -21283, -21286, -21289, -21292, -21295, -21298, -21301, -21305, -21308, -21311, -21314, -21317, -21320, -21323, -21326, -21329, -21332, -21335, -21338, -21341, -21344, -21347, -21350, -21353, -21356, -21359, -21362, -21365, -21368, -21371, -21374, -21377, -21380, -21383, -21386, -21389, -21392, -21395, -21398, -21401, -21404, -21407, -21410, -21413, -21416, -21419, -21422, -21425, -21428, -21431, -21434, -21436, -21439, -21442, -21445, -21448, -21451, -21454, -21457, -21460, -21463, -21466, -21469, -21471, -21474, -21477, -21480, -21483, -21486, -21489, -21492, -21495, -21497, -21500, -21503, -21506, -21509, -21512, -21515, -21518, -21520, -21523, -21526, -21529, -21532, -21535, -21537, -21540, -21543, -21546, -21549, -21552, -21554, -21557, -21560, -21563, -21566, -21569, -21571, -21574, -21577, -21580, -21583, -21585, -21588, -21591, -21594, -21597, -21599, -21602, -21605, -21608, -21610, -21613, -21616, -21619, -21622, -21624, -21627, -21630, -21633, -21635, -21638, -21641, -21644, -21646, -21649, -21652, -21655, -21657, -21660, -21663, -21665, -21668, -21671, -21674, -21676, -21679, -21682, -21684, -21687, -21690, -21693, -21695, -21698, -21701, -21703, -21706, -21709, -21711, -21714, -21717, -21719, -21722, -21725, -21727, -21730, -21733, -21735, -21738, -21741, -21743, -21746, -21749, -21751, -21754, -21757, -21759, -21762, -21765, -21767, -21770, -21773, -21775, -21778, -21780, -21783, -21786, -21788, -21791, -21794, -21796, -21799, -21801, -21804, -21807, -21809, -21812, -21814, -21817, -21820, -21822, -21825, -21827, -21830, -21832, -21835, -21838, -21840, -21843, -21845, -21848, -21850, -21853, -21856, -21858, -21861, -21863, -21866, -21868, -21871, -21874, -21876, -21879, -21881, -21884, -21886, -21889, -21891, -21894, -21896, -21899, -21901, -21904, -21906, -21909, -21911, -21914, -21916, -21919, -21922, -21924, -21927, -21929, -21932, -21934, -21937, -21939, -21942, -21944, -21946, -21949, -21951, -21954, -21956, -21959, -21961, -21964, -21966, -21969, -21971, -21974, -21976, -21979, -21981, -21984, -21986, -21988, -21991, -21993, -21996, -21998, -22001, -22003, -22006, -22008, -22010, -22013, -22015, -22018, -22020, -22023, -22025, -22027, -22030, -22032, -22035, -22037, -22040, -22042, -22044, -22047, -22049, -22052, -22054, -22056, -22059, -22061, -22064, -22066, -22068, -22071, -22073, -22076, -22078, -22080, -22083, -22085, -22087, -22090, -22092, -22095, -22097, -22099, -22102, -22104, -22106, -22109, -22111, -22113, -22116, -22118, -22121, -22123, -22125, -22128, -22130, -22132, -22135, -22137, -22139, -22142, -22144, -22146, -22149, -22151, -22153, -22156, -22158, -22160, -22163, -22165, -22167, -22170, -22172, -22174, -22176, -22179, -22181, -22183, -22186, -22188, -22190, -22193, -22195, -22197, -22199, -22202, -22204, -22206, -22209, -22211, -22213, -22215, -22218, -22220, -22222, -22225, -22227, -22229, -22231, -22234, -22236, -22238, -22240, -22243, -22245, -22247, -22249, -22252, -22254, -22256, -22258, -22261, -22263, -22265, -22267, -22270, -22272, -22274, -22276, -22279, -22281, -22283, -22285, -22288, -22290, -22292, -22294, -22296, -22299, -22301, -22303, -22305, -22307, -22310, -22312, -22314, -22316, -22319, -22321, -22323, -22325, -22327, -22330, -22332, -22334, -22336, -22338, -22341, -22343, -22345, -22347, -22349, -22351, -22354, -22356, -22358, -22360, -22362, -22364, -22367, -22369, -22371, -22373, -22375, -22377, -22380, -22382, -22384, -22386, -22388, -22390, -22393, -22395, -22397, -22399, -22401, -22403, -22405, -22408, -22410, -22412, -22414, -22416, -22418, -22420, -22423, -22425, -22427, -22429, -22431, -22433, -22435, -22437, -22440, -22442, -22444, -22446, -22448, -22450, -22452, -22454, -22456, -22459, -22461, -22463, -22465, -22467, -22469, -22471, -22473, -22475, -22477, -22480, -22482, -22484, -22486, -22488, -22490, -22492, -22494, -22496, -22498, -22500, -22502, -22505, -22507, -22509, -22511, -22513, -22515, -22517, -22519, -22521, -22523, -22525, -22527, -22529, -22531, -22533, -22536, -22538, -22540, -22542, -22544, -22546, -22548, -22550, -22552, -22554, -22556, -22558, -22560, -22562, -22564, -22566, -22568, -22570, -22572, -22574, -22576, -22578, -22580, -22582, -22584, -22586, -22588, -22591, -22593, -22595, -22597, -22599, -22601, -22603, -22605, -22607, -22609, -22611, -22613, -22615, -22617, -22619, -22621, -22623, -22625, -22627, -22629, -22631, -22633, -22635, -22637, -22639, -22641, -22643, -22645, -22647, -22648, -22650, -22652, -22654, -22656, -22658, -22660, -22662, -22664, -22666, -22668, -22670, -22672, -22674, -22676, -22678, -22680, -22682, -22684, -22686, -22688, -22690, -22692, -22694, -22696, -22698, -22700, -22702, -22703, -22705, -22707, -22709, -22711, -22713, -22715, -22717, -22719, -22721, -22723, -22725, -22727, -22729, -22731, -22732, -22734, -22736, -22738, -22740, -22742, -22744, -22746, -22748, -22750, -22752, -22754, -22756, -22757, -22759, -22761, -22763, -22765, -22767, -22769, -22771, -22773, -22775, -22776, -22778, -22780, -22782, -22784, -22786, -22788, -22790, -22792, -22794, -22795, -22797, -22799, -22801, -22803, -22805, -22807, -22809, -22811, -22812, -22814, -22816, -22818, -22820, -22822, -22824, -22826, -22827, -22829, -22831, -22833, -22835, -22837, -22839, -22840, -22842, -22844, -22846, -22848, -22850, -22852, -22853, -22855, -22857, -22859, -22861, -22863, -22865, -22866, -22868, -22870, -22872, -22874, -22876, -22877, -22879, -22881, -22883, -22885, -22887, -22888, -22890, -22892, -22894, -22896, -22898, -22899, -22901, -22903, -22905, -22907, -22909, -22910, -22912, -22914, -22916, -22918, -22919, -22921, -22923, -22925, -22927, -22928, -22930, -22932, -22934, -22936, -22938, -22939, -22941, -22943, -22945, -22947, -22948, -22950, -22952, -22954, -22955, -22957, -22959, -22961, -22963, -22964, -22966, -22968, -22970, -22972, -22973, -22975, -22977, -22979, -22980, -22982, -22984, -22986, -22988, -22989, -22991, -22993, -22995, -22996, -22998, -23000, -23002, -23004, -23005, -23007, -23009, -23011, -23012, -23014, -23016, -23018, -23019, -23021, -23023, -23025, -23026, -23028, -23030, -23032, -23033, -23035, -23037, -23039, -23040, -23042, -23044, -23046, -23047, -23049, -23051, -23053, -23054, -23056, -23058, -23059, -23061, -23063, -23065, -23066, -23068, -23070, -23072, -23073, -23075, -23077, -23078, -23080, -23082, -23084, -23085, -23087, -23089, -23091, -23092, -23094, -23096, -23097, -23099, -23101, -23102, -23104, -23106, -23108, -23109, -23111, -23113, -23114, -23116, -23118, -23120, -23121, -23123, -23125, -23126, -23128, -23130, -23131, -23133, -23135, -23136, -23138, -23140, -23142, -23143, -23145, -23147, -23148, -23150, -23152, -23153, -23155, -23157, -23158, -23160, -23162, -23163, -23165, -23167, -23168, -23170, -23172, -23173, -23175, -23177, -23178, -23180, -23182, -23183, -23185, -23187, -23188, -23190, -23192, -23193, -23195, -23197, -23198, -23200, -23202, -23203, -23205, -23207, -23208, -23210, -23212, -23213, -23215, -23217, -23218, -23220, -23222, -23223, -23225, -23226, -23228, -23230, -23231, -23233, -23235, -23236, -23238, -23240, -23241, -23243, -23244, -23246, -23248, -23249, -23251, -23253, -23254, -23256, -23257, -23259, -23261, -23262, -23264, -23266, -23267, -23269, -23270, -23272, -23274, -23275, -23277, -23279, -23280, -23282, -23283, -23285, -23287, -23288, -23290, -23291, -23293, -23295, -23296, -23298, -23299, -23301, -23303, -23304, -23306, -23307, -23309, -23311, -23312, -23314, -23315, -23317, -23319, -23320, -23322, -23323, -23325, -23327, -23328, -23330, -23331, -23333, -23335, -23336, -23338, -23339, -23341, -23342, -23344, -23346, -23347, -23349, -23350, -23352, -23353, -23355, -23357, -23358, -23360, -23361, -23363, -23364, -23366, -23368, -23369, -23371, -23372, -23374, -23375, -23377, -23379, -23380, -23382, -23383, -23385, -23386, -23388, -23390, -23391, -23393, -23394, -23396, -23397, -23399, -23400, -23402, -23403, -23405, -23407, -23408, -23410, -23411, -23413, -23414, -23416, -23417, -23419, -23420, -23422, -23424, -23425, -23427, -23428, -23430, -23431, -23433, -23434, -23436, -23437, -23439, -23440, -23442, -23444, -23445, -23447, -23448, -23450, -23451, -23453, -23454, -23456, -23457, -23459, -23460, -23462, -23463, -23465, -23466, -23468, -23469, -23471, -23472, -23474, -23475, -23477, -23479, -23480, -23482, -23483, -23485, -23486, -23488, -23489, -23491, -23492, -23494, -23495, -23497, -23498, -23500, -23501, -23503, -23504, -23506, -23507, -23509, -23510, -23512, -23513, -23515, -23516, -23518, -23519, -23521, -23522, -23524, -23525, -23527, -23528, -23530, -23531, -23532, -23534, -23535, -23537, -23538, -23540, -23541, -23543, -23544, -23546, -23547, -23549, -23550, -23552, -23553, -23555, -23556, -23558, -23559, -23561, -23562, -23564, -23565, -23567, -23568, -23569, -23571, -23572, -23574, -23575, -23577, -23578, -23580, -23581, -23583, -23584, -23586, -23587, -23588, -23590, -23591, -23593, -23594, -23596, -23597, -23599, -23600, -23602, -23603, -23604, -23606, -23607, -23609, -23610, -23612, -23613, -23615, -23616, -23618, -23619, -23620, -23622, -23623, -23625, -23626, -23628, -23629, -23631, -23632, -23633, -23635, -23636, -23638, -23639, -23641, -23642, -23643, -23645, -23646, -23648, -23649, -23651, -23652, -23653, -23655, -23656, -23658, -23659, -23661, -23662, -23663, -23665, -23666, -23668, -23669, -23671, -23672, -23673, -23675, -23676, -23678, -23679, -23681, -23682, -23683, -23685, -23686, -23688, -23689, -23690, -23692, -23693, -23695, -23696, -23697, -23699, -23700, -23702, -23703, -23704, -23706, -23707, -23709, -23710, -23712, -23713, -23714, -23716, -23717, -23719, -23720, -23721, -23723, -23724, -23726, -23727, -23728, -23730, -23731, -23732, -23734, -23735, -23737, -23738, -23739, -23741, -23742, -23744, -23745, -23746, -23748, -23749, -23751, -23752, -23753, -23755, -23756, -23757, -23759, -23760, -23762, -23763, -23764, -23766, -23767, -23768, -23770, -23771, -23773, -23774, -23775, -23777, -23778, -23779, -23781, -23782, -23784, -23785, -23786, -23788, -23789, -23790, -23792, -23793, -23795, -23796, -23797, -23799, -23800, -23801, -23803, -23804, -23805, -23807, -23808, -23810, -23811, -23812, -23814, -23815, -23816, -23818, -23819, -23820, -23822, -23823, -23824, -23826, -23827, -23828, -23830, -23831, -23833, -23834, -23835, -23837, -23838, -23839, -23841, -23842, -23843, -23845, -23846, -23847, -23849, -23850, -23851, -23853, -23854, -23855, -23857, -23858, -23859, -23861, -23862, -23863, -23865, -23866, -23867, -23869, -23870, -23871, -23873, -23874, -23875, -23877, -23878, -23879, -23881, -23882, -23883, -23885, -23886, -23887, -23889, -23890, -23891, -23893, -23894, -23895, -23897, -23898, -23899, -23901, -23902, -23903, -23905, -23906, -23907, -23908, -23910, -23911, -23912, -23914, -23915, -23916, -23918, -23919, -23920, -23922, -23923, -23924, -23926, -23927, -23928, -23929, -23931, -23932, -23933, -23935, -23936, -23937, -23939, -23940, -23941, -23942, -23944, -23945, -23946, -23948, -23949, -23950, -23952, -23953, -23954, -23955, -23957, -23958, -23959, -23961, -23962, -23963, -23965, -23966, -23967, -23968, -23970, -23971, -23972, -23974, -23975, -23976, -23977, -23979, -23980, -23981, -23983, -23984, -23985, -23986, -23988, -23989, -23990, -23992, -23993, -23994, -23995, -23997, -23998, -23999, -24000, -24002, -24003, -24004, -24006, -24007, -24008, -24009, -24011, -24012, -24013, -24015, -24016, -24017, -24018, -24020, -24021, -24022, -24023, -24025, -24026, -24027, -24028, -24030, -24031, -24032, -24034, -24035, -24036, -24037, -24039, -24040, -24041, -24042, -24044, -24045, -24046, -24047, -24049, -24050, -24051, -24052, -24054, -24055, -24056, -24057, -24059, -24060, -24061, -24062, -24064, -24065, -24066, -24067, -24069, -24070, -24071, -24072, -24074, -24075, -24076, -24077, -24079, -24080, -24081, -24082, -24084, -24085, -24086, -24087, -24089, -24090, -24091, -24092, -24094, -24095, -24096, -24097, -24099, -24100, -24101, -24102, -24103, -24105, -24106, -24107, -24108, -24110, -24111, -24112, -24113, -24115, -24116, -24117, -24118, -24119, -24121, -24122, -24123, -24124, -24126, -24127, -24128, -24129, -24131, -24132, -24133, -24134, -24135, -24137, -24138, -24139, -24140, -24142, -24143, -24144, -24145, -24146, -24148, -24149, -24150, -24151, -24152, -24154, -24155, -24156, -24157, -24159, -24160, -24161, -24162, -24163, -24165, -24166, -24167, -24168, -24169, -24171, -24172, -24173, -24174, -24175, -24177, -24178, -24179, -24180, -24182, -24183, -24184, -24185, -24186, -24188, -24189, -24190, -24191, -24192, -24194, -24195, -24196, -24197, -24198, -24200, -24201, -24202, -24203, -24204, -24206, -24207, -24208, -24209, -24210, -24211, -24213, -24214, -24215, -24216, -24217, -24219, -24220, -24221, -24222, -24223, -24225, -24226, -24227, -24228, -24229, -24230, -24232, -24233, -24234, -24235, -24236, -24238, -24239, -24240, -24241, -24242, -24244, -24245, -24246, -24247, -24248, -24249, -24251, -24252, -24253, -24254, -24255, -24256, -24258, -24259, -24260, -24261, -24262, -24264, -24265, -24266, -24267, -24268, -24269, -24271, -24272, -24273, -24274, -24275, -24276, -24278, -24279, -24280, -24281, -24282, -24283, -24285, -24286, -24287, -24288, -24289, -24290, -24292, -24293, -24294, -24295, -24296, -24297, -24298, -24300, -24301, -24302, -24303, -24304, -24305, -24307, -24308, -24309, -24310, -24311, -24312, -24314, -24315, -24316, -24317, -24318, -24319, -24320, -24322, -24323, -24324, -24325, -24326, -24327, -24328, -24330, -24331, -24332, -24333, -24334, -24335, -24337, -24338, -24339, -24340, -24341, -24342, -24343, -24345, -24346, -24347, -24348, -24349, -24350, -24351, -24352, -24354, -24355, -24356, -24357, -24358, -24359, -24360, -24362, -24363, -24364, -24365, -24366, -24367, -24368, -24370, -24371, -24372, -24373, -24374, -24375, -24376, -24377, -24379, -24380, -24381, -24382, -24383, -24384, -24385, -24386, -24388, -24389, -24390, -24391, -24392, -24393, -24394, -24395, -24397, -24398, -24399, -24400, -24401, -24402, -24403, -24404, -24406, -24407, -24408, -24409, -24410, -24411, -24412, -24413, -24415, -24416, -24417, -24418, -24419, -24420, -24421, -24422, -24423, -24425, -24426, -24427, -24428, -24429, -24430, -24431, -24432, -24433, -24435, -24436, -24437, -24438, -24439, -24440, -24441, -24442, -24443, -24445, -24446, -24447, -24448, -24449, -24450, -24451, -24452, -24453, -24454, -24456, -24457, -24458, -24459, -24460, -24461, -24462, -24463, -24464, -24465, -24467, -24468, -24469, -24470, -24471, -24472, -24473, -24474, -24475, -24476, -24478, -24479, -24480, -24481, -24482, -24483, -24484, -24485, -24486, -24487, -24488, -24490, -24491, -24492, -24493, -24494, -24495, -24496, -24497, -24498, -24499, -24500, -24501, -24503, -24504, -24505, -24506, -24507, -24508, -24509, -24510, -24511, -24512, -24513, -24514, -24516, -24517, -24518, -24519, -24520, -24521, -24522, -24523, -24524, -24525, -24526, -24527, -24529, -24530, -24531, -24532, -24533, -24534, -24535, -24536, -24537, -24538, -24539, -24540, -24541, -24542, -24544, -24545, -24546, -24547, -24548, -24549, -24550, -24551, -24552, -24553, -24554, -24555, -24556, -24557, -24558, -24560, -24561, -24562, -24563, -24564, -24565, -24566, -24567, -24568, -24569, -24570, -24571, -24572, -24573, -24574, -24575, -24577, -24578, -24579, -24580, -24581, -24582, -24583, -24584, -24585, -24586, -24587, -24588, -24589, -24590, -24591, -24592, -24593, -24594, -24596, -24597, -24598, -24599, -24600, -24601, -24602, -24603, -24604, -24605, -24606, -24607, -24608, -24609, -24610, -24611, -24612, -24613, -24614, -24615, -24617, -24618, -24619, -24620, -24621, -24622, -24623, -24624, -24625, -24626, -24627, -24628, -24629, -24630, -24631, -24632, -24633, -24634, -24635, -24636, -24637, -24638, -24639, -24640, -24642, -24643, -24644, -24645, -24646, -24647, -24648, -24649, -24650, -24651, -24652, -24653, -24654, -24655, -24656, -24657, -24658, -24659, -24660, -24661, -24662, -24663, -24664, -24665, -24666, -24667, -24668, -24669, -24670, -24671, -24672, -24674, -24675, -24676, -24677, -24678, -24679, -24680, -24681, -24682, -24683, -24684, -24685, -24686, -24687, -24688, -24689, -24690, -24691, -24692, -24693, -24694, -24695, -24696, -24697, -24698, -24699, -24700, -24701, -24702, -24703, -24704, -24705, -24706, -24707, -24708, -24709, -24710, -24711, -24712, -24713, -24714, -24715, -24716, -24717, -24718, -24719, -24720, -24721, -24722, -24723, -24724, -24725, -24726, -24727, -24728, -24729, -24730, -24731, -24732, -24733, -24734, -24736, -24737, -24738, -24739, -24740, -24741, -24742, -24743, -24744, -24745, -24746, -24747, -24748, -24749, -24750, -24751, -24752, -24753, -24754, -24755, -24756, -24757, -24758, -24759, -24760, -24761, -24762, -24763, -24764, -24765, -24766, -24767, -24768, -24769, -24770, -24771, -24772, -24773, -24773, -24774, -24775, -24776, -24777, -24778, -24779, -24780, -24781, -24782, -24783, -24784, -24785, -24786, -24787, -24788, -24789, -24790, -24791, -24792, -24793, -24794, -24795, -24796, -24797, -24798, -24799, -24800, -24801, -24802, -24803, -24804, -24805, -24806, -24807, -24808, -24809, -24810, -24811, -24812, -24813, -24814, -24815, -24816, -24817, -24818, -24819, -24820, -24821, -24822, -24823, -24824, -24825, -24826, -24827, -24828, -24829, -24830, -24831, -24832, -24833, -24834, -24834, -24835, -24836, -24837, -24838, -24839, -24840, -24841, -24842, -24843, -24844, -24845, -24846, -24847, -24848, -24849, -24850, -24851, -24852, -24853, -24854, -24855, -24856, -24857, -24858, -24859, -24860, -24861, -24862, -24863, -24864, -24865, -24866, -24866, -24867, -24868, -24869, -24870, -24871, -24872, -24873, -24874, -24875, -24876, -24877, -24878, -24879, -24880, -24881, -24882, -24883, -24884, -24885, -24886, -24887, -24888, -24889, -24890, -24890, -24891, -24892, -24893, -24894, -24895, -24896, -24897, -24898, -24899, -24900, -24901, -24902, -24903, -24904, -24905, -24906, -24907, -24908, -24909, -24910, -24911, -24911, -24912, -24913, -24914, -24915, -24916, -24917, -24918, -24919, -24920, -24921, -24922, -24923, -24924, -24925, -24926, -24927, -24928, -24929, -24929, -24930, -24931, -24932, -24933, -24934, -24935, -24936, -24937, -24938, -24939, -24940, -24941, -24942, -24943, -24944, -24945, -24945, -24946, -24947, -24948, -24949, -24950, -24951, -24952, -24953, -24954, -24955, -24956, -24957, -24958, -24959, -24960, -24960, -24961, -24962, -24963, -24964, -24965, -24966, -24967, -24968, -24969, -24970, -24971, -24972, -24973, -24974, -24974, -24975, -24976, -24977, -24978, -24979, -24980, -24981, -24982, -24983, -24984, -24985, -24986, -24987, -24987, -24988, -24989, -24990, -24991, -24992, -24993, -24994, -24995, -24996, -24997, -24998, -24999, -25000, -25000, -25001, -25002, -25003, -25004, -25005, -25006, -25007, -25008, -25009, -25010, -25011, -25011, -25012, -25013, -25014, -25015, -25016, -25017, -25018, -25019, -25020, -25021, -25022, -25023, -25023, -25024, -25025, -25026, -25027, -25028, -25029, -25030, -25031, -25032, -25033, -25033, -25034, -25035, -25036, -25037, -25038, -25039, -25040, -25041, -25042, -25043, -25044, -25044, -25045, -25046, -25047, -25048, -25049, -25050, -25051, -25052, -25053, -25054, -25054, -25055, -25056, -25057, -25058, -25059, -25060, -25061, -25062, -25063, -25063, -25064, -25065, -25066, -25067, -25068, -25069, -25070, -25071, -25072, -25073, -25073, -25074, -25075, -25076, -25077, -25078, -25079, -25080, -25081, -25082, -25082, -25083, -25084, -25085, -25086, -25087, -25088, -25089, -25090, -25091, -25091, -25092, -25093, -25094, -25095, -25096, -25097, -25098, -25099, -25099, -25100, -25101, -25102, -25103, -25104, -25105, -25106, -25107, -25107, -25108, -25109, -25110, -25111, -25112, -25113, -25114, -25115, -25116, -25116, -25117, -25118, -25119, -25120, -25121, -25122, -25123, -25123, -25124, -25125, -25126, -25127, -25128, -25129, -25130, -25131, -25131, -25132, -25133, -25134, -25135, -25136, -25137, -25138, -25139, -25139, -25140, -25141, -25142, -25143, -25144, -25145, -25146, -25146, -25147, -25148, -25149, -25150, -25151, -25152, -25153, -25154, -25154, -25155, -25156, -25157, -25158, -25159, -25160, -25161, -25161, -25162, -25163, -25164, -25165, -25166, -25167, -25168, -25168, -25169, -25170, -25171, -25172, -25173, -25174, -25175, -25175, -25176, -25177, -25178, -25179, -25180, -25181, -25181, -25182, -25183, -25184, -25185, -25186, -25187, -25188, -25188, -25189, -25190, -25191, -25192, -25193, -25194, -25195, -25195, -25196, -25197, -25198, -25199, -25200, -25201, -25201, -25202, -25203, -25204, -25205, -25206, -25207, -25207, -25208, -25209, -25210, -25211, -25212, -25213, -25214, -25214, -25215, -25216, -25217, -25218, -25219, -25220, -25220, -25221, -25222, -25223, -25224, -25225, -25226, -25226, -25227, -25228, -25229, -25230, -25231, -25232, -25232, -25233, -25234, -25235, -25236, -25237, -25238, -25238, -25239, -25240, -25241, -25242, -25243, -25244, -25244, -25245, -25246, -25247, -25248, -25249, -25250, -25250, -25251, -25252, -25253, -25254, -25255, -25255, -25256, -25257, -25258, -25259, -25260, -25261, -25261, -25262, -25263, -25264, -25265, -25266, -25266, -25267, -25268, -25269, -25270, -25271, -25272, -25272, -25273, -25274, -25275, -25276, -25277, -25277, -25278, -25279, -25280, -25281, -25282, -25283, -25283, -25284, -25285, -25286, -25287, -25288, -25288, -25289, -25290, -25291, -25292, -25293, -25293, -25294, -25295, -25296, -25297, -25298, -25298, -25299, -25300, -25301, -25302, -25303, -25304, -25304, -25305, -25306, -25307, -25308, -25309, -25309, -25310, -25311, -25312, -25313, -25314, -25314, -25315, -25316, -25317, -25318, -25319, -25319, -25320, -25321, -25322, -25323, -25324, -25324, -25325, -25326, -25327, -25328, -25329, -25329, -25330, -25331, -25332, -25333, -25333, -25334, -25335, -25336, -25337, -25338, -25338, -25339, -25340, -25341, -25342, -25343, -25343, -25344, -25345, -25346, -25347, -25348, -25348, -25349, -25350, -25351, -25352, -25352, -25353, -25354, -25355, -25356, -25357, -25357, -25358, -25359, -25360, -25361, -25362, -25362, -25363, -25364, -25365, -25366, -25366, -25367, -25368, -25369, -25370, -25371, -25371, -25372, -25373, -25374, -25375, -25375, -25376, -25377, -25378, -25379, -25380, -25380, -25381, -25382, -25383, -25384, -25384, -25385, -25386, -25387, -25388, -25389, -25389, -25390, -25391, -25392, -25393, -25393, -25394, -25395, -25396, -25397, -25397, -25398, -25399, -25400, -25401, -25402, -25402, -25403, -25404, -25405, -25406, -25406, -25407, -25408, -25409, -25410, -25410, -25411, -25412, -25413, -25414, -25414, -25415, -25416, -25417, -25418, -25418, -25419, -25420, -25421, -25422, -25423, -25423, -25424, -25425, -25426, -25427, -25427, -25428, -25429, -25430, -25431, -25431, -25432, -25433, -25434, -25435, -25435, -25436, -25437, -25438, -25439, -25439, -25440, -25441, -25442, -25443, -25443, -25444, -25445, -25446, -25447, -25447, -25448, -25449, -25450, -25451, -25451, -25452, -25453, -25454, -25455, -25455, -25456, -25457, -25458, -25459, -25459, -25460, -25461, -25462, -25463, -25463, -25464, -25465, -25466, -25466, -25467, -25468, -25469, -25470, -25470, -25471, -25472, -25473, -25474, -25474, -25475, -25476, -25477, -25478, -25478, -25479, -25480, -25481, -25482, -25482, -25483, -25484, -25485, -25485, -25486, -25487, -25488, -25489, -25489, -25490, -25491, -25492, -25493, -25493, -25494, -25495, -25496, -25496, -25497, -25498, -25499, -25500, -25500, -25501, -25502, -25503, -25504, -25504, -25505, -25506, -25507, -25507, -25508, -25509, -25510, -25511, -25511, -25512, -25513, -25514, -25515, -25515, -25516, -25517, -25518, -25518, -25519, -25520, -25521, -25522, -25522, -25523, -25524, -25525, -25525, -25526, -25527, -25528, -25529, -25529, -25530, -25531, -25532, -25532, -25533, -25534, -25535, -25536, -25536, -25537, -25538, -25539, -25539, -25540, -25541, -25542, -25543, -25543, -25544, -25545, -25546, -25546, -25547, -25548, -25549, -25549, -25550, -25551, -25552, -25553, -25553, -25554, -25555, -25556, -25556, -25557, -25558, -25559, -25559, -25560, -25561, -25562, -25563, -25563, -25564, -25565, -25566, -25566, -25567, -25568, -25569, -25569, -25570, -25571, -25572, -25573, -25573, -25574, -25575, -25576, -25576, -25577, -25578, -25579, -25579, -25580, -25581, -25582, -25583, -25583, -25584, -25585, -25586, -25586, -25587, -25588, -25589, -25589, -25590, -25591, -25592, -25592, -25593, -25594, -25595, -25595, -25596, -25597, -25598, -25599, -25599, -25600, -25601, -25602, -25602, -25603, -25604, -25605, -25605, -25606, -25607, -25608, -25608, -25609, -25610, -25611, -25611, -25612, -25613, -25614, -25614, -25615, -25616, -25617, -25617, -25618, -25619, -25620, -25620, -25621, -25622, -25623, -25623, -25624, -25625, -25626, -25627, -25627, -25628, -25629, -25630, -25630, -25631, -25632, -25633, -25633, -25634, -25635, -25636, -25636, -25637, -25638, -25639, -25639, -25640, -25641, -25642, -25642, -25643, -25644, -25645, -25645, -25646, -25647, -25648, -25648, -25649, -25650, -25651, -25651, -25652, -25653, -25654, -25654, -25655, -25656, -25657, -25657, -25658, -25659, -25659, -25660, -25661, -25662, -25662, -25663, -25664, -25665, -25665, -25666, -25667, -25668, -25668, -25669, -25670, -25671, -25671, -25672, -25673, -25674, -25674, -25675, -25676, -25677, -25677, -25678, -25679, -25680, -25680, -25681, -25682, -25683, -25683, -25684, -25685, -25685, -25686, -25687, -25688, -25688, -25689, -25690, -25691, -25691, -25692, -25693, -25694, -25694, -25695, -25696, -25697, -25697, -25698, -25699, -25699, -25700, -25701, -25702, -25702, -25703, -25704, -25705, -25705, -25706, -25707, -25708, -25708, -25709, -25710, -25710, -25711, -25712, -25713, -25713, -25714, -25715, -25716, -25716, -25717, -25718, -25719, -25719, -25720, -25721, -25721, -25722, -25723, -25724, -25724, -25725, -25726, -25727, -25727, -25728, -25729, -25729, -25730, -25731, -25732, -25732, -25733, -25734, -25735, -25735, -25736, -25737, -25738, -25738, -25739, -25740, -25740, -25741, -25742, -25743, -25743, -25744, -25745, -25745, -25746, -25747, -25748, -25748, -25749, -25750, -25751, -25751, -25752, -25753, -25753, -25754, -25755, -25756, -25756, -25757, -25758, -25759, -25759, -25760, -25761, -25761, -25762, -25763, -25764, -25764, -25765, -25766, -25766, -25767, -25768, -25769, -25769, -25770, -25771, -25771, -25772, -25773, -25774, -25774, -25775, -25776, -25777, -25777, -25778, -25779, -25779, -25780, -25781, -25782, -25782, -25783, -25784, -25784, -25785, -25786, -25787, -25787, -25788, -25789, -25789, -25790, -25791, -25792, -25792, -25793, -25794, -25794, -25795, -25796, -25797, -25797, -25798, -25799, -25799, -25800, -25801, -25802, -25802, -25803, -25804, -25804, -25805, -25806, -25806, -25807, -25808, -25809, -25809, -25810, -25811, -25811, -25812, -25813, -25814, -25814, -25815, -25816, -25816, -25817, -25818, -25819, -25819, -25820, -25821, -25821, -25822, -25823, -25824, -25824, -25825, -25826, -25826, -25827, -25828, -25828, -25829, -25830, -25831, -25831, -25832, -25833, -25833, -25834, -25835, -25835, -25836, -25837, -25838, -25838, -25839, -25840, -25840, -25841, -25842, -25843, -25843, -25844, -25845, -25845, -25846, -25847, -25847, -25848, -25849, -25850, -25850, -25851, -25852, -25852, -25853, -25854, -25854, -25855, -25856, -25857, -25857, -25858, -25859, -25859, -25860, -25861, -25861, -25862, -25863, -25864, -25864, -25865, -25866, -25866, -25867, -25868, -25868, -25869, -25870, -25870, -25871, -25872, -25873, -25873, -25874, -25875, -25875, -25876, -25877, -25877, -25878, -25879, -25880, -25880, -25881, -25882, -25882, -25883, -25884, -25884, -25885, -25886, -25886, -25887, -25888, -25889, -25889, -25890, -25891, -25891, -25892, -25893, -25893, -25894, -25895, -25895, -25896, -25897, -25898, -25898, -25899, -25900, -25900, -25901, -25902, -25902, -25903, -25904, -25904, -25905, -25906, -25906, -25907, -25908, -25909, -25909, -25910, -25911, -25911, -25912, -25913, -25913, -25914, -25915, -25915, -25916, -25917, -25917, -25918, -25919, -25920, -25920, -25921, -25922, -25922, -25923, -25924, -25924, -25925, -25926, -25926, -25927, -25928, -25928, -25929, -25930, -25930, -25931, -25932, -25933, -25933, -25934, -25935, -25935, -25936, -25937, -25937, -25938, -25939, -25939, -25940, -25941, -25941, -25942, -25943, -25943, -25944, -25945, -25945, -25946, -25947, -25947, -25948, -25949, -25950, -25950, -25951, -25952, -25952, -25953, -25954, -25954, -25955, -25956, -25956, -25957, -25958, -25958, -25959, -25960, -25960, -25961, -25962, -25962, -25963, -25964, -25964, -25965, -25966, -25966, -25967, -25968, -25968, -25969, -25970, -25970, -25971, -25972, -25973, -25973, -25974, -25975, -25975, -25976, -25977, -25977, -25978, -25979, -25979, -25980, -25981, -25981, -25982, -25983, -25983, -25984, -25985, -25985, -25986, -25987, -25987, -25988, -25989, -25989, -25990, -25991, -25991, -25992, -25993, -25993, -25994, -25995, -25995, -25996, -25997, -25997, -25998, -25999, -25999, -26000, -26001, -26001, -26002, -26003, -26003, -26004, -26005, -26005, -26006, -26007, -26007, -26008, -26009, -26009, -26010, -26011, -26011, -26012, -26013, -26013, -26014, -26015, -26015, -26016, -26017, -26017, -26018, -26019, -26019, -26020, -26021, -26021, -26022, -26023, -26023, -26024, -26025, -26025, -26026, -26027, -26027, -26028, -26029, -26029, -26030, -26031, -26031, -26032, -26033, -26033, -26034, -26035, -26035, -26036, -26036, -26037, -26038, -26038, -26039, -26040, -26040, -26041, -26042, -26042, -26043, -26044, -26044, -26045, -26046, -26046, -26047, -26048, -26048, -26049, -26050, -26050, -26051, -26052, -26052, -26053, -26054, -26054, -26055, -26056, -26056, -26057, -26058, -26058, -26059, -26059, -26060, -26061, -26061, -26062, -26063, -26063, -26064, -26065, -26065, -26066, -26067, -26067, -26068, -26069, -26069, -26070, -26071, -26071, -26072, -26073, -26073, -26074, -26074, -26075, -26076, -26076, -26077, -26078, -26078, -26079, -26080, -26080, -26081, -26082, -26082, -26083, -26084, -26084, -26085, -26086, -26086, -26087, -26088, -26088, -26089, -26089, -26090, -26091, -26091, -26092, -26093, -26093, -26094, -26095, -26095, -26096, -26097, -26097, -26098, -26099, -26099, -26100, -26100, -26101, -26102, -26102, -26103, -26104, -26104, -26105, -26106, -26106, -26107, -26108, -26108, -26109, -26109, -26110, -26111, -26111, -26112, -26113, -26113, -26114, -26115, -26115, -26116, -26117, -26117, -26118, -26118, -26119, -26120, -26120, -26121, -26122, -26122, -26123, -26124, -26124, -26125, -26126, -26126, -26127, -26127, -26128, -26129, -26129, -26130, -26131, -26131, -26132, -26133, -26133, -26134, -26134, -26135, -26136, -26136, -26137, -26138, -26138, -26139, -26140, -26140, -26141, -26142, -26142, -26143, -26143, -26144, -26145, -26145, -26146, -26147, -26147, -26148, -26149, -26149, -26150, -26150, -26151, -26152, -26152, -26153, -26154, -26154, -26155, -26156, -26156, -26157, -26157, -26158, -26159, -26159, -26160, -26161, -26161, -26162, -26162, -26163, -26164, -26164, -26165, -26166, -26166, -26167, -26168, -26168, -26169, -26169, -26170, -26171, -26171, -26172, -26173, -26173, -26174, -26174, -26175, -26176, -26176, -26177, -26178, -26178, -26179, -26180, -26180, -26181, -26181, -26182, -26183, -26183, -26184, -26185, -26185, -26186, -26186, -26187, -26188, -26188, -26189, -26190, -26190, -26191, -26191, -26192, -26193, -26193, -26194, -26195, -26195, -26196, -26196, -26197, -26198, -26198, -26199, -26200, -26200, -26201, -26201, -26202, -26203, -26203, -26204, -26205, -26205, -26206, -26206, -26207, -26208, -26208, -26209, -26210, -26210, -26211, -26211, -26212, -26213, -26213, -26214, -26215, -26215, -26216, -26216, -26217, -26218, -26218, -26219, -26220, -26220, -26221, -26221, -26222, -26223, -26223, -26224, -26225, -26225, -26226, -26226, -26227, -26228, -26228, -26229, -26229, -26230, -26231, -26231, -26232, -26233, -26233, -26234, -26234, -26235, -26236, -26236, -26237, -26238, -26238, -26239, -26239, -26240, -26241, -26241, -26242, -26242, -26243, -26244, -26244, -26245, -26246, -26246, -26247, -26247, -26248, -26249, -26249, -26250, -26250, -26251, -26252, -26252, -26253, -26254, -26254, -26255, -26255, -26256, -26257, -26257, -26258, -26258, -26259, -26260, -26260, -26261, -26262, -26262, -26263, -26263, -26264, -26265, -26265, -26266, -26266, -26267, -26268, -26268, -26269, -26270, -26270, -26271, -26271, -26272, -26273, -26273, -26274, -26274, -26275, -26276, -26276, -26277, -26277, -26278, -26279, -26279, -26280, -26280, -26281, -26282, -26282, -26283, -26284, -26284, -26285, -26285, -26286, -26287, -26287, -26288, -26288, -26289, -26290, -26290, -26291, -26291, -26292, -26293, -26293, -26294, -26294, -26295, -26296, -26296, -26297, -26298, -26298, -26299, -26299, -26300, -26301, -26301, -26302, -26302, -26303, -26304, -26304, -26305, -26305, -26306, -26307, -26307, -26308, -26308, -26309, -26310, -26310, -26311, -26311, -26312, -26313, -26313, -26314, -26314, -26315, -26316, -26316, -26317, -26317, -26318, -26319, -26319, -26320, -26320, -26321, -26322, -26322, -26323, -26323, -26324, -26325, -26325, -26326, -26326, -26327, -26328, -26328, -26329, -26329, -26330, -26331, -26331, -26332, -26332, -26333, -26334, -26334, -26335, -26335, -26336, -26337, -26337, -26338, -26338, -26339, -26340, -26340, -26341, -26341, -26342, -26343, -26343, -26344, -26344, -26345, -26346, -26346, -26347, -26347, -26348, -26349, -26349, -26350, -26350, -26351, -26352, -26352, -26353, -26353, -26354, -26355, -26355, -26356, -26356, -26357, -26358, -26358, -26359, -26359, -26360, -26360, -26361, -26362, -26362, -26363, -26363, -26364, -26365, -26365, -26366, -26366, -26367, -26368, -26368, -26369, -26369, -26370, -26371, -26371, -26372, -26372, -26373, -26374, -26374, -26375, -26375, -26376, -26376, -26377, -26378, -26378, -26379, -26379, -26380, -26381, -26381, -26382, -26382, -26383, -26384, -26384, -26385, -26385, -26386, -26387, -26387, -26388, -26388, -26389, -26389, -26390, -26391, -26391, -26392, -26392, -26393, -26394, -26394, -26395, -26395, -26396, -26396, -26397, -26398, -26398, -26399, -26399, -26400, -26401, -26401, -26402, -26402, -26403, -26404, -26404, -26405, -26405, -26406, -26406, -26407, -26408, -26408, -26409, -26409, -26410, -26411, -26411, -26412, -26412, -26413, -26413, -26414, -26415, -26415, -26416, -26416, -26417, -26418, -26418, -26419, -26419, -26420, -26420, -26421, -26422, -26422, -26423, -26423, -26424, -26425, -26425, -26426, -26426, -26427, -26427, -26428, -26429, -26429, -26430, -26430, -26431, -26432, -26432, -26433, -26433, -26434, -26434, -26435, -26436, -26436, -26437, -26437, -26438, -26438, -26439, -26440, -26440, -26441, -26441, -26442, -26443, -26443, -26444, -26444, -26445, -26445, -26446, -26447, -26447, -26448, -26448, -26449, -26449, -26450, -26451, -26451, -26452, -26452, -26453, -26453, -26454, -26455, -26455, -26456, -26456, -26457, -26458, -26458, -26459, -26459, -26460, -26460, -26461, -26462, -26462, -26463, -26463, -26464, -26464, -26465, -26466, -26466, -26467, -26467, -26468, -26468, -26469, -26470, -26470, -26471, -26471, -26472, -26472, -26473, -26474, -26474, -26475, -26475, -26476, -26476, -26477, -26478, -26478, -26479, -26479, -26480, -26480, -26481, -26482, -26482, -26483, -26483, -26484, -26484, -26485, -26486, -26486, -26487, -26487, -26488, -26488, -26489, -26490, -26490, -26491, -26491, -26492, -26492, -26493, -26494, -26494, -26495, -26495, -26496, -26496, -26497, -26498, -26498, -26499, -26499, -26500, -26500, -26501, -26501, -26502, -26503, -26503, -26504, -26504, -26505, -26505, -26506, -26507, -26507, -26508, -26508, -26509, -26509, -26510, -26511, -26511, -26512, -26512, -26513, -26513, -26514, -26515, -26515, -26516, -26516, -26517, -26517, -26518, -26518, -26519, -26520, -26520, -26521, -26521, -26522, -26522, -26523, -26524, -26524, -26525, -26525, -26526, -26526, -26527, -26527, -26528, -26529, -26529, -26530, -26530, -26531, -26531, -26532, -26533, -26533, -26534, -26534, -26535, -26535, -26536, -26536, -26537, -26538, -26538, -26539, -26539, -26540, -26540, -26541, -26541, -26542, -26543, -26543, -26544, -26544, -26545, -26545, -26546, -26547, -26547, -26548, -26548, -26549, -26549, -26550, -26550, -26551, -26552, -26552, -26553, -26553, -26554, -26554, -26555, -26555, -26556, -26557, -26557, -26558, -26558, -26559, -26559, -26560, -26560, -26561, -26562, -26562, -26563, -26563, -26564, -26564, -26565, -26565, -26566, -26567, -26567, -26568, -26568, -26569, -26569, -26570, -26570, -26571, -26572, -26572, -26573, -26573, -26574, -26574, -26575, -26575, -26576, -26577, -26577, -26578, -26578, -26579, -26579, -26580, -26580, -26581, -26582, -26582, -26583, -26583, -26584, -26584, -26585, -26585, -26586, -26587, -26587, -26588, -26588, -26589, -26589, -26590, -26590, -26591, -26591, -26592, -26593, -26593, -26594, -26594, -26595, -26595, -26596, -26596, -26597, -26598, -26598, -26599, -26599, -26600, -26600, -26601, -26601, -26602, -26602, -26603, -26604, -26604, -26605, -26605, -26606, -26606, -26607, -26607, -26608, -26609, -26609, -26610, -26610, -26611, -26611, -26612, -26612, -26613, -26613, -26614, -26615, -26615, -26616, -26616, -26617, -26617, -26618, -26618, -26619, -26619, -26620, -26621, -26621, -26622, -26622, -26623, -26623, -26624, -26624, -26625, -26625, -26626, -26627, -26627, -26628, -26628, -26629, -26629, -26630, -26630, -26631, -26631, -26632, -26633, -26633, -26634, -26634, -26635, -26635, -26636, -26636, -26637, -26637, -26638, -26638, -26639, -26640, -26640, -26641, -26641, -26642, -26642, -26643, -26643, -26644, -26644, -26645, -26646, -26646, -26647, -26647, -26648, -26648, -26649, -26649, -26650, -26650, -26651, -26651, -26652, -26653, -26653, -26654, -26654, -26655, -26655, -26656, -26656, -26657, -26657, -26658, -26658, -26659, -26660, -26660, -26661, -26661, -26662, -26662, -26663, -26663, -26664, -26664, -26665, -26665, -26666, -26667, -26667, -26668, -26668, -26669, -26669, -26670, -26670, -26671, -26671, -26672, -26672, -26673, -26674, -26674, -26675, -26675, -26676, -26676, -26677, -26677, -26678, -26678, -26679, -26679, -26680, -26681, -26681, -26682, -26682, -26683, -26683, -26684, -26684, -26685, -26685, -26686, -26686, -26687, -26687, -26688, -26689, -26689, -26690, -26690, -26691, -26691, -26692, -26692, -26693, -26693, -26694, -26694, -26695, -26695, -26696, -26697, -26697, -26698, -26698, -26699, -26699, -26700, -26700, -26701, -26701, -26702, -26702, -26703, -26703, -26704, -26705, -26705, -26706, -26706, -26707, -26707, -26708, -26708, -26709, -26709, -26710, -26710, -26711, -26711, -26712, -26712, -26713, -26714, -26714, -26715, -26715, -26716, -26716, -26717, -26717, -26718, -26718, -26719, -26719, -26720, -26720, -26721, -26721, -26722, -26723, -26723, -26724, -26724, -26725, -26725, -26726, -26726, -26727, -26727, -26728, -26728, -26729, -26729, -26730, -26730, -26731, -26731, -26732, -26733, -26733, -26734, -26734, -26735, -26735, -26736, -26736, -26737, -26737, -26738, -26738, -26739, -26739, -26740, -26740, -26741, -26741, -26742, -26743, -26743, -26744, -26744, -26745, -26745, -26746, -26746, -26747, -26747, -26748, -26748, -26749, -26749, -26750, -26750, -26751, -26751, -26752, -26752, -26753, -26754, -26754, -26755, -26755, -26756, -26756, -26757, -26757, -26758, -26758, -26759, -26759, -26760, -26760, -26761, -26761, -26762, -26762, -26763, -26763, -26764, -26764, -26765, -26765, -26766, -26767, -26767, -26768, -26768, -26769, -26769, -26770, -26770, -26771, -26771, -26772, -26772, -26773, -26773, -26774, -26774, -26775, -26775, -26776, -26776, -26777, -26777, -26778, -26778, -26779, -26780, -26780, -26781, -26781, -26782, -26782, -26783, -26783, -26784, -26784, -26785, -26785, -26786, -26786, -26787, -26787, -26788, -26788, -26789, -26789, -26790, -26790, -26791, -26791, -26792, -26792, -26793, -26793, -26794, -26795, -26795, -26796, -26796, -26797, -26797, -26798, -26798, -26799, -26799, -26800, -26800, -26801, -26801, -26802, -26802, -26803, -26803, -26804, -26804, -26805, -26805, -26806, -26806, -26807, -26807, -26808, -26808, -26809, -26809, -26810, -26810, -26811, -26811, -26812, -26813, -26813, -26814, -26814, -26815, -26815, -26816, -26816, -26817, -26817, -26818, -26818, -26819, -26819, -26820, -26820, -26821, -26821, -26822, -26822, -26823, -26823, -26824, -26824, -26825, -26825, -26826, -26826, -26827, -26827, -26828, -26828, -26829, -26829, -26830, -26830, -26831, -26831, -26832, -26832, -26833, -26833, -26834, -26834, -26835, -26835, -26836, -26837, -26837, -26838, -26838, -26839, -26839, -26840, -26840, -26841, -26841, -26842, -26842, -26843, -26843, -26844, -26844, -26845, -26845, -26846, -26846, -26847, -26847, -26848, -26848, -26849, -26849, -26850, -26850, -26851, -26851, -26852, -26852, -26853, -26853, -26854, -26854, -26855, -26855, -26856, -26856, -26857, -26857, -26858, -26858, -26859, -26859, -26860, -26860, -26861, -26861, -26862, -26862, -26863, -26863, -26864, -26864, -26865, -26865, -26866, -26866, -26867, -26867, -26868, -26868, -26869, -26869, -26870, -26870, -26871, -26871, -26872, -26872, -26873, -26873, -26874, -26874, -26875, -26875, -26876, -26876, -26877, -26877, -26878, -26878, -26879, -26879, -26880, -26880, -26881, -26881, -26882, -26882, -26883, -26883, -26884, -26884, -26885, -26885, -26886, -26886, -26887, -26887, -26888, -26888, -26889, -26889, -26890, -26890, -26891, -26891, -26892, -26892, -26893, -26893, -26894, -26894, -26895, -26895, -26896, -26896, -26897, -26897, -26898, -26898, -26899, -26899, -26900, -26900, -26901, -26901, -26902, -26902, -26903, -26903, -26904, -26904, -26905, -26905, -26906, -26906, -26907, -26907, -26908, -26908, -26909, -26909, -26910, -26910, -26911, -26911, -26912, -26912, -26913, -26913, -26914, -26914, -26915, -26915, -26916, -26916, -26917, -26917, -26918, -26918, -26919, -26919, -26920, -26920, -26921, -26921, -26922, -26922, -26923, -26923, -26924, -26924, -26925, -26925, -26926, -26926, -26927, -26927, -26928, -26928, -26929, -26929, -26930, -26930, -26931, -26931, -26932, -26932, -26933, -26933, -26934, -26934, -26935, -26935, -26936, -26936, -26937, -26937, -26938, -26938, -26939, -26939, -26940, -26940, -26941, -26941, -26942, -26942, -26943, -26943, -26944, -26944, -26944, -26945, -26945, -26946, -26946, -26947, -26947, -26948, -26948, -26949, -26949, -26950, -26950, -26951, -26951, -26952, -26952, -26953, -26953, -26954, -26954, -26955, -26955, -26956, -26956, -26957, -26957, -26958, -26958, -26959, -26959, -26960, -26960, -26961, -26961, -26962, -26962, -26963, -26963, -26964, -26964, -26965, -26965, -26966, -26966, -26967, -26967, -26967, -26968, -26968, -26969, -26969, -26970, -26970, -26971, -26971, -26972, -26972, -26973, -26973, -26974, -26974, -26975, -26975, -26976, -26976, -26977, -26977, -26978, -26978, -26979, -26979, -26980, -26980, -26981, -26981, -26982, -26982, -26983, -26983, -26984, -26984, -26985, -26985, -26985, -26986, -26986, -26987, -26987, -26988, -26988, -26989, -26989, -26990, -26990, -26991, -26991, -26992, -26992, -26993, -26993, -26994, -26994, -26995, -26995, -26996, -26996, -26997, -26997, -26998, -26998, -26999, -26999, -27000, -27000, -27000, -27001, -27001, -27002, -27002, -27003, -27003, -27004, -27004, -27005, -27005, -27006, -27006, -27007, -27007, -27008, -27008, -27009, -27009, -27010, -27010, -27011, -27011, -27012, -27012, -27013, -27013, -27013, -27014, -27014, -27015, -27015, -27016, -27016, -27017, -27017, -27018, -27018, -27019, -27019, -27020, -27020, -27021, -27021, -27022, -27022, -27023, -27023, -27024, -27024, -27024, -27025, -27025, -27026, -27026, -27027, -27027, -27028, -27028, -27029, -27029, -27030, -27030, -27031, -27031, -27032, -27032, -27033, -27033, -27034, -27034, -27035, -27035, -27035, -27036, -27036, -27037, -27037, -27038, -27038, -27039, -27039, -27040, -27040, -27041, -27041, -27042, -27042, -27043, -27043, -27044, -27044, -27045, -27045, -27045, -27046, -27046, -27047, -27047, -27048, -27048, -27049, -27049, -27050, -27050, -27051, -27051, -27052, -27052, -27053, -27053, -27054, -27054, -27055, -27055, -27055, -27056, -27056, -27057, -27057, -27058, -27058, -27059, -27059, -27060, -27060, -27061, -27061, -27062, -27062, -27063, -27063, -27063, -27064, -27064, -27065, -27065, -27066, -27066, -27067, -27067, -27068, -27068, -27069, -27069, -27070, -27070, -27071, -27071, -27072, -27072, -27072, -27073, -27073, -27074, -27074, -27075, -27075, -27076, -27076, -27077, -27077, -27078, -27078, -27079, -27079, -27080, -27080, -27080, -27081, -27081, -27082, -27082, -27083, -27083, -27084, -27084, -27085, -27085, -27086, -27086, -27087, -27087, -27088, -27088, -27088, -27089, -27089, -27090, -27090, -27091, -27091, -27092, -27092, -27093, -27093, -27094, -27094, -27095, -27095, -27095, -27096, -27096, -27097, -27097, -27098, -27098, -27099, -27099, -27100, -27100, -27101, -27101, -27102, -27102, -27102, -27103, -27103, -27104, -27104, -27105, -27105, -27106, -27106, -27107, -27107, -27108, -27108, -27109, -27109, -27109, -27110, -27110, -27111, -27111, -27112, -27112, -27113, -27113, -27114, -27114, -27115, -27115, -27116, -27116, -27116, -27117, -27117, -27118, -27118, -27119, -27119, -27120, -27120, -27121, -27121, -27122, -27122, -27122, -27123, -27123, -27124, -27124, -27125, -27125, -27126, -27126, -27127, -27127, -27128, -27128, -27129, -27129, -27129, -27130, -27130, -27131, -27131, -27132, -27132, -27133, -27133, -27134, -27134, -27135, -27135, -27135, -27136, -27136, -27137, -27137, -27138, -27138, -27139, -27139, -27140, -27140, -27141, -27141, -27141, -27142, -27142, -27143, -27143, -27144, -27144, -27145, -27145, -27146, -27146, -27146, -27147, -27147, -27148, -27148, -27149, -27149, -27150, -27150, -27151, -27151, -27152, -27152, -27152, -27153, -27153, -27154, -27154, -27155, -27155, -27156, -27156, -27157, -27157, -27158, -27158, -27158, -27159, -27159, -27160, -27160, -27161, -27161, -27162, -27162, -27163, -27163, -27163, -27164, -27164, -27165, -27165, -27166, -27166, -27167, -27167, -27168, -27168, -27169, -27169, -27169, -27170, -27170, -27171, -27171, -27172, -27172, -27173, -27173, -27174, -27174, -27174, -27175, -27175, -27176, -27176, -27177, -27177, -27178, -27178, -27179, -27179, -27179, -27180, -27180, -27181, -27181, -27182, -27182, -27183, -27183, -27184, -27184, -27184, -27185, -27185, -27186, -27186, -27187, -27187, -27188, -27188, -27189, -27189, -27189, -27190, -27190, -27191, -27191, -27192, -27192, -27193, -27193, -27194, -27194, -27194, -27195, -27195, -27196, -27196, -27197, -27197, -27198, -27198, -27199, -27199, -27199, -27200, -27200, -27201, -27201, -27202, -27202, -27203, -27203, -27203, -27204, -27204, -27205, -27205, -27206, -27206, -27207, -27207, -27208, -27208, -27208, -27209, -27209, -27210, -27210, -27211, -27211, -27212, -27212, -27212, -27213, -27213, -27214, -27214, -27215, -27215, -27216, -27216, -27217, -27217, -27217, -27218, -27218, -27219, -27219, -27220, -27220, -27221, -27221, -27221, -27222, -27222, -27223, -27223, -27224, -27224, -27225, -27225, -27226, -27226, -27226, -27227, -27227, -27228, -27228, -27229, -27229, -27230, -27230, -27230, -27231, -27231, -27232, -27232, -27233, -27233, -27234, -27234, -27234, -27235, -27235, -27236, -27236, -27237, -27237, -27238, -27238, -27239, -27239, -27239, -27240, -27240, -27241, -27241, -27242, -27242, -27243, -27243, -27243, -27244, -27244, -27245, -27245, -27246, -27246, -27247, -27247, -27247, -27248, -27248, -27249, -27249, -27250, -27250, -27251, -27251, -27251, -27252, -27252, -27253, -27253, -27254, -27254, -27255, -27255, -27255, -27256, -27256, -27257, -27257, -27258, -27258, -27259, -27259, -27259, -27260, -27260, -27261, -27261, -27262, -27262, -27263, -27263, -27263, -27264, -27264, -27265, -27265, -27266, -27266, -27267, -27267, -27267, -27268, -27268, -27269, -27269, -27270, -27270, -27270, -27271, -27271, -27272, -27272, -27273, -27273, -27274, -27274, -27274, -27275, -27275, -27276, -27276, -27277, -27277, -27278, -27278, -27278, -27279, -27279, -27280, -27280, -27281, -27281, -27282, -27282, -27282, -27283, -27283, -27284, -27284, -27285, -27285, -27285, -27286, -27286, -27287, -27287, -27288, -27288, -27289, -27289, -27289, -27290, -27290, -27291, -27291, -27292, -27292, -27293, -27293, -27293, -27294, -27294, -27295, -27295, -27296, -27296, -27296, -27297, -27297, -27298, -27298, -27299, -27299, -27300, -27300, -27300, -27301, -27301, -27302, -27302, -27303, -27303, -27303, -27304, -27304, -27305, -27305, -27306, -27306, -27307, -27307, -27307, -27308, -27308, -27309, -27309, -27310, -27310, -27310, -27311, -27311, -27312, -27312, -27313, -27313, -27313, -27314, -27314, -27315, -27315, -27316, -27316, -27317, -27317, -27317, -27318, -27318, -27319, -27319, -27320, -27320, -27320, -27321, -27321, -27322, -27322, -27323, -27323, -27323, -27324, -27324, -27325, -27325, -27326, -27326, -27327, -27327, -27327, -27328, -27328, -27329, -27329, -27330, -27330, -27330, -27331, -27331, -27332, -27332, -27333, -27333, -27333, -27334, -27334, -27335, -27335, -27336, -27336, -27337, -27337, -27337, -27338, -27338, -27339, -27339, -27340, -27340, -27340, -27341, -27341, -27342, -27342, -27343, -27343, -27343, -27344, -27344, -27345, -27345, -27346, -27346, -27346, -27347, -27347, -27348, -27348, -27349, -27349, -27349, -27350, -27350, -27351, -27351, -27352, -27352, -27352, -27353, -27353, -27354, -27354, -27355, -27355, -27355, -27356, -27356, -27357, -27357, -27358, -27358, -27358, -27359, -27359, -27360, -27360, -27361, -27361, -27361, -27362, -27362, -27363, -27363, -27364, -27364, -27364, -27365, -27365, -27366, -27366, -27367, -27367, -27367, -27368, -27368, -27369, -27369, -27370, -27370, -27370, -27371, -27371, -27372, -27372, -27373, -27373, -27373, -27374, -27374, -27375, -27375, -27376, -27376, -27376, -27377, -27377, -27378, -27378, -27379, -27379, -27379, -27380, -27380, -27381, -27381, -27382, -27382, -27382, -27383, -27383, -27384, -27384, -27385, -27385, -27385, -27386, -27386, -27387, -27387, -27388, -27388, -27388, -27389, -27389, -27390, -27390, -27391, -27391, -27391, -27392, -27392, -27393, -27393, -27394, -27394, -27394, -27395, -27395, -27396, -27396, -27396, -27397, -27397, -27398, -27398, -27399, -27399, -27399, -27400, -27400, -27401, -27401, -27402, -27402, -27402, -27403, -27403, -27404, -27404, -27405, -27405, -27405, -27406, -27406, -27407, -27407, -27407, -27408, -27408, -27409, -27409, -27410, -27410, -27410, -27411, -27411, -27412, -27412, -27413, -27413, -27413, -27414, -27414, -27415, -27415, -27416, -27416, -27416, -27417, -27417, -27418, -27418, -27418, -27419, -27419, -27420, -27420, -27421, -27421, -27421, -27422, -27422, -27423, -27423, -27424, -27424, -27424, -27425, -27425, -27426, -27426, -27426, -27427, -27427, -27428, -27428, -27429, -27429, -27429, -27430, -27430, -27431, -27431, -27431, -27432, -27432, -27433, -27433, -27434, -27434, -27434, -27435, -27435, -27436, -27436, -27437, -27437, -27437, -27438, -27438, -27439, -27439, -27439, -27440, -27440, -27441, -27441, -27442, -27442, -27442, -27443, -27443, -27444, -27444, -27444, -27445, -27445, -27446, -27446, -27447, -27447, -27447, -27448, -27448, -27449, -27449, -27449, -27450, -27450, -27451, -27451, -27452, -27452, -27452, -27453, -27453, -27454, -27454, -27454, -27455, -27455, -27456, -27456, -27457, -27457, -27457, -27458, -27458, -27459, -27459, -27459, -27460, -27460, -27461, -27461, -27462, -27462, -27462, -27463, -27463, -27464, -27464, -27464, -27465, -27465, -27466, -27466, -27467, -27467, -27467, -27468, -27468, -27469, -27469, -27469, -27470, -27470, -27471, -27471, -27471, -27472, -27472, -27473, -27473, -27474, -27474, -27474, -27475, -27475, -27476, -27476, -27476, -27477, -27477, -27478, -27478, -27479, -27479, -27479, -27480, -27480, -27481, -27481, -27481, -27482, -27482, -27483, -27483, -27483, -27484, -27484, -27485, -27485, -27486, -27486, -27486, -27487, -27487, -27488, -27488, -27488, -27489, -27489, -27490, -27490, -27490, -27491, -27491, -27492, -27492, -27493, -27493, -27493, -27494, -27494, -27495, -27495, -27495, -27496, -27496, -27497, -27497, -27497, -27498, -27498, -27499, -27499, -27500, -27500, -27500, -27501, -27501, -27502, -27502, -27502, -27503, -27503, -27504, -27504, -27504, -27505, -27505, -27506, -27506, -27506, -27507, -27507, -27508, -27508, -27509, -27509, -27509, -27510, -27510, -27511, -27511, -27511, -27512, -27512, -27513, -27513, -27513, -27514, -27514, -27515, -27515, -27515, -27516, -27516, -27517, -27517, -27518, -27518, -27518, -27519, -27519, -27520, -27520, -27520, -27521, -27521, -27522, -27522, -27522, -27523, -27523, -27524, -27524, -27524, -27525, -27525, -27526, -27526, -27526, -27527, -27527, -27528, -27528, -27529, -27529, -27529, -27530, -27530, -27531, -27531, -27531, -27532, -27532, -27533, -27533, -27533, -27534, -27534, -27535, -27535, -27535, -27536, -27536, -27537, -27537, -27537, -27538, -27538, -27539, -27539, -27539, -27540, -27540, -27541, -27541, -27541, -27542, -27542, -27543, -27543, -27544, -27544, -27544, -27545, -27545, -27546, -27546, -27546, -27547, -27547, -27548, -27548, -27548, -27549, -27549, -27550, -27550, -27550, -27551, -27551, -27552, -27552, -27552, -27553, -27553, -27554, -27554, -27554, -27555, -27555, -27556, -27556, -27556, -27557, -27557, -27558, -27558, -27558, -27559, -27559, -27560, -27560, -27560, -27561, -27561, -27562, -27562, -27562, -27563, -27563, -27564, -27564, -27564, -27565, -27565, -27566, -27566, -27566, -27567, -27567, -27568, -27568, -27568, -27569, -27569, -27570, -27570, -27570, -27571, -27571, -27572, -27572, -27572, -27573, -27573, -27574, -27574, -27574, -27575, -27575, -27576, -27576, -27576, -27577, -27577, -27578, -27578, -27578, -27579, -27579, -27580, -27580, -27580, -27581, -27581, -27582, -27582, -27582, -27583, -27583, -27584, -27584, -27584, -27585, -27585, -27586, -27586, -27586, -27587, -27587, -27588, -27588, -27588, -27589, -27589, -27590, -27590, -27590, -27591, -27591, -27592, -27592, -27592, -27593, -27593, -27594, -27594, -27594, -27595, -27595, -27596, -27596, -27596, -27597, -27597, -27598, -27598, -27598, -27599, -27599, -27600, -27600, -27600, -27601, -27601, -27602, -27602, -27602, -27603, -27603, -27604, -27604, -27604, -27605, -27605, -27606, -27606, -27606, -27607, -27607, -27608, -27608, -27608, -27609, -27609, -27610, -27610, -27610, -27611, -27611, -27612, -27612, -27612, -27613, -27613, -27613, -27614, -27614, -27615, -27615, -27615, -27616, -27616, -27617, -27617, -27617, -27618, -27618, -27619, -27619, -27619, -27620, -27620, -27621, -27621, -27621, -27622, -27622, -27623, -27623, -27623, -27624, -27624, -27625, -27625, -27625, -27626, -27626, -27626, -27627, -27627, -27628, -27628, -27628, -27629, -27629, -27630, -27630, -27630, -27631, -27631, -27632, -27632, -27632, -27633, -27633, -27634, -27634, -27634, -27635, -27635, -27636, -27636, -27636, -27637, -27637, -27638, -27638, -27638, -27639, -27639, -27639, -27640, -27640, -27641, -27641, -27641, -27642, -27642, -27643, -27643, -27643, -27644, -27644, -27645, -27645, -27645, -27646, -27646, -27647, -27647, -27647, -27648, -27648, -27648, -27649, -27649, -27650, -27650, -27650, -27651, -27651, -27652, -27652, -27652, -27653, -27653, -27654, -27654, -27654, -27655, -27655, -27655, -27656, -27656, -27657, -27657, -27657, -27658, -27658, -27659, -27659, -27659, -27660, -27660, -27661, -27661, -27661, -27662, -27662, -27663, -27663, -27663, -27664, -27664, -27664, -27665, -27665, -27666, -27666, -27666, -27667, -27667, -27668, -27668, -27668, -27669, -27669, -27670, -27670, -27670, -27671, -27671, -27671, -27672, -27672, -27673, -27673, -27673, -27674, -27674, -27675, -27675, -27675, -27676, -27676, -27676, -27677, -27677, -27678, -27678, -27678, -27679, -27679, -27680, -27680, -27680, -27681, -27681, -27682, -27682, -27682, -27683, -27683, -27683, -27684, -27684, -27685, -27685, -27685, -27686, -27686, -27687, -27687, -27687, -27688, -27688, -27688, -27689, -27689, -27690, -27690, -27690, -27691, -27691, -27692, -27692, -27692, -27693, -27693, -27693, -27694, -27694 };
+
+// indexed by FH_COLLECT_TIER enum value: NO_MOVE, NULL, HASH, GOOD_CAPTURE, KILLER, COUNTERMOVE, LEFTOVER_QUIET, LOSING_CAPTURE
+static const INT g_rgiBetaTierWeightQ16[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
+
+// indexed by NODE_TYPE enum value: NODE_PV, NODE_CUT, NODE_ALL
+static const INT g_rgiBetaNodeTypeWeightQ16[] = { 0, 123785, 40983 };
+
+#define FHM_BETA_W_IMPROVE_Q30 (1157000)
+#define FHM_BETA_W_ENEMY_IMPROVE_Q30 (-735284)
+#define FHM_BETA_W_IMPROVE_X_ENEMY_Q30 (-52)
+#define FHM_BETA_W_MOVE_VALUE_Q30 (0)
+#define FHM_BETA_W_MOVE_FH_PCT_Q30 (0)
+
+// sigmoid*100000 (plain thousandths, NOT Q16) -- domain [-20.0,20.0] real log-odds units, 4096 entries, linearly indexed
+static const INT g_rgiSigmoidThousandthsQ16[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 36, 36, 36, 37, 37, 38, 38, 38, 39, 39, 39, 40, 40, 41, 41, 41, 42, 42, 43, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 57, 57, 58, 58, 59, 59, 60, 61, 61, 62, 62, 63, 64, 64, 65, 65, 66, 67, 67, 68, 69, 69, 70, 71, 71, 72, 73, 74, 74, 75, 76, 77, 77, 78, 79, 80, 80, 81, 82, 83, 84, 84, 85, 86, 87, 88, 89, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 123, 125, 126, 127, 128, 130, 131, 132, 133, 135, 136, 137, 139, 140, 141, 143, 144, 146, 147, 149, 150, 151, 153, 154, 156, 158, 159, 161, 162, 164, 165, 167, 169, 170, 172, 174, 175, 177, 179, 181, 182, 184, 186, 188, 190, 191, 193, 195, 197, 199, 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, 222, 224, 226, 228, 230, 233, 235, 237, 240, 242, 244, 247, 249, 252, 254, 256, 259, 262, 264, 267, 269, 272, 275, 277, 280, 283, 285, 288, 291, 294, 297, 300, 303, 306, 309, 312, 315, 318, 321, 324, 327, 330, 334, 337, 340, 343, 347, 350, 354, 357, 361, 364, 368, 371, 375, 379, 382, 386, 390, 394, 397, 401, 405, 409, 413, 417, 421, 425, 430, 434, 438, 442, 447, 451, 455, 460, 464, 469, 474, 478, 483, 488, 492, 497, 502, 507, 512, 517, 522, 527, 532, 537, 543, 548, 553, 559, 564, 570, 575, 581, 586, 592, 598, 604, 610, 616, 622, 628, 634, 640, 646, 652, 659, 665, 672, 678, 685, 692, 698, 705, 712, 719, 726, 733, 740, 747, 755, 762, 769, 777, 784, 792, 800, 808, 815, 823, 831, 840, 848, 856, 864, 873, 881, 890, 898, 907, 916, 925, 934, 943, 952, 961, 971, 980, 990, 999, 1009, 1019, 1029, 1039, 1049, 1059, 1069, 1080, 1090, 1101, 1111, 1122, 1133, 1144, 1155, 1166, 1178, 1189, 1201, 1212, 1224, 1236, 1248, 1260, 1272, 1284, 1297, 1309, 1322, 1335, 1348, 1361, 1374, 1387, 1401, 1414, 1428, 1442, 1456, 1470, 1484, 1499, 1513, 1528, 1542, 1557, 1572, 1588, 1603, 1618, 1634, 1650, 1666, 1682, 1698, 1714, 1731, 1748, 1764, 1781, 1799, 1816, 1833, 1851, 1869, 1887, 1905, 1923, 1942, 1961, 1980, 1999, 2018, 2037, 2057, 2077, 2097, 2117, 2137, 2158, 2178, 2199, 2220, 2242, 2263, 2285, 2307, 2329, 2351, 2374, 2396, 2419, 2442, 2466, 2489, 2513, 2537, 2562, 2586, 2611, 2636, 2661, 2686, 2712, 2738, 2764, 2790, 2817, 2844, 2871, 2898, 2926, 2954, 2982, 3010, 3039, 3068, 3097, 3127, 3156, 3186, 3217, 3247, 3278, 3309, 3340, 3372, 3404, 3436, 3469, 3502, 3535, 3568, 3602, 3636, 3671, 3705, 3740, 3776, 3811, 3847, 3884, 3920, 3957, 3994, 4032, 4070, 4108, 4147, 4186, 4225, 4265, 4305, 4346, 4386, 4428, 4469, 4511, 4553, 4596, 4639, 4682, 4726, 4770, 4815, 4860, 4905, 4951, 4997, 5044, 5091, 5138, 5186, 5234, 5283, 5332, 5381, 5431, 5482, 5533, 5584, 5636, 5688, 5740, 5793, 5847, 5901, 5955, 6010, 6066, 6122, 6178, 6235, 6292, 6350, 6408, 6467, 6527, 6586, 6647, 6708, 6769, 6831, 6893, 6956, 7020, 7084, 7148, 7214, 7279, 7345, 7412, 7480, 7547, 7616, 7685, 7754, 7825, 7895, 7967, 8039, 8111, 8184, 8258, 8332, 8407, 8483, 8559, 8636, 8713, 8791, 8870, 8949, 9029, 9109, 9190, 9272, 9355, 9438, 9522, 9606, 9691, 9777, 9864, 9951, 10039, 10127, 10217, 10307, 10397, 10489, 10581, 10673, 10767, 10861, 10956, 11052, 11148, 11245, 11343, 11442, 11541, 11641, 11742, 11844, 11946, 12049, 12153, 12258, 12363, 12469, 12576, 12684, 12793, 12902, 13012, 13123, 13235, 13348, 13461, 13575, 13690, 13806, 13923, 14040, 14158, 14278, 14397, 14518, 14640, 14762, 14886, 15010, 15135, 15261, 15388, 15515, 15644, 15773, 15903, 16034, 16166, 16299, 16433, 16567, 16703, 16839, 16976, 17115, 17254, 17393, 17534, 17676, 17818, 17962, 18106, 18252, 18398, 18545, 18693, 18842, 18992, 19142, 19294, 19447, 19600, 19754, 19910, 20066, 20223, 20381, 20540, 20700, 20861, 21023, 21185, 21349, 21513, 21679, 21845, 22012, 22180, 22349, 22519, 22690, 22862, 23035, 23208, 23383, 23558, 23735, 23912, 24090, 24269, 24449, 24630, 24812, 24995, 25178, 25363, 25548, 25734, 25921, 26109, 26298, 26488, 26679, 26870, 27063, 27256, 27450, 27645, 27841, 28037, 28235, 28433, 28632, 28832, 29033, 29235, 29437, 29641, 29845, 30050, 30255, 30462, 30669, 30877, 31086, 31296, 31506, 31717, 31929, 32142, 32355, 32570, 32784, 33000, 33216, 33433, 33651, 33870, 34089, 34309, 34529, 34750, 34972, 35195, 35418, 35641, 35866, 36091, 36316, 36543, 36769, 36997, 37225, 37453, 37682, 37912, 38142, 38373, 38604, 38836, 39068, 39301, 39534, 39768, 40002, 40237, 40472, 40708, 40944, 41180, 41417, 41654, 41892, 42129, 42368, 42606, 42846, 43085, 43325, 43565, 43805, 44045, 44286, 44528, 44769, 45011, 45252, 45495, 45737, 45979, 46222, 46465, 46708, 46951, 47195, 47438, 47682, 47925, 48169, 48413, 48657, 48901, 49145, 49390, 49634, 49878, 50122, 50366, 50610, 50855, 51099, 51343, 51587, 51831, 52075, 52318, 52562, 52805, 53049, 53292, 53535, 53778, 54021, 54263, 54505, 54748, 54989, 55231, 55472, 55714, 55955, 56195, 56435, 56675, 56915, 57154, 57394, 57632, 57871, 58108, 58346, 58583, 58820, 59056, 59292, 59528, 59763, 59998, 60232, 60466, 60699, 60932, 61164, 61396, 61627, 61858, 62088, 62318, 62547, 62775, 63003, 63231, 63457, 63684, 63909, 64134, 64359, 64582, 64805, 65028, 65250, 65471, 65691, 65911, 66130, 66349, 66567, 66784, 67000, 67216, 67430, 67645, 67858, 68071, 68283, 68494, 68704, 68914, 69123, 69331, 69538, 69745, 69950, 70155, 70359, 70563, 70765, 70967, 71168, 71368, 71567, 71765, 71963, 72159, 72355, 72550, 72744, 72937, 73130, 73321, 73512, 73702, 73891, 74079, 74266, 74452, 74637, 74822, 75005, 75188, 75370, 75551, 75731, 75910, 76088, 76265, 76442, 76617, 76792, 76965, 77138, 77310, 77481, 77651, 77820, 77988, 78155, 78321, 78487, 78651, 78815, 78977, 79139, 79300, 79460, 79619, 79777, 79934, 80090, 80246, 80400, 80553, 80706, 80858, 81008, 81158, 81307, 81455, 81602, 81748, 81894, 82038, 82182, 82324, 82466, 82607, 82746, 82885, 83024, 83161, 83297, 83433, 83567, 83701, 83834, 83966, 84097, 84227, 84356, 84485, 84612, 84739, 84865, 84990, 85114, 85238, 85360, 85482, 85603, 85722, 85842, 85960, 86077, 86194, 86310, 86425, 86539, 86652, 86765, 86877, 86988, 87098, 87207, 87316, 87424, 87531, 87637, 87742, 87847, 87951, 88054, 88156, 88258, 88359, 88459, 88558, 88657, 88755, 88852, 88948, 89044, 89139, 89233, 89327, 89419, 89511, 89603, 89693, 89783, 89873, 89961, 90049, 90136, 90223, 90309, 90394, 90478, 90562, 90645, 90728, 90810, 90891, 90971, 91051, 91130, 91209, 91287, 91364, 91441, 91517, 91593, 91668, 91742, 91816, 91889, 91961, 92033, 92105, 92175, 92246, 92315, 92384, 92453, 92520, 92588, 92655, 92721, 92786, 92852, 92916, 92980, 93044, 93107, 93169, 93231, 93292, 93353, 93414, 93473, 93533, 93592, 93650, 93708, 93765, 93822, 93878, 93934, 93990, 94045, 94099, 94153, 94207, 94260, 94312, 94364, 94416, 94467, 94518, 94569, 94619, 94668, 94717, 94766, 94814, 94862, 94909, 94956, 95003, 95049, 95095, 95140, 95185, 95230, 95274, 95318, 95361, 95404, 95447, 95489, 95531, 95572, 95614, 95654, 95695, 95735, 95775, 95814, 95853, 95892, 95930, 95968, 96006, 96043, 96080, 96116, 96153, 96189, 96224, 96260, 96295, 96329, 96364, 96398, 96432, 96465, 96498, 96531, 96564, 96596, 96628, 96660, 96691, 96722, 96753, 96783, 96814, 96844, 96873, 96903, 96932, 96961, 96990, 97018, 97046, 97074, 97102, 97129, 97156, 97183, 97210, 97236, 97262, 97288, 97314, 97339, 97364, 97389, 97414, 97438, 97463, 97487, 97511, 97534, 97558, 97581, 97604, 97626, 97649, 97671, 97693, 97715, 97737, 97758, 97780, 97801, 97822, 97842, 97863, 97883, 97903, 97923, 97943, 97963, 97982, 98001, 98020, 98039, 98058, 98077, 98095, 98113, 98131, 98149, 98167, 98184, 98201, 98219, 98236, 98252, 98269, 98286, 98302, 98318, 98334, 98350, 98366, 98382, 98397, 98412, 98428, 98443, 98458, 98472, 98487, 98501, 98516, 98530, 98544, 98558, 98572, 98586, 98599, 98613, 98626, 98639, 98652, 98665, 98678, 98691, 98703, 98716, 98728, 98740, 98752, 98764, 98776, 98788, 98799, 98811, 98822, 98834, 98845, 98856, 98867, 98878, 98889, 98899, 98910, 98920, 98931, 98941, 98951, 98961, 98971, 98981, 98991, 99001, 99010, 99020, 99029, 99039, 99048, 99057, 99066, 99075, 99084, 99093, 99102, 99110, 99119, 99127, 99136, 99144, 99152, 99160, 99169, 99177, 99185, 99192, 99200, 99208, 99216, 99223, 99231, 99238, 99245, 99253, 99260, 99267, 99274, 99281, 99288, 99295, 99302, 99308, 99315, 99322, 99328, 99335, 99341, 99348, 99354, 99360, 99366, 99372, 99378, 99384, 99390, 99396, 99402, 99408, 99414, 99419, 99425, 99430, 99436, 99441, 99447, 99452, 99457, 99463, 99468, 99473, 99478, 99483, 99488, 99493, 99498, 99503, 99508, 99512, 99517, 99522, 99526, 99531, 99536, 99540, 99545, 99549, 99553, 99558, 99562, 99566, 99570, 99575, 99579, 99583, 99587, 99591, 99595, 99599, 99603, 99606, 99610, 99614, 99618, 99621, 99625, 99629, 99632, 99636, 99639, 99643, 99646, 99650, 99653, 99657, 99660, 99663, 99666, 99670, 99673, 99676, 99679, 99682, 99685, 99688, 99691, 99694, 99697, 99700, 99703, 99706, 99709, 99712, 99715, 99717, 99720, 99723, 99725, 99728, 99731, 99733, 99736, 99738, 99741, 99744, 99746, 99748, 99751, 99753, 99756, 99758, 99760, 99763, 99765, 99767, 99770, 99772, 99774, 99776, 99778, 99781, 99783, 99785, 99787, 99789, 99791, 99793, 99795, 99797, 99799, 99801, 99803, 99805, 99807, 99809, 99810, 99812, 99814, 99816, 99818, 99819, 99821, 99823, 99825, 99826, 99828, 99830, 99831, 99833, 99835, 99836, 99838, 99839, 99841, 99842, 99844, 99846, 99847, 99849, 99850, 99851, 99853, 99854, 99856, 99857, 99859, 99860, 99861, 99863, 99864, 99865, 99867, 99868, 99869, 99870, 99872, 99873, 99874, 99875, 99877, 99878, 99879, 99880, 99881, 99882, 99884, 99885, 99886, 99887, 99888, 99889, 99890, 99891, 99892, 99893, 99894, 99895, 99896, 99897, 99898, 99899, 99900, 99901, 99902, 99903, 99904, 99905, 99906, 99907, 99908, 99909, 99910, 99911, 99911, 99912, 99913, 99914, 99915, 99916, 99916, 99917, 99918, 99919, 99920, 99920, 99921, 99922, 99923, 99923, 99924, 99925, 99926, 99926, 99927, 99928, 99929, 99929, 99930, 99931, 99931, 99932, 99933, 99933, 99934, 99935, 99935, 99936, 99936, 99937, 99938, 99938, 99939, 99939, 99940, 99941, 99941, 99942, 99942, 99943, 99943, 99944, 99945, 99945, 99946, 99946, 99947, 99947, 99948, 99948, 99949, 99949, 99950, 99950, 99951, 99951, 99952, 99952, 99953, 99953, 99953, 99954, 99954, 99955, 99955, 99956, 99956, 99957, 99957, 99957, 99958, 99958, 99959, 99959, 99959, 99960, 99960, 99961, 99961, 99961, 99962, 99962, 99962, 99963, 99963, 99964, 99964, 99964, 99965, 99965, 99965, 99966, 99966, 99966, 99967, 99967, 99967, 99968, 99968, 99968, 99969, 99969, 99969, 99969, 99970, 99970, 99970, 99971, 99971, 99971, 99971, 99972, 99972, 99972, 99973, 99973, 99973, 99973, 99974, 99974, 99974, 99974, 99975, 99975, 99975, 99975, 99976, 99976, 99976, 99976, 99977, 99977, 99977, 99977, 99977, 99978, 99978, 99978, 99978, 99978, 99979, 99979, 99979, 99979, 99980, 99980, 99980, 99980, 99980, 99980, 99981, 99981, 99981, 99981, 99981, 99982, 99982, 99982, 99982, 99982, 99982, 99983, 99983, 99983, 99983, 99983, 99983, 99984, 99984, 99984, 99984, 99984, 99984, 99985, 99985, 99985, 99985, 99985, 99985, 99985, 99986, 99986, 99986, 99986, 99986, 99986, 99986, 99987, 99987, 99987, 99987, 99987, 99987, 99987, 99987, 99988, 99988, 99988, 99988, 99988, 99988, 99988, 99988, 99988, 99989, 99989, 99989, 99989, 99989, 99989, 99989, 99989, 99989, 99990, 99990, 99990, 99990, 99990, 99990, 99990, 99990, 99990, 99990, 99991, 99991, 99991, 99991, 99991, 99991, 99991, 99991, 99991, 99991, 99991, 99991, 99992, 99992, 99992, 99992, 99992, 99992, 99992, 99992, 99992, 99992, 99992, 99992, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99993, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99994, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99995, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99996, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99997, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99998, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 99999, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000, 100000 };
+
+#define FHM_SIGMOID_LOGIT_RANGE (20.0)
+#define FHM_SIGMOID_TABLE_SIZE (4096)
diff --git a/src/main.c b/src/main.c
index 80858cb..0b63bec 100644
--- a/src/main.c
+++ b/src/main.c
@@ -630,6 +630,13 @@ Return value:
CleanupParallelSearch();
#endif
CleanupHashSystem();
+#ifdef FH_REGRESSION_COLLECTION
+ // Flush every thread's buffered-but-unflushed collection records
+ // (fhcollect.c) before exiting -- otherwise up to
+ // FH_COLLECT_BUFFER_RECORDS - 1 records per thread would be
+ // silently lost on a clean shutdown.
+ FhCollectCloseAll();
+#endif
TDClose();
CleanupOptions();
EndLogging();
diff --git a/src/root.c b/src/root.c
index f25b33b..5739734 100644
--- a/src/root.c
+++ b/src/root.c
@@ -360,10 +360,32 @@ Return value:
**/
{
ULONG u;
+#ifdef FH_REGRESSION_COLLECTION
+ // ctx is frequently a function-static struct reused across many
+ // Think()/Ponder() calls within one process (root.c) -- the
+ // unconditional memset just below would otherwise silently close
+ // this thread's collection file and drop any buffered-but-
+ // unflushed records on every single search, not just at process
+ // startup. Flush (don't lose data) and preserve the open file
+ // across the wipe; uThreadNumber is NOT preserved here on purpose
+ // -- a helper thread's real uThreadNumber isn't known yet at this
+ // call site (split.c sets it on the line immediately after
+ // calling this), so FhCollectEmit opens the file lazily on first
+ // real use instead, by which point uThreadNumber is correct. See
+ // fhcollect.c's own comments.
+ FILE *pSavedFhFile = ctx->sFhCollectWriter.pFile;
+ if (NULL != pSavedFhFile)
+ {
+ FhCollectFlush(ctx);
+ }
+#endif
memset(ctx, 0, sizeof(SEARCHER_THREAD_CONTEXT));
ReInitializeSearcherContext(pos, ctx);
ctx->sMoveStack.uUnblockedKeyValue[0] = 1;
+#ifdef FH_REGRESSION_COLLECTION
+ ctx->sFhCollectWriter.pFile = pSavedFhFile;
+#endif
for (u = 1;
u < MAX_PLY_PER_SEARCH;
u++)
@@ -1674,6 +1696,9 @@ Return value:
g_Options.u64LeftoverTries = ctx->sCounters.tree.u64LeftoverTries;
g_Options.u64LeftoverAlpha = ctx->sCounters.tree.u64LeftoverAlpha;
g_Options.u64LeftoverFH = ctx->sCounters.tree.u64LeftoverFH;
+ g_Options.u64QuickNullMoves = ctx->sCounters.tree.u64QuickNullMoves;
+ g_Options.u64QuickNullMoveSuccess =
+ ctx->sCounters.tree.u64QuickNullMoveSuccess;
#ifdef HASHCAP_COLLECTION
for (u = 0; u < 2; u++)
{
@@ -1725,36 +1750,11 @@ Return value:
sizeof(g_Options.u64NullMoveTriesByR));
memcpy(g_Options.u64NullMoveSuccessByR, ctx->sCounters.tree.u64NullMoveSuccessByR,
sizeof(g_Options.u64NullMoveSuccessByR));
-#ifdef FH_TABLE_COLLECTION
- memcpy(g_Options.u64Alpha5Tries, ctx->sFhCollection.u64Alpha5Tries,
- sizeof(g_Options.u64Alpha5Tries));
- memcpy(g_Options.u64Alpha5FH, ctx->sFhCollection.u64Alpha5FH,
- sizeof(g_Options.u64Alpha5FH));
- memcpy(g_Options.u64BetaTries, ctx->sFhCollection.u64BetaTries,
- sizeof(g_Options.u64BetaTries));
- memcpy(g_Options.u64BetaFH, ctx->sFhCollection.u64BetaFH,
- sizeof(g_Options.u64BetaFH));
- memcpy(g_Options.u64ImproveEstimateTries, ctx->sFhCollection.u64ImproveEstimateTries,
- sizeof(g_Options.u64ImproveEstimateTries));
- memcpy(g_Options.u64ImproveEstimateFH, ctx->sFhCollection.u64ImproveEstimateFH,
- sizeof(g_Options.u64ImproveEstimateFH));
- memcpy(g_Options.u64BetaDepthEstimateTries, ctx->sFhCollection.u64BetaDepthEstimateTries,
- sizeof(g_Options.u64BetaDepthEstimateTries));
- memcpy(g_Options.u64BetaDepthEstimateFH, ctx->sFhCollection.u64BetaDepthEstimateFH,
- sizeof(g_Options.u64BetaDepthEstimateFH));
- memcpy(g_Options.u64BetaGapEstimateTries, ctx->sFhCollection.u64BetaGapEstimateTries,
- sizeof(g_Options.u64BetaGapEstimateTries));
- memcpy(g_Options.u64BetaGapEstimateFH, ctx->sFhCollection.u64BetaGapEstimateFH,
- sizeof(g_Options.u64BetaGapEstimateFH));
- memcpy(g_Options.u64BetaOwnImpEstimateTries, ctx->sFhCollection.u64BetaOwnImpEstimateTries,
- sizeof(g_Options.u64BetaOwnImpEstimateTries));
- memcpy(g_Options.u64BetaOwnImpEstimateFH, ctx->sFhCollection.u64BetaOwnImpEstimateFH,
- sizeof(g_Options.u64BetaOwnImpEstimateFH));
- memcpy(g_Options.u64BetaEnemyImpEstimateTries, ctx->sFhCollection.u64BetaEnemyImpEstimateTries,
- sizeof(g_Options.u64BetaEnemyImpEstimateTries));
- memcpy(g_Options.u64BetaEnemyImpEstimateFH, ctx->sFhCollection.u64BetaEnemyImpEstimateFH,
- sizeof(g_Options.u64BetaEnemyImpEstimateFH));
-#endif // FH_TABLE_COLLECTION
+// FH_REGRESSION_COLLECTION needs no per-search copy-out here, unlike
+// the old FH_TABLE_COLLECTION histogram design -- FhCollectEmit
+// (fhcollect.c) writes each record straight to this thread's own file
+// as it's produced, during the search itself, so there's nothing left
+// to accumulate into g_Options after the fact.
#ifdef JOINT_EXTRA_VERIFY
memcpy(g_Options.u64JointExtraVerifyTries, ctx->sCounters.tree.u64JointExtraVerifyTries,
sizeof(g_Options.u64JointExtraVerifyTries));
diff --git a/src/script.c b/src/script.c
index 848546b..a5af8e9 100644
--- a/src/script.c
+++ b/src/script.c
@@ -97,33 +97,23 @@ typedef struct _SUITE_COUNTERS
UINT64 u64TotalJointExtraTries[JOINT_EXTRA_TIER_COUNT];
UINT64 u64TotalJointExtraResearch[JOINT_EXTRA_TIER_COUNT];
UINT64 u64TotalLMPPruned;
+ // Static-nullmove/reverse-futility shortcut firing rate -- diagnostic,
+ // added to compare HOW OFTEN the shortcut fires (not just its
+ // per-decision wrong rate, already measured offline against
+ // FH_REGRESSION_COLLECTION data) between the table and regression
+ // builds on the same suite. Only meaningful single-threaded
+ // (--cpus 1), same caveat as the hang/gap/depth axes above.
+ UINT64 u64TotalQuickNullMoves;
+ UINT64 u64TotalQuickNullMoveSuccess;
#ifdef HASHCAP_COLLECTION
UINT64 u64TotalHashCapTries[2][2];
UINT64 u64TotalHashCapFH[2][2];
#endif
-#ifdef FH_TABLE_COLLECTION
- // Full dual-table (5D alpha + 4D beta) collection -- see chess.h's
- // SEARCHER_THREAD_CONTEXT.sCounters.tree comment for the full
- // design. Dumped as ALPHARAW/BETARAW (5/4-axis raw cells) and
- // ESTRAW (1D marginals) below, never printed as a human-readable
- // table here -- same reasoning as u64TotalJointTries/FH above,
- // just a much bigger shape (the 5D alpha array alone is
- // 25*11*11*33*11 = 1,208,625 raw cells).
- UINT64 u64TotalAlpha5Tries[SEARCH_DEPTH_BUCKETS][HANG_CP_BUCKETS][GAP_CP_BUCKETS][MOVE_NUM_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64TotalAlpha5FH[SEARCH_DEPTH_BUCKETS][HANG_CP_BUCKETS][GAP_CP_BUCKETS][MOVE_NUM_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64TotalBetaTries[SEARCH_DEPTH_BUCKETS][GAP_BETA_BUCKETS][IMPROVE_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64TotalBetaFH[SEARCH_DEPTH_BUCKETS][GAP_BETA_BUCKETS][IMPROVE_BUCKETS][IMPROVE_BUCKETS];
- UINT64 u64TotalImproveEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64TotalImproveEstimateFH[IMPROVE_BUCKETS];
- UINT64 u64TotalBetaDepthEstimateTries[SEARCH_DEPTH_BUCKETS];
- UINT64 u64TotalBetaDepthEstimateFH[SEARCH_DEPTH_BUCKETS];
- UINT64 u64TotalBetaGapEstimateTries[GAP_BETA_BUCKETS];
- UINT64 u64TotalBetaGapEstimateFH[GAP_BETA_BUCKETS];
- UINT64 u64TotalBetaOwnImpEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64TotalBetaOwnImpEstimateFH[IMPROVE_BUCKETS];
- UINT64 u64TotalBetaEnemyImpEstimateTries[IMPROVE_BUCKETS];
- UINT64 u64TotalBetaEnemyImpEstimateFH[IMPROVE_BUCKETS];
-#endif // FH_TABLE_COLLECTION
+// FH_REGRESSION_COLLECTION needs no g_SuiteCounters fields at all --
+// unlike the old FH_TABLE_COLLECTION histogram design, each record is
+// written straight to its own thread's file as it's produced
+// (fhcollect.c), so there's no in-process total to accumulate or dump
+// here.
#ifdef JOINT_EXTRA_VERIFY
UINT64 u64TotalJointExtraVerifyTries[JOINT_EXTRA_TIER_COUNT][POST_REDUCE_DEPTH_BUCKETS];
UINT64 u64TotalJointExtraVerifySilentMiss[JOINT_EXTRA_TIER_COUNT][POST_REDUCE_DEPTH_BUCKETS];
@@ -464,6 +454,10 @@ _ProcessSuiteLine(char *szLine, POSITION *pos)
g_Options.u64LeftoverAlpha;
g_SuiteCounters.u64TotalLeftoverFH +=
g_Options.u64LeftoverFH;
+ g_SuiteCounters.u64TotalQuickNullMoves +=
+ g_Options.u64QuickNullMoves;
+ g_SuiteCounters.u64TotalQuickNullMoveSuccess +=
+ g_Options.u64QuickNullMoveSuccess;
#ifdef HASHCAP_COLLECTION
{
ULONG u2, v2;
@@ -548,75 +542,8 @@ _ProcessSuiteLine(char *szLine, POSITION *pos)
}
g_SuiteCounters.u64TotalLMPPruned +=
g_Options.u64LMPPruned;
-#ifdef FH_TABLE_COLLECTION
- {
- ULONG a, b, c, d;
- for (a = 0; a < SEARCH_DEPTH_BUCKETS; a++)
- {
- for (b = 0; b < HANG_CP_BUCKETS; b++)
- {
- for (c = 0; c < GAP_CP_BUCKETS; c++)
- {
- for (d = 0; d < MOVE_NUM_BUCKETS; d++)
- {
- for (v = 0; v < IMPROVE_BUCKETS; v++)
- {
- g_SuiteCounters.u64TotalAlpha5Tries[a][b][c][d][v] +=
- g_Options.u64Alpha5Tries[a][b][c][d][v];
- g_SuiteCounters.u64TotalAlpha5FH[a][b][c][d][v] +=
- g_Options.u64Alpha5FH[a][b][c][d][v];
- }
- }
- }
- }
- }
- for (a = 0; a < SEARCH_DEPTH_BUCKETS; a++)
- {
- for (b = 0; b < GAP_BETA_BUCKETS; b++)
- {
- for (c = 0; c < IMPROVE_BUCKETS; c++)
- {
- for (d = 0; d < IMPROVE_BUCKETS; d++)
- {
- g_SuiteCounters.u64TotalBetaTries[a][b][c][d] +=
- g_Options.u64BetaTries[a][b][c][d];
- g_SuiteCounters.u64TotalBetaFH[a][b][c][d] +=
- g_Options.u64BetaFH[a][b][c][d];
- }
- }
- }
- }
- for (v = 0; v < IMPROVE_BUCKETS; v++)
- {
- g_SuiteCounters.u64TotalImproveEstimateTries[v] +=
- g_Options.u64ImproveEstimateTries[v];
- g_SuiteCounters.u64TotalImproveEstimateFH[v] +=
- g_Options.u64ImproveEstimateFH[v];
- g_SuiteCounters.u64TotalBetaOwnImpEstimateTries[v] +=
- g_Options.u64BetaOwnImpEstimateTries[v];
- g_SuiteCounters.u64TotalBetaOwnImpEstimateFH[v] +=
- g_Options.u64BetaOwnImpEstimateFH[v];
- g_SuiteCounters.u64TotalBetaEnemyImpEstimateTries[v] +=
- g_Options.u64BetaEnemyImpEstimateTries[v];
- g_SuiteCounters.u64TotalBetaEnemyImpEstimateFH[v] +=
- g_Options.u64BetaEnemyImpEstimateFH[v];
- }
- for (v = 0; v < SEARCH_DEPTH_BUCKETS; v++)
- {
- g_SuiteCounters.u64TotalBetaDepthEstimateTries[v] +=
- g_Options.u64BetaDepthEstimateTries[v];
- g_SuiteCounters.u64TotalBetaDepthEstimateFH[v] +=
- g_Options.u64BetaDepthEstimateFH[v];
- }
- for (v = 0; v < GAP_BETA_BUCKETS; v++)
- {
- g_SuiteCounters.u64TotalBetaGapEstimateTries[v] +=
- g_Options.u64BetaGapEstimateTries[v];
- g_SuiteCounters.u64TotalBetaGapEstimateFH[v] +=
- g_Options.u64BetaGapEstimateFH[v];
- }
- }
-#endif // FH_TABLE_COLLECTION
+// FH_REGRESSION_COLLECTION needs no accumulation here -- see the
+// g_SuiteCounters struct comment above.
#ifdef JOINT_EXTRA_VERIFY
{
ULONG w;
@@ -695,6 +622,9 @@ _PrintSuiteReport(double dSuiteStart)
COMPILER_LONGLONG_UNSIGNED_FORMAT " tries)\n"
" leftover : %5.2f%% alpha, %5.2f%% FH (%"
COMPILER_LONGLONG_UNSIGNED_FORMAT " tries)\n"
+ " quick nullmove fire : %5.2f%% (%"
+ COMPILER_LONGLONG_UNSIGNED_FORMAT " of %"
+ COMPILER_LONGLONG_UNSIGNED_FORMAT " eligible)\n"
" script time : %6.1f sec\n\n",
g_SuiteCounters.uCorrect,
g_SuiteCounters.uIncorrect,
@@ -719,6 +649,10 @@ _PrintSuiteReport(double dSuiteStart)
(100.0 * (double)g_SuiteCounters.u64TotalLeftoverFH /
((double)g_SuiteCounters.u64TotalLeftoverTries + 1.0)),
g_SuiteCounters.u64TotalLeftoverTries,
+ (100.0 * (double)g_SuiteCounters.u64TotalQuickNullMoveSuccess /
+ ((double)g_SuiteCounters.u64TotalQuickNullMoves + 1.0)),
+ g_SuiteCounters.u64TotalQuickNullMoveSuccess,
+ g_SuiteCounters.u64TotalQuickNullMoves,
(SystemTimeStamp() - dSuiteStart));
// Countermove evidence calibration -- FH% per evidence bucket,
@@ -1035,154 +969,9 @@ _PrintSuiteReport(double dSuiteStart)
}
}
-#ifdef FH_TABLE_COLLECTION
- // Full dual-table raw dump for offline reassembly/baking (dual_table_run*/
- // aggregate.py et al): ALPHARAW is the 5D alpha joint (depth, dumb,
- // gap, late, improve -- late==0 is the "whole node" sample, see
- // chess.h), BETARAW is the 4D beta joint (depth, gap, own-improve,
- // enemy-improve), ESTRAW is every independent 1D marginal (used
- // only by marginal_crosscheck.py, never for baking itself). Same
- // "last checkpoint per shard is authoritative" convention as the
- // FOURAXISRAW dump above.
- {
- ULONG a, b, c, d;
- for (a = 0; a < SEARCH_DEPTH_BUCKETS; a++)
- {
- for (b = 0; b < HANG_CP_BUCKETS; b++)
- {
- for (c = 0; c < GAP_CP_BUCKETS; c++)
- {
- for (d = 0; d < MOVE_NUM_BUCKETS; d++)
- {
- for (v = 0; v < IMPROVE_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalAlpha5Tries[a][b][c][d][v] > 0)
- {
- Trace("ALPHARAW %lu %lu %lu %lu %lu %"
- COMPILER_LONGLONG_UNSIGNED_FORMAT " %"
- COMPILER_LONGLONG_UNSIGNED_FORMAT "\n",
- a, b, c, d, v,
- g_SuiteCounters.u64TotalAlpha5FH[a][b][c][d][v],
- g_SuiteCounters.u64TotalAlpha5Tries[a][b][c][d][v]);
- }
- }
- }
- }
- }
- }
- for (a = 0; a < SEARCH_DEPTH_BUCKETS; a++)
- {
- for (b = 0; b < GAP_BETA_BUCKETS; b++)
- {
- for (c = 0; c < IMPROVE_BUCKETS; c++)
- {
- for (d = 0; d < IMPROVE_BUCKETS; d++)
- {
- if (g_SuiteCounters.u64TotalBetaTries[a][b][c][d] > 0)
- {
- Trace("BETARAW %lu %lu %lu %lu %"
- COMPILER_LONGLONG_UNSIGNED_FORMAT " %"
- COMPILER_LONGLONG_UNSIGNED_FORMAT "\n",
- a, b, c, d,
- g_SuiteCounters.u64TotalBetaFH[a][b][c][d],
- g_SuiteCounters.u64TotalBetaTries[a][b][c][d]);
- }
- }
- }
- }
- }
- for (v = 0; v < SEARCH_DEPTH_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalDepthEstimateTries[v] > 0)
- {
- Trace("ESTRAW depth %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalDepthEstimateFH[v],
- g_SuiteCounters.u64TotalDepthEstimateTries[v]);
- }
- }
- for (v = 0; v < HANG_CP_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalHangEstimateTries[v] > 0)
- {
- Trace("ESTRAW dumb %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalHangEstimateFH[v],
- g_SuiteCounters.u64TotalHangEstimateTries[v]);
- }
- }
- for (v = 0; v < GAP_CP_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalGapEstimateTries[v] > 0)
- {
- Trace("ESTRAW gap %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalGapEstimateFH[v],
- g_SuiteCounters.u64TotalGapEstimateTries[v]);
- }
- }
- for (v = 0; v < MOVE_NUM_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalMoveNumEstimateTries[v] > 0)
- {
- Trace("ESTRAW late %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalMoveNumEstimateFH[v],
- g_SuiteCounters.u64TotalMoveNumEstimateTries[v]);
- }
- }
- for (v = 0; v < IMPROVE_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalImproveEstimateTries[v] > 0)
- {
- Trace("ESTRAW improve %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalImproveEstimateFH[v],
- g_SuiteCounters.u64TotalImproveEstimateTries[v]);
- }
- }
- for (v = 0; v < SEARCH_DEPTH_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalBetaDepthEstimateTries[v] > 0)
- {
- Trace("ESTRAW betadepth %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalBetaDepthEstimateFH[v],
- g_SuiteCounters.u64TotalBetaDepthEstimateTries[v]);
- }
- }
- for (v = 0; v < GAP_BETA_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalBetaGapEstimateTries[v] > 0)
- {
- Trace("ESTRAW betagap %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalBetaGapEstimateFH[v],
- g_SuiteCounters.u64TotalBetaGapEstimateTries[v]);
- }
- }
- for (v = 0; v < IMPROVE_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalBetaOwnImpEstimateTries[v] > 0)
- {
- Trace("ESTRAW betaown %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalBetaOwnImpEstimateFH[v],
- g_SuiteCounters.u64TotalBetaOwnImpEstimateTries[v]);
- }
- }
- for (v = 0; v < IMPROVE_BUCKETS; v++)
- {
- if (g_SuiteCounters.u64TotalBetaEnemyImpEstimateTries[v] > 0)
- {
- Trace("ESTRAW betaopp %lu %" COMPILER_LONGLONG_UNSIGNED_FORMAT
- " %" COMPILER_LONGLONG_UNSIGNED_FORMAT "\n", v,
- g_SuiteCounters.u64TotalBetaEnemyImpEstimateFH[v],
- g_SuiteCounters.u64TotalBetaEnemyImpEstimateTries[v]);
- }
- }
- }
-#endif // FH_TABLE_COLLECTION
+// FH_REGRESSION_COLLECTION needs no end-of-script dump here --
+// each record was already written to its own thread's binary file
+// as it was produced (fhcollect.c). See docs/REGRESSION.md.
#ifdef TEST_NULL
// Null-move precision/recall calibration, summed across the whole
diff --git a/src/search.c b/src/search.c
index a347e12..dc0fdc0 100644
--- a/src/search.c
+++ b/src/search.c
@@ -373,6 +373,7 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
{
POSITION *pos = &ctx->sPosition;
PLY_INFO *pi = &ctx->sPlyInfo[ctx->uPly];
+ SCORE iBestScore;
#ifdef DEBUG
ASSERT(IS_VALID_SCORE(iAlpha));
ASSERT(IS_VALID_SCORE(iBeta));
@@ -393,25 +394,6 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
// instead of extending for free. root.c compensates by trimming the
// same QUARTER_PLY off the per-iteration depth budget so this doesn't
// just add a blanket 1/4 ply to every search.
- SCORE iBestScore;
-#ifdef FH_TABLE_COLLECTION
- // Declared here, BEFORE the QSearch-jump `goto end;` just below --
- // these must be initialized on every path reaching end:, including
- // the early QSearch exit, or the commit code there reads
- // indeterminate (garbage) values. Declaring them further down
- // (alongside the other per-node locals) put their initializers
- // after this goto, which skips them entirely on the QSearch-exit
- // path -- caught live via a release-build (-O3) segfault that
- // didn't reproduce in DEBUG (-O0, where the skipped stack slots
- // happened to already read as zero): fBetaCollectEligible/
- // fAlpha0CollectEligible read back as nonzero garbage, feeding
- // equally-garbage bucket indices into the array indexing at end:.
- FLAG fBetaCollectEligible = FALSE;
- ULONG uBetaCollectDepthB = 0, uBetaCollectGapB = 0,
- uBetaCollectOwnImpB = 0, uBetaCollectEnemyImpB = 0;
- FLAG fAlpha0CollectEligible = FALSE;
- ULONG uAlpha0CollectDepthB = 0, uAlpha0CollectGapB = 0;
-#endif
if (uDepth < THREE_QUARTERS_PLY)
{
pf->fCouldStandPat[BLACK] = pf->fCouldStandPat[WHITE] = FALSE;
@@ -424,7 +406,33 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
goto end;
}
pi->fInQsearch = FALSE;
+
iBestScore = -INFINITY_SCORE;
+
+ // Declared here, BEFORE the QSearch-jump `goto end;` just below, and
+ // zero-initialized by the `= {0}` -- every path reaching end: (the
+ // early QSearch exit included) must see a well-defined
+ // sFhPending.fEligible, or FhCollectNodeExit would read
+ // indeterminate garbage there. This bit the old FH_TABLE_COLLECTION
+ // design exactly this way once already (a release-build segfault
+ // that didn't reproduce in DEBUG, where the skipped stack slots
+ // happened to already read as zero) -- same fix, applied up front
+ // via the initializer so there's no runtime code to accidentally
+ // skip a second time. See chess.h's FH_COLLECT_PENDING comment for
+ // why this is an ordinary local, not something stored in ctx.
+ FH_COLLECT_PENDING sFhPending = {0};
+
+ // Declared unconditionally (not #ifdef FH_REGRESSION_COLLECTION)
+ // so the FhCollectMoveTried call sites below -- themselves
+ // unconditional, by design, see chess.h's no-op-stub comment --
+ // compile in every build. Only SearchOneMove's WRITE to this (via
+ // its own #ifdef-gated out-param) is collection-build-only; in any
+ // other build it stays at this initializer, harmlessly unread
+ // (FhCollectMoveTried is a no-op there). Written by SearchOneMove
+ // inside its own Make/Unmake window -- see that function's own
+ // comment on why this can't be computed by this caller after the
+ // fact.
+ SCORE iFhCollectMoveValue = 0;
MOVE mvLast = (pi-1)->mv;
ASSERT((mvLast.uMove != 0) || (pf->fAvoidNullmove == TRUE));
SCORE iInitialAlpha = iAlpha;
@@ -637,6 +645,14 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
ctx->sPlyInfo[ctx->uPly - 3].iEval);
}
+ // Capture CommonSearchInit's ancestor-only NODE_TYPE guess BEFORE
+ // _RefineNodeTypeGuess overwrites pi->eNodeType below -- the
+ // collection model's node-type-guess feature must be this raw,
+ // parent-derived guess, never the refined one (feeding a model's
+ // own, even indirectly produced, output back in as one of its own
+ // inputs would be leakage -- see docs/REGRESSION.md).
+ NODE_TYPE eNodeTypeGuessParent = pi->eNodeType;
+
// Now that iEval (and the improvement signals derived from it) are
// known, refine CommonSearchInit's ancestor-only NODE_TYPE guess --
// see _RefineNodeTypeGuess's own comment. Must happen before
@@ -648,8 +664,49 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
// the static-nullmove and nullmove-skip blocks below need that
// exact same number and must reuse uNodeLocalFH instead of
// re-consulting the data.c tables a second time per node.
- ULONG uNodeLocalFH = _RefineNodeTypeGuess(ctx, iEval, iAlpha, iBeta, uDepth,
- iEnemyImprovement, uRawImproveB);
+ ULONG uNodeLocalFH = _RefineNodeTypeGuess(ctx,
+ iEval,
+ iAlpha,
+ iBeta,
+ uDepth,
+ iImprovement,
+ iEnemyImprovement,
+ uRawImproveB);
+
+ // One call, regardless of which (or neither) of the iEval>iBeta /
+ // iEval<=iAlpha branches below ends up applying -- FhCollectNodeEntry
+ // decides eligibility and which table internally from iEval/iAlpha/
+ // iBeta, and records it in sFhPending for FhCollectMoveTried/
+ // FhCollectNodeExit to read later. iEnemyImprovement is only
+ // meaningful for the beta table (its own 4th axis); the alpha table
+ // has no second improve axis and simply ignores it. A no-op (does
+ // nothing, costs nothing) in a non-collection build.
+ FhCollectNodeEntry(ctx,
+ &sFhPending,
+ iEval,
+ iAlpha,
+ iBeta,
+ uDepth,
+ iImprovement,
+ iEnemyImprovement,
+ eNodeTypeGuessParent,
+ (pos->u64NonPawnSig ^ pos->u64PawnSig),
+ ((pos->uNonPawnMaterial[WHITE] - VALUE_KING) +
+ (pos->uNonPawnMaterial[BLACK] - VALUE_KING)));
+
+#ifdef FH_USE_REGRESSION_MODEL
+ // HOISTED node-level precompute:
+ FHM_NODE_BASE sFhAlphaNodeBase = (iEval <= iAlpha) ?
+ FhModelAlphaNodeBaseQ16(iEval,
+ iAlpha,
+ uDepth,
+ iImprovement,
+ iEnemyImprovement,
+ (ULONG)((pos->uNonPawnMaterial[WHITE] - VALUE_KING) +
+ (pos->uNonPawnMaterial[BLACK] - VALUE_KING)),
+ eNodeTypeGuessParent) :
+ (FHM_NODE_BASE)FHM_MATE_GATED;
+#endif
// If the Eval call above was a full eval (i.e. not lazy or super
// lazy), there are usable attack bitboards. We'll consult them
@@ -760,38 +817,49 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
if (iEval > iBeta)
{
INC(ctx->sCounters.tree.u64QuickNullMoves);
-#ifdef FH_TABLE_COLLECTION
- ULONG uStaticNMDepthB = DepthBucket(uDepth / ONE_PLY);
- ULONG uRawEnemyImproveB = ImproveBucket(iEnemyImprovement);
- // Collection builds record a genuine whole-node try here
- // (ground truth committed at end:) and must NOT take the
- // shortcut below -- it would skip the real move loop
- // based on the CURRENTLY LOADED (soon-to-be-replaced)
- // data.c table, censoring exactly the population this
- // collection is trying to measure. Same reasoning as the
- // LMP disable in searchsup.c.
- fBetaCollectEligible = TRUE;
- uBetaCollectDepthB = uStaticNMDepthB;
- uBetaCollectGapB = GapBetaBucket((SCORE)(iEval - iBeta));
- uBetaCollectOwnImpB = uRawImproveB;
- uBetaCollectEnemyImpB = uRawEnemyImproveB;
- INC(ctx->sFhCollection.u64BetaDepthEstimateTries[uBetaCollectDepthB]);
- INC(ctx->sFhCollection.u64BetaGapEstimateTries[uBetaCollectGapB]);
- INC(ctx->sFhCollection.u64BetaOwnImpEstimateTries[uBetaCollectOwnImpB]);
- INC(ctx->sFhCollection.u64BetaEnemyImpEstimateTries[uBetaCollectEnemyImpB]);
- INC(ctx->sFhCollection.u64BetaTries
- [uBetaCollectDepthB][uBetaCollectGapB]
- [uBetaCollectOwnImpB][uBetaCollectEnemyImpB]);
+#ifndef FH_REGRESSION_COLLECTION
+ // A collection build must NOT take this shortcut -- it
+ // would skip the real move loop based on the CURRENTLY
+ // LOADED (soon-to-be-replaced) data.c table, censoring
+ // exactly the population FhCollectNodeEntry/NodeExit
+ // (above/below) are trying to measure. Same reasoning as
+ // the LMP disable in searchsup.c. uNodeLocalFH was already
+ // computed above by _RefineNodeTypeGuess via this exact
+ // same _BetaTablePredictedFHThousandths lookup (same
+ // depth/gap/improve bucket inputs, gated by the same
+ // iEval > iBeta branch) -- reuse it instead of consulting
+ // the table again.
+#ifdef FH_USE_REGRESSION_MODEL
+ static ULONG uBetaSkipThreshold = 0;
+ if (0 == uBetaSkipThreshold)
+ {
+ CHAR *pszThresh = getenv("FH_BETA_SKIP_THRESHOLD");
+ // 2026-10-24: provisional default, NOT yet confirmed by
+ // match-play -- see docs/REGRESSION.md's "Static-nullmove
+ // shortcut firing-rate" section. 96000 (matching the old
+ // table's nominal threshold) empirically fires the
+ // shortcut ~2x as often as the table did on real search
+ // trees (calibration is honest at both; this is a
+ // firing-frequency gap, not an accuracy one) and costs a
+ // large chunk of ECM solve rate. 99000 recovers ECM
+ // parity. Per DEEPER_PRUNING.md's Category A/B framework,
+ // ECM is the WRONG instrument to pick this value with --
+ // this is a Category B (deliberately-unsound,
+ // cluster-tested) pruning decision, and only
+ // match_play.py's LOWER95 gate can say whether the more
+ // aggressive 96000 is actually a net real-game win
+ // despite losing ECM solves. That sweep has not been run
+ // yet. 99000 is chosen here only as the closest-to-known-
+ // safe (table-matched) stand-in until it is.
+ uBetaSkipThreshold = (pszThresh && atol(pszThresh) > 0) ?
+ (ULONG)atol(pszThresh) : 99000;
+ }
#else
- // uNodeLocalFH was already computed above by
- // _RefineNodeTypeGuess via this exact same
- // _BetaTablePredictedFHThousandths lookup (same depth/gap/
- // improve bucket inputs, gated by the same iEval > iBeta
- // branch) -- reuse it instead of consulting the table
- // again.
+ #define uBetaSkipThreshold 96000
+#endif
ULONG uBetaPredictedFHThousandths = uNodeLocalFH;
if ((uBetaPredictedFHThousandths != 0xFFFF) &&
- (uBetaPredictedFHThousandths > 96000))
+ (uBetaPredictedFHThousandths > uBetaSkipThreshold))
{
INC(ctx->sCounters.tree.u64QuickNullMoveSuccess);
@@ -800,35 +868,13 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
iBestScore = iBeta;
goto end;
}
+#ifndef FH_USE_REGRESSION_MODEL
+ #undef uBetaSkipThreshold
+#endif
#endif
}
else if (iEval <= iAlpha)
{
-#ifdef FH_TABLE_COLLECTION
- ULONG uNullSkipDepthB = DepthBucket(uDepth / ONE_PLY);
- ULONG uRawGapAlphaB = GapCpBucket((SCORE)(iAlpha - iEval));
- // Whole-node sample for the alpha table's reserved
- // late==0 bucket (see chess.h) -- the alpha-side analog
- // of the beta-side whole-node try just above, covering
- // the iEval <= iAlpha regime the beta table doesn't.
- // hang is pinned to 0 (no specific move; "nothing hung"
- // is the only sensible placeholder) and late is pinned to
- // 0 (the reserved "whole node" sentinel, never produced
- // by a real per-move sample) -- deliberately NOT fed into
- // the shared per-move hang/late marginals below (those
- // values are placeholders here, not real measurements),
- // but depth/gap/improve ARE real, equally-meaningful
- // quantities for a whole-node sample, so they DO feed the
- // shared marginals.
- fAlpha0CollectEligible = TRUE;
- uAlpha0CollectDepthB = uNullSkipDepthB;
- uAlpha0CollectGapB = uRawGapAlphaB;
- INC(ctx->sCounters.tree.u64DepthEstimateTries[uAlpha0CollectDepthB]);
- INC(ctx->sCounters.tree.u64GapEstimateTries[uAlpha0CollectGapB]);
- INC(ctx->sFhCollection.u64ImproveEstimateTries[uRawImproveB]);
- INC(ctx->sFhCollection.u64Alpha5Tries
- [uAlpha0CollectDepthB][0][uAlpha0CollectGapB][0][uRawImproveB]);
-#endif
#if (NULLMOVE_SKIP_FH_CEILING_THOUSANDTHS > 0)
// uNodeLocalFH was already computed above by
// _RefineNodeTypeGuess via this exact same
@@ -859,14 +905,28 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
uNullRBucket = NULL_R_BUCKETS - 1;
}
INC(ctx->sCounters.tree.u64NullMoveTriesByR[uNullRBucket]);
- if (TryNullmovePruning(ctx,
- &fThreat,
- iAlpha,
- iBeta,
- uNextDepth,
- &iPositionalExtend,
- &iScore,
- uNullRBucket))
+ FLAG fNullmoveCutoff = TryNullmovePruning(ctx,
+ &fThreat,
+ iAlpha,
+ iBeta,
+ uNextDepth,
+ &iPositionalExtend,
+ &iScore,
+ uNullRBucket);
+ // The null-move probe's own recursive Search() call runs
+ // unconditionally inside TryNullmovePruning before it
+ // returns either way, so iScore is always this probe's
+ // real result here -- log it as one more "move" tried at
+ // this node (tier = null), same label convention as every
+ // other move/row. Skipped on an aborted/incomplete search,
+ // same reasoning as FhCollectNodeExit. A no-op in a
+ // non-collection build.
+ if (!WE_SHOULD_STOP_SEARCHING)
+ {
+ FhCollectMoveTried(ctx, &sFhPending, FHC_TIER_NULL,
+ iScore, iBeta, 1, 0, 0, 0, FALSE, 0);
+ }
+ if (fNullmoveCutoff)
{
if (iScore > iBeta)
{
@@ -1175,6 +1235,9 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
uRawImproveB,
bbMinorAttacksSnapshot,
bbRookAttacksSnapshot,
+#ifdef FH_USE_REGRESSION_MODEL
+ sFhAlphaNodeBase,
+#endif
#ifdef MOVE_ORDERING_EVIDENCE_COLLECTION
fThisMoveIsCountermoveMatch,
uCMEvidenceBucket,
@@ -1193,6 +1256,9 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
, &uThisMoveNumBucket
, &uThisMoveDepthBucket
#endif
+#ifdef FH_REGRESSION_COLLECTION
+ , &iFhCollectMoveValue
+#endif
);
switch (eMoveKernelResult)
{
@@ -1207,6 +1273,57 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
break;
}
+ // One call per move actually searched here (hash move and
+ // every generated move alike -- MOVE_KERNEL_PRUNED/ILLEGAL
+ // already `continue`d above without reaching this point, and
+ // a collection build disables LMP entirely, so in practice
+ // every eligible move reaches here). iScore is this exact
+ // move's own full-depth result, so its label (>= iBeta) is
+ // known immediately -- unlike the deferred whole-node commit,
+ // no stash/commit split needed. A no-op in a non-collection
+ // build.
+ if (IS_SAME_MOVE(mv, mvHash))
+ {
+ // Never scored by _ScoreAllMoves (generate.c skips it
+ // entirely, see that function's own comment) -- no packed
+ // iValue to read a tier from, but iFhCollectMoveValue
+ // (written by SearchOneMove, inside its own Make/Unmake
+ // window -- see that function's comment) is valid for
+ // every move regardless, hash move included.
+ FhCollectMoveTried(ctx, &sFhPending, FHC_TIER_HASH, iScore,
+ iBeta, 1, iFhCollectMoveValue,
+ GetMoveFailHighWilsonUpperBoundThousandths(mv),
+ GetMoveFailHighAttempts(mv),
+ FALSE, 0);
+ }
+ else
+ {
+ FLAG fMoveIsCapOrPromo = (0 != IS_CAPTURE_OR_PROMOTION(mv));
+
+ // iFhCollectMoveValue was written by SearchOneMove, inside
+ // its own Make/Unmake window -- EstimateHangingMaterialCp
+ // asserts the move is already applied on the board, so it
+ // can only safely be called from there, never by this
+ // caller after SearchOneMove has already returned (and
+ // un-made the move) -- a real bug this doc's session notes
+ // cover, caught by the DEBUG+TEST self-test suite. The
+ // function itself branches internally for captures/
+ // promotions (-ComputeMoveScore, a SEE-plus-promotion
+ // material estimate) vs. quiet moves (real hang/attack-
+ // defense analysis, the old table's `dumb` axis -- 96x
+ // discrimination on the alpha side, per docs/REGRESSION.md)
+ // -- one value covers both tiers correctly.
+ FhCollectMoveTried(ctx, &sFhPending,
+ FhClassifyMoveTier(mv, mvHash,
+ fMoveIsCapOrPromo,
+ ctx->sMoveStack.mvf[x-1].iValue),
+ iScore, iBeta, uLegalMoves,
+ iFhCollectMoveValue,
+ GetMoveFailHighWilsonUpperBoundThousandths(mv),
+ GetMoveFailHighAttempts(mv),
+ TRUE, MOVE_COUNT(ctx, ctx->uPly));
+ }
+
// Check results of search below this move.
ASSERT(iBestScore <= iAlpha);
ASSERT(iAlpha < iBeta);
@@ -1246,12 +1363,6 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
INC(ctx->sCounters.tree.u64JointFH
[uThisMoveDepthBucket][uThisMoveHangBucket]
[uThisMoveGapBucket][uThisMoveNumBucket]);
-#ifdef FH_TABLE_COLLECTION
- INC(ctx->sFhCollection.u64ImproveEstimateFH[uRawImproveB]);
- INC(ctx->sFhCollection.u64Alpha5FH
- [uThisMoveDepthBucket][uThisMoveHangBucket]
- [uThisMoveGapBucket][uThisMoveNumBucket][uRawImproveB]);
-#endif
}
}
#endif // PERF_COUNTERS
@@ -1385,43 +1496,16 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
ASSERT(IS_VALID_SCORE(iAlpha));
ASSERT(IS_VALID_SCORE(iBestScore) || WE_SHOULD_STOP_SEARCHING);
ASSERT(PositionsAreEquivalent(pos, &pi->sPosition));
-#ifdef FH_TABLE_COLLECTION
- // Commit the whole-node ground truth stashed above, now that
- // iBestScore's real fate against iBeta is known -- same two-phase
- // pattern as TEST_NULL's commit just below. Skipped on an
- // aborted/incomplete search (WE_SHOULD_STOP_SEARCHING): iBestScore
- // may not reflect a fully-searched node in that case, and counting
- // it as ground truth would bias the table toward whatever got
- // searched before the clock/node-limit fired.
- if ((!WE_SHOULD_STOP_SEARCHING) && IS_VALID_SCORE(iBestScore))
- {
- FLAG fRealFH = (iBestScore >= iBeta);
- if (fBetaCollectEligible)
- {
- if (fRealFH)
- {
- INC(ctx->sFhCollection.u64BetaDepthEstimateFH[uBetaCollectDepthB]);
- INC(ctx->sFhCollection.u64BetaGapEstimateFH[uBetaCollectGapB]);
- INC(ctx->sFhCollection.u64BetaOwnImpEstimateFH[uBetaCollectOwnImpB]);
- INC(ctx->sFhCollection.u64BetaEnemyImpEstimateFH[uBetaCollectEnemyImpB]);
- INC(ctx->sFhCollection.u64BetaFH
- [uBetaCollectDepthB][uBetaCollectGapB]
- [uBetaCollectOwnImpB][uBetaCollectEnemyImpB]);
- }
- }
- if (fAlpha0CollectEligible)
- {
- if (fRealFH)
- {
- INC(ctx->sCounters.tree.u64DepthEstimateFH[uAlpha0CollectDepthB]);
- INC(ctx->sCounters.tree.u64GapEstimateFH[uAlpha0CollectGapB]);
- INC(ctx->sFhCollection.u64ImproveEstimateFH[uRawImproveB]);
- INC(ctx->sFhCollection.u64Alpha5FH
- [uAlpha0CollectDepthB][0][uAlpha0CollectGapB][0][uRawImproveB]);
- }
- }
- }
-#endif // FH_TABLE_COLLECTION
+ // Commit the whole-node ground truth stashed by FhCollectNodeEntry
+ // above, now that iBestScore's real fate against iBeta is known --
+ // same two-phase pattern as TEST_NULL's commit just below.
+ // FhCollectNodeExit itself skips committing on an aborted/
+ // incomplete search (iBestScore may not reflect a fully-searched
+ // node in that case, and counting it as ground truth would bias
+ // the model toward whatever got searched before the clock/node-
+ // limit fired) or if sFhPending.fEligible is FALSE. A no-op in a
+ // non-collection build.
+ FhCollectNodeExit(ctx, &sFhPending, iBestScore, iBeta, WE_SHOULD_STOP_SEARCHING);
#ifdef TEST_NULL
// Commit the calibration record stashed at the diagnostic probe
// site above, now that iBestScore's fate against iBeta (this
diff --git a/src/searchsup.c b/src/searchsup.c
index 397d57e..0bddc31 100644
--- a/src/searchsup.c
+++ b/src/searchsup.c
@@ -552,6 +552,56 @@ _ShipLateBucket(ULONG uRawLateBucket)
#define JOINT_TABLE_SENTINEL (0xFFFF)
+// Decodes generate.c's _ScoreAllMoves packed iValue sort key back
+// into one of the FH_COLLECT_TIER tiers (chess.h) -- moved here from
+// fhcollect.c (2026-10-24) and made unconditional: fhmodel.c's
+// production FH-regression inference needs this classification on
+// every build, not just FH_REGRESSION_COLLECTION ones, and this
+// function is pure/stateless (just decodes bits already in mv/iValue)
+// so there's no reason to keep it gated or duplicated. Does NOT
+// distinguish FHC_TIER_NULL -- the null-move probe isn't a real,
+// generated move at all (no iValue, no mv to compare), so callers
+// identify it directly rather than through this function.
+FH_COLLECT_TIER
+FhClassifyMoveTier(MOVE mv, MOVE mvHash, FLAG fIsCaptureOrPromotion,
+ SCORE iValue)
+{
+ if (IS_SAME_MOVE(mv, mvHash))
+ {
+ return(FHC_TIER_HASH);
+ }
+ // NOT a `TRUE ==` comparison on purpose -- the caller passes
+ // IS_CAPTURE_OR_PROMOTION(mv) straight through, and that macro is
+ // `(mv.uMove & 0x0FF00000)`, a bitmask test that returns an
+ // arbitrary nonzero value, not literally 1/TRUE (confirmed by
+ // grepping every other real call site in generate.c/searchsup.c/
+ // search.c -- all plain truthiness, never `TRUE ==`).
+ if (0 != fIsCaptureOrPromotion)
+ {
+ // _ScoreAllMoves adds SORT_THESE_FIRST only to non-negative-SEE
+ // captures/promotions; a losing capture's iValue never reaches
+ // it.
+ return((iValue >= SORT_THESE_FIRST) ?
+ FHC_TIER_GOOD_CAPTURE : FHC_TIER_LOSING_CAPTURE);
+ }
+ // Quiet move. Killer bits take priority over the countermove bonus
+ // (matches _ScoreAllMoves' own documented priority list).
+ // COUNTERMOVE_TIER_BONUS shares its low bit with GOOD_MOVE
+ // (0x03000000 = 0x02000000 | 0x01000000), so it needs an exact
+ // match, not a bare AND-is-nonzero test, or a plain killer (whose
+ // bits are all numerically >= GOOD_MOVE too) could be misread as
+ // a countermove.
+ if (0 != (iValue & (FIRST_KILLER | SECOND_KILLER | THIRD_KILLER | FOURTH_KILLER)))
+ {
+ return(FHC_TIER_KILLER);
+ }
+ if (COUNTERMOVE_TIER_BONUS == (iValue & COUNTERMOVE_TIER_BONUS))
+ {
+ return(FHC_TIER_COUNTERMOVE);
+ }
+ return(FHC_TIER_LEFTOVER_QUIET);
+}
+
// Looks up this move's predicted FH% (thousandths of a percent) from
// the baked joint table, given the four RAW bucket indices (as
// HangCpBucket/GapCpBucket/MoveNumBucket/DepthBucket produce them).
@@ -689,6 +739,7 @@ _RefineNodeTypeGuess(SEARCHER_THREAD_CONTEXT *ctx,
SCORE iAlpha,
SCORE iBeta,
ULONG uDepth,
+ SCORE iImprovement,
SCORE iEnemyImprovement,
ULONG uRawImproveB)
{
@@ -696,6 +747,19 @@ _RefineNodeTypeGuess(SEARCHER_THREAD_CONTEXT *ctx,
ULONG uAncestorGuess;
ULONG uLocalFH = MOVE_FH_ESTIMATE_NO_DATA;
ULONG uDepthInPlies;
+#ifdef FH_USE_REGRESSION_MODEL
+ // Parent-derived guess, read BEFORE this function's own
+ // assignment below overwrites pi->eNodeType -- same leakage
+ // concern as search.c's eNodeTypeGuessParent capture (feeding the
+ // model's own refined output back in as one of its own inputs
+ // would be circular). ctx->sPosition is already reachable here,
+ // so material needs no new parameter either -- see eval.c's
+ // uArmyScaler for the same VALUE_KING-backout convention.
+ NODE_TYPE eNodeTypeGuessParent = pi->eNodeType;
+ ULONG uTotalNonPawnMaterial =
+ (ctx->sPosition.uNonPawnMaterial[WHITE] - VALUE_KING) +
+ (ctx->sPosition.uNonPawnMaterial[BLACK] - VALUE_KING);
+#endif
if (NODE_PV == pi->eNodeType)
{
@@ -705,20 +769,43 @@ _RefineNodeTypeGuess(SEARCHER_THREAD_CONTEXT *ctx,
uDepthInPlies = uDepth / ONE_PLY;
if (iEval > iBeta)
{
+#ifdef FH_USE_REGRESSION_MODEL
+ uLocalFH = FhModelBetaPredictedFHThousandths(
+ iEval, iBeta, uDepth, iImprovement, iEnemyImprovement,
+ uTotalNonPawnMaterial, eNodeTypeGuessParent);
+#else
uLocalFH = _BetaTablePredictedFHThousandths(
DepthBucket(uDepthInPlies),
GapBetaBucket((SCORE)(iEval - iBeta)),
uRawImproveB,
ImproveBucket(iEnemyImprovement));
+#endif
}
else if (iEval <= iAlpha)
{
+ // The alpha side of this refinement is a WHOLE-NODE question
+ // (same as beta's) -- it's asked before any move is tried, so
+ // it must use the model's whole-node convention too (tier
+ // forced to NO_MOVE, not a real per-move tier guess). The
+ // actual per-move alpha prediction (SearchOneMove, below) is
+ // a separate, later call with real move-level values.
+#ifdef FH_USE_REGRESSION_MODEL
+ {
+ FHM_NODE_BASE sBase = FhModelAlphaNodeBaseQ16(
+ iEval, iAlpha, uDepth, iImprovement, iEnemyImprovement,
+ uTotalNonPawnMaterial, eNodeTypeGuessParent);
+ uLocalFH = FhModelNodeBaseIsMateGated(sBase) ?
+ MOVE_FH_ESTIMATE_NO_DATA :
+ FhModelAlphaMoveThousandths(sBase, 0, 0, 0, 0, FHC_TIER_NO_MOVE);
+ }
+#else
uLocalFH = _JointTablePredictedFHThousandths(
DepthBucket(uDepthInPlies),
0, // hang bucket: assume nothing hung
GapCpBucket((SCORE)(iAlpha - iEval)),
0, // late bucket: real whole-node sample
uRawImproveB);
+#endif
}
pi->eNodeType = g_NodeTypeGuessTable
@@ -1919,6 +2006,9 @@ SearchOneMove(IN SEARCHER_THREAD_CONTEXT *ctx,
IN ULONG uRawImproveB,
IN BITBOARD bbMinorAttacksSnapshot[2],
IN BITBOARD bbRookAttacksSnapshot[2],
+#ifdef FH_USE_REGRESSION_MODEL
+ IN FHM_NODE_BASE sFhAlphaNodeBase,
+#endif
#ifdef MOVE_ORDERING_EVIDENCE_COLLECTION
IN FLAG fThisMoveIsCountermoveMatch,
IN ULONG uCMEvidenceBucket,
@@ -1937,6 +2027,9 @@ SearchOneMove(IN SEARCHER_THREAD_CONTEXT *ctx,
, OUT ULONG *puThisMoveNumBucket
, OUT ULONG *puThisMoveDepthBucket
#endif
+#ifdef FH_REGRESSION_COLLECTION
+ , OUT SCORE *piMoveValueForFhCollect
+#endif
)
/**
@@ -2027,6 +2120,24 @@ Return value:
ASSERT((IS_CHECKING_MOVE(mv) && InCheck(&ctx->sPosition, ctx->sPosition.uToMove)) ||
(!IS_CHECKING_MOVE(mv) && !InCheck(&ctx->sPosition, ctx->sPosition.uToMove)));
+#ifdef FH_REGRESSION_COLLECTION
+ // MUST happen here, inside this function's own Make/Unmake window
+ // -- EstimateHangingMaterialCp asserts the move is already applied
+ // on the board (DEBUG-only, but a real, silent-at-release-O3
+ // correctness bug otherwise: a caller computing this AFTER
+ // SearchOneMove has already returned -- and un-made the move --
+ // would be reading stale pre-move board state). Computed
+ // unconditionally for every move (not just the leftover-eligible
+ // population PERF_COUNTERS' own hang bucket below is restricted
+ // to) since every tier needs a move-value feature. The function
+ // itself branches internally for captures/promotions (returns
+ // -ComputeMoveScore(...), a SEE-plus-promotion material estimate)
+ // vs. quiet moves (real hang/attack-defense analysis) -- one call
+ // covers both, see its own routine comment.
+ *piMoveValueForFhCollect = EstimateHangingMaterialCp(
+ ctx, mv, (x - 1), bbMinorAttacksSnapshot, bbRookAttacksSnapshot);
+#endif
+
// Compute per-move extension (as opposed to per-position
// extensions which are represented by iPositionalExtend).
iExtend = iPositionalExtend;
@@ -2086,28 +2197,42 @@ Return value:
// of about 0.4% but this is misleading -- the
// population is actually bimodal, split between moves
// near 0% and moves legitimately much higher.
- ULONG uPredictedFH = _JointTablePredictedFHThousandths(uRawDepthB,
- uRawDumbB,
- uRawGapB,
- uRawLateB,
- uRawImproveB);
+ ULONG uPredictedFH;
+#ifdef FH_USE_REGRESSION_MODEL
+ // sFhAlphaNodeBase was computed ONCE for this whole node
+ // (search.c, same point FhCollectNodeEntry is called) --
+ // every move in this loop just adds its own move-level terms
+ // to that same precomputed base, rather than recomputing the
+ // node-level terms (gap, depth, improve, material, node type)
+ // on every move. FhModelNodeBaseIsMateGated mirrors the old
+ // table's JOINT_TABLE_SENTINEL/MOVE_FH_ESTIMATE_NO_DATA "no
+ // data" convention -- callers below already handle that
+ // value gracefully, no new branching needed there.
+ if (TRUE == FhModelNodeBaseIsMateGated(sFhAlphaNodeBase))
+ {
+ uPredictedFH = MOVE_FH_ESTIMATE_NO_DATA;
+ }
+ else
+ {
+ FH_COLLECT_TIER eTier = FhModelTierForMove(
+ x, mv, ctx->sMoveStack.mvf[x - 1].iValue);
+ uPredictedFH = FhModelAlphaMoveThousandths(
+ sFhAlphaNodeBase, iHangCp, *puLegalMoves,
+ uFHPctThousandths, uFHAttempts, eTier);
+ }
+#else
+ uPredictedFH = _JointTablePredictedFHThousandths(uRawDepthB,
+ uRawDumbB,
+ uRawGapB,
+ uRawLateB,
+ uRawImproveB);
+#endif
// JOINT_TABLE_SENTINEL and MOVE_FH_ESTIMATE_NO_DATA are the
// same numeric value on purpose -- see both macros' comments.
uThisMoveFHEstimate = uPredictedFH;
// Late move pruning; skip searching under this move?
-#ifdef FH_TABLE_COLLECTION
- // Collection builds must not let LMP skip a move before it
- // ever reaches the INC() calls below -- ShouldLatePrune is
- // itself partly driven by uPredictedFH, i.e. the CURRENTLY
- // LOADED data.c table, so leaving it live here would mean the
- // old (soon-to-be-replaced) table decides which moves are
- // "safe enough" to go unobserved by the new collection,
- // silently censoring the population the new table is trying
- // to measure. Force every eligible leftover move to actually
- // be tried instead.
- fThisMoveLMPPruned = FALSE;
-#else
+#ifndef FH_REGRESSION_COLLECTION
fThisMoveLMPPruned = ShouldLatePrune(
ctx,
uDepth,
@@ -2115,6 +2240,17 @@ Return value:
uFHAttempts,
uFHPctThousandths,
uPredictedFH);
+#else
+ // A collection build must not let LMP skip a move before
+ // FhCollectMoveTried (search.c's move loop) ever gets a chance
+ // to log it -- ShouldLatePrune is itself partly driven by
+ // uPredictedFH, i.e. the CURRENTLY LOADED (soon-to-be-replaced)
+ // data.c table, so leaving it live here would mean the old
+ // table decides which moves are "safe enough" to go
+ // unobserved by the new collection, silently censoring the
+ // population it's trying to measure. Force every eligible
+ // leftover move to actually be tried instead.
+ fThisMoveLMPPruned = FALSE;
#endif
// If LMP didn't fire, we are going to search below this
@@ -2175,63 +2311,12 @@ Return value:
[(NODE_CUT == pi->eNodeType) ? 1 : 0]);
#endif
-#ifdef FH_TABLE_COLLECTION
- if (TRUE == fMoveIsPruneReduceEligible)
- {
- SCORE iHangCp;
-
- INC(ctx->sCounters.tree.u64EligibleLeftoverTries);
- iHangCp = EstimateHangingMaterialCp(
- ctx, mv, x - 1,
- bbMinorAttacksSnapshot,
- bbRookAttacksSnapshot);
- uThisMoveHangBucket = HangCpBucket(iHangCp);
- INC(ctx->sCounters.tree.u64HangEstimateTries[uThisMoveHangBucket]);
-
- // "Down axis": how far below alpha is this
- // node's own static eval? Same eligibility
- // gate as the dumb axis -- iAlpha/iEval are
- // both plain node-local SCOREs (not shared,
- // mutable pos-> fields like bbRookAttacks
- // was), so no snapshot/staleness concern here.
- uThisMoveGapBucket = GapCpBucket(
- (SCORE)(iAlpha - iEval));
- INC(ctx->sCounters.tree.u64GapEstimateTries[uThisMoveGapBucket]);
-
- // "Late axis": this move's own 1-based ordinal
- // position among moves actually tried here.
- uThisMoveNumBucket = MoveNumBucket(*puLegalMoves);
- INC(ctx->sCounters.tree.u64MoveNumEstimateTries[uThisMoveNumBucket]);
-
- // "Depth axis": remaining search depth at
- // this node, before this move's own
- // extension/reduction.
- uThisMoveDepthBucket = DepthBucket(uDepth / ONE_PLY);
- INC(ctx->sCounters.tree.u64DepthEstimateTries[uThisMoveDepthBucket]);
-
- // Joint 4D cell, same four bucket indices, in
- // addition to (not instead of) the marginals
- // above -- keeps the marginals live this run as
- // a cheap cross-check that the joint reduces to
- // what we already understand.
- INC(ctx->sCounters.tree.u64JointTries
- [uThisMoveDepthBucket][uThisMoveHangBucket]
- [uThisMoveGapBucket][uThisMoveNumBucket]);
-
-#ifdef FH_TABLE_COLLECTION
- // Full 5D alpha joint (restored for the NNUE-eval
- // re-collection run, see chess.h) -- same four bucket
- // indices just computed, plus the caller-supplied
- // improve bucket (loop-invariant per node, computed once
- // by Search() before the move loop). Independent
- // "improve" marginal too, matching the convention above.
- INC(ctx->sFhCollection.u64ImproveEstimateTries[uRawImproveB]);
- INC(ctx->sFhCollection.u64Alpha5Tries
- [uThisMoveDepthBucket][uThisMoveHangBucket]
- [uThisMoveGapBucket][uThisMoveNumBucket][uRawImproveB]);
-#endif
- }
-#endif
+ // FH_REGRESSION_COLLECTION needs no separate per-move "tries"
+ // log here, unlike the old FH_TABLE_COLLECTION design -- the
+ // new per-move record (tries AND outcome together) is
+ // emitted once, back in search.c's move loop, by
+ // FhCollectMoveTried once this move's real score is known;
+ // there's nothing for this pre-search eligibility site to log.
}
#endif // PERF_COUNTERS
#ifdef MOVE_ORDERING_EVIDENCE_COLLECTION
diff --git a/src/split.c b/src/split.c
index 66f44a3..063f183 100644
--- a/src/split.c
+++ b/src/split.c
@@ -1194,6 +1194,13 @@ Return value:
#ifdef TEST_NULL
UINT64 uNullCalibFirstMoveNodeCostUnused;
#endif
+#ifdef FH_REGRESSION_COLLECTION
+ // The MP split path is deliberately uninstrumented (collection
+ // runs at --cpus 1, see docs/REGRESSION.md) -- this sink
+ // exists only so this call site's argument list matches
+ // SearchOneMove's prototype.
+ SCORE iFhCollectMoveValueUnused;
+#endif
uDepth = uOrigDepth;
ASSERT(ctx->uPly == g_SplitInfo[u].uSplitPly);
@@ -1285,6 +1292,18 @@ Return value:
uRawImproveB,
g_SplitInfo[u].bbMinorAttacksSnapshot,
g_SplitInfo[u].bbRookAttacksSnapshot,
+#ifdef FH_USE_REGRESSION_MODEL
+ // Same "deliberately
+ // uninstrumented" pattern as
+ // the FH_REGRESSION_COLLECTION
+ // param below -- no node-level
+ // precompute is threaded
+ // through the split machinery,
+ // so this always falls back to
+ // the no-data sentinel on a
+ // helper thread's move.
+ (FHM_NODE_BASE)FHM_MATE_GATED,
+#endif
#ifdef MOVE_ORDERING_EVIDENCE_COLLECTION
FALSE, // fThisMoveIsCountermoveMatch
0, // uCMEvidenceBucket
@@ -1303,6 +1322,9 @@ Return value:
, &uThisMoveNumBucketUnused
, &uThisMoveDepthBucketUnused
#endif
+#ifdef FH_REGRESSION_COLLECTION
+ , &iFhCollectMoveValueUnused
+#endif
);
ASSERT(PositionsAreEquivalent(&ctx->sPosition, &board));