/** Copyright (c) Scott Gasch Module Name: data.c Abstract: Large data structures and the code that creates/verifies them. Author: Scott Gasch (scott.gasch@gmail.com) 10 May 2004 Revision History: $Id: data.c 345 2007-12-02 22:56:42Z scott $ **/ #include "chess.h" // Distance between two squares lookup table ULONG g_uDistance[256]; ULONG *g_pDistance = &(g_uDistance[128]); // Who controls the square lookup table CHAR g_SwapTable[14][32][32]; // Vector (bitvector indicating which pieces can move between squares) and // Delta (direction to travel to get from square a to square b) lookup table. VECTOR_DELTA g_VectorDelta[256]; VECTOR_DELTA *g_pVectorDelta = &(g_VectorDelta[128]); // Hardcoded move patterns to terminate PVs with MOVE NULLMOVE = {0}; MOVE HASHMOVE = {0x11118888}; MOVE RECOGNMOVE = {0x22228888}; MOVE DRAWMOVE = {0x33338888}; MOVE MATEMOVE = {0x44448888}; MOVE EGTBMOVE = {0x55558888}; // Is a square white? FLAG g_fIsWhiteSquare[128]; #ifdef DEBUG COOR DistanceBetweenSquares(COOR a, COOR b) { int i = (int)a - (int)b + 128; int j = (int)b - (int)a + 128; ASSERT(IS_ON_BOARD(a)); ASSERT(IS_ON_BOARD(b)); ASSERT((i >= 0) && (i < 256)); ASSERT(g_uDistance[i] == REAL_DISTANCE(a, b)); ASSERT(g_pDistance[(int)a - (int)b] == g_uDistance[i]); ASSERT(g_pDistance[(int)b - (int)a] == g_uDistance[i]); ASSERT(g_uDistance[j] == REAL_DISTANCE(a, b)); return(REAL_DISTANCE(a, b)); } #define VALID_VECTOR(x) \ (((x) == 0) || \ ((x) == (1 << KNIGHT)) || \ ((x) == ( (1 << BISHOP) | (1 << QUEEN))) || \ ((x) == ( (1 << ROOK) | (1 << QUEEN))) || \ ((x) == ( (1 << BISHOP) | (1 << QUEEN) | (1 << KING))) || \ ((x) == ( (1 << ROOK) | (1 << QUEEN) | (1 << KING))) || \ ((x) == ( (1 << BISHOP) | (1 << QUEEN) | (1 << KING) | (1 << PAWN)))) #define VALID_INDEX(x) \ (((x) >= -128) && ((x) <= 127)) ULONG CheckVectorWithIndex(int i, ULONG uColor) { ULONG u; ASSERT(VALID_INDEX(i)); ASSERT(IS_VALID_COLOR(uColor)); u = g_pVectorDelta[i].iVector[uColor]; ASSERT(VALID_VECTOR(u)); ASSERT(u == g_VectorDelta[i + 128].iVector[uColor]); ASSERT(&(g_pVectorDelta[i]) == &(g_VectorDelta[i + 128])); return(u); } #define VALID_DELTA(x) \ (((x) == 0) || \ ((x) == +1) || ((x) == -1) || \ ((x) == +16) || ((x) == -16) || \ ((x) == +15) || ((x) == -15) || \ ((x) == +17) || ((x) == -17)) int DirectionBetweenSquaresWithIndex(int i) { int iDir; ASSERT(VALID_INDEX(i)); iDir = g_pVectorDelta[i].iDelta; ASSERT(iDir == g_VectorDelta[i + 128].iDelta); ASSERT(&(g_pVectorDelta[i]) == &(g_VectorDelta[i + 128])); ASSERT(VALID_DELTA(iDir)); ASSERT(iDir == -g_pVectorDelta[i].iNegDelta); return(iDir); } int DirectionBetweenSquaresFromTo(COOR from, COOR to) { int i = (int)from - (int)to; return DirectionBetweenSquaresWithIndex(i); } int NegativeDirectionBetweenSquaresWithIndex(int i) { int iDir; ASSERT(VALID_INDEX(i)); iDir = g_pVectorDelta[i].iNegDelta; ASSERT(iDir == g_VectorDelta[i + 128].iNegDelta); ASSERT(&(g_pVectorDelta[i]) == &(g_VectorDelta[i + 128])); ASSERT(VALID_DELTA(iDir)); ASSERT(iDir == -g_pVectorDelta[i].iDelta); return(iDir); } int DirectionBetweenSquares(COOR cFrom, COOR cTo) { int i = (int)cFrom - (int)cTo; return(DirectionBetweenSquaresWithIndex(i)); } FLAG IsSquareWhite(COOR c) { BITBOARD bb; FLAG f = IS_WHITE_SQUARE_COOR(c); ASSERT(IS_ON_BOARD(c)); ASSERT(f == g_fIsWhiteSquare[c]); bb = COOR_TO_BB(c); ASSERT(f == ((bb & BBWHITESQ) != 0)); ASSERT(f == ((bb & BBBLACKSQ) == 0)); return(f); } #endif void VerifyVectorDelta(void) { int iIndex; int iChecksum = 0; for (iIndex = 0; iIndex < 256; iIndex++) { ASSERT(VALID_VECTOR(g_VectorDelta[iIndex].iVector[BLACK])); ASSERT(VALID_VECTOR(g_VectorDelta[iIndex].iVector[WHITE])); ASSERT(VALID_DELTA(g_VectorDelta[iIndex].iDelta)); ASSERT(VALID_DELTA(g_VectorDelta[iIndex].iNegDelta)); ASSERT(-g_VectorDelta[iIndex].iDelta == g_VectorDelta[iIndex].iNegDelta); iChecksum += g_VectorDelta[iIndex].iVector[BLACK] * iIndex; iChecksum += g_VectorDelta[iIndex].iVector[WHITE] * iIndex; iChecksum += g_VectorDelta[iIndex].iDelta * iIndex; } if (iChecksum != 0xb1b58) { UtilPanic(DETECTED_INCORRECT_INITIALIZATION, NULL, "vector/delta", (void *)(size_t)iChecksum, (void *)(size_t)0xb1b58, __FILE__, __LINE__); } } void InitializeWhiteSquaresTable(void) { COOR c; FOREACH_SQUARE(c) { g_fIsWhiteSquare[c] = FALSE; if (!IS_ON_BOARD(c)) { continue; } g_fIsWhiteSquare[c] = IS_WHITE_SQUARE_COOR(c); } } void InitializeVectorDeltaTable(void) { COOR cStart; COOR cNew; COOR cRay; int iIndex; PIECE p; int iDir; ULONG u; static const BYTE _LOCATIONS[] = { D4, A5, A3, G3, C1, B5, H4, E5, E3, A6, C5, A5, A5, G5, A6, D3, D2, A5, E1, E1, A6, H4, B2, D1, D2, E5 }; static int iNumDirs[7] = { 0, 0, 8, 4, 4, 8, 8 }; static int iDelta[7][8] = { { 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 }, { -33, -31, -18, -14, +14, +18, +31, +33 }, { -17, -15, +15, +17, 0, 0, 0, 0 }, { -16, -1, +1, +16, 0, 0, 0, 0 }, { -17, -16, -15, -1, +1, +15, +16, +17 }, { -17, -16, -15, -1, +1, +15, +16, +17 } }; memset(g_VectorDelta, 0, sizeof(g_VectorDelta)); FOREACH_SQUARE(cStart) { if (!IS_ON_BOARD(cStart)) continue; for (u = 0; u < ARRAY_LENGTH(_LOCATIONS); u++) { if (cStart == _LOCATIONS[u]) { iIndex = 0; } } // // Do the pawn bits // iIndex = (int)cStart - ((int)cStart - 17) + 128; g_VectorDelta[iIndex].iVector[WHITE] |= (1 << PAWN); iIndex = (int)cStart - ((int)cStart - 15) + 128; g_VectorDelta[iIndex].iVector[WHITE] |= (1 << PAWN); iIndex = (int)cStart - ((int)cStart + 17) + 128; g_VectorDelta[iIndex].iVector[BLACK] |= (1 << PAWN); iIndex = (int)cStart - ((int)cStart + 15) + 128; g_VectorDelta[iIndex].iVector[BLACK] |= (1 << PAWN); // // Do the piece bits // for (p = KNIGHT; p <= KING; p++) { for (iDir = 0; iDir < iNumDirs[p]; iDir++) { cRay = cStart; cNew = cRay + iDelta[p][iDir]; while (IS_ON_BOARD(cNew)) { iIndex = (int)cStart - (int)cNew + 128; // // Fill in the vector // g_VectorDelta[iIndex].iVector[WHITE] |= (1 << p); g_VectorDelta[iIndex].iVector[BLACK] |= (1 << p); // // Fill in the delta // if (FILE(cStart) == FILE(cNew)) { if (cStart < cNew) { g_VectorDelta[iIndex].iDelta = 16; g_VectorDelta[iIndex].iNegDelta = -16; } else { g_VectorDelta[iIndex].iDelta = -16; g_VectorDelta[iIndex].iNegDelta = 16; } } else if (RANK(cStart) == RANK(cNew)) { if (cStart < cNew) { g_VectorDelta[iIndex].iDelta = 1; g_VectorDelta[iIndex].iNegDelta = -1; } else { g_VectorDelta[iIndex].iDelta = -1; g_VectorDelta[iIndex].iNegDelta = 1; } } else if ((cStart % 15) == (cNew % 15)) { if (cStart < cNew) { g_VectorDelta[iIndex].iDelta = +15; g_VectorDelta[iIndex].iNegDelta = -15; } else { g_VectorDelta[iIndex].iDelta = -15; g_VectorDelta[iIndex].iNegDelta = 15; } } else if ((cStart % 17) == (cNew % 17)) { if (cStart < cNew) { g_VectorDelta[iIndex].iDelta = +17; g_VectorDelta[iIndex].iNegDelta = -17; } else { g_VectorDelta[iIndex].iDelta = -17; g_VectorDelta[iIndex].iNegDelta = 17; } } cNew += iDelta[p][iDir]; if ((KING == p) || (KNIGHT == p)) { break; } } } } } (void)VerifyVectorDelta(); #ifdef OSX // // nasm under OSX/macho has a nasty bug that causes the addresses // of extern symbols to be screwed up. I only use two extern data // structs in the x86.asm code: the vector delta table and the // piece data table. My workaround to the nasm bug is to copy // these tables into a symbol in the asm module and access them // locally on OSX. // extern VECTOR_DELTA *g_NasmVectorDelta; extern PIECE_DATA *g_NasmPieceData; memcpy(&g_NasmVectorDelta, &g_VectorDelta, sizeof(g_VectorDelta)); memcpy(&g_NasmPieceData, &g_PieceData, sizeof(g_PieceData)); #endif } void InitializeSwapTable(void) { ULONG GET_HIGH_BIT[32] = { 0, // 00000 = 0 1, // 00001 = 1 2, // 00010 = 2 2, // 00011 = 3 4, // 00100 = 4 4, // 00101 = 5 4, // 00110 = 6 4, // 00111 = 7 8, // 01000 = 8 8, // 01001 = 9 8, // 01010 = 10 8, // 01011 = 11 8, // 01100 = 12 8, // 01101 = 13 8, // 01110 = 14 8, // 01111 = 15 16, // 10000 = 16 16, // 10001 = 17 16, // 10010 = 18 16, // 10011 = 19 16, // 10100 = 20 16, // 10101 = 21 16, // 10110 = 22 16, // 10111 = 23 16, // 11000 = 24 16, // 11001 = 25 16, // 11010 = 26 16, // 11011 = 27 16, // 11100 = 28 16, // 11101 = 29 16, // 11110 = 30 16 // 11111 = 31 }; ULONG uOnMove; PIECE p; ULONG uAtStake; ULONG uBlack; ULONG uWhite; ULONG uOld; ULONG uGains[2]; ULONG uAttacks[2]; INT iDiff; for (p = 0; p <= WHITE_KING; p++) { if (p > 1) { for (uBlack = 0; uBlack < 32; uBlack++) { for (uWhite = 0; uWhite < 32; uWhite++) { uGains[BLACK] = uGains[WHITE] = 0; uAttacks[BLACK] = uBlack; uAttacks[WHITE] = uWhite; uAtStake = PIECE_VALUE(p); uOnMove = WHITE; if (GET_COLOR(p) == WHITE) { uOnMove = BLACK; } // // Ok, if the side on move has an attack, play it // and give them credit for some plunder. // while(uAttacks[uOnMove]) { uOld = uAtStake; uGains[uOnMove] += uAtStake; uAtStake = GET_HIGH_BIT[uAttacks[uOnMove]]; if (uAtStake == 16) { uAtStake = VALUE_PAWN; } else if (uAtStake == 8) { uAtStake = VALUE_BISHOP; } else if (uAtStake == 4) { uAtStake = VALUE_ROOK; } else if (uAtStake == 2) { uAtStake = VALUE_QUEEN; } else if (uAtStake == 1) { // // Don't let them move into check // if (uAttacks[FLIP(uOnMove)]) { uGains[uOnMove] -= uOld; uAtStake = 0; } break; } else { UtilPanic(SHOULD_NOT_GET_HERE, NULL, NULL, NULL, NULL, __FILE__, __LINE__); } uAttacks[uOnMove] &= ~GET_HIGH_BIT[uAttacks[uOnMove]]; uOnMove = FLIP(uOnMove); } // // The side on move doesn't have an attack... does // the side not on move have an attack? If so they // get a chance to assert some more control. // if (uAttacks[FLIP(uOnMove)]) { uGains[FLIP(uOnMove)] += 100; } if (uGains[BLACK] > uGains[WHITE]) { iDiff = uGains[BLACK] - uGains[WHITE]; iDiff /= 100; iDiff += (iDiff == 0); g_SwapTable[p][uWhite][uBlack] = MIN(+127, iDiff); g_SwapTable[p][uWhite][uBlack] *= -1; } else if (uGains[WHITE] > uGains[BLACK]) { iDiff = uGains[WHITE] - uGains[BLACK]; iDiff /= 100; iDiff += (iDiff == 0); g_SwapTable[p][uWhite][uBlack] = MIN(+127, iDiff); } else { g_SwapTable[p][uWhite][uBlack] = 0; } } } } else // no piece sitting there { for (uBlack = 0; uBlack < 32; uBlack++) { for (uWhite = 0; uWhite < 32; uWhite++) { if (uBlack > uWhite) { g_SwapTable[p][uWhite][uBlack] = -1; } else if (uWhite > uBlack) { g_SwapTable[p][uWhite][uBlack] = +1; } else { g_SwapTable[p][uWhite][uBlack] = 0; } } } } } } void InitializeDistanceTable(void) { COOR x, y; int i; #ifdef DEBUG int j; #endif for (x = 0; x < 128; x++) { if (!IS_ON_BOARD(x)) continue; for (y = 0; y < 128; y++) { if (!IS_ON_BOARD(y)) continue; i = (int)x - (int)y; i += 128; g_uDistance[i] = REAL_DISTANCE(x, y); ASSERT(g_uDistance[i] >= 0); ASSERT(g_uDistance[i] <= 7); } } #ifdef DEBUG for (x = 0; x < 128; x++) { if (!IS_ON_BOARD(x)) continue; for (y = 0; y < 128; y++) { if (!IS_ON_BOARD(y)) continue; i = (int)x - (int)y + 128; ASSERT(g_uDistance[i] == REAL_DISTANCE(x, y)); ASSERT(g_pDistance[(int)x - (int)y] == g_uDistance[i]); ASSERT(&(g_pDistance[(int)x - (int)y]) == &(g_uDistance[i])); j = (int)y - (int)x + 128; ASSERT(g_uDistance[j] == REAL_DISTANCE(x, y)); ASSERT(g_pDistance[(int)y - (int)x] == g_uDistance[j]); ASSERT(&(g_pDistance[(int)y - (int)x]) == &(g_uDistance[j])); } } #endif } // // Per-square, per-direction "ray to board edge" bitboards for the // rook, indexed [direction][c] with direction matching // g_RookRayDeltas below (N, S, E, W). Only entries for real board // squares (IS_ON_BOARD(c)) are ever populated/queried; off-board // indices are left zeroed and unused. Built once at startup by // InitializeRookRayTables() -- part of eval.c's occupancy-bitboard // PoC (_EvalRookOccupancyBB et al.), turning a per-call // walk-to-the-edge loop into an O(1) table lookup. // BITBOARD g_RookRayToEdge[4][128]; const int g_RookRayDeltas[4] = { 16, -16, 1, -1 }; // N, S, E, W (0x88) const FLAG g_RookRayPositiveDir[4] = { TRUE, FALSE, TRUE, FALSE }; // Per-square OR of all 4 g_RookRayToEdge directions -- "every square a // rook on c could reach on an empty board, regardless of direction." // One lookup (+ AND against a slider bitboard) to answer "is uSide's // rook/queen bitboard aligned with c *at all*", vs. 4 separate // g_RookRayToEdge lookups to discover the same "no" -- see // _WhoAttacksSquareBB (see.c) for the consumer and // board_representation/MIGRATION.md section 3 for the writeup. BITBOARD g_RookRayAll[128]; void InitializeRookRayTables(void) /** Routine description: One-time startup init for g_RookRayToEdge -- see its comment. Parameters: void Return value: void **/ { ULONG uRank, uFile, uDir; COOR c, cSquare; memset(g_RookRayToEdge, 0, sizeof(g_RookRayToEdge)); memset(g_RookRayAll, 0, sizeof(g_RookRayAll)); for (uRank = 0; uRank < 8; uRank++) { for (uFile = 0; uFile < 8; uFile++) { c = (uRank << 4) | uFile; for (uDir = 0; uDir < 4; uDir++) { for (cSquare = c + g_RookRayDeltas[uDir]; IS_ON_BOARD(cSquare); cSquare += g_RookRayDeltas[uDir]) { g_RookRayToEdge[uDir][c] |= COOR_TO_BB(cSquare); g_RookRayAll[c] |= COOR_TO_BB(cSquare); } } } } } // // Same idea as g_RookRayToEdge, for the bishop's 4 diagonal directions. // BITBOARD g_BishopRayToEdge[4][128]; const int g_BishopRayDeltas[4] = { 17, -17, 15, -15 }; // NE, SW, NW, SE (0x88) const FLAG g_BishopRayPositiveDir[4] = { TRUE, FALSE, TRUE, FALSE }; // g_RookRayAll's counterpart for the bishop's 4 diagonal directions. BITBOARD g_BishopRayAll[128]; void InitializeBishopRayTables(void) /** Routine description: One-time startup init for g_BishopRayToEdge -- see its comment. Parameters: void Return value: void **/ { ULONG uRank, uFile, uDir; COOR c, cSquare; memset(g_BishopRayToEdge, 0, sizeof(g_BishopRayToEdge)); memset(g_BishopRayAll, 0, sizeof(g_BishopRayAll)); for (uRank = 0; uRank < 8; uRank++) { for (uFile = 0; uFile < 8; uFile++) { c = (uRank << 4) | uFile; for (uDir = 0; uDir < 4; uDir++) { for (cSquare = c + g_BishopRayDeltas[uDir]; IS_ON_BOARD(cSquare); cSquare += g_BishopRayDeltas[uDir]) { g_BishopRayToEdge[uDir][c] |= COOR_TO_BB(cSquare); g_BishopRayAll[c] |= COOR_TO_BB(cSquare); } } } } } // A combined 8-ray queen table (rook's 4 directions + bishop's 4, // concatenated) was tried here and measured SLOWER than // _EvalQueenOccupancyBB's two-pass version reusing g_RookRayToEdge/ // g_BishopRayToEdge directly -- see that function's comment for why // (probable lost constant-folding on the orthogonal-ray flag). Removed // rather than left around unused. // // Per-square "all squares a knight on c can hop to" bitboard. Unlike // the rook/bishop ray tables, a knight has no blocking to account for // -- there's nothing "in between" a knight and its landing square -- // so this is the complete, final answer for a given square, not a // ray-to-edge that still needs an occupancy AND to find blockers. // Built once at startup by InitializeKnightAttackTables(). // BITBOARD g_KnightAttacksBB[128]; void InitializeKnightAttackTables(void) /** Routine description: One-time startup init for g_KnightAttacksBB -- see its comment. Parameters: void Return value: void **/ { ULONG uRank, uFile, uDir; COOR c, cSquare; memset(g_KnightAttacksBB, 0, sizeof(g_KnightAttacksBB)); for (uRank = 0; uRank < 8; uRank++) { for (uFile = 0; uFile < 8; uFile++) { c = (uRank << 4) | uFile; for (uDir = 0; g_iNDeltas[uDir] != 0; uDir++) { cSquare = c + g_iNDeltas[uDir]; if (IS_ON_BOARD(cSquare)) { g_KnightAttacksBB[c] |= COOR_TO_BB(cSquare); } } } } } // // Per-square "all squares a king on c can step to" bitboard (normal // king moves only -- castling stays mailbox, see // board_representation/MOVEGEN_MIGRATION.md section 1's explicit // non-goal and section 3 step 2). Same shape as g_KnightAttacksBB: // GetAttacks's king case used a DISTANCE(...)==1 delta check instead, // since it only ever needs a single square's membership test, not an // enumerable destination set -- move generation needs the actual set, // hence this table exists where GetAttacks needed none. Built once at // startup by InitializeKingAttackTables(). // BITBOARD g_KingAttacksBB[128]; // 2026-09-15: see chess.h's comment on these three. Deltas below match // eval.c's old KingSafetyDeltas exactly (front = -17/-16/-15 for WHITE, // +15/+16/+17 for BLACK; side = -1/+1, color-independent). BITBOARD g_KingRingFrontBB[2][128]; BITBOARD g_KingRingBackBB[2][128]; BITBOARD g_KingRingSideBB[128]; void InitializeKingAttackTables(void) /** Routine description: One-time startup init for g_KingAttacksBB and the front/back/side ring-bitboard split -- see their comments. Parameters: void Return value: void **/ { ULONG uRank, uFile, uDir; COOR c, cSquare; static const int iFrontDeltas[2][3] = { { +15, +16, +17 }, // BLACK { -17, -16, -15 }, // WHITE }; static const int iBackDeltas[2][3] = { { -17, -16, -15 }, // BLACK { +15, +16, +17 }, // WHITE }; static const int iSideDeltas[2] = { -1, +1 }; ULONG uColor, uFrontBackSlot, uSideSlot; memset(g_KingAttacksBB, 0, sizeof(g_KingAttacksBB)); memset(g_KingRingFrontBB, 0, sizeof(g_KingRingFrontBB)); memset(g_KingRingBackBB, 0, sizeof(g_KingRingBackBB)); memset(g_KingRingSideBB, 0, sizeof(g_KingRingSideBB)); for (uRank = 0; uRank < 8; uRank++) { for (uFile = 0; uFile < 8; uFile++) { c = (uRank << 4) | uFile; for (uDir = 0; g_iQKDeltas[uDir] != 0; uDir++) { cSquare = c + g_iQKDeltas[uDir]; if (IS_ON_BOARD(cSquare)) { g_KingAttacksBB[c] |= COOR_TO_BB(cSquare); } } for (uColor = 0; uColor < 2; uColor++) { for (uFrontBackSlot = 0; uFrontBackSlot < 3; uFrontBackSlot++) { cSquare = c + iFrontDeltas[uColor][uFrontBackSlot]; if (IS_ON_BOARD(cSquare)) { g_KingRingFrontBB[uColor][c] |= COOR_TO_BB(cSquare); } cSquare = c + iBackDeltas[uColor][uFrontBackSlot]; if (IS_ON_BOARD(cSquare)) { g_KingRingBackBB[uColor][c] |= COOR_TO_BB(cSquare); } } } for (uSideSlot = 0; uSideSlot < 2; uSideSlot++) { cSquare = c + iSideDeltas[uSideSlot]; if (IS_ON_BOARD(cSquare)) { g_KingRingSideBB[c] |= COOR_TO_BB(cSquare); } } } } } // // Per-square, per-side "the (up to 2) squares a pawn of this side // would need to stand on to attack c" bitboard -- e.g. // g_PawnAttackOriginBB[WHITE][c] is c's two SE/SW neighbors (a white // pawn attacks diagonally forward, so it must stand behind-and-beside // c to hit it). Same idea as g_KnightAttacksBB: a single lookup+AND // against bbPawns[side] answers "does uSide have a pawn attacking c" // entirely in bit-space, no COOR arithmetic/IS_ON_BOARD check at // runtime -- see _GetAttacksBB (see.c) for the consumer. // BITBOARD g_PawnAttackOriginBB[2][128]; void InitializePawnAttackOriginTable(void) /** Routine description: One-time startup init for g_PawnAttackOriginBB -- see its comment. Parameters: void Return value: void **/ { static const int iSeeDelta[2] = { -17, +15 }; // BLACK, WHITE ULONG uRank, uFile, uSide; COOR c, cOrigin; memset(g_PawnAttackOriginBB, 0, sizeof(g_PawnAttackOriginBB)); for (uRank = 0; uRank < 8; uRank++) { for (uFile = 0; uFile < 8; uFile++) { c = (uRank << 4) | uFile; for (uSide = 0; uSide < 2; uSide++) { cOrigin = c + iSeeDelta[uSide]; if (IS_ON_BOARD(cOrigin)) { g_PawnAttackOriginBB[uSide][c] |= COOR_TO_BB(cOrigin); } cOrigin += 2; if (IS_ON_BOARD(cOrigin)) { g_PawnAttackOriginBB[uSide][c] |= COOR_TO_BB(cOrigin); } } } } } // // Magic-bitboard tables for rook/bishop move generation -- see // board_representation/MOVEGEN_MIGRATION.md sections 2a/3 for the // full design writeup. Everything here (occupancy masks, magic // numbers, and the attack tables they index into) is computed once at // startup by InitMagic(), never hardcoded -- a validation prototype // measured the full search+build+verify cost at ~0.22s for both piece // types combined, cheap enough to just pay at every process launch // rather than maintaining hand-pasted constants that could silently // drift out of sync with the ray tables or square numbering they're // derived from. // // g_RookOccupancyMask[c] / g_BishopOccupancyMask[c]: the "relevant // occupancy" bits for a slider on c -- g_RookRayToEdge/ // g_BishopRayToEdge's full ray-to-edge, minus each direction's // outermost square (a piece standing on the actual board edge can't // hide a further blocker, so it doesn't affect which squares are // reachable and must be excluded to keep the occupancy-permutation // count, and therefore the attack table size, minimal). // // g_RookMagic[c] / g_BishopMagic[c] and g_RookMagicShift[c] / // g_BishopMagicShift[c]: found by InitMagic() via a random // sparse-candidate search, fixed-seeded (see g_MagicRngState below) // so a given build reproduces the exact same magics on every run -- // deliberately NOT using libc's rand()/srand(), since main.c's // startup path already calls srand((unsigned int)time(0)) for // unrelated reasons, and piggybacking on that shared, time-seeded // generator would silently reintroduce the very non-determinism this // design is meant to avoid. // // g_RookAttackTable[c] / g_BishopAttackTable[c]: one malloc'd array // per square, indexed by ((occupancy & mask) * magic) >> shift, // giving the complete pseudo-legal destination bitboard (empty // squares plus the nearest blocker in every direction, regardless of // which side owns it -- the caller is responsible for ANDing off // friendly occupancy before treating the blocker square as a legal // destination, same convention g_KnightAttacksBB's consumer already // uses). Never freed -- these live for the process's lifetime, same // as every other table in this file. // BITBOARD g_RookOccupancyMask[128]; BITBOARD g_BishopOccupancyMask[128]; BITBOARD g_RookMagic[128]; BITBOARD g_BishopMagic[128]; ULONG g_RookMagicShift[128]; ULONG g_BishopMagicShift[128]; BITBOARD *g_RookAttackTable[128]; BITBOARD *g_BishopAttackTable[128]; // Private PRNG state for the magic-number search -- deliberately // separate from libc's rand()/srand() (see the block comment above). // xorshift64*, fixed literal seed: the exact value doesn't matter, but // it must never change to a time-based or otherwise run-varying seed, // or every reproducibility claim in MOVEGEN_MIGRATION.md section 2a // stops being true. static UINT64 g_MagicRngState = 88172645463325252ULL; static UINT64 _MagicNextRandom64(void) { UINT64 x = g_MagicRngState; x ^= x << 13; x ^= x >> 7; x ^= x << 17; g_MagicRngState = x; return x; } // Sparse (mostly-zero-bit) candidates are known to converge faster in // magic-number search than uniform random 64-bit values -- standard // technique, matches the validation prototype this was ported from. static UINT64 _MagicSparseRandom64(void) { return _MagicNextRandom64() & _MagicNextRandom64() & _MagicNextRandom64(); } // Slow, obviously-correct reference used both to build each magic // table's contents and to verify it before InitMagic() accepts it: // walk each of the 4 directions from c until (and including) the // first occupied square, given a full occupancy bitboard covering // both sides' pieces. static BITBOARD _MagicSlowAttacks(COOR c, BITBOARD bbOccupied, const int iDelta[4]) { BITBOARD bbResult = 0; ULONG uDir; COOR cSquare; for (uDir = 0; uDir < 4; uDir++) { for (cSquare = c + iDelta[uDir]; IS_ON_BOARD(cSquare); cSquare += iDelta[uDir]) { BITBOARD bbSq = COOR_TO_BB(cSquare); bbResult |= bbSq; if (bbOccupied & bbSq) { break; } } } return bbResult; } // Standard "carry-rippler" occupancy-subset enumeration: the uIndex-th // subset of mask's set bits, treating uIndex's own bits as a // present/absent flag for each of mask's bits in ascending-bit order. static BITBOARD _MagicIndexToOccupancy(ULONG uIndex, ULONG uBits, BITBOARD mask) { BITBOARD bbResult = 0; ULONG i, uBit; for (i = 0; i < uBits; i++) { uBit = FastFirstBit(mask) - 1; mask &= mask - 1; if (uIndex & (1UL << i)) { bbResult |= (1ULL << uBit); } } return bbResult; } // Builds the relevant-occupancy mask for one square: the full ray to // the edge in each of the 4 directions, minus that direction's // outermost square -- see the block comment above // g_RookOccupancyMask/g_BishopOccupancyMask. static BITBOARD _MagicBuildOccupancyMask(COOR c, const int iDelta[4]) { BITBOARD bbResult = 0; ULONG uDir; COOR cSquare; for (uDir = 0; uDir < 4; uDir++) { for (cSquare = c + iDelta[uDir]; IS_ON_BOARD(cSquare); cSquare += iDelta[uDir]) { if (IS_ON_BOARD(cSquare + iDelta[uDir])) { bbResult |= COOR_TO_BB(cSquare); } } } return bbResult; } // Finds a collision-free magic number for one square, builds its // attack table from it, and verifies the whole thing against the slow // reference one more time before returning -- the section 2a // collision-freedom gate, run fresh at every startup rather than // trusted from a prior offline run. static void _MagicFindAndBuildForSquare(COOR c, BITBOARD mask, const int iDelta[4], BITBOARD *pMagic, ULONG *pShift, BITBOARD **ppTable) { ULONG uBits = FastCountBits(mask); ULONG uSize = 1UL << uBits; ULONG uShift = 64 - uBits; BITBOARD *rgbbOccupancy = malloc(sizeof(BITBOARD) * uSize); BITBOARD *rgbbAttacks = malloc(sizeof(BITBOARD) * uSize); BITBOARD *rgbbTable = malloc(sizeof(BITBOARD) * uSize); FLAG *rgfFilled = malloc(sizeof(FLAG) * uSize); ULONG i; UINT64 uMagic; if ((NULL == rgbbOccupancy) || (NULL == rgbbAttacks) || (NULL == rgbbTable) || (NULL == rgfFilled)) { Bug("InitMagic: out of memory building table for square %d\n", c); } for (i = 0; i < uSize; i++) { rgbbOccupancy[i] = _MagicIndexToOccupancy(i, uBits, mask); rgbbAttacks[i] = _MagicSlowAttacks(c, rgbbOccupancy[i], iDelta); } for (;;) { FLAG fCollision = FALSE; ULONG uIndex; uMagic = _MagicSparseRandom64(); // Quick reject: a magic whose high byte doesn't spread widely // when multiplied against the mask rarely yields a // collision-free hash -- a cheap filter to skip obviously bad // candidates before paying for the full uSize-entry pass. if (FastCountBits((UINT64)(mask * uMagic) & 0xFF00000000000000ULL) < 6) { continue; } memset(rgfFilled, 0, sizeof(FLAG) * uSize); for (i = 0; (i < uSize) && !fCollision; i++) { uIndex = (ULONG)(((UINT64)rgbbOccupancy[i] * uMagic) >> uShift); if (!rgfFilled[uIndex]) { rgfFilled[uIndex] = TRUE; rgbbTable[uIndex] = rgbbAttacks[i]; } else if (rgbbTable[uIndex] != rgbbAttacks[i]) { fCollision = TRUE; } } if (!fCollision) { break; } } // // Belt-and-suspenders: re-verify every occupancy subset against // the slow reference one more time before accepting this magic. // Redundant with the search loop's own collision bookkeeping // above in the common case, but this is the load-bearing // correctness gate the rest of the magic-bitboard subsystem // depends on (MOVEGEN_MIGRATION.md section 2a) -- worth paying // for explicitly rather than trusting the search loop alone. // for (i = 0; i < uSize; i++) { BITBOARD bbOcc = _MagicIndexToOccupancy(i, uBits, mask); BITBOARD bbExpected = _MagicSlowAttacks(c, bbOcc, iDelta); ULONG uIndex = (ULONG)(((UINT64)bbOcc * uMagic) >> uShift); if (rgbbTable[uIndex] != bbExpected) { Bug("InitMagic: verification failed for square %d, " "occupancy subset %lu\n", c, i); } } *pMagic = uMagic; *pShift = uShift; *ppTable = rgbbTable; free(rgbbOccupancy); free(rgbbAttacks); free(rgfFilled); } void InitMagic(void) /** Routine description: One-time startup init for the rook/bishop magic-bitboard tables -- see the block comment above g_RookOccupancyMask/g_BishopOccupancyMask for the full design and board_representation/MOVEGEN_MIGRATION.md sections 2a/3 for the writeup. Must run after nothing in particular (no dependency on the other Initialize*Tables functions), but is grouped alongside them in main.c's startup sequence for consistency. Parameters: void Return value: void **/ { ULONG uRank, uFile; memset(g_RookOccupancyMask, 0, sizeof(g_RookOccupancyMask)); memset(g_BishopOccupancyMask, 0, sizeof(g_BishopOccupancyMask)); memset(g_RookMagic, 0, sizeof(g_RookMagic)); memset(g_BishopMagic, 0, sizeof(g_BishopMagic)); memset(g_RookMagicShift, 0, sizeof(g_RookMagicShift)); memset(g_BishopMagicShift, 0, sizeof(g_BishopMagicShift)); memset(g_RookAttackTable, 0, sizeof(g_RookAttackTable)); memset(g_BishopAttackTable, 0, sizeof(g_BishopAttackTable)); for (uRank = 0; uRank < 8; uRank++) { for (uFile = 0; uFile < 8; uFile++) { COOR c = (uRank << 4) | uFile; g_RookOccupancyMask[c] = _MagicBuildOccupancyMask(c, g_RookRayDeltas); _MagicFindAndBuildForSquare(c, g_RookOccupancyMask[c], g_RookRayDeltas, &g_RookMagic[c], &g_RookMagicShift[c], &g_RookAttackTable[c]); g_BishopOccupancyMask[c] = _MagicBuildOccupancyMask(c, g_BishopRayDeltas); _MagicFindAndBuildForSquare(c, g_BishopOccupancyMask[c], g_BishopRayDeltas, &g_BishopMagic[c], &g_BishopMagicShift[c], &g_BishopAttackTable[c]); } } } // Auto-generated by splice_joint.py --pickle pickles/wilson_2026-10-03.pkl (smoothed by smooth_joint.py, --floor 500 --shrink-k 250.0) // (56,530 positions, 690,064,327,799 eligible tries at smoothing time). // Every cell is populated -- no 0xffff sentinels remain. // *** VALUES ARE PESSIMISTIC UPPER BOUNDS, NOT POINT ESTIMATES *** // Each cell stores the upper end of the 1.96-sigma Wilson // score interval for its observed (fail-highs / tries), not fh/tries. // So a cell's value encodes BOTH its rate and the confidence its own // sample size supports: a zero-fail-high cell bakes to roughly // 384000/tries, i.e. ~762 at 500 tries, ~1 at 384k tries, 0 above // ~770k tries. A consumer can therefore threshold on the value ALONE // and get an evidence-weighted decision, with no companion sample-count // array and no statistics at the call site -- the threshold IS the // confidence bar. // Rationale (2026-10-03): under point estimates 8,248 of 21,780 cells // read exactly 0, most on little evidence, so any "prune where the // table says 0" rule was far broader than the data supported. Under // Wilson bounds 136 cells read 0. The transform is monotone -- no cell's // value is ever lowered -- so every consumer became strictly more // conservative at a fixed threshold. NOTE this shifted LMR admission: // LMR_STATIC_ADMIT_PCT_THOUSANDTHS was raised 500 -> 1000 to hold the // previous admission population roughly constant (21,047 -> 21,017 // cells). Wilson bounds correct for SAMPLING error only; a structurally // wrong signal (see SPEC.md's queen-vs-queen bucket: well-sampled and // backwards) is untouched by them, which is what shadow verification is // for. // 16,539/21,780 cells have tries strictly above the 500-try floor (raw observed, unchanged by smoothing). // 5,241/21,780 cells were below the floor (some data, shrunk toward a coarser marginal) or had zero observed tries (pure marginal fallback) -- see joint_table_collection/README.md's "Smoothing sparse/empty cells" section and smooth_joint.py for the method. // 0 floor-cleared cells flagged by the 95% Wilson-CI check at smoothing time. USHORT g_uJointFHThousandths[12][11][11][15] = { { // depth bucket 0 { // dumb bucket 0 { 17175, 12727, 10446, 9176, 8203, 7345, 6564, 5862, 5229, 4674, 4183, 3759, 2562, 1241, 608 }, { 2716, 2237, 1832, 1514, 1271, 1083, 939, 822, 729, 654, 589, 537, 404, 259, 168 }, { 151, 160, 159, 152, 139, 127, 117, 108, 100, 94, 88, 84, 72, 60, 55 }, { 78, 84, 85, 82, 76, 70, 64, 59, 55, 51, 48, 45, 37, 29, 23 }, { 32, 33, 33, 31, 28, 26, 23, 22, 20, 18, 17, 16, 12, 8, 8 }, { 21, 20, 19, 17, 14, 13, 12, 10, 9, 8, 8, 7, 5, 2, 1 }, { 15, 14, 12, 10, 9, 8, 6, 6, 5, 5, 4, 4, 2, 1, 0 }, { 14, 13, 10, 8, 7, 6, 5, 4, 4, 3, 3, 2, 1, 0, 0 }, { 11, 11, 8, 7, 6, 5, 4, 3, 3, 3, 2, 2, 1, 0, 0 }, { 9, 8, 6, 5, 4, 3, 3, 2, 2, 2, 2, 1, 1, 0, 0 }, { 4, 3, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, }, { // dumb bucket 1 { 31371, 10698, 4275, 3621, 3236, 3693, 4059, 4437, 5309, 5879, 6459, 6867, 5286, 5436, 6879 }, { 696, 639, 548, 664, 924, 1006, 1093, 1242, 1317, 1471, 1466, 1462, 1581, 2307, 3489 }, { 629, 389, 311, 335, 367, 485, 563, 632, 601, 624, 747, 783, 952, 1195, 1712 }, { 441, 276, 126, 192, 242, 254, 295, 338, 357, 399, 420, 414, 430, 469, 860 }, { 277, 138, 154, 82, 122, 151, 192, 170, 178, 204, 220, 189, 169, 196, 365 }, { 201, 73, 52, 72, 111, 76, 99, 126, 113, 105, 95, 108, 75, 66, 155 }, { 162, 55, 35, 23, 41, 38, 35, 55, 49, 42, 52, 65, 78, 44, 98 }, { 32, 24, 24, 27, 56, 42, 35, 51, 33, 41, 53, 48, 91, 36, 55 }, { 60, 17, 28, 25, 45, 30, 18, 37, 35, 28, 28, 20, 42, 29, 45 }, { 30, 14, 8, 10, 15, 21, 14, 14, 21, 18, 22, 39, 48, 28, 31 }, { 5, 4, 3, 4, 4, 8, 13, 17, 18, 21, 23, 17, 9, 9, 5 }, }, { // dumb bucket 2 { 3556, 2476, 1826, 1425, 1164, 1009, 907, 865, 851, 850, 883, 913, 1136, 1342, 1420 }, { 240, 205, 175, 152, 134, 118, 110, 106, 108, 111, 120, 130, 178, 322, 656 }, { 45, 40, 39, 36, 33, 33, 33, 35, 40, 44, 53, 63, 102, 202, 417 }, { 24, 21, 19, 19, 19, 21, 22, 24, 28, 33, 39, 44, 66, 118, 285 }, { 6, 5, 6, 8, 7, 9, 9, 11, 15, 18, 21, 24, 34, 56, 145 }, { 5, 4, 4, 4, 4, 5, 4, 5, 5, 6, 8, 8, 16, 21, 61 }, { 7, 5, 4, 3, 4, 3, 2, 3, 3, 3, 4, 4, 6, 7, 28 }, { 5, 4, 3, 3, 2, 2, 2, 2, 1, 2, 3, 4, 4, 2, 18 }, { 5, 3, 3, 2, 1, 1, 2, 2, 1, 2, 2, 4, 4, 1, 9 }, { 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 3, 1, 3 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 1, 0 }, }, { // dumb bucket 3 { 1689, 1120, 802, 626, 500, 390, 319, 269, 236, 211, 184, 169, 153, 164, 127 }, { 53, 40, 31, 24, 19, 17, 13, 12, 12, 11, 13, 13, 20, 44, 83 }, { 63, 45, 32, 27, 24, 21, 21, 17, 14, 12, 14, 12, 14, 21, 46 }, { 48, 40, 35, 30, 27, 25, 25, 21, 17, 14, 13, 9, 7, 7, 13 }, { 20, 13, 12, 10, 8, 7, 5, 4, 2, 3, 2, 2, 2, 2, 5 }, { 18, 13, 9, 9, 7, 5, 4, 3, 2, 2, 2, 1, 1, 1, 2 }, { 8, 6, 5, 5, 3, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1 }, { 10, 7, 4, 4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1 }, { 8, 6, 4, 4, 1, 2, 0, 1, 1, 1, 2, 1, 1, 0, 1 }, { 3, 2, 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, }, { // dumb bucket 4 { 2814, 2233, 1741, 1387, 1072, 855, 689, 602, 551, 484, 462, 440, 427, 402, 289 }, { 76, 56, 45, 42, 35, 31, 25, 23, 28, 30, 40, 47, 77, 124, 179 }, { 34, 34, 29, 26, 25, 21, 18, 20, 21, 24, 29, 35, 48, 64, 86 }, { 27, 23, 22, 23, 20, 20, 20, 18, 16, 16, 16, 16, 20, 19, 37 }, { 16, 12, 10, 7, 7, 7, 6, 6, 5, 4, 4, 5, 8, 6, 17 }, { 8, 9, 5, 5, 5, 5, 4, 4, 4, 3, 4, 3, 8, 4, 7 }, { 4, 5, 4, 4, 4, 4, 3, 3, 2, 2, 2, 2, 7, 3, 5 }, { 5, 4, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 8, 3, 2 }, { 8, 3, 4, 3, 3, 2, 2, 2, 1, 2, 3, 2, 7, 3, 1 }, { 5, 2, 3, 2, 2, 2, 2, 3, 2, 1, 2, 2, 10, 3, 1 }, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 6, 3, 1 }, }, { // dumb bucket 5 { 576, 376, 296, 283, 286, 279, 280, 286, 289, 307, 331, 367, 557, 1000, 1131 }, { 32, 26, 20, 17, 14, 12, 10, 10, 9, 8, 7, 7, 8, 41, 237 }, { 26, 25, 23, 20, 17, 16, 13, 11, 10, 10, 9, 8, 9, 43, 230 }, { 21, 18, 19, 15, 13, 11, 10, 10, 10, 9, 8, 8, 9, 67, 333 }, { 6, 6, 7, 7, 6, 5, 4, 4, 3, 3, 3, 3, 8, 86, 334 }, { 7, 7, 7, 5, 4, 4, 2, 2, 2, 2, 2, 2, 5, 57, 254 }, { 4, 3, 3, 3, 1, 2, 1, 1, 2, 2, 2, 2, 3, 33, 157 }, { 2, 2, 3, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 10, 118 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 14, 90 }, { 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 0, 3, 17 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3 }, }, { // dumb bucket 6 { 1800, 2400, 1800, 2400, 3200, 4400, 7200, 10200, 5771, 7790, 5458, 4311, 2061, 947, 327 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 800, 800, 792, 488, 283, 246, 145 }, { 1200, 1200, 1200, 1200, 1200, 800, 800, 800, 800, 576, 611, 202, 113, 148, 111 }, { 800, 800, 800, 800, 800, 800, 800, 800, 777, 393, 403, 150, 65, 93, 83 }, { 800, 800, 800, 800, 800, 800, 1200, 800, 656, 369, 233, 268, 44, 46, 47 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 519, 316, 216, 31, 13, 28 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 721, 478, 303, 23, 12, 22 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 556, 12, 17, 15 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 714, 41, 17, 8 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 760, 53, 28, 6 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 565, 353, 211, 36, 21, 1 }, }, { // dumb bucket 7 { 379, 291, 270, 228, 210, 188, 174, 159, 169, 165, 187, 220, 298, 402, 304 }, { 134, 104, 79, 71, 60, 54, 48, 47, 41, 41, 38, 35, 29, 37, 92 }, { 27, 25, 21, 16, 14, 14, 12, 11, 11, 11, 11, 12, 10, 27, 84 }, { 13, 14, 11, 6, 9, 7, 7, 8, 7, 7, 9, 6, 8, 41, 126 }, { 4, 7, 5, 5, 3, 5, 3, 5, 3, 4, 4, 3, 7, 40, 82 }, { 6, 4, 3, 6, 4, 3, 4, 4, 1, 2, 4, 3, 4, 17, 36 }, { 8, 3, 2, 4, 2, 4, 2, 3, 2, 2, 3, 2, 3, 5, 16 }, { 14, 8, 6, 6, 5, 5, 5, 5, 7, 5, 4, 6, 1, 3, 9 }, { 36, 25, 21, 18, 16, 16, 15, 14, 24, 13, 12, 11, 1, 4, 5 }, { 57, 39, 33, 29, 27, 26, 25, 23, 22, 21, 19, 17, 2, 3, 2 }, { 45, 31, 26, 23, 21, 20, 19, 17, 15, 14, 11, 9, 3, 6, 2 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 3400, 1400, 800, 1200, 1200, 1200, 1956, 4588, 226, 108, 60 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 657, 459, 314, 24, 66, 73 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 519, 356, 219, 17, 40, 50 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 576, 329, 223, 17, 13, 16 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 707, 425, 289, 11, 12, 7 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 540, 339, 13, 3, 2 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 554, 19, 4, 2 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 16, 6, 1 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 33, 7, 1 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 50, 10, 3 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 589, 24, 27, 6 }, }, { // dumb bucket 9 { 963, 722, 610, 535, 453, 342, 270, 217, 182, 151, 122, 101, 69, 52, 35 }, { 150, 106, 95, 86, 75, 66, 56, 49, 42, 38, 33, 31, 21, 16, 27 }, { 15, 14, 10, 11, 11, 9, 7, 8, 7, 7, 6, 6, 5, 6, 13 }, { 6, 7, 5, 5, 6, 4, 5, 5, 5, 4, 4, 4, 4, 3, 5 }, { 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1 }, { 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 }, { 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, { 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0 }, { 2, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1 }, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1 }, }, { // dumb bucket 10 { 8800, 1988, 1525, 1043, 876, 1214, 2904, 2996, 3719, 6318, 6346, 6880, 8214, 7552, 2551 }, { 2800, 2800, 2000, 1800, 1079, 536, 948, 1387, 1442, 1755, 2462, 2882, 2474, 1399, 258 }, { 1800, 1400, 1400, 1200, 1277, 535, 233, 699, 559, 1907, 1809, 1253, 869, 597, 221 }, { 1200, 1200, 1200, 800, 554, 301, 182, 374, 354, 1066, 1078, 582, 255, 155, 159 }, { 1200, 800, 800, 800, 561, 359, 172, 123, 172, 483, 424, 258, 60, 111, 289 }, { 1200, 1200, 800, 698, 533, 315, 159, 145, 116, 118, 113, 115, 55, 89, 774 }, { 800, 800, 800, 650, 622, 240, 132, 174, 102, 99, 94, 105, 12, 44, 328 }, { 800, 800, 800, 783, 426, 248, 144, 101, 111, 105, 110, 120, 15, 53, 247 }, { 800, 800, 800, 800, 646, 342, 193, 151, 139, 126, 134, 143, 43, 24, 67 }, { 800, 800, 800, 800, 800, 504, 294, 204, 156, 141, 138, 154, 21, 37, 50 }, { 800, 800, 603, 256, 144, 93, 72, 54, 44, 37, 32, 33, 6, 10, 88 }, }, }, { // depth bucket 1 { // dumb bucket 0 { 17504, 13126, 10585, 9043, 7831, 6822, 5955, 5225, 4595, 4062, 3602, 3212, 2124, 962, 432 }, { 3084, 2552, 2071, 1687, 1395, 1179, 1015, 888, 786, 704, 634, 577, 423, 234, 123 }, { 183, 187, 181, 170, 157, 144, 131, 121, 113, 105, 98, 93, 76, 54, 41 }, { 101, 101, 98, 93, 87, 80, 75, 70, 65, 61, 57, 53, 43, 30, 22 }, { 56, 52, 48, 45, 42, 39, 37, 34, 32, 30, 28, 26, 20, 13, 11 }, { 42, 37, 33, 30, 27, 24, 22, 20, 18, 17, 15, 14, 10, 6, 5 }, { 36, 31, 27, 24, 21, 19, 17, 15, 14, 12, 11, 10, 7, 5, 4 }, { 34, 30, 25, 22, 19, 17, 15, 13, 12, 11, 10, 9, 6, 4, 4 }, { 27, 25, 21, 18, 16, 14, 12, 11, 10, 9, 8, 7, 5, 4, 3 }, { 21, 19, 17, 14, 12, 11, 10, 9, 8, 7, 6, 6, 4, 3, 3 }, { 10, 9, 7, 6, 5, 4, 4, 3, 3, 3, 2, 2, 2, 1, 2 }, }, { // dumb bucket 1 { 20727, 7505, 3144, 2433, 2116, 2150, 2473, 2870, 3571, 4104, 4326, 4720, 4215, 5025, 6244 }, { 530, 430, 425, 515, 654, 791, 961, 1067, 1090, 1175, 1237, 1183, 1375, 2671, 3747 }, { 491, 297, 244, 243, 288, 384, 465, 504, 509, 536, 588, 595, 804, 1204, 1652 }, { 287, 174, 125, 110, 137, 210, 254, 259, 281, 288, 311, 326, 361, 385, 652 }, { 180, 112, 62, 52, 74, 104, 149, 150, 163, 175, 212, 178, 147, 153, 280 }, { 110, 44, 50, 40, 78, 61, 82, 88, 103, 95, 90, 64, 61, 55, 123 }, { 53, 11, 20, 17, 14, 34, 27, 39, 37, 42, 51, 55, 65, 33, 89 }, { 26, 9, 14, 20, 26, 20, 24, 26, 24, 23, 33, 29, 70, 29, 63 }, { 19, 14, 14, 10, 18, 15, 16, 18, 16, 19, 20, 21, 38, 25, 53 }, { 11, 5, 3, 3, 9, 18, 13, 9, 27, 19, 17, 21, 46, 23, 37 }, { 2, 1, 2, 2, 4, 6, 8, 14, 17, 18, 18, 17, 10, 10, 11 }, }, { // dumb bucket 2 { 3542, 2392, 1701, 1290, 1043, 875, 769, 701, 670, 647, 651, 661, 719, 788, 937 }, { 325, 276, 232, 195, 168, 148, 133, 122, 117, 112, 111, 112, 122, 236, 559 }, { 54, 49, 45, 41, 38, 37, 36, 36, 37, 39, 42, 46, 63, 143, 342 }, { 31, 27, 26, 24, 23, 22, 22, 23, 24, 26, 28, 32, 42, 74, 172 }, { 13, 11, 11, 10, 11, 11, 11, 12, 13, 15, 15, 17, 24, 44, 97 }, { 12, 11, 11, 9, 9, 9, 8, 7, 7, 8, 7, 8, 12, 17, 45 }, { 14, 11, 10, 9, 8, 7, 6, 5, 4, 4, 5, 6, 6, 6, 24 }, { 16, 11, 8, 7, 6, 6, 5, 5, 3, 3, 3, 4, 4, 3, 17 }, { 13, 10, 6, 5, 4, 4, 4, 3, 3, 3, 4, 3, 4, 2, 12 }, { 5, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 3, 1, 6 }, { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2 }, }, { // dumb bucket 3 { 1676, 1099, 753, 548, 400, 309, 251, 213, 183, 164, 146, 134, 120, 147, 135 }, { 49, 40, 32, 27, 21, 17, 16, 14, 12, 12, 12, 13, 19, 53, 103 }, { 93, 72, 59, 46, 36, 31, 26, 23, 21, 18, 17, 16, 16, 29, 53 }, { 79, 63, 58, 52, 44, 37, 32, 28, 24, 24, 20, 17, 13, 10, 13 }, { 35, 30, 28, 23, 19, 17, 13, 11, 10, 9, 7, 7, 5, 3, 6 }, { 32, 27, 23, 19, 16, 12, 10, 8, 7, 6, 5, 4, 4, 2, 4 }, { 26, 20, 17, 14, 11, 8, 7, 7, 7, 5, 4, 4, 4, 2, 2 }, { 30, 18, 12, 9, 7, 6, 5, 5, 5, 4, 3, 4, 3, 2, 2 }, { 16, 11, 8, 6, 5, 5, 4, 4, 3, 3, 3, 3, 2, 1, 1 }, { 10, 6, 6, 5, 4, 5, 4, 3, 3, 3, 3, 3, 2, 2, 1 }, { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, }, { // dumb bucket 4 { 4219, 2899, 2055, 1444, 1061, 796, 632, 514, 429, 384, 346, 344, 330, 288, 203 }, { 120, 88, 70, 56, 43, 36, 31, 30, 28, 27, 28, 35, 53, 88, 142 }, { 61, 56, 52, 44, 39, 33, 30, 27, 25, 25, 28, 31, 36, 45, 65 }, { 53, 46, 45, 38, 37, 34, 31, 28, 25, 23, 22, 20, 20, 16, 28 }, { 20, 21, 17, 13, 11, 11, 10, 10, 9, 8, 7, 6, 8, 5, 14 }, { 15, 12, 9, 8, 8, 7, 6, 6, 6, 5, 5, 4, 6, 3, 7 }, { 15, 13, 10, 7, 6, 7, 5, 4, 4, 3, 3, 4, 6, 3, 5 }, { 12, 11, 7, 5, 5, 4, 3, 3, 3, 2, 2, 3, 6, 3, 4 }, { 13, 11, 9, 5, 5, 6, 5, 4, 4, 3, 4, 3, 5, 2, 4 }, { 7, 6, 5, 4, 4, 5, 4, 3, 2, 2, 2, 2, 6, 2, 3 }, { 4, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1 }, }, { // dumb bucket 5 { 1511, 901, 570, 378, 295, 243, 230, 236, 249, 277, 295, 330, 480, 739, 882 }, { 34, 25, 21, 17, 14, 13, 11, 10, 9, 8, 8, 7, 8, 35, 219 }, { 31, 27, 24, 21, 18, 16, 14, 12, 11, 10, 9, 9, 9, 40, 228 }, { 34, 28, 23, 20, 19, 15, 14, 13, 11, 10, 10, 10, 11, 72, 332 }, { 23, 16, 11, 10, 9, 8, 6, 5, 5, 5, 4, 5, 8, 94, 357 }, { 25, 17, 12, 10, 9, 8, 6, 5, 4, 4, 5, 5, 7, 66, 278 }, { 22, 16, 10, 9, 6, 5, 5, 4, 4, 2, 2, 3, 5, 31, 138 }, { 20, 15, 10, 8, 7, 5, 6, 5, 4, 4, 4, 4, 3, 10, 92 }, { 11, 8, 6, 5, 4, 4, 3, 3, 3, 2, 3, 2, 2, 13, 68 }, { 11, 7, 6, 8, 4, 4, 3, 4, 3, 2, 3, 2, 2, 4, 22 }, { 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 5, 9 }, }, { // dumb bucket 6 { 1400, 2600, 2000, 2400, 7800, 7600, 7000, 10621, 6093, 7157, 5631, 4768, 1671, 815, 266 }, { 1200, 1200, 1200, 1200, 1200, 800, 800, 800, 1174, 329, 592, 176, 290, 160, 103 }, { 800, 800, 800, 800, 800, 800, 800, 798, 397, 199, 291, 175, 87, 101, 70 }, { 800, 800, 800, 800, 800, 800, 800, 488, 370, 145, 85, 137, 44, 62, 54 }, { 800, 800, 800, 800, 800, 800, 800, 601, 301, 246, 144, 149, 39, 37, 35 }, { 800, 800, 800, 800, 800, 800, 800, 800, 407, 217, 132, 80, 22, 16, 16 }, { 800, 800, 800, 800, 800, 800, 800, 800, 510, 301, 184, 111, 18, 10, 14 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 558, 350, 211, 12, 9, 12 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 697, 404, 274, 13, 11, 12 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 784, 475, 303, 25, 12, 7 }, { 800, 800, 800, 800, 800, 800, 800, 800, 421, 210, 125, 77, 14, 20, 6 }, }, { // dumb bucket 7 { 232, 181, 157, 135, 123, 110, 99, 99, 100, 100, 106, 122, 183, 278, 211 }, { 61, 49, 43, 37, 34, 32, 30, 29, 27, 26, 25, 24, 19, 22, 66 }, { 19, 17, 15, 14, 12, 11, 11, 10, 9, 9, 8, 8, 8, 17, 66 }, { 18, 16, 14, 13, 12, 11, 10, 10, 9, 9, 8, 8, 9, 35, 100 }, { 8, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 7, 39, 70 }, { 7, 7, 4, 4, 3, 3, 4, 4, 3, 4, 3, 2, 4, 14, 25 }, { 11, 10, 7, 4, 5, 3, 3, 3, 5, 2, 3, 2, 3, 5, 10 }, { 10, 4, 9, 3, 6, 5, 3, 8, 5, 2, 2, 3, 1, 3, 7 }, { 40, 20, 9, 12, 11, 7, 12, 11, 9, 6, 9, 7, 1, 3, 5 }, { 226, 168, 77, 55, 67, 63, 74, 27, 17, 23, 27, 13, 3, 4, 3 }, { 68, 25, 21, 34, 17, 27, 14, 31, 6, 18, 8, 5, 2, 6, 4 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 2400, 1800, 1480, 1128, 957, 958, 318, 113, 46 }, { 800, 800, 800, 800, 800, 800, 668, 531, 408, 271, 263, 126, 30, 61, 53 }, { 800, 800, 800, 800, 800, 800, 800, 688, 357, 215, 130, 88, 26, 35, 36 }, { 800, 800, 800, 800, 800, 800, 800, 800, 421, 216, 135, 86, 6, 9, 8 }, { 800, 800, 800, 800, 800, 800, 800, 719, 463, 242, 148, 105, 15, 7, 4 }, { 800, 800, 800, 800, 800, 800, 800, 800, 584, 327, 198, 134, 7, 1, 2 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 408, 271, 205, 4, 3, 2 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 526, 365, 8, 4, 2 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 559, 17, 6, 2 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 22, 5, 3 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 787, 411, 216, 30, 22, 7 }, }, { // dumb bucket 9 { 972, 730, 581, 488, 399, 313, 251, 201, 166, 134, 113, 97, 63, 45, 25 }, { 112, 90, 80, 70, 61, 54, 46, 39, 35, 30, 28, 26, 19, 13, 20 }, { 18, 16, 15, 14, 12, 12, 11, 10, 9, 8, 7, 7, 5, 5, 9 }, { 14, 12, 12, 11, 10, 9, 8, 8, 8, 7, 7, 6, 5, 4, 4 }, { 6, 5, 4, 4, 4, 4, 4, 3, 3, 3, 2, 2, 1, 1, 1 }, { 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1 }, { 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0 }, { 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1 }, { 3, 3, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 0, 1, 0 }, { 4, 3, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1 }, }, { // dumb bucket 10 { 1894, 423, 667, 732, 1002, 1197, 1581, 1891, 2331, 3013, 3256, 4357, 6140, 5499, 1760 }, { 2400, 2400, 1299, 618, 700, 277, 622, 714, 1263, 1305, 1613, 1951, 1755, 1089, 279 }, { 1400, 1400, 1800, 548, 631, 215, 336, 346, 671, 1058, 1274, 990, 694, 455, 149 }, { 1200, 800, 592, 339, 195, 160, 73, 122, 236, 486, 264, 271, 220, 210, 121 }, { 800, 800, 476, 297, 204, 122, 65, 44, 121, 193, 186, 77, 37, 69, 167 }, { 800, 800, 496, 321, 178, 110, 60, 36, 43, 61, 38, 37, 15, 94, 395 }, { 800, 800, 449, 428, 156, 88, 48, 36, 36, 37, 32, 35, 10, 50, 315 }, { 800, 787, 504, 307, 156, 92, 53, 37, 40, 38, 40, 42, 8, 60, 218 }, { 800, 800, 613, 381, 211, 126, 68, 54, 50, 45, 45, 49, 7, 17, 275 }, { 800, 800, 800, 658, 340, 181, 103, 77, 58, 52, 51, 57, 8, 15, 86 }, { 800, 800, 232, 93, 51, 37, 26, 21, 15, 13, 11, 11, 1, 7, 69 }, }, }, { // depth bucket 2 { // dumb bucket 0 { 10614, 8565, 7191, 6262, 5442, 4766, 4160, 3640, 3189, 2803, 2477, 2200, 1442, 640, 280 }, { 1298, 1208, 1066, 917, 738, 634, 554, 490, 436, 392, 355, 323, 238, 130, 69 }, { 236, 219, 199, 178, 144, 126, 112, 100, 91, 83, 76, 71, 55, 35, 22 }, { 138, 117, 100, 88, 71, 63, 56, 51, 46, 42, 39, 37, 29, 19, 14 }, { 131, 102, 85, 74, 60, 54, 48, 43, 39, 35, 32, 30, 22, 14, 13 }, { 116, 92, 76, 65, 54, 47, 42, 37, 33, 29, 27, 24, 18, 12, 11 }, { 120, 98, 83, 73, 60, 52, 47, 41, 37, 33, 30, 27, 20, 13, 13 }, { 113, 95, 81, 70, 59, 51, 45, 40, 35, 31, 28, 25, 18, 12, 14 }, { 88, 78, 69, 60, 50, 44, 39, 34, 30, 27, 23, 21, 15, 11, 13 }, { 75, 65, 57, 50, 42, 36, 32, 28, 25, 22, 20, 18, 12, 9, 10 }, { 40, 33, 27, 23, 19, 16, 14, 12, 11, 10, 9, 8, 5, 5, 6 }, }, { // dumb bucket 1 { 11136, 4734, 2086, 1390, 1363, 1445, 1390, 1527, 1832, 1989, 2073, 2097, 2104, 3882, 5640 }, { 332, 282, 216, 245, 301, 328, 407, 497, 496, 490, 500, 459, 620, 1990, 2991 }, { 223, 123, 113, 106, 129, 206, 207, 222, 208, 250, 284, 274, 375, 797, 1253 }, { 140, 93, 50, 71, 104, 106, 95, 118, 139, 135, 146, 140, 202, 320, 664 }, { 137, 54, 39, 29, 39, 47, 61, 72, 77, 87, 83, 88, 99, 153, 396 }, { 104, 30, 56, 20, 32, 27, 38, 50, 49, 51, 61, 50, 45, 74, 284 }, { 55, 13, 10, 16, 11, 27, 20, 41, 37, 29, 42, 54, 41, 51, 261 }, { 22, 17, 12, 9, 16, 20, 31, 24, 29, 29, 34, 30, 51, 40, 245 }, { 45, 19, 7, 5, 16, 9, 15, 16, 19, 26, 22, 22, 30, 32, 253 }, { 50, 25, 12, 5, 6, 10, 13, 19, 14, 9, 15, 17, 28, 27, 181 }, { 6, 2, 4, 4, 4, 6, 9, 14, 15, 19, 18, 21, 20, 24, 71 }, }, { // dumb bucket 2 { 2825, 1747, 1184, 890, 693, 574, 490, 440, 407, 385, 369, 359, 340, 414, 694 }, { 191, 165, 143, 124, 101, 91, 82, 78, 73, 71, 70, 69, 73, 149, 377 }, { 52, 43, 36, 31, 24, 22, 21, 21, 21, 21, 23, 24, 33, 87, 231 }, { 41, 30, 23, 19, 14, 12, 12, 11, 11, 12, 12, 13, 19, 45, 123 }, { 46, 33, 25, 21, 18, 15, 14, 12, 11, 10, 11, 10, 13, 28, 87 }, { 56, 40, 31, 22, 19, 17, 15, 12, 10, 9, 9, 8, 9, 13, 58 }, { 50, 35, 29, 24, 20, 20, 15, 12, 9, 8, 8, 7, 6, 7, 48 }, { 48, 36, 26, 21, 19, 17, 14, 12, 9, 8, 7, 7, 5, 4, 41 }, { 35, 26, 21, 19, 15, 15, 11, 10, 9, 6, 6, 5, 4, 3, 44 }, { 18, 14, 11, 11, 11, 10, 8, 9, 7, 6, 5, 4, 3, 2, 30 }, { 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 9 }, }, { // dumb bucket 3 { 1621, 937, 592, 408, 276, 212, 166, 133, 114, 105, 91, 84, 75, 92, 129 }, { 45, 33, 25, 18, 14, 12, 10, 8, 7, 7, 6, 7, 10, 39, 94 }, { 70, 49, 37, 31, 22, 18, 15, 13, 11, 9, 8, 8, 8, 18, 35 }, { 77, 59, 48, 42, 36, 29, 26, 23, 18, 18, 17, 11, 6, 6, 12 }, { 122, 82, 65, 49, 43, 36, 32, 21, 19, 18, 15, 14, 8, 4, 10 }, { 114, 82, 59, 52, 36, 31, 24, 17, 15, 15, 14, 15, 7, 4, 10 }, { 105, 68, 48, 39, 30, 23, 20, 15, 14, 12, 11, 9, 6, 4, 11 }, { 107, 63, 39, 31, 24, 18, 15, 18, 15, 15, 12, 10, 7, 4, 12 }, { 68, 43, 31, 19, 18, 16, 13, 12, 11, 10, 9, 7, 5, 4, 10 }, { 49, 30, 22, 19, 13, 13, 14, 10, 10, 10, 10, 8, 6, 3, 9 }, { 10, 8, 6, 5, 4, 3, 3, 3, 3, 2, 2, 3, 2, 1, 3 }, }, { // dumb bucket 4 { 1805, 1172, 801, 561, 419, 320, 259, 215, 185, 170, 155, 155, 150, 149, 173 }, { 37, 35, 28, 23, 20, 16, 13, 13, 13, 11, 14, 17, 25, 55, 108 }, { 28, 25, 22, 24, 22, 19, 16, 14, 12, 12, 13, 13, 17, 25, 44 }, { 33, 28, 22, 23, 19, 19, 15, 13, 11, 10, 9, 9, 8, 8, 21 }, { 47, 36, 31, 29, 25, 21, 18, 14, 13, 12, 9, 8, 7, 4, 15 }, { 33, 30, 23, 24, 22, 17, 12, 11, 9, 10, 8, 7, 5, 3, 12 }, { 28, 20, 16, 11, 8, 7, 5, 5, 6, 4, 5, 5, 5, 3, 17 }, { 22, 18, 15, 11, 8, 8, 6, 7, 4, 4, 3, 3, 4, 3, 17 }, { 24, 13, 14, 11, 7, 7, 5, 5, 4, 3, 3, 4, 4, 3, 18 }, { 20, 14, 13, 8, 7, 5, 3, 3, 4, 4, 4, 3, 4, 2, 16 }, { 9, 6, 4, 3, 2, 3, 1, 1, 1, 1, 1, 1, 3, 1, 6 }, }, { // dumb bucket 5 { 1140, 614, 395, 246, 183, 146, 119, 111, 106, 107, 111, 122, 199, 372, 589 }, { 49, 29, 21, 16, 14, 10, 8, 8, 8, 6, 5, 5, 5, 24, 157 }, { 38, 26, 21, 17, 13, 11, 9, 8, 7, 6, 6, 5, 4, 27, 174 }, { 49, 30, 21, 16, 13, 10, 9, 7, 6, 5, 5, 5, 5, 43, 231 }, { 85, 51, 30, 26, 18, 14, 12, 11, 10, 9, 8, 6, 7, 71, 320 }, { 121, 69, 39, 29, 26, 20, 14, 12, 11, 9, 10, 9, 8, 52, 243 }, { 136, 77, 48, 34, 24, 19, 14, 12, 12, 7, 7, 6, 6, 24, 100 }, { 149, 91, 53, 34, 28, 23, 19, 13, 15, 9, 11, 11, 5, 9, 65 }, { 97, 52, 36, 27, 18, 16, 11, 8, 8, 5, 6, 4, 4, 15, 47 }, { 80, 52, 34, 24, 17, 15, 13, 10, 10, 9, 7, 7, 5, 6, 42 }, { 23, 16, 11, 8, 7, 6, 6, 5, 4, 4, 4, 3, 2, 6, 24 }, }, { // dumb bucket 6 { 1200, 1200, 1200, 1800, 2600, 5200, 2600, 2000, 1917, 2526, 1153, 1997, 689, 449, 211 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 649, 382, 112, 101, 72 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 889, 333, 203, 53, 63, 49 }, { 800, 800, 800, 800, 800, 800, 800, 800, 734, 384, 205, 198, 30, 48, 39 }, { 800, 800, 800, 800, 800, 800, 800, 800, 774, 367, 212, 187, 31, 31, 35 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 516, 322, 187, 21, 19, 20 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 727, 454, 490, 21, 13, 16 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 496, 14, 19, 39 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 712, 29, 14, 24 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 16, 15, 19 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 494, 275, 178, 21, 21, 21 }, }, { // dumb bucket 7 { 178, 121, 93, 78, 65, 56, 47, 44, 42, 45, 44, 46, 63, 102, 141 }, { 41, 27, 22, 19, 17, 15, 14, 14, 13, 12, 12, 11, 9, 12, 52 }, { 20, 14, 11, 9, 7, 6, 5, 5, 5, 4, 4, 5, 4, 11, 50 }, { 8, 6, 5, 4, 4, 4, 3, 3, 4, 3, 3, 3, 4, 20, 65 }, { 7, 4, 4, 3, 3, 2, 2, 3, 3, 2, 2, 3, 4, 29, 60 }, { 12, 6, 3, 2, 3, 1, 2, 3, 2, 2, 3, 1, 2, 12, 26 }, { 39, 18, 10, 9, 3, 8, 13, 6, 6, 6, 6, 6, 2, 5, 13 }, { 58, 32, 22, 11, 13, 8, 17, 13, 15, 14, 5, 4, 4, 5, 12 }, { 172, 186, 85, 75, 68, 34, 28, 43, 16, 22, 34, 21, 3, 5, 11 }, { 1066, 521, 232, 309, 230, 210, 142, 171, 69, 56, 39, 63, 10, 4, 12 }, { 144, 72, 59, 154, 27, 43, 22, 30, 17, 62, 12, 9, 3, 7, 9 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 963, 336, 259, 121, 51, 43 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 604, 404, 274, 17, 40, 38 }, { 800, 800, 800, 800, 800, 800, 800, 800, 750, 476, 298, 185, 12, 21, 22 }, { 800, 800, 800, 800, 800, 800, 800, 800, 737, 433, 260, 165, 12, 10, 7 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 462, 298, 202, 16, 10, 7 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 772, 444, 305, 19, 7, 8 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 795, 547, 15, 8, 8 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 13, 11, 8 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 33, 3, 10 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 78, 11, 11 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 573, 36, 20, 11 }, }, { // dumb bucket 9 { 691, 458, 344, 278, 218, 164, 128, 98, 82, 64, 52, 46, 28, 20, 20 }, { 52, 41, 39, 35, 28, 23, 20, 16, 14, 13, 12, 11, 7, 6, 13 }, { 22, 17, 13, 12, 7, 7, 6, 5, 4, 4, 3, 3, 2, 2, 5 }, { 18, 12, 12, 10, 8, 7, 5, 4, 4, 3, 2, 3, 1, 1, 1 }, { 21, 14, 14, 14, 10, 9, 8, 6, 4, 4, 3, 3, 1, 1, 1 }, { 20, 16, 14, 15, 9, 9, 7, 7, 4, 4, 3, 3, 1, 1, 1 }, { 15, 10, 9, 9, 9, 8, 3, 6, 5, 3, 2, 1, 1, 1, 1 }, { 19, 16, 11, 9, 6, 6, 5, 5, 5, 3, 3, 1, 1, 1, 1 }, { 23, 15, 10, 6, 7, 7, 5, 5, 3, 3, 2, 2, 1, 1, 1 }, { 22, 12, 7, 8, 6, 6, 5, 4, 3, 3, 2, 3, 1, 1, 1 }, { 23, 14, 9, 6, 5, 3, 3, 2, 2, 1, 1, 1, 0, 1, 2 }, }, { // dumb bucket 10 { 1800, 422, 746, 470, 485, 304, 420, 473, 751, 509, 480, 746, 603, 477, 403 }, { 1200, 1200, 800, 684, 350, 179, 109, 349, 143, 251, 388, 545, 220, 177, 122 }, { 1200, 1200, 1200, 800, 526, 295, 197, 361, 348, 524, 609, 356, 330, 226, 107 }, { 1200, 800, 800, 693, 388, 200, 144, 285, 212, 139, 231, 287, 191, 160, 148 }, { 800, 800, 800, 546, 360, 221, 132, 90, 209, 74, 123, 135, 23, 69, 81 }, { 800, 800, 800, 593, 425, 223, 140, 90, 91, 89, 78, 72, 7, 90, 85 }, { 800, 800, 800, 563, 310, 188, 115, 84, 84, 78, 69, 74, 9, 70, 184 }, { 800, 800, 800, 632, 306, 172, 118, 93, 96, 87, 86, 89, 18, 32, 339 }, { 800, 800, 800, 800, 460, 267, 163, 125, 109, 98, 98, 101, 15, 40, 353 }, { 800, 800, 800, 800, 800, 406, 263, 183, 130, 117, 108, 122, 17, 55, 186 }, { 800, 800, 800, 266, 134, 92, 63, 47, 34, 28, 25, 25, 3, 8, 110 }, }, }, { // depth bucket 3 { // dumb bucket 0 { 7417, 6283, 5442, 4791, 4039, 3522, 3057, 2656, 2308, 2024, 1781, 1578, 1035, 468, 209 }, { 1692, 1556, 1351, 1146, 911, 786, 689, 610, 544, 491, 446, 408, 304, 166, 84 }, { 245, 231, 214, 194, 169, 153, 138, 126, 115, 106, 99, 92, 73, 45, 27 }, { 135, 110, 92, 80, 69, 62, 55, 51, 47, 43, 40, 38, 30, 19, 14 }, { 115, 81, 62, 52, 42, 37, 33, 29, 27, 24, 22, 21, 15, 9, 9 }, { 99, 69, 52, 42, 34, 29, 25, 22, 19, 18, 16, 15, 11, 7, 6 }, { 105, 75, 58, 46, 36, 30, 26, 23, 20, 18, 16, 15, 11, 7, 8 }, { 106, 77, 60, 48, 38, 31, 27, 23, 20, 18, 16, 15, 11, 7, 10 }, { 87, 68, 54, 44, 35, 29, 25, 22, 19, 17, 15, 14, 10, 8, 10 }, { 76, 59, 46, 37, 30, 25, 21, 19, 16, 14, 13, 11, 8, 6, 9 }, { 45, 33, 26, 21, 17, 14, 12, 10, 9, 8, 7, 6, 4, 3, 5 }, }, { // dumb bucket 1 { 5445, 3327, 1867, 1139, 1389, 1498, 1208, 1079, 1065, 973, 940, 1069, 1175, 2829, 4534 }, { 304, 196, 105, 124, 171, 280, 254, 304, 286, 304, 317, 281, 459, 1531, 2416 }, { 175, 89, 58, 54, 83, 119, 106, 174, 193, 171, 192, 210, 296, 696, 1267 }, { 105, 66, 64, 38, 39, 58, 82, 68, 91, 110, 124, 123, 163, 313, 745 }, { 185, 36, 30, 30, 37, 60, 33, 48, 59, 50, 66, 76, 73, 144, 420 }, { 105, 42, 34, 21, 17, 44, 33, 26, 39, 49, 42, 39, 38, 83, 324 }, { 34, 27, 15, 12, 11, 13, 12, 23, 29, 29, 38, 42, 45, 71, 359 }, { 29, 24, 18, 17, 16, 21, 17, 17, 32, 34, 48, 53, 54, 52, 350 }, { 87, 23, 9, 11, 8, 15, 11, 16, 17, 28, 37, 24, 39, 47, 422 }, { 69, 14, 9, 11, 7, 7, 12, 14, 12, 23, 33, 35, 30, 35, 321 }, { 6, 4, 4, 6, 5, 6, 7, 17, 13, 22, 32, 28, 51, 38, 138 }, }, { // dumb bucket 2 { 2168, 1299, 875, 645, 488, 405, 342, 302, 279, 257, 250, 239, 223, 292, 541 }, { 214, 171, 139, 119, 98, 89, 80, 74, 70, 67, 64, 63, 63, 114, 281 }, { 62, 52, 41, 34, 29, 27, 26, 25, 25, 25, 25, 26, 31, 75, 200 }, { 62, 32, 25, 20, 15, 14, 13, 11, 12, 11, 12, 13, 16, 33, 100 }, { 59, 34, 22, 17, 14, 12, 10, 9, 7, 8, 7, 7, 8, 16, 59 }, { 72, 41, 25, 20, 14, 11, 10, 8, 7, 5, 5, 6, 6, 9, 40 }, { 72, 45, 30, 22, 15, 13, 10, 8, 7, 5, 5, 4, 4, 5, 41 }, { 77, 46, 31, 22, 17, 13, 11, 8, 7, 5, 4, 4, 3, 3, 42 }, { 53, 36, 27, 17, 13, 13, 10, 7, 6, 5, 4, 4, 3, 3, 48 }, { 24, 20, 14, 11, 9, 7, 8, 6, 5, 4, 3, 3, 3, 2, 36 }, { 9, 7, 5, 4, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 13 }, }, { // dumb bucket 3 { 1391, 759, 454, 303, 211, 156, 125, 100, 80, 75, 72, 57, 51, 70, 121 }, { 60, 35, 28, 21, 16, 11, 10, 9, 8, 6, 6, 7, 8, 35, 109 }, { 61, 39, 28, 23, 18, 16, 13, 11, 8, 6, 7, 6, 7, 18, 45 }, { 78, 52, 45, 34, 33, 26, 21, 15, 15, 14, 12, 11, 5, 6, 17 }, { 112, 67, 51, 41, 30, 27, 18, 16, 14, 9, 11, 7, 6, 3, 11 }, { 108, 60, 48, 37, 27, 21, 19, 15, 11, 9, 6, 7, 5, 3, 8 }, { 120, 75, 49, 37, 26, 22, 15, 13, 9, 8, 6, 8, 5, 3, 9 }, { 129, 75, 54, 39, 22, 19, 12, 10, 11, 9, 8, 8, 4, 3, 11 }, { 75, 45, 31, 21, 20, 12, 12, 9, 8, 8, 9, 7, 4, 3, 10 }, { 53, 38, 26, 19, 14, 11, 11, 9, 9, 9, 6, 8, 5, 3, 9 }, { 16, 12, 8, 6, 6, 5, 4, 3, 3, 3, 3, 2, 2, 1, 4 }, }, { // dumb bucket 4 { 950, 621, 436, 319, 238, 183, 152, 132, 114, 96, 93, 90, 93, 102, 152 }, { 62, 47, 37, 27, 19, 18, 18, 16, 18, 16, 18, 17, 20, 47, 98 }, { 29, 29, 22, 22, 21, 19, 17, 14, 11, 11, 13, 11, 13, 23, 50 }, { 30, 22, 20, 17, 16, 17, 12, 10, 9, 8, 8, 6, 7, 8, 23 }, { 38, 23, 17, 16, 14, 12, 10, 8, 8, 5, 6, 6, 5, 4, 14 }, { 23, 20, 12, 16, 16, 17, 19, 7, 5, 5, 4, 5, 3, 2, 11 }, { 32, 17, 14, 13, 13, 11, 9, 7, 7, 5, 4, 3, 3, 2, 14 }, { 26, 19, 11, 12, 11, 8, 5, 7, 5, 4, 5, 3, 3, 2, 20 }, { 21, 13, 15, 9, 8, 5, 6, 6, 3, 3, 4, 2, 3, 2, 22 }, { 22, 18, 12, 7, 8, 5, 4, 3, 4, 4, 3, 2, 3, 2, 22 }, { 9, 6, 4, 3, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 8 }, }, { // dumb bucket 5 { 752, 379, 236, 170, 130, 106, 89, 80, 74, 73, 72, 79, 122, 256, 490 }, { 56, 33, 25, 19, 15, 13, 11, 9, 8, 8, 7, 7, 6, 21, 128 }, { 44, 27, 20, 17, 14, 11, 10, 8, 8, 7, 6, 5, 5, 23, 148 }, { 56, 30, 19, 15, 11, 10, 7, 7, 6, 5, 5, 4, 5, 35, 187 }, { 85, 47, 25, 17, 13, 10, 8, 8, 6, 5, 4, 5, 6, 59, 244 }, { 139, 62, 32, 22, 19, 14, 10, 8, 8, 5, 5, 5, 6, 48, 192 }, { 153, 78, 46, 25, 19, 14, 11, 7, 6, 7, 5, 5, 5, 26, 109 }, { 202, 107, 56, 36, 25, 19, 14, 10, 11, 12, 8, 7, 4, 11, 57 }, { 129, 68, 41, 31, 18, 11, 11, 7, 6, 6, 4, 4, 3, 12, 51 }, { 120, 66, 44, 27, 16, 12, 10, 9, 10, 10, 8, 7, 3, 5, 44 }, { 39, 24, 16, 10, 8, 6, 6, 6, 5, 4, 4, 3, 2, 5, 36 }, }, { // dumb bucket 6 { 1200, 1200, 1200, 1200, 1200, 1800, 2600, 1400, 1200, 3257, 971, 1525, 448, 364, 181 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 71, 75, 64 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 672, 753, 44, 59, 47 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 768, 406, 252, 21, 42, 38 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 753, 359, 222, 28, 32, 25 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 496, 293, 13, 13, 14 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 797, 468, 6, 9, 19 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 18, 13, 37 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 16, 37, 56 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 35, 13, 47 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 688, 390, 229, 17, 18, 42 }, }, { // dumb bucket 7 { 167, 106, 78, 65, 53, 42, 37, 33, 34, 31, 27, 31, 40, 79, 133 }, { 47, 33, 23, 20, 18, 16, 15, 14, 14, 14, 12, 12, 9, 11, 46 }, { 24, 16, 13, 11, 9, 7, 7, 7, 6, 5, 5, 5, 5, 10, 47 }, { 13, 7, 5, 4, 5, 3, 3, 3, 4, 3, 3, 3, 3, 17, 56 }, { 9, 5, 2, 3, 2, 2, 2, 2, 1, 1, 3, 2, 3, 22, 47 }, { 11, 6, 3, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 10, 22 }, { 39, 26, 10, 6, 2, 9, 3, 9, 3, 7, 2, 2, 2, 5, 15 }, { 41, 34, 47, 18, 32, 36, 18, 12, 19, 11, 10, 15, 4, 3, 14 }, { 225, 78, 134, 117, 138, 95, 69, 35, 49, 44, 26, 33, 2, 4, 19 }, { 980, 642, 297, 133, 400, 174, 211, 144, 87, 75, 97, 35, 4, 4, 18 }, { 243, 166, 135, 105, 104, 98, 83, 62, 33, 27, 36, 26, 3, 5, 20 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 725, 501, 66, 29, 46 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 544, 33, 42, 43 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 581, 377, 13, 21, 29 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 515, 334, 11, 9, 12 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 581, 409, 19, 6, 8 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 571, 14, 5, 7 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 13, 6, 12 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 18, 5, 14 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 26, 4, 21 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 33, 5, 25 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 28, 11, 15 }, }, { // dumb bucket 9 { 607, 368, 251, 196, 151, 113, 88, 72, 59, 44, 38, 31, 18, 13, 16 }, { 63, 50, 43, 38, 29, 26, 21, 16, 16, 12, 10, 10, 7, 6, 12 }, { 27, 20, 18, 14, 12, 11, 9, 7, 5, 5, 5, 4, 3, 2, 5 }, { 23, 16, 18, 12, 10, 7, 6, 5, 3, 4, 3, 3, 1, 1, 2 }, { 26, 18, 14, 15, 10, 10, 7, 6, 4, 3, 3, 3, 1, 0, 1 }, { 28, 16, 17, 16, 13, 10, 9, 6, 4, 3, 2, 2, 1, 0, 1 }, { 12, 14, 18, 14, 13, 10, 7, 9, 4, 3, 1, 1, 1, 0, 1 }, { 25, 17, 15, 14, 13, 14, 10, 8, 6, 5, 3, 2, 1, 0, 1 }, { 23, 20, 14, 12, 12, 11, 8, 5, 5, 3, 3, 2, 1, 0, 1 }, { 28, 15, 16, 10, 12, 13, 10, 8, 6, 5, 2, 2, 1, 0, 1 }, { 23, 15, 10, 9, 7, 7, 6, 5, 4, 3, 2, 2, 1, 1, 2 }, }, { // dumb bucket 10 { 1200, 938, 452, 605, 396, 273, 301, 585, 396, 366, 451, 432, 368, 347, 317 }, { 1200, 1200, 1200, 800, 629, 309, 210, 411, 505, 274, 413, 454, 190, 177, 211 }, { 1200, 1200, 1200, 800, 800, 529, 382, 712, 1020, 844, 642, 390, 247, 188, 203 }, { 800, 800, 800, 800, 800, 384, 273, 209, 296, 142, 217, 458, 110, 166, 111 }, { 800, 800, 800, 800, 495, 323, 252, 182, 151, 136, 120, 108, 28, 73, 96 }, { 800, 800, 800, 800, 656, 388, 245, 168, 157, 149, 122, 111, 40, 131, 71 }, { 800, 800, 800, 800, 613, 308, 195, 145, 140, 133, 109, 108, 14, 49, 62 }, { 800, 800, 800, 800, 552, 321, 210, 163, 173, 145, 155, 142, 19, 48, 111 }, { 800, 800, 800, 800, 800, 461, 296, 237, 201, 166, 155, 156, 57, 110, 323 }, { 800, 800, 800, 800, 800, 600, 418, 294, 211, 211, 175, 179, 25, 255, 218 }, { 800, 800, 800, 428, 235, 166, 109, 83, 54, 45, 39, 38, 4, 19, 97 }, }, }, { // depth bucket 4 { // dumb bucket 0 { 5151, 4599, 4188, 3776, 3318, 2923, 2542, 2216, 1930, 1687, 1484, 1318, 862, 381, 162 }, { 1286, 1292, 1169, 1010, 851, 737, 643, 568, 505, 452, 406, 368, 262, 107, 48 }, { 252, 239, 219, 196, 170, 152, 127, 115, 105, 95, 89, 79, 62, 36, 21 }, { 136, 111, 93, 80, 66, 58, 53, 47, 43, 39, 37, 34, 27, 17, 12 }, { 124, 87, 66, 54, 43, 37, 32, 29, 26, 23, 21, 20, 15, 9, 7 }, { 102, 71, 53, 43, 33, 28, 24, 21, 19, 17, 15, 14, 10, 6, 6 }, { 103, 73, 56, 44, 34, 29, 24, 21, 19, 17, 15, 14, 10, 6, 7 }, { 104, 76, 58, 46, 35, 29, 25, 22, 19, 16, 15, 13, 9, 7, 8 }, { 85, 66, 53, 43, 33, 28, 23, 20, 18, 15, 14, 13, 9, 7, 9 }, { 81, 62, 47, 38, 30, 24, 20, 17, 15, 14, 12, 11, 7, 5, 8 }, { 54, 40, 30, 24, 18, 15, 13, 11, 9, 8, 7, 6, 4, 3, 5 }, }, { // dumb bucket 1 { 3565, 2091, 1397, 841, 864, 912, 909, 796, 699, 653, 691, 723, 840, 2323, 3827 }, { 236, 136, 68, 88, 114, 143, 203, 230, 265, 257, 268, 297, 458, 1531, 2414 }, { 253, 57, 49, 54, 72, 63, 114, 106, 141, 164, 175, 212, 279, 799, 1498 }, { 175, 33, 29, 36, 30, 58, 89, 99, 72, 94, 94, 99, 155, 392, 925 }, { 96, 75, 46, 35, 30, 38, 41, 52, 43, 57, 60, 74, 86, 205, 568 }, { 69, 31, 27, 19, 23, 42, 23, 32, 26, 42, 37, 52, 44, 130, 464 }, { 51, 36, 22, 11, 9, 12, 13, 22, 35, 25, 27, 66, 33, 90, 551 }, { 64, 29, 17, 21, 9, 14, 7, 34, 51, 28, 47, 49, 52, 77, 487 }, { 119, 34, 20, 13, 10, 12, 11, 12, 12, 35, 22, 32, 34, 67, 621 }, { 70, 32, 19, 20, 23, 9, 20, 17, 12, 30, 43, 56, 25, 56, 512 }, { 13, 6, 5, 9, 6, 6, 13, 17, 15, 24, 29, 47, 63, 49, 223 }, }, { // dumb bucket 2 { 1883, 1044, 682, 514, 393, 325, 276, 239, 220, 202, 185, 179, 151, 221, 442 }, { 186, 155, 114, 100, 85, 73, 64, 60, 56, 53, 50, 49, 48, 89, 246 }, { 81, 58, 44, 36, 30, 28, 26, 25, 25, 24, 25, 25, 29, 70, 205 }, { 75, 45, 32, 24, 19, 16, 13, 13, 13, 12, 12, 12, 15, 33, 100 }, { 88, 46, 32, 21, 17, 14, 13, 10, 9, 9, 7, 8, 9, 17, 60 }, { 107, 60, 36, 23, 18, 13, 11, 12, 8, 7, 6, 6, 6, 9, 44 }, { 127, 77, 44, 30, 20, 17, 13, 9, 7, 6, 5, 5, 4, 6, 45 }, { 119, 72, 43, 29, 21, 18, 12, 10, 8, 6, 5, 5, 3, 4, 52 }, { 88, 57, 36, 26, 18, 16, 13, 8, 6, 6, 5, 5, 4, 4, 63 }, { 49, 34, 26, 20, 15, 13, 10, 9, 8, 4, 3, 4, 2, 2, 50 }, { 13, 9, 7, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 22 }, }, { // dumb bucket 3 { 1089, 563, 357, 228, 164, 108, 84, 72, 54, 48, 45, 38, 35, 58, 105 }, { 49, 33, 24, 18, 13, 11, 9, 7, 6, 6, 6, 5, 7, 35, 138 }, { 66, 42, 29, 23, 16, 14, 11, 9, 8, 7, 6, 6, 6, 18, 52 }, { 90, 52, 37, 39, 25, 19, 22, 14, 12, 17, 11, 12, 6, 7, 19 }, { 144, 76, 50, 39, 37, 24, 24, 18, 13, 17, 9, 11, 6, 5, 14 }, { 109, 67, 46, 42, 26, 21, 20, 17, 11, 10, 10, 10, 6, 3, 9 }, { 123, 77, 54, 36, 23, 19, 18, 14, 9, 7, 8, 7, 4, 2, 12 }, { 143, 86, 64, 36, 25, 21, 14, 13, 10, 9, 7, 7, 5, 2, 13 }, { 95, 56, 31, 23, 16, 14, 14, 11, 6, 8, 6, 7, 4, 4, 16 }, { 67, 44, 24, 22, 25, 13, 10, 7, 3, 6, 7, 7, 4, 3, 15 }, { 23, 16, 11, 10, 6, 5, 5, 4, 3, 3, 3, 2, 2, 2, 5 }, }, { // dumb bucket 4 { 700, 445, 307, 230, 178, 131, 99, 89, 69, 62, 60, 64, 66, 78, 120 }, { 35, 43, 36, 24, 17, 17, 17, 14, 14, 14, 12, 12, 15, 40, 84 }, { 31, 26, 23, 29, 21, 17, 14, 11, 11, 9, 10, 11, 11, 23, 51 }, { 26, 22, 23, 16, 17, 15, 10, 10, 7, 7, 7, 7, 6, 8, 26 }, { 35, 31, 24, 26, 13, 10, 12, 9, 9, 7, 6, 6, 5, 4, 16 }, { 38, 17, 13, 10, 7, 7, 9, 6, 8, 6, 4, 4, 3, 3, 13 }, { 24, 21, 14, 11, 13, 9, 7, 7, 5, 5, 5, 3, 4, 3, 20 }, { 34, 26, 24, 14, 13, 12, 10, 8, 7, 7, 8, 4, 3, 2, 26 }, { 36, 24, 16, 11, 10, 7, 8, 6, 4, 4, 4, 7, 3, 2, 30 }, { 25, 21, 16, 15, 9, 7, 9, 5, 4, 5, 11, 5, 3, 3, 29 }, { 12, 12, 10, 6, 4, 3, 2, 2, 3, 2, 1, 2, 2, 1, 12 }, }, { // dumb bucket 5 { 631, 271, 139, 100, 76, 59, 55, 51, 51, 65, 77, 93, 90, 197, 433 }, { 61, 33, 24, 17, 13, 12, 9, 8, 7, 7, 6, 6, 5, 17, 98 }, { 52, 25, 23, 15, 13, 10, 8, 8, 6, 6, 5, 5, 5, 20, 120 }, { 60, 28, 19, 15, 12, 7, 6, 5, 6, 5, 4, 4, 4, 30, 176 }, { 123, 54, 31, 18, 13, 9, 8, 9, 7, 4, 6, 3, 5, 47, 230 }, { 195, 71, 40, 24, 21, 13, 9, 8, 5, 6, 7, 6, 6, 43, 181 }, { 190, 85, 45, 24, 15, 14, 9, 11, 6, 6, 8, 4, 4, 23, 96 }, { 278, 130, 60, 35, 21, 17, 11, 10, 9, 6, 7, 5, 4, 12, 58 }, { 190, 101, 57, 29, 18, 12, 10, 7, 7, 5, 4, 3, 2, 6, 48 }, { 229, 104, 57, 20, 21, 13, 11, 8, 10, 6, 8, 10, 4, 4, 37 }, { 66, 37, 22, 13, 8, 7, 5, 5, 4, 3, 4, 4, 2, 4, 35 }, }, { // dumb bucket 6 { 1200, 1200, 1200, 1200, 1200, 2000, 1200, 1200, 1800, 800, 1400, 1573, 367, 294, 164 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 57, 54, 46 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 50, 49, 40 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 1200, 626, 38, 47, 34 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 923, 24, 20, 23 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 774, 21, 10, 13 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 17, 10, 19 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 43, 14, 41 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 40, 20, 38 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 73, 28, 48 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 627, 14, 17, 50 }, }, { // dumb bucket 7 { 186, 92, 60, 46, 41, 32, 26, 20, 21, 19, 19, 20, 24, 53, 114 }, { 43, 21, 17, 16, 12, 11, 11, 9, 9, 8, 7, 7, 6, 8, 33 }, { 32, 20, 13, 10, 9, 6, 6, 5, 6, 6, 5, 4, 4, 9, 40 }, { 15, 13, 8, 5, 5, 4, 3, 2, 2, 2, 3, 3, 3, 15, 50 }, { 11, 5, 4, 4, 3, 2, 2, 2, 2, 2, 1, 1, 2, 18, 40 }, { 8, 11, 2, 2, 2, 1, 2, 3, 2, 3, 1, 2, 1, 8, 21 }, { 72, 33, 18, 11, 9, 5, 11, 11, 4, 7, 6, 7, 2, 5, 15 }, { 143, 65, 74, 51, 28, 59, 25, 23, 40, 39, 21, 46, 3, 3, 16 }, { 708, 387, 175, 151, 132, 124, 114, 105, 96, 128, 74, 62, 10, 4, 16 }, { 970, 763, 682, 420, 338, 318, 193, 168, 151, 136, 118, 92, 5, 4, 22 }, { 623, 371, 206, 190, 163, 228, 129, 115, 93, 73, 56, 39, 3, 3, 24 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 71, 21, 41 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 17, 35, 35 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 17, 19, 28 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 18, 10, 11 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 19, 9, 7 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 41, 9, 15 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 57, 3, 15 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 44, 17, 18 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 62, 7, 32 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 76, 17, 31 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 33, 12, 23 }, }, { // dumb bucket 9 { 615, 302, 210, 172, 104, 78, 60, 45, 39, 28, 25, 20, 11, 8, 13 }, { 46, 39, 33, 27, 21, 18, 15, 14, 11, 10, 8, 6, 5, 4, 10 }, { 38, 26, 14, 12, 13, 10, 8, 7, 5, 6, 6, 4, 3, 2, 6 }, { 26, 19, 20, 17, 12, 11, 6, 5, 5, 4, 3, 3, 1, 1, 2 }, { 40, 27, 25, 19, 13, 12, 9, 8, 5, 4, 3, 3, 1, 0, 1 }, { 30, 21, 22, 21, 13, 12, 11, 9, 6, 3, 3, 2, 1, 0, 1 }, { 44, 22, 23, 20, 17, 13, 11, 8, 7, 4, 3, 3, 1, 0, 1 }, { 56, 34, 23, 28, 17, 19, 17, 12, 7, 6, 3, 4, 1, 0, 1 }, { 59, 36, 25, 29, 21, 17, 14, 9, 7, 5, 3, 3, 2, 1, 1 }, { 41, 33, 23, 16, 17, 18, 17, 14, 12, 7, 6, 5, 2, 1, 1 }, { 29, 20, 15, 12, 8, 11, 8, 8, 7, 5, 4, 4, 1, 1, 2 }, }, { // dumb bucket 10 { 1200, 800, 398, 505, 352, 220, 399, 303, 178, 219, 331, 356, 224, 241, 186 }, { 800, 800, 800, 800, 800, 685, 481, 367, 250, 437, 400, 453, 135, 108, 52 }, { 1200, 1200, 1200, 800, 800, 800, 800, 1095, 634, 451, 662, 900, 249, 175, 139 }, { 800, 800, 800, 800, 800, 800, 611, 465, 454, 378, 704, 256, 88, 73, 46 }, { 800, 800, 800, 800, 800, 800, 528, 436, 396, 324, 271, 255, 92, 94, 88 }, { 800, 800, 800, 800, 800, 800, 583, 418, 401, 415, 324, 280, 31, 262, 156 }, { 800, 800, 800, 800, 800, 632, 385, 340, 343, 362, 305, 284, 62, 117, 93 }, { 800, 800, 800, 800, 800, 787, 520, 401, 415, 408, 364, 373, 48, 220, 132 }, { 800, 800, 800, 800, 800, 800, 673, 525, 542, 426, 400, 391, 53, 80, 627 }, { 800, 800, 800, 800, 800, 800, 800, 726, 510, 454, 423, 413, 55, 459, 154 }, { 800, 800, 800, 800, 681, 442, 289, 195, 126, 114, 90, 90, 11, 30, 138 }, }, }, { // depth bucket 5 { // dumb bucket 0 { 3966, 3723, 3466, 3123, 2675, 2340, 2030, 1761, 1530, 1341, 1175, 1044, 687, 306, 144 }, { 1075, 1079, 976, 839, 679, 578, 500, 437, 385, 340, 304, 273, 190, 91, 39 }, { 233, 221, 203, 180, 154, 128, 114, 103, 93, 85, 78, 70, 53, 29, 16 }, { 129, 102, 83, 71, 59, 52, 46, 41, 38, 34, 32, 29, 22, 13, 9 }, { 109, 75, 57, 46, 37, 32, 27, 25, 22, 19, 18, 16, 12, 7, 6 }, { 89, 62, 47, 38, 30, 25, 22, 20, 17, 15, 13, 13, 9, 5, 4 }, { 93, 66, 52, 42, 33, 27, 23, 20, 18, 16, 15, 12, 9, 5, 6 }, { 94, 68, 55, 43, 34, 29, 24, 20, 18, 16, 14, 12, 9, 5, 8 }, { 78, 62, 50, 41, 33, 27, 23, 19, 16, 15, 13, 12, 9, 6, 10 }, { 76, 57, 45, 36, 29, 25, 20, 17, 14, 13, 10, 10, 6, 5, 8 }, { 57, 41, 32, 25, 19, 16, 13, 11, 8, 7, 6, 5, 4, 3, 4 }, }, { // dumb bucket 1 { 2260, 1158, 752, 562, 584, 585, 673, 599, 796, 797, 570, 615, 704, 1925, 3032 }, { 273, 114, 101, 95, 136, 68, 224, 185, 180, 169, 209, 203, 348, 1215, 1872 }, { 178, 78, 43, 31, 89, 212, 36, 111, 98, 119, 119, 212, 215, 695, 1211 }, { 206, 63, 38, 69, 71, 74, 50, 56, 50, 61, 93, 113, 142, 332, 833 }, { 214, 52, 47, 34, 19, 30, 23, 20, 44, 34, 73, 58, 62, 181, 535 }, { 144, 63, 36, 46, 36, 38, 34, 28, 27, 65, 28, 29, 43, 137, 474 }, { 115, 78, 31, 22, 18, 36, 14, 13, 19, 23, 54, 57, 30, 114, 591 }, { 142, 61, 36, 25, 19, 28, 15, 13, 32, 23, 47, 42, 35, 74, 605 }, { 170, 71, 42, 28, 21, 26, 16, 22, 26, 61, 23, 34, 20, 75, 818 }, { 148, 68, 40, 28, 22, 18, 17, 40, 26, 27, 32, 44, 20, 50, 602 }, { 30, 13, 18, 12, 13, 8, 17, 14, 13, 26, 30, 37, 80, 70, 293 }, }, { // dumb bucket 2 { 1306, 755, 517, 390, 297, 243, 219, 184, 165, 142, 136, 134, 126, 188, 363 }, { 143, 113, 92, 80, 67, 59, 57, 51, 46, 43, 41, 41, 38, 68, 181 }, { 74, 55, 43, 34, 26, 27, 24, 23, 21, 21, 22, 21, 25, 59, 168 }, { 80, 41, 28, 23, 19, 16, 13, 12, 13, 12, 11, 12, 13, 27, 88 }, { 87, 48, 29, 20, 16, 16, 10, 10, 8, 7, 6, 6, 7, 15, 57 }, { 118, 60, 36, 26, 19, 17, 10, 10, 7, 8, 7, 5, 5, 8, 48 }, { 154, 91, 57, 34, 18, 18, 16, 13, 9, 6, 7, 5, 4, 6, 53 }, { 159, 87, 48, 38, 27, 19, 15, 12, 10, 5, 6, 5, 3, 4, 63 }, { 83, 67, 47, 33, 24, 23, 18, 11, 10, 6, 5, 6, 4, 5, 85 }, { 57, 45, 25, 25, 23, 14, 11, 14, 10, 6, 4, 3, 2, 3, 69 }, { 19, 13, 9, 7, 6, 5, 4, 4, 4, 3, 2, 2, 1, 1, 26 }, }, { // dumb bucket 3 { 827, 415, 266, 164, 113, 81, 58, 56, 44, 36, 37, 34, 28, 52, 100 }, { 36, 36, 22, 18, 15, 12, 12, 5, 6, 5, 4, 5, 6, 32, 104 }, { 57, 42, 27, 21, 16, 13, 13, 10, 9, 7, 9, 6, 5, 20, 62 }, { 89, 60, 46, 35, 28, 25, 22, 15, 12, 17, 12, 8, 5, 6, 25 }, { 144, 78, 45, 37, 43, 28, 18, 21, 11, 13, 9, 11, 5, 4, 18 }, { 117, 73, 31, 48, 34, 24, 28, 22, 14, 25, 8, 15, 4, 3, 12 }, { 129, 80, 51, 45, 26, 16, 19, 18, 14, 14, 12, 10, 5, 2, 14 }, { 127, 85, 47, 43, 27, 20, 16, 12, 10, 8, 5, 6, 5, 3, 13 }, { 114, 48, 45, 41, 29, 16, 9, 8, 12, 9, 10, 7, 4, 4, 24 }, { 79, 44, 31, 24, 14, 11, 7, 9, 9, 9, 8, 6, 5, 4, 13 }, { 23, 19, 11, 9, 7, 6, 4, 4, 3, 3, 2, 2, 2, 1, 7 }, }, { // dumb bucket 4 { 493, 351, 230, 160, 125, 96, 73, 59, 54, 45, 44, 50, 55, 65, 113 }, { 47, 35, 30, 23, 17, 16, 12, 12, 13, 13, 10, 12, 13, 31, 74 }, { 19, 27, 29, 27, 14, 20, 15, 10, 9, 8, 9, 9, 9, 20, 49 }, { 25, 22, 15, 12, 11, 16, 16, 10, 9, 11, 8, 9, 5, 7, 26 }, { 52, 23, 16, 14, 17, 11, 14, 14, 8, 12, 5, 6, 4, 3, 16 }, { 24, 16, 12, 8, 6, 9, 7, 5, 5, 6, 4, 4, 3, 2, 14 }, { 24, 13, 13, 9, 12, 10, 7, 5, 6, 7, 7, 9, 3, 2, 20 }, { 22, 13, 22, 13, 12, 10, 8, 11, 4, 6, 5, 4, 2, 2, 27 }, { 39, 20, 13, 8, 12, 9, 6, 5, 3, 4, 6, 6, 3, 2, 36 }, { 33, 31, 26, 14, 15, 5, 5, 9, 6, 7, 5, 4, 4, 2, 29 }, { 18, 25, 16, 10, 6, 5, 2, 3, 3, 2, 2, 2, 2, 1, 11 }, }, { // dumb bucket 5 { 473, 207, 111, 73, 61, 48, 37, 33, 32, 28, 30, 37, 56, 158, 360 }, { 47, 31, 18, 13, 13, 11, 7, 8, 7, 6, 6, 5, 5, 13, 78 }, { 48, 23, 20, 15, 11, 7, 8, 6, 4, 5, 4, 2, 3, 17, 101 }, { 49, 31, 20, 15, 14, 9, 9, 6, 4, 6, 3, 4, 4, 25, 147 }, { 124, 56, 40, 17, 12, 9, 6, 6, 5, 5, 4, 4, 3, 42, 183 }, { 130, 68, 38, 20, 25, 14, 8, 3, 5, 7, 6, 5, 3, 40, 154 }, { 205, 88, 53, 26, 26, 12, 12, 7, 7, 11, 6, 6, 3, 23, 100 }, { 247, 143, 43, 53, 16, 20, 14, 14, 7, 9, 8, 7, 4, 11, 65 }, { 178, 104, 52, 36, 18, 13, 9, 8, 6, 6, 5, 5, 2, 7, 68 }, { 244, 102, 53, 36, 27, 15, 7, 7, 8, 10, 13, 10, 4, 4, 54 }, { 85, 52, 28, 16, 11, 8, 5, 5, 5, 3, 4, 3, 3, 3, 36 }, }, { // dumb bucket 6 { 1200, 1200, 1200, 1200, 1200, 1200, 3600, 1200, 1200, 800, 800, 800, 256, 227, 131 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 52, 50, 40 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 67, 45, 36 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 33, 30, 33 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 24, 28, 20 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 30, 9, 13 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 38, 7, 24 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 67, 17, 64 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 94, 27, 63 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 161, 30, 61 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 29, 33, 63 }, }, { // dumb bucket 7 { 154, 83, 56, 43, 39, 25, 22, 23, 21, 19, 16, 22, 21, 47, 100 }, { 34, 20, 14, 12, 10, 9, 7, 7, 7, 6, 7, 7, 4, 6, 26 }, { 19, 14, 18, 9, 7, 6, 5, 6, 5, 5, 5, 4, 3, 7, 35 }, { 13, 16, 6, 5, 4, 3, 3, 3, 3, 2, 3, 3, 2, 14, 45 }, { 10, 9, 4, 4, 5, 2, 1, 2, 1, 2, 4, 2, 2, 20, 39 }, { 18, 8, 7, 6, 3, 3, 2, 2, 2, 2, 2, 9, 3, 10, 25 }, { 165, 48, 19, 26, 13, 20, 16, 10, 10, 10, 10, 9, 2, 8, 22 }, { 396, 323, 117, 91, 74, 66, 59, 59, 103, 57, 55, 78, 4, 4, 17 }, { 800, 501, 362, 396, 312, 309, 284, 266, 255, 214, 176, 149, 10, 3, 28 }, { 800, 1642, 564, 543, 609, 555, 471, 440, 394, 325, 279, 204, 8, 3, 27 }, { 1800, 647, 801, 488, 632, 398, 334, 292, 253, 193, 149, 99, 4, 5, 29 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 70, 33, 33 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 33, 44, 36 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 34, 24, 29 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 38, 7, 13 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 38, 5, 6 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 50, 4, 15 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 69, 4, 19 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 98, 17, 21 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 137, 11, 35 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 166, 15, 35 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 50, 12, 21 }, }, { // dumb bucket 9 { 372, 220, 167, 123, 90, 68, 58, 42, 37, 26, 21, 19, 11, 8, 12 }, { 41, 33, 26, 28, 17, 15, 13, 12, 11, 7, 8, 8, 5, 3, 8 }, { 31, 23, 16, 15, 11, 11, 8, 9, 6, 4, 5, 4, 2, 2, 5 }, { 23, 25, 18, 17, 12, 8, 6, 6, 3, 2, 2, 3, 1, 1, 2 }, { 41, 20, 24, 22, 13, 8, 7, 8, 6, 3, 3, 3, 1, 0, 1 }, { 36, 31, 20, 20, 16, 18, 12, 10, 7, 4, 3, 3, 1, 0, 1 }, { 38, 39, 23, 22, 25, 15, 16, 10, 9, 5, 5, 3, 1, 0, 1 }, { 83, 41, 38, 35, 32, 29, 22, 24, 10, 13, 4, 4, 1, 0, 1 }, { 49, 25, 28, 42, 44, 38, 25, 14, 9, 10, 7, 5, 1, 1, 1 }, { 61, 48, 39, 48, 60, 60, 46, 34, 21, 8, 7, 4, 1, 1, 1 }, { 46, 30, 20, 22, 15, 18, 18, 13, 7, 10, 6, 4, 1, 1, 3 }, }, { // dumb bucket 10 { 1200, 800, 531, 445, 301, 205, 549, 221, 305, 370, 378, 188, 221, 174, 223 }, { 800, 800, 800, 800, 800, 800, 800, 800, 538, 631, 489, 427, 85, 82, 53 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 1200, 1163, 149, 135, 135 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 789, 703, 607, 109, 52, 150 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 661, 602, 755, 88, 81, 185 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 673, 576, 108, 150, 119 }, { 800, 800, 800, 800, 800, 800, 800, 759, 800, 800, 783, 636, 80, 142, 413 }, { 800, 800, 800, 800, 800, 800, 800, 794, 800, 800, 800, 800, 106, 280, 388 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 122, 428, 472 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 762, 123, 146, 398 }, { 800, 800, 800, 800, 800, 800, 756, 523, 302, 265, 203, 209, 25, 26, 193 }, }, }, { // depth bucket 6 { // dumb bucket 0 { 2753, 2925, 2922, 2709, 2389, 2104, 1838, 1591, 1389, 1212, 1074, 951, 628, 277, 92 }, { 1044, 1097, 1023, 888, 714, 605, 515, 448, 391, 345, 306, 275, 192, 78, 31 }, { 238, 229, 208, 184, 157, 129, 115, 102, 90, 82, 75, 67, 51, 28, 14 }, { 129, 104, 87, 74, 61, 53, 46, 42, 38, 34, 31, 29, 22, 12, 8 }, { 109, 77, 58, 47, 38, 33, 28, 25, 23, 20, 19, 17, 12, 7, 5 }, { 85, 60, 47, 38, 29, 25, 23, 19, 17, 16, 14, 12, 9, 5, 4 }, { 86, 63, 49, 39, 31, 26, 22, 19, 16, 15, 13, 12, 9, 5, 4 }, { 86, 61, 49, 39, 30, 24, 21, 18, 15, 14, 12, 11, 7, 4, 5 }, { 65, 52, 44, 36, 28, 25, 21, 17, 15, 13, 12, 11, 7, 4, 5 }, { 64, 51, 40, 32, 25, 21, 17, 16, 13, 10, 9, 8, 5, 4, 5 }, { 56, 40, 31, 25, 19, 15, 13, 10, 8, 7, 6, 5, 3, 2, 3 }, }, { // dumb bucket 1 { 1182, 951, 544, 423, 501, 452, 554, 462, 594, 651, 420, 483, 580, 1636, 2693 }, { 358, 157, 90, 92, 155, 67, 242, 137, 137, 196, 172, 184, 280, 1250, 2048 }, { 353, 148, 124, 58, 48, 76, 90, 109, 74, 101, 170, 134, 180, 668, 1292 }, { 298, 129, 76, 55, 47, 74, 120, 53, 104, 94, 78, 117, 144, 353, 892 }, { 243, 105, 63, 45, 39, 53, 56, 42, 80, 63, 76, 97, 64, 220, 646 }, { 325, 136, 75, 53, 40, 34, 31, 26, 38, 25, 44, 26, 41, 165, 477 }, { 256, 109, 66, 46, 38, 33, 30, 41, 41, 29, 45, 32, 34, 149, 634 }, { 331, 131, 73, 51, 39, 33, 48, 29, 77, 49, 52, 65, 34, 72, 433 }, { 403, 168, 93, 62, 45, 38, 52, 33, 52, 54, 37, 63, 24, 74, 639 }, { 325, 145, 88, 61, 47, 40, 37, 54, 38, 41, 41, 70, 30, 50, 522 }, { 77, 31, 26, 11, 9, 7, 11, 10, 30, 32, 28, 96, 85, 82, 315 }, }, { // dumb bucket 2 { 1155, 675, 459, 357, 260, 211, 177, 139, 132, 114, 106, 107, 96, 141, 324 }, { 141, 116, 97, 84, 70, 58, 53, 50, 44, 43, 39, 38, 35, 67, 207 }, { 86, 63, 47, 35, 30, 26, 28, 25, 21, 23, 25, 24, 23, 55, 180 }, { 63, 41, 32, 26, 23, 19, 16, 14, 13, 13, 13, 13, 14, 27, 97 }, { 83, 41, 34, 21, 17, 15, 13, 13, 9, 9, 8, 9, 8, 15, 66 }, { 110, 63, 33, 32, 18, 16, 14, 9, 9, 8, 8, 7, 7, 9, 53 }, { 175, 70, 44, 32, 22, 19, 13, 9, 8, 6, 4, 6, 5, 6, 52 }, { 144, 88, 54, 39, 26, 16, 18, 12, 7, 8, 5, 8, 4, 5, 53 }, { 115, 69, 52, 35, 31, 25, 13, 12, 6, 4, 3, 4, 7, 6, 81 }, { 58, 41, 42, 27, 17, 11, 8, 13, 14, 10, 5, 5, 2, 3, 58 }, { 22, 18, 11, 10, 7, 5, 5, 4, 3, 2, 2, 2, 1, 2, 23 }, }, { // dumb bucket 3 { 599, 344, 225, 120, 82, 72, 60, 48, 30, 26, 24, 26, 19, 36, 103 }, { 40, 30, 22, 20, 11, 10, 6, 6, 8, 8, 5, 4, 6, 27, 107 }, { 49, 44, 19, 21, 12, 11, 9, 8, 8, 5, 6, 5, 4, 21, 83 }, { 92, 59, 46, 24, 23, 19, 10, 10, 14, 17, 14, 9, 7, 7, 51 }, { 117, 75, 38, 42, 35, 34, 24, 14, 11, 7, 13, 11, 6, 3, 26 }, { 110, 62, 42, 33, 18, 24, 21, 18, 12, 19, 5, 6, 5, 2, 14 }, { 83, 92, 45, 29, 27, 19, 54, 9, 10, 6, 7, 7, 2, 2, 8 }, { 111, 83, 44, 44, 16, 20, 16, 14, 9, 9, 10, 5, 3, 3, 14 }, { 42, 69, 30, 29, 17, 13, 9, 6, 13, 14, 12, 5, 5, 4, 27 }, { 92, 38, 22, 27, 11, 9, 11, 12, 11, 12, 12, 9, 2, 3, 22 }, { 24, 16, 10, 10, 6, 7, 5, 4, 4, 4, 3, 5, 3, 2, 5 }, }, { // dumb bucket 4 { 446, 242, 215, 145, 96, 78, 62, 46, 36, 30, 33, 37, 44, 51, 101 }, { 38, 44, 26, 33, 23, 14, 12, 13, 12, 9, 9, 12, 10, 30, 80 }, { 38, 19, 35, 22, 20, 10, 12, 11, 10, 9, 7, 7, 9, 19, 52 }, { 17, 15, 22, 14, 12, 12, 11, 11, 5, 5, 9, 4, 4, 7, 27 }, { 35, 23, 15, 9, 20, 7, 7, 11, 9, 17, 7, 5, 4, 4, 17 }, { 25, 26, 19, 14, 6, 5, 22, 7, 5, 5, 6, 8, 3, 2, 15 }, { 13, 16, 11, 12, 6, 12, 11, 6, 8, 7, 6, 3, 2, 2, 23 }, { 87, 29, 15, 12, 9, 8, 11, 5, 8, 7, 6, 4, 3, 2, 27 }, { 57, 39, 26, 8, 11, 10, 6, 5, 5, 6, 4, 2, 3, 2, 29 }, { 99, 52, 31, 22, 21, 5, 4, 12, 6, 3, 9, 3, 3, 2, 28 }, { 12, 15, 13, 10, 5, 3, 2, 2, 3, 2, 3, 3, 2, 1, 13 }, }, { // dumb bucket 5 { 348, 166, 91, 61, 47, 36, 28, 23, 24, 16, 26, 23, 41, 129, 316 }, { 42, 26, 20, 11, 13, 9, 9, 6, 5, 6, 4, 4, 3, 14, 94 }, { 46, 32, 28, 17, 10, 5, 8, 5, 6, 5, 4, 5, 4, 17, 111 }, { 62, 26, 15, 24, 11, 7, 7, 7, 7, 7, 4, 4, 3, 21, 123 }, { 132, 58, 26, 28, 15, 9, 8, 6, 8, 6, 4, 4, 3, 39, 162 }, { 153, 46, 30, 30, 17, 12, 5, 6, 3, 4, 4, 8, 4, 48, 155 }, { 151, 83, 57, 35, 24, 22, 16, 14, 6, 8, 9, 4, 3, 22, 120 }, { 227, 83, 44, 37, 22, 13, 9, 11, 19, 11, 14, 5, 3, 15, 56 }, { 197, 83, 49, 25, 9, 21, 14, 10, 11, 8, 8, 12, 2, 8, 48 }, { 158, 60, 65, 30, 17, 22, 15, 16, 15, 6, 22, 17, 5, 5, 46 }, { 96, 43, 24, 17, 14, 9, 6, 6, 4, 4, 2, 3, 2, 4, 46 }, }, { // dumb bucket 6 { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 800, 800, 183, 183, 140 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 195, 52, 41 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 54, 42, 42 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 1200, 40, 34, 34 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 37, 17, 27 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 55, 18, 16 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 102, 8, 32 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 161, 13, 38 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 210, 20, 64 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 239, 29, 125 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 75, 14, 81 }, }, { // dumb bucket 7 { 132, 88, 42, 38, 33, 22, 17, 18, 20, 18, 18, 15, 14, 36, 91 }, { 43, 20, 16, 15, 10, 14, 12, 9, 8, 6, 7, 7, 4, 6, 30 }, { 31, 21, 11, 11, 7, 10, 5, 6, 7, 5, 5, 6, 3, 7, 35 }, { 30, 23, 15, 7, 6, 7, 9, 4, 6, 3, 6, 6, 2, 12, 44 }, { 30, 12, 8, 5, 3, 6, 7, 3, 2, 4, 4, 4, 3, 14, 38 }, { 51, 22, 20, 10, 8, 8, 7, 7, 7, 7, 7, 6, 6, 9, 24 }, { 224, 224, 61, 69, 38, 34, 32, 31, 30, 29, 29, 28, 3, 7, 29 }, { 800, 627, 376, 523, 395, 221, 206, 192, 178, 262, 157, 166, 17, 4, 17 }, { 800, 800, 800, 800, 800, 748, 714, 645, 710, 551, 495, 364, 16, 4, 20 }, { 800, 800, 1200, 800, 800, 800, 800, 800, 1200, 800, 707, 547, 19, 3, 22 }, { 800, 1200, 800, 800, 800, 800, 800, 800, 729, 546, 369, 272, 9, 6, 25 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 137, 66, 43 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 81, 35, 35 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 85, 23, 30 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 100, 26, 10 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 97, 5, 8 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 124, 6, 13 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 188, 16, 46 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 253, 16, 35 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 356, 26, 30 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 403, 35, 77 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 123, 12, 36 }, }, { // dumb bucket 9 { 408, 220, 140, 89, 74, 59, 43, 36, 28, 23, 19, 14, 8, 6, 10 }, { 48, 33, 39, 26, 21, 15, 14, 9, 10, 9, 6, 6, 3, 4, 8 }, { 64, 39, 23, 17, 15, 12, 14, 13, 5, 5, 5, 6, 3, 2, 5 }, { 49, 12, 21, 19, 14, 19, 5, 3, 5, 3, 2, 3, 1, 1, 2 }, { 43, 19, 17, 19, 8, 7, 4, 9, 5, 2, 1, 3, 1, 0, 1 }, { 34, 22, 22, 18, 13, 11, 12, 4, 8, 3, 1, 2, 1, 0, 1 }, { 50, 27, 30, 20, 17, 13, 5, 8, 12, 6, 4, 4, 1, 0, 1 }, { 71, 54, 36, 46, 43, 44, 21, 24, 11, 4, 8, 6, 1, 0, 2 }, { 65, 62, 58, 39, 55, 28, 30, 22, 13, 14, 19, 15, 1, 0, 2 }, { 48, 46, 67, 83, 64, 54, 57, 31, 22, 20, 21, 10, 2, 1, 1 }, { 70, 57, 33, 35, 29, 27, 20, 14, 14, 7, 6, 2, 1, 1, 3 }, }, { // dumb bucket 10 { 800, 800, 800, 679, 479, 371, 459, 268, 396, 362, 201, 266, 171, 231, 103 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 1200, 126, 84, 256 }, { 1200, 1200, 1200, 800, 800, 800, 800, 800, 800, 800, 1200, 800, 314, 249, 456 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 200, 76, 340 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 1200, 129, 231, 247 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 193, 162, 339 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 196, 192, 613 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 260, 357, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 292, 422, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 275, 307, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 716, 684, 438, 490, 62, 118, 202 }, }, }, { // depth bucket 7 { // dumb bucket 0 { 1583, 1810, 1904, 1833, 1655, 1482, 1306, 1145, 1002, 883, 777, 693, 463, 208, 78 }, { 860, 946, 907, 799, 661, 560, 480, 412, 359, 317, 281, 252, 172, 63, 22 }, { 221, 214, 198, 176, 150, 123, 108, 95, 82, 75, 69, 64, 45, 23, 11 }, { 118, 100, 85, 69, 56, 50, 44, 38, 35, 32, 27, 26, 19, 11, 7 }, { 95, 65, 52, 42, 35, 30, 25, 22, 20, 19, 17, 16, 11, 5, 4 }, { 72, 53, 40, 34, 27, 23, 20, 17, 15, 14, 12, 11, 8, 4, 3 }, { 72, 52, 41, 35, 28, 23, 20, 18, 16, 14, 13, 11, 8, 4, 3 }, { 67, 49, 41, 32, 27, 21, 19, 17, 14, 12, 12, 10, 6, 4, 3 }, { 52, 45, 39, 30, 25, 20, 17, 16, 13, 11, 11, 9, 7, 4, 4 }, { 56, 42, 33, 26, 22, 19, 16, 13, 10, 11, 8, 8, 5, 3, 4 }, { 51, 37, 28, 23, 17, 14, 12, 9, 7, 6, 5, 5, 3, 2, 3 }, }, { // dumb bucket 1 { 788, 465, 311, 285, 313, 321, 762, 277, 303, 298, 206, 316, 419, 1350, 2263 }, { 1400, 344, 198, 199, 196, 243, 361, 158, 245, 308, 131, 186, 246, 1071, 1710 }, { 710, 314, 170, 120, 234, 93, 132, 199, 385, 95, 182, 156, 161, 644, 1223 }, { 684, 301, 168, 121, 101, 92, 88, 81, 109, 65, 128, 113, 127, 384, 921 }, { 575, 233, 202, 96, 80, 71, 115, 87, 86, 118, 161, 46, 68, 262, 694 }, { 753, 302, 165, 113, 86, 69, 64, 121, 81, 80, 311, 56, 50, 221, 492 }, { 494, 224, 132, 92, 75, 66, 63, 59, 62, 65, 118, 106, 35, 122, 830 }, { 675, 265, 151, 106, 78, 66, 62, 56, 64, 100, 71, 77, 29, 58, 542 }, { 800, 351, 194, 131, 95, 82, 76, 71, 77, 80, 125, 82, 35, 72, 761 }, { 800, 375, 209, 142, 102, 85, 77, 72, 74, 80, 145, 83, 36, 74, 666 }, { 211, 79, 42, 27, 20, 16, 20, 30, 42, 42, 48, 80, 93, 109, 427 }, }, { // dumb bucket 2 { 751, 457, 326, 262, 200, 181, 145, 126, 111, 106, 97, 91, 81, 120, 271 }, { 123, 85, 92, 74, 62, 61, 50, 47, 39, 38, 41, 33, 28, 51, 161 }, { 76, 63, 38, 34, 28, 29, 25, 20, 24, 25, 24, 20, 23, 48, 155 }, { 69, 47, 35, 33, 25, 20, 20, 18, 15, 11, 14, 12, 13, 24, 90 }, { 72, 52, 32, 30, 21, 19, 15, 15, 12, 8, 9, 7, 8, 13, 65 }, { 92, 30, 44, 31, 22, 16, 11, 11, 7, 8, 5, 10, 6, 9, 59 }, { 143, 74, 50, 38, 27, 17, 26, 10, 10, 9, 5, 11, 5, 5, 53 }, { 146, 107, 59, 34, 37, 14, 17, 12, 8, 6, 9, 9, 4, 4, 56 }, { 151, 60, 79, 32, 23, 22, 21, 18, 7, 9, 8, 5, 7, 7, 57 }, { 77, 57, 34, 31, 19, 17, 8, 10, 7, 6, 3, 6, 3, 4, 58 }, { 15, 19, 9, 7, 6, 6, 4, 4, 5, 4, 5, 4, 2, 2, 26 }, }, { // dumb bucket 3 { 384, 245, 148, 109, 86, 52, 39, 41, 24, 22, 37, 27, 20, 31, 80 }, { 33, 31, 18, 15, 13, 8, 10, 6, 6, 7, 3, 5, 8, 26, 104 }, { 87, 36, 28, 16, 19, 13, 7, 10, 13, 11, 10, 10, 4, 26, 80 }, { 87, 66, 47, 46, 28, 17, 21, 12, 12, 17, 11, 16, 6, 9, 40 }, { 242, 82, 38, 42, 13, 21, 30, 22, 17, 12, 11, 8, 4, 6, 17 }, { 66, 28, 53, 40, 25, 25, 36, 12, 24, 38, 14, 13, 4, 8, 10 }, { 72, 82, 46, 23, 31, 44, 22, 13, 28, 13, 14, 14, 6, 4, 14 }, { 115, 66, 70, 51, 43, 19, 15, 20, 20, 16, 14, 10, 3, 2, 18 }, { 95, 67, 37, 17, 33, 42, 23, 14, 14, 10, 11, 11, 4, 5, 33 }, { 79, 39, 22, 21, 25, 24, 19, 11, 17, 12, 37, 19, 5, 3, 10 }, { 18, 16, 10, 10, 9, 5, 4, 4, 2, 3, 3, 5, 2, 2, 6 }, }, { // dumb bucket 4 { 307, 218, 121, 87, 63, 52, 47, 41, 28, 24, 33, 33, 36, 45, 88 }, { 57, 58, 45, 35, 19, 23, 11, 17, 12, 6, 11, 10, 9, 22, 69 }, { 42, 58, 13, 29, 14, 15, 15, 7, 19, 7, 4, 7, 7, 18, 51 }, { 22, 34, 17, 25, 12, 12, 22, 14, 18, 12, 11, 9, 5, 7, 27 }, { 40, 35, 14, 15, 13, 10, 6, 5, 10, 6, 5, 4, 3, 3, 19 }, { 26, 20, 16, 11, 10, 5, 14, 13, 6, 9, 8, 9, 3, 3, 18 }, { 33, 16, 17, 16, 13, 10, 11, 10, 8, 7, 23, 6, 2, 4, 20 }, { 81, 19, 13, 16, 14, 28, 7, 10, 9, 6, 8, 5, 3, 2, 30 }, { 58, 31, 22, 29, 15, 20, 14, 18, 7, 6, 5, 5, 1, 4, 29 }, { 118, 38, 32, 47, 21, 27, 14, 13, 8, 13, 16, 10, 4, 2, 20 }, { 11, 17, 19, 10, 7, 4, 2, 2, 3, 3, 2, 3, 2, 1, 16 }, }, { // dumb bucket 5 { 289, 127, 65, 40, 29, 31, 33, 25, 19, 24, 18, 20, 29, 95, 252 }, { 38, 20, 13, 15, 14, 7, 7, 8, 6, 4, 4, 6, 4, 10, 69 }, { 42, 24, 16, 13, 9, 7, 6, 9, 8, 6, 5, 7, 3, 14, 80 }, { 101, 25, 35, 11, 13, 10, 10, 6, 8, 4, 9, 4, 3, 17, 117 }, { 88, 50, 23, 27, 9, 17, 10, 15, 16, 10, 7, 4, 5, 33, 126 }, { 116, 60, 34, 33, 18, 17, 16, 11, 10, 6, 6, 6, 4, 37, 135 }, { 232, 103, 54, 26, 26, 10, 16, 9, 13, 8, 8, 13, 6, 25, 92 }, { 237, 81, 81, 40, 21, 20, 20, 11, 18, 10, 10, 18, 8, 15, 80 }, { 125, 119, 47, 41, 36, 36, 27, 27, 18, 10, 19, 17, 3, 6, 55 }, { 240, 95, 48, 38, 36, 35, 15, 15, 36, 15, 38, 39, 4, 5, 37 }, { 95, 43, 21, 15, 12, 4, 7, 5, 2, 6, 8, 5, 1, 4, 52 }, }, { // dumb bucket 6 { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 800, 800, 275, 162, 126 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 185, 84, 30 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 116, 31, 31 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 91, 30, 43 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 91, 19, 42 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 136, 30, 25 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 235, 31, 14 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 370, 29, 54 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 566, 49, 80 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 567, 68, 59 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 169, 22, 59 }, }, { // dumb bucket 7 { 116, 45, 46, 20, 30, 26, 30, 27, 13, 21, 22, 13, 13, 26, 69 }, { 41, 25, 14, 15, 8, 13, 6, 9, 7, 8, 7, 5, 3, 4, 20 }, { 35, 13, 21, 8, 15, 9, 5, 9, 6, 7, 5, 8, 3, 5, 29 }, { 43, 27, 7, 5, 7, 6, 5, 8, 5, 5, 5, 3, 3, 12, 37 }, { 45, 19, 17, 20, 7, 7, 6, 9, 6, 6, 6, 6, 2, 21, 41 }, { 127, 56, 32, 24, 20, 18, 17, 17, 16, 16, 16, 15, 3, 14, 23 }, { 543, 257, 153, 112, 97, 81, 75, 72, 71, 67, 69, 70, 11, 12, 21 }, { 800, 800, 800, 800, 588, 548, 458, 461, 448, 668, 398, 388, 25, 9, 14 }, { 800, 800, 800, 800, 1400, 800, 800, 800, 800, 800, 800, 800, 39, 14, 20 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 45, 12, 9 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 703, 14, 6, 41 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 174, 79, 30 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 171, 44, 28 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 189, 27, 30 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 226, 20, 28 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 238, 10, 12 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 301, 14, 9 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 398, 42, 13 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 571, 37, 21 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 60, 74 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 83, 77 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 296, 29, 56 }, }, { // dumb bucket 9 { 218, 160, 89, 57, 65, 34, 37, 30, 15, 30, 14, 10, 6, 5, 8 }, { 25, 38, 25, 25, 22, 10, 16, 13, 8, 8, 3, 5, 3, 3, 6 }, { 119, 36, 22, 20, 24, 10, 17, 8, 7, 6, 8, 4, 2, 2, 5 }, { 73, 61, 23, 10, 13, 9, 6, 10, 4, 2, 5, 4, 2, 1, 2 }, { 59, 12, 15, 30, 20, 22, 16, 6, 6, 6, 2, 2, 2, 0, 2 }, { 33, 38, 21, 16, 20, 12, 8, 4, 6, 5, 4, 2, 1, 0, 1 }, { 31, 25, 20, 28, 25, 12, 5, 8, 6, 4, 4, 3, 1, 0, 1 }, { 62, 63, 55, 25, 54, 31, 13, 28, 14, 17, 8, 5, 1, 0, 2 }, { 138, 47, 61, 96, 79, 60, 46, 21, 15, 25, 12, 8, 1, 1, 4 }, { 148, 58, 92, 59, 96, 77, 78, 58, 37, 40, 16, 15, 1, 1, 1 }, { 69, 64, 35, 40, 30, 36, 39, 31, 24, 17, 11, 8, 1, 1, 3 }, }, { // dumb bucket 10 { 800, 800, 800, 800, 800, 798, 992, 540, 842, 535, 664, 334, 136, 184, 188 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 431, 179, 241 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 527, 423, 594 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 271, 252, 822 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 325, 558, 352 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 472, 409, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 432, 445, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 686, 759, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 735, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 630, 731, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 143, 139, 422 }, }, }, { // depth bucket 8 { // dumb bucket 0 { 1306, 1583, 1693, 1642, 1480, 1313, 1158, 1017, 895, 783, 683, 609, 410, 181, 60 }, { 764, 874, 867, 775, 648, 545, 465, 402, 349, 303, 269, 239, 161, 60, 22 }, { 214, 207, 187, 168, 145, 115, 101, 87, 77, 67, 59, 55, 40, 20, 9 }, { 121, 95, 81, 70, 55, 47, 40, 38, 31, 29, 24, 24, 16, 9, 6 }, { 87, 64, 50, 41, 33, 28, 24, 21, 19, 17, 16, 15, 9, 5, 3 }, { 63, 49, 38, 31, 24, 19, 19, 16, 14, 13, 11, 11, 7, 3, 2 }, { 58, 45, 39, 32, 24, 23, 17, 15, 15, 13, 13, 11, 8, 3, 3 }, { 56, 41, 34, 28, 24, 21, 18, 16, 14, 11, 11, 11, 5, 3, 3 }, { 39, 37, 33, 29, 25, 16, 17, 17, 15, 11, 11, 8, 5, 3, 2 }, { 38, 34, 28, 23, 19, 18, 15, 12, 10, 9, 8, 5, 3, 2, 3 }, { 43, 32, 25, 20, 15, 13, 10, 7, 6, 5, 5, 4, 2, 1, 2 }, }, { // dumb bucket 1 { 938, 576, 482, 246, 255, 355, 758, 267, 170, 293, 230, 190, 439, 1296, 2082 }, { 1800, 726, 631, 281, 231, 204, 265, 254, 166, 205, 140, 173, 252, 968, 1486 }, { 1400, 684, 372, 259, 216, 285, 263, 277, 144, 224, 206, 178, 179, 552, 1097 }, { 1200, 606, 328, 239, 201, 181, 176, 164, 267, 209, 126, 201, 128, 408, 889 }, { 1200, 601, 326, 217, 175, 150, 141, 125, 126, 124, 119, 112, 82, 195, 517 }, { 1200, 623, 355, 238, 172, 140, 129, 112, 122, 123, 121, 196, 62, 139, 496 }, { 800, 510, 293, 204, 162, 144, 141, 131, 136, 143, 146, 156, 24, 92, 436 }, { 800, 571, 312, 216, 158, 129, 129, 115, 203, 137, 148, 157, 47, 56, 392 }, { 800, 800, 541, 327, 239, 193, 175, 161, 170, 259, 180, 178, 41, 53, 448 }, { 800, 800, 528, 334, 226, 181, 162, 155, 154, 170, 176, 276, 45, 32, 361 }, { 634, 214, 108, 67, 46, 35, 30, 26, 26, 28, 44, 80, 91, 65, 299 }, }, { // dumb bucket 2 { 583, 355, 301, 228, 196, 152, 137, 103, 101, 88, 74, 81, 71, 96, 230 }, { 114, 107, 88, 80, 65, 55, 50, 41, 39, 35, 34, 33, 26, 46, 145 }, { 96, 81, 49, 45, 28, 25, 21, 21, 20, 20, 17, 14, 20, 41, 139 }, { 62, 41, 20, 18, 25, 23, 21, 15, 12, 15, 9, 13, 13, 21, 86 }, { 66, 29, 23, 25, 13, 20, 11, 10, 12, 11, 16, 8, 10, 13, 66 }, { 50, 47, 40, 17, 30, 11, 14, 15, 8, 6, 6, 4, 6, 9, 54 }, { 91, 48, 28, 37, 46, 28, 19, 10, 5, 9, 7, 5, 4, 6, 47 }, { 68, 83, 72, 32, 20, 20, 17, 17, 24, 6, 8, 5, 4, 5, 46 }, { 93, 134, 45, 26, 11, 8, 13, 9, 12, 4, 7, 6, 6, 4, 53 }, { 92, 82, 51, 21, 31, 17, 8, 7, 7, 10, 6, 4, 3, 2, 52 }, { 13, 17, 10, 7, 5, 7, 6, 5, 3, 4, 3, 4, 2, 2, 25 }, }, { // dumb bucket 3 { 209, 172, 171, 72, 65, 39, 34, 38, 22, 12, 13, 20, 16, 38, 104 }, { 24, 18, 28, 23, 17, 12, 6, 17, 7, 3, 8, 9, 4, 26, 146 }, { 73, 42, 36, 28, 17, 11, 12, 24, 11, 19, 8, 16, 4, 25, 91 }, { 137, 63, 51, 22, 34, 19, 72, 19, 17, 26, 12, 24, 5, 10, 56 }, { 144, 82, 47, 82, 15, 48, 44, 46, 21, 22, 39, 16, 6, 12, 37 }, { 96, 44, 106, 16, 15, 34, 22, 23, 16, 16, 17, 18, 5, 3, 18 }, { 112, 47, 75, 58, 42, 18, 31, 18, 32, 19, 19, 21, 8, 4, 9 }, { 67, 88, 48, 61, 27, 32, 32, 19, 19, 29, 30, 21, 3, 5, 12 }, { 65, 28, 23, 21, 70, 20, 20, 20, 31, 21, 22, 23, 4, 4, 13 }, { 94, 35, 42, 25, 36, 24, 24, 24, 25, 25, 27, 29, 5, 6, 8 }, { 31, 12, 10, 10, 7, 6, 7, 3, 8, 4, 4, 4, 1, 3, 17 }, }, { // dumb bucket 4 { 261, 151, 118, 123, 75, 44, 40, 27, 32, 22, 27, 29, 30, 41, 77 }, { 46, 65, 55, 29, 30, 10, 16, 29, 19, 5, 8, 13, 9, 20, 68 }, { 123, 26, 66, 27, 10, 12, 21, 9, 9, 16, 13, 7, 9, 15, 42 }, { 51, 39, 26, 29, 16, 32, 12, 7, 10, 14, 12, 7, 6, 6, 27 }, { 51, 26, 51, 13, 11, 38, 8, 11, 10, 14, 6, 9, 3, 5, 22 }, { 60, 30, 20, 23, 23, 26, 15, 16, 25, 8, 7, 6, 4, 2, 14 }, { 72, 36, 25, 20, 17, 15, 13, 12, 11, 15, 9, 12, 3, 2, 19 }, { 81, 62, 49, 23, 20, 17, 16, 14, 20, 12, 16, 10, 3, 3, 22 }, { 92, 68, 49, 27, 23, 30, 18, 16, 22, 13, 12, 10, 2, 3, 18 }, { 246, 185, 60, 32, 26, 23, 20, 28, 16, 15, 14, 13, 2, 3, 8 }, { 43, 9, 12, 23, 8, 4, 6, 7, 4, 4, 3, 9, 1, 1, 11 }, }, { // dumb bucket 5 { 277, 115, 55, 51, 15, 19, 22, 23, 16, 8, 17, 24, 29, 93, 197 }, { 39, 21, 18, 21, 10, 8, 7, 7, 4, 5, 7, 6, 4, 8, 64 }, { 47, 22, 15, 25, 11, 7, 14, 6, 5, 5, 5, 6, 4, 13, 77 }, { 108, 34, 18, 13, 13, 12, 9, 6, 9, 6, 12, 6, 4, 13, 101 }, { 71, 96, 53, 34, 21, 11, 10, 21, 9, 9, 9, 9, 2, 27, 113 }, { 208, 45, 33, 42, 24, 15, 21, 13, 13, 13, 12, 12, 5, 52, 96 }, { 209, 120, 52, 38, 35, 21, 46, 29, 19, 18, 18, 18, 10, 29, 76 }, { 173, 95, 49, 87, 41, 57, 24, 58, 23, 22, 23, 23, 6, 21, 78 }, { 115, 62, 55, 48, 39, 25, 24, 23, 24, 24, 24, 25, 4, 9, 56 }, { 192, 79, 64, 66, 52, 34, 33, 33, 33, 33, 34, 63, 11, 16, 143 }, { 82, 34, 25, 25, 8, 10, 8, 7, 5, 5, 6, 6, 5, 2, 42 }, }, { // dumb bucket 6 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 275, 184, 101 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 421, 32, 40 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 272, 111, 26 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 217, 32, 35 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 212, 23, 25 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 274, 19, 18 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 481, 39, 38 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 60, 119 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 101, 109 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 143, 51 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 409, 49, 130 }, }, { // dumb bucket 7 { 66, 56, 38, 29, 18, 16, 36, 24, 14, 15, 10, 14, 11, 20, 64 }, { 32, 18, 11, 13, 15, 16, 12, 6, 7, 7, 9, 5, 3, 4, 20 }, { 51, 32, 15, 9, 16, 8, 7, 6, 9, 9, 7, 6, 3, 4, 27 }, { 102, 25, 15, 17, 9, 8, 8, 7, 7, 11, 10, 23, 6, 6, 31 }, { 108, 45, 27, 20, 17, 15, 14, 14, 13, 13, 13, 12, 3, 16, 35 }, { 334, 139, 82, 56, 47, 43, 41, 38, 38, 38, 38, 36, 7, 14, 25 }, { 1200, 597, 393, 283, 249, 224, 190, 182, 177, 177, 170, 180, 19, 9, 19 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 104, 22, 15 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 85, 14, 9 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 99, 17, 19 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 36, 8, 34 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 309, 61, 31 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 384, 53, 33 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 448, 46, 16 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 494, 29, 26 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 528, 21, 13 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 667, 31, 14 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 54, 23 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 86, 66 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 140, 46 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 800, 180, 377 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 669, 64, 30 }, }, { // dumb bucket 9 { 358, 112, 99, 55, 77, 38, 31, 20, 28, 23, 16, 15, 7, 5, 7 }, { 37, 22, 24, 15, 11, 40, 13, 7, 21, 11, 6, 8, 2, 3, 5 }, { 53, 22, 29, 45, 11, 16, 13, 13, 12, 18, 10, 14, 4, 3, 4 }, { 80, 32, 38, 14, 11, 7, 18, 10, 7, 8, 8, 4, 1, 1, 2 }, { 39, 56, 9, 23, 9, 13, 8, 4, 10, 12, 5, 3, 2, 0, 1 }, { 42, 19, 20, 19, 11, 23, 13, 13, 5, 8, 8, 4, 2, 0, 1 }, { 70, 32, 20, 33, 19, 11, 10, 10, 13, 19, 8, 8, 3, 1, 1 }, { 146, 64, 41, 37, 28, 25, 35, 26, 23, 12, 12, 11, 1, 1, 1 }, { 120, 86, 70, 97, 63, 70, 22, 21, 33, 18, 17, 16, 9, 1, 3 }, { 151, 159, 156, 91, 78, 46, 90, 42, 46, 25, 23, 23, 2, 1, 5 }, { 58, 70, 31, 54, 33, 34, 18, 18, 17, 7, 12, 12, 1, 1, 3 }, }, { // dumb bucket 10 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 634, 150, 274, 433 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 370, 325, 581 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 673, 966, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 826, 499, 800 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 762, 1359, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 2000 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 385, 385, 800 }, }, }, { // depth bucket 9 { // dumb bucket 0 { 1155, 1389, 1445, 1349, 1205, 1071, 912, 802, 706, 614, 548, 474, 319, 129, 47 }, { 681, 782, 793, 705, 585, 490, 411, 348, 306, 263, 230, 206, 116, 45, 16 }, { 201, 197, 186, 164, 140, 112, 97, 78, 71, 64, 53, 48, 32, 15, 8 }, { 107, 90, 74, 63, 51, 43, 39, 33, 27, 26, 22, 23, 14, 6, 4 }, { 83, 58, 42, 36, 27, 24, 20, 17, 17, 16, 14, 12, 8, 4, 3 }, { 57, 46, 32, 25, 22, 17, 15, 13, 11, 11, 9, 11, 6, 3, 3 }, { 62, 46, 30, 28, 22, 21, 17, 16, 15, 11, 11, 8, 6, 4, 2 }, { 56, 38, 34, 26, 20, 16, 14, 13, 11, 12, 10, 9, 6, 3, 2 }, { 37, 34, 29, 27, 23, 14, 12, 14, 9, 11, 9, 6, 6, 3, 4 }, { 35, 28, 25, 23, 18, 16, 12, 11, 8, 8, 7, 7, 4, 2, 3 }, { 41, 29, 23, 19, 14, 11, 10, 7, 7, 6, 6, 4, 2, 2, 2 }, }, { // dumb bucket 1 { 976, 640, 430, 323, 276, 326, 274, 133, 160, 219, 263, 249, 309, 1194, 1670 }, { 1800, 1400, 1800, 597, 508, 445, 375, 325, 450, 336, 452, 352, 246, 870, 1338 }, { 1400, 1400, 1200, 641, 537, 460, 431, 370, 359, 529, 410, 250, 149, 489, 936 }, { 1200, 1200, 1200, 534, 457, 382, 356, 319, 313, 285, 265, 362, 162, 260, 756 }, { 1200, 1200, 771, 511, 358, 331, 288, 253, 380, 262, 240, 364, 52, 185, 494 }, { 1200, 800, 774, 505, 378, 301, 287, 255, 270, 274, 257, 273, 99, 142, 394 }, { 1200, 800, 633, 423, 333, 296, 291, 286, 294, 307, 319, 307, 47, 64, 644 }, { 800, 800, 677, 481, 320, 264, 280, 246, 296, 311, 316, 518, 31, 51, 379 }, { 1200, 800, 800, 800, 641, 459, 415, 331, 338, 366, 362, 368, 49, 80, 440 }, { 800, 800, 800, 800, 550, 399, 345, 317, 309, 335, 350, 347, 37, 68, 444 }, { 800, 538, 269, 163, 109, 81, 66, 54, 53, 85, 60, 102, 83, 74, 256 }, }, { // dumb bucket 2 { 459, 287, 234, 199, 122, 127, 112, 122, 86, 82, 65, 69, 62, 89, 188 }, { 101, 87, 73, 68, 62, 56, 37, 41, 35, 32, 30, 27, 21, 36, 113 }, { 88, 63, 52, 35, 25, 23, 21, 27, 27, 22, 23, 19, 17, 37, 105 }, { 47, 37, 13, 44, 41, 21, 22, 11, 17, 10, 10, 21, 12, 19, 74 }, { 104, 98, 30, 30, 33, 24, 13, 9, 8, 13, 15, 7, 7, 10, 65 }, { 44, 158, 38, 24, 24, 45, 13, 12, 10, 22, 10, 15, 7, 5, 62 }, { 134, 51, 21, 44, 24, 36, 35, 11, 21, 12, 11, 14, 4, 7, 57 }, { 71, 82, 48, 38, 25, 25, 16, 13, 14, 23, 7, 12, 6, 3, 65 }, { 53, 47, 44, 36, 44, 18, 45, 32, 15, 14, 9, 9, 5, 3, 48 }, { 93, 30, 36, 47, 57, 43, 11, 24, 17, 14, 9, 9, 6, 3, 51 }, { 12, 13, 8, 12, 6, 4, 6, 6, 2, 4, 4, 4, 3, 2, 24 }, }, { // dumb bucket 3 { 298, 100, 146, 109, 48, 28, 38, 37, 24, 32, 34, 21, 18, 43, 71 }, { 44, 50, 24, 20, 13, 17, 26, 6, 7, 11, 8, 9, 12, 18, 75 }, { 134, 76, 24, 34, 17, 16, 23, 24, 25, 18, 19, 32, 7, 43, 77 }, { 135, 117, 58, 50, 26, 24, 36, 25, 38, 40, 27, 54, 8, 8, 52 }, { 170, 130, 63, 37, 35, 50, 32, 32, 47, 32, 33, 36, 6, 13, 13 }, { 144, 57, 70, 79, 116, 32, 33, 33, 51, 35, 55, 39, 17, 9, 30 }, { 102, 108, 47, 72, 40, 68, 37, 37, 38, 39, 40, 41, 10, 6, 29 }, { 320, 174, 100, 66, 38, 58, 38, 40, 40, 41, 42, 44, 7, 7, 17 }, { 100, 92, 75, 44, 43, 42, 42, 43, 44, 47, 48, 51, 8, 13, 24 }, { 128, 78, 92, 55, 78, 51, 50, 49, 51, 55, 56, 62, 10, 14, 16 }, { 17, 25, 13, 16, 10, 10, 7, 13, 17, 8, 8, 9, 2, 2, 6 }, }, { // dumb bucket 4 { 308, 180, 134, 98, 69, 44, 36, 34, 23, 20, 19, 30, 30, 35, 65 }, { 119, 91, 54, 46, 36, 31, 32, 22, 19, 12, 6, 13, 7, 19, 60 }, { 131, 59, 37, 41, 38, 18, 24, 31, 21, 16, 10, 21, 9, 16, 43 }, { 121, 87, 58, 28, 24, 31, 18, 16, 14, 20, 12, 11, 5, 5, 25 }, { 161, 106, 39, 30, 25, 32, 19, 29, 23, 14, 19, 11, 4, 6, 17 }, { 139, 66, 67, 36, 44, 119, 23, 21, 19, 37, 15, 13, 6, 3, 13 }, { 175, 83, 59, 47, 39, 34, 30, 41, 24, 22, 20, 74, 5, 3, 16 }, { 263, 90, 63, 49, 44, 39, 34, 56, 29, 26, 23, 21, 3, 2, 23 }, { 373, 110, 75, 91, 52, 44, 41, 37, 32, 29, 62, 23, 2, 3, 19 }, { 275, 132, 93, 72, 62, 54, 46, 40, 37, 34, 29, 28, 2, 2, 13 }, { 39, 52, 15, 12, 15, 9, 8, 7, 6, 12, 9, 4, 2, 1, 9 }, }, { // dumb bucket 5 { 119, 76, 66, 40, 22, 13, 24, 11, 10, 11, 14, 9, 18, 66, 157 }, { 28, 35, 30, 13, 21, 10, 8, 11, 5, 7, 7, 8, 4, 8, 57 }, { 76, 51, 26, 18, 16, 14, 9, 8, 14, 12, 8, 11, 2, 10, 81 }, { 66, 53, 24, 43, 16, 15, 31, 13, 13, 12, 12, 12, 3, 17, 94 }, { 318, 131, 55, 30, 38, 36, 38, 21, 20, 19, 19, 19, 3, 32, 125 }, { 179, 104, 85, 68, 112, 32, 30, 29, 28, 40, 26, 26, 7, 49, 117 }, { 417, 139, 67, 56, 51, 48, 66, 42, 39, 38, 38, 40, 10, 16, 88 }, { 233, 96, 74, 62, 101, 55, 53, 52, 51, 50, 51, 50, 8, 21, 63 }, { 226, 134, 68, 61, 89, 53, 52, 52, 51, 51, 96, 57, 15, 20, 130 }, { 176, 118, 158, 123, 75, 73, 126, 71, 74, 72, 76, 79, 14, 24, 155 }, { 93, 57, 46, 10, 15, 23, 15, 10, 11, 12, 13, 14, 6, 5, 36 }, }, { // dumb bucket 6 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 356, 96, 125 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 63, 16 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 585, 90, 27 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 456, 59, 32 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 469, 27, 14 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 622, 70, 12 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 129, 100 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 143, 146 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 221, 70 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 593, 118 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 110, 95 }, }, { // dumb bucket 7 { 160, 146, 35, 32, 21, 19, 25, 21, 16, 22, 19, 21, 8, 11, 37 }, { 53, 32, 22, 13, 11, 12, 11, 7, 8, 4, 10, 15, 2, 4, 17 }, { 83, 32, 19, 24, 20, 10, 14, 13, 12, 8, 12, 12, 3, 5, 21 }, { 143, 57, 35, 44, 21, 19, 17, 16, 16, 15, 15, 25, 3, 6, 32 }, { 271, 110, 62, 45, 38, 50, 32, 31, 30, 29, 28, 28, 5, 14, 50 }, { 737, 315, 196, 133, 104, 93, 86, 84, 83, 81, 83, 77, 14, 8, 26 }, { 800, 800, 800, 760, 524, 476, 416, 384, 370, 356, 371, 401, 39, 28, 20 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 137, 20, 8 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 204, 30, 42 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 243, 58, 24 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 88, 12, 14 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 630, 75, 54 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 778, 54, 26 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 57, 59 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 60, 36 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 46, 67 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 65, 17 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 121, 33 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 187, 59 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 290, 100 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 389, 164 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 136, 56 }, }, { // dumb bucket 9 { 228, 88, 62, 33, 46, 50, 26, 14, 25, 19, 33, 12, 5, 5, 5 }, { 94, 51, 59, 44, 25, 19, 13, 21, 6, 17, 12, 8, 3, 3, 4 }, { 115, 47, 60, 46, 15, 33, 12, 11, 10, 9, 13, 8, 2, 2, 2 }, { 120, 47, 28, 30, 49, 14, 13, 12, 11, 10, 9, 9, 1, 1, 1 }, { 88, 62, 32, 35, 31, 17, 10, 9, 9, 12, 11, 10, 1, 0, 1 }, { 97, 95, 25, 18, 23, 14, 13, 12, 17, 11, 10, 9, 1, 0, 1 }, { 269, 72, 42, 33, 42, 38, 52, 32, 20, 18, 17, 16, 3, 1, 2 }, { 213, 178, 63, 48, 40, 38, 33, 31, 29, 27, 25, 24, 2, 1, 2 }, { 274, 192, 89, 63, 55, 49, 46, 44, 41, 39, 37, 35, 3, 2, 2 }, { 370, 163, 110, 84, 72, 65, 63, 59, 56, 54, 51, 48, 5, 3, 11 }, { 154, 78, 52, 35, 66, 27, 26, 29, 29, 24, 15, 15, 2, 1, 5 }, }, { // dumb bucket 10 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 148, 203, 352 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 800, 1200, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 640, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, }, }, { // depth bucket 10 { // dumb bucket 0 { 1051, 1212, 1240, 1139, 983, 855, 730, 631, 554, 486, 422, 372, 248, 92, 32 }, { 597, 696, 728, 655, 561, 465, 401, 334, 289, 243, 217, 196, 107, 37, 12 }, { 195, 180, 175, 157, 127, 105, 90, 80, 73, 55, 50, 46, 30, 14, 6 }, { 104, 90, 74, 59, 49, 41, 33, 32, 29, 22, 21, 17, 12, 6, 3 }, { 68, 57, 46, 37, 26, 23, 21, 20, 16, 13, 13, 10, 7, 3, 2 }, { 54, 47, 33, 23, 20, 17, 15, 13, 13, 9, 9, 9, 5, 2, 1 }, { 65, 44, 32, 24, 21, 17, 17, 14, 15, 13, 11, 7, 5, 2, 2 }, { 48, 39, 26, 24, 19, 15, 13, 13, 8, 10, 13, 6, 5, 3, 1 }, { 32, 28, 26, 19, 17, 17, 13, 11, 10, 12, 8, 8, 4, 2, 3 }, { 40, 29, 23, 21, 19, 14, 12, 12, 11, 7, 6, 7, 4, 2, 2 }, { 32, 24, 18, 17, 14, 10, 9, 6, 6, 5, 4, 3, 2, 1, 1 }, }, { // dumb bucket 1 { 1683, 798, 1208, 676, 287, 461, 496, 350, 230, 127, 174, 216, 246, 875, 1192 }, { 1800, 1400, 1400, 1200, 1033, 654, 575, 669, 334, 242, 190, 154, 201, 738, 1027 }, { 1200, 1200, 1200, 735, 658, 547, 538, 482, 444, 419, 570, 331, 119, 339, 612 }, { 1400, 1200, 1200, 1200, 653, 709, 645, 363, 333, 398, 354, 326, 155, 266, 662 }, { 1200, 1200, 1200, 690, 434, 344, 349, 506, 367, 393, 355, 291, 39, 120, 492 }, { 1200, 800, 800, 734, 524, 398, 399, 345, 383, 360, 341, 358, 45, 173, 283 }, { 800, 800, 800, 677, 459, 364, 552, 345, 362, 373, 406, 374, 62, 99, 316 }, { 800, 800, 800, 662, 483, 396, 460, 379, 406, 451, 414, 813, 97, 56, 325 }, { 800, 800, 800, 800, 800, 702, 688, 483, 500, 544, 486, 476, 45, 79, 253 }, { 800, 800, 800, 800, 760, 615, 485, 472, 419, 448, 483, 478, 81, 90, 353 }, { 800, 800, 488, 266, 172, 123, 98, 79, 74, 78, 83, 91, 56, 97, 270 }, }, { // dumb bucket 2 { 293, 238, 200, 144, 132, 106, 85, 85, 64, 52, 62, 45, 42, 59, 129 }, { 65, 71, 64, 60, 51, 50, 38, 31, 30, 23, 25, 24, 18, 23, 83 }, { 114, 82, 59, 38, 29, 40, 15, 20, 17, 29, 19, 19, 16, 24, 82 }, { 80, 30, 26, 27, 9, 16, 10, 13, 21, 7, 6, 16, 8, 12, 74 }, { 86, 84, 63, 15, 23, 26, 11, 14, 11, 6, 18, 15, 5, 7, 55 }, { 46, 63, 12, 17, 26, 16, 12, 14, 6, 18, 12, 9, 8, 5, 59 }, { 95, 73, 19, 33, 12, 17, 15, 28, 13, 8, 28, 13, 4, 4, 59 }, { 70, 101, 38, 30, 21, 12, 28, 10, 15, 16, 9, 20, 6, 6, 36 }, { 356, 72, 41, 37, 32, 27, 14, 13, 13, 12, 12, 12, 3, 6, 32 }, { 197, 74, 28, 38, 41, 16, 32, 13, 19, 12, 17, 11, 4, 4, 26 }, { 21, 5, 6, 7, 10, 7, 7, 3, 3, 3, 2, 2, 4, 3, 18 }, }, { // dumb bucket 3 { 158, 67, 133, 63, 41, 32, 37, 12, 35, 29, 28, 20, 17, 37, 51 }, { 46, 40, 13, 11, 14, 16, 8, 25, 9, 9, 10, 18, 4, 20, 73 }, { 132, 85, 52, 28, 25, 40, 22, 22, 23, 24, 27, 29, 5, 43, 98 }, { 257, 99, 79, 69, 35, 32, 32, 32, 32, 34, 35, 39, 12, 10, 23 }, { 146, 331, 57, 72, 47, 76, 42, 40, 39, 41, 41, 68, 7, 14, 27 }, { 211, 116, 84, 46, 41, 73, 41, 63, 41, 43, 69, 106, 11, 14, 36 }, { 139, 81, 104, 50, 49, 47, 46, 46, 46, 68, 73, 52, 12, 11, 25 }, { 147, 83, 58, 47, 47, 47, 48, 49, 48, 49, 53, 54, 9, 9, 15 }, { 157, 89, 67, 61, 59, 187, 59, 58, 59, 61, 63, 68, 11, 11, 20 }, { 205, 119, 89, 77, 72, 68, 68, 66, 65, 71, 77, 82, 14, 12, 30 }, { 41, 28, 17, 13, 9, 13, 9, 9, 9, 9, 10, 16, 2, 3, 4 }, }, { // dumb bucket 4 { 428, 157, 149, 98, 83, 34, 34, 15, 30, 17, 43, 27, 17, 24, 45 }, { 193, 121, 67, 43, 38, 39, 21, 40, 16, 16, 29, 16, 14, 14, 44 }, { 218, 134, 79, 58, 53, 26, 32, 19, 25, 15, 23, 20, 7, 8, 36 }, { 171, 80, 90, 39, 33, 29, 25, 38, 29, 17, 16, 14, 3, 5, 17 }, { 147, 92, 54, 42, 53, 30, 47, 34, 20, 27, 16, 15, 2, 5, 17 }, { 226, 149, 93, 77, 43, 37, 31, 27, 24, 22, 20, 17, 5, 2, 17 }, { 271, 131, 82, 63, 54, 47, 42, 57, 73, 30, 26, 23, 5, 4, 34 }, { 268, 131, 87, 68, 62, 52, 47, 44, 39, 53, 31, 28, 6, 3, 20 }, { 310, 148, 106, 86, 72, 60, 82, 48, 43, 38, 33, 30, 3, 3, 14 }, { 494, 199, 128, 141, 77, 71, 65, 57, 52, 45, 41, 37, 3, 7, 26 }, { 54, 28, 19, 15, 13, 11, 9, 8, 8, 7, 6, 8, 2, 1, 7 }, }, { // dumb bucket 5 { 175, 142, 43, 56, 20, 31, 16, 15, 12, 7, 7, 16, 12, 47, 107 }, { 45, 21, 24, 23, 13, 12, 7, 7, 10, 11, 9, 6, 4, 5, 40 }, { 70, 58, 22, 30, 15, 53, 21, 17, 11, 10, 10, 10, 5, 6, 48 }, { 168, 83, 37, 29, 24, 31, 19, 18, 17, 17, 17, 17, 4, 10, 105 }, { 246, 132, 78, 73, 37, 32, 29, 27, 27, 26, 25, 25, 4, 15, 105 }, { 278, 100, 70, 55, 71, 44, 39, 36, 36, 36, 34, 34, 6, 29, 188 }, { 257, 139, 100, 79, 180, 63, 59, 56, 55, 52, 89, 53, 9, 15, 124 }, { 381, 138, 106, 130, 85, 74, 105, 69, 70, 69, 69, 67, 12, 35, 80 }, { 223, 128, 91, 80, 73, 71, 69, 69, 67, 67, 70, 78, 14, 42, 80 }, { 254, 166, 127, 110, 104, 150, 101, 99, 98, 99, 104, 106, 19, 82, 68 }, { 41, 17, 45, 23, 23, 20, 13, 13, 22, 16, 17, 19, 6, 7, 35 }, }, { // dumb bucket 6 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 753, 79, 82 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 72, 18 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 765, 48, 18 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 618, 48, 46 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 621, 34, 12 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 781, 88, 15 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 188, 33 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 800, 198, 276 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 320, 76 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 457, 144 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 146, 70 }, }, { // dumb bucket 7 { 172, 83, 40, 28, 38, 20, 21, 11, 16, 25, 29, 22, 6, 15, 37 }, { 150, 27, 14, 23, 12, 11, 10, 9, 6, 13, 13, 8, 2, 3, 11 }, { 133, 72, 26, 19, 15, 23, 12, 11, 16, 15, 10, 10, 2, 4, 20 }, { 234, 87, 47, 34, 28, 24, 22, 21, 66, 20, 33, 19, 3, 7, 20 }, { 396, 153, 81, 60, 75, 45, 43, 39, 39, 37, 37, 35, 4, 9, 34 }, { 800, 541, 319, 197, 164, 137, 128, 119, 119, 110, 117, 117, 13, 6, 15 }, { 800, 800, 800, 800, 800, 800, 771, 662, 636, 623, 704, 597, 59, 30, 15 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 225, 27, 14 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 295, 43, 25 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 346, 56, 20 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 134, 27, 13 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 759, 82, 37 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 69, 28 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 73, 25 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 83, 64 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 61, 36 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 90, 22 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 158, 106 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 274, 81 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 435, 127 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 523, 193 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 163, 66 }, }, { // dumb bucket 9 { 421, 82, 71, 114, 59, 35, 30, 17, 47, 22, 20, 15, 2, 3, 6 }, { 161, 51, 39, 18, 63, 20, 10, 9, 13, 8, 7, 7, 3, 2, 4 }, { 188, 98, 53, 60, 19, 17, 16, 21, 13, 12, 11, 11, 3, 2, 3 }, { 190, 72, 39, 48, 22, 28, 25, 15, 14, 19, 30, 11, 1, 2, 1 }, { 125, 79, 44, 21, 25, 15, 20, 18, 11, 10, 10, 9, 1, 0, 1 }, { 141, 57, 33, 55, 51, 33, 17, 24, 44, 14, 13, 12, 4, 1, 1 }, { 230, 96, 90, 44, 37, 50, 43, 48, 40, 24, 23, 21, 2, 1, 2 }, { 309, 126, 75, 59, 76, 44, 131, 70, 38, 35, 34, 31, 3, 2, 2 }, { 332, 169, 110, 118, 68, 64, 58, 57, 51, 49, 47, 43, 4, 3, 3 }, { 426, 216, 139, 105, 89, 85, 82, 78, 71, 68, 65, 65, 6, 4, 6 }, { 162, 143, 59, 46, 26, 35, 89, 70, 52, 29, 19, 18, 2, 1, 2 }, }, { // dumb bucket 10 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 140, 235, 1107 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, }, }, { // depth bucket 11 { // dumb bucket 0 { 723, 778, 937, 833, 772, 658, 553, 482, 365, 386, 289, 259, 181, 74, 26 }, { 515, 533, 561, 558, 475, 438, 318, 318, 273, 179, 223, 106, 78, 27, 12 }, { 245, 204, 246, 158, 153, 124, 76, 108, 91, 93, 73, 58, 27, 10, 7 }, { 217, 136, 141, 99, 88, 57, 53, 36, 36, 47, 32, 27, 18, 4, 6 }, { 131, 66, 75, 73, 55, 38, 49, 38, 28, 22, 13, 22, 6, 4, 6 }, { 62, 47, 44, 35, 39, 19, 44, 17, 26, 26, 35, 18, 6, 2, 4 }, { 117, 139, 46, 53, 30, 25, 38, 43, 26, 27, 27, 28, 8, 7, 7 }, { 129, 46, 58, 67, 34, 44, 30, 35, 20, 47, 32, 22, 5, 6, 14 }, { 63, 82, 50, 38, 43, 25, 25, 25, 26, 26, 40, 27, 7, 5, 19 }, { 72, 43, 58, 45, 29, 29, 30, 30, 31, 32, 32, 33, 7, 6, 19 }, { 30, 37, 30, 30, 12, 20, 14, 8, 7, 9, 9, 11, 2, 2, 4 }, }, { // dumb bucket 1 { 1200, 1200, 1200, 1800, 1400, 2000, 1200, 1200, 1200, 1200, 1200, 1200, 159, 880, 833 }, { 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1200, 1629, 535 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 800, 537, 829 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 634, 1158 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 532, 508 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 765, 596 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 671 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 488, 205, 396 }, }, { // dumb bucket 2 { 800, 917, 275, 335, 339, 382, 179, 164, 102, 141, 138, 138, 39, 47, 120 }, { 1200, 369, 292, 199, 168, 175, 158, 83, 79, 110, 109, 103, 14, 9, 71 }, { 800, 885, 298, 234, 329, 175, 257, 163, 165, 147, 145, 142, 26, 39, 79 }, { 800, 1158, 408, 322, 258, 247, 213, 200, 190, 173, 173, 173, 21, 35, 167 }, { 800, 1200, 925, 399, 335, 283, 256, 223, 207, 196, 186, 266, 21, 22, 144 }, { 800, 800, 623, 511, 431, 375, 331, 281, 294, 257, 390, 242, 29, 22, 67 }, { 800, 800, 800, 741, 567, 470, 429, 407, 421, 371, 380, 349, 71, 33, 59 }, { 800, 800, 800, 800, 691, 539, 509, 476, 455, 485, 446, 420, 47, 38, 240 }, { 800, 800, 800, 800, 800, 760, 672, 633, 615, 565, 544, 585, 65, 51, 66 }, { 800, 800, 800, 800, 800, 800, 778, 780, 705, 605, 614, 576, 70, 51, 87 }, { 633, 288, 192, 235, 130, 109, 94, 93, 90, 135, 94, 91, 15, 8, 49 }, }, { // dumb bucket 3 { 800, 1200, 800, 1032, 518, 582, 528, 595, 534, 478, 474, 511, 134, 155, 174 }, { 800, 800, 760, 731, 565, 503, 442, 491, 489, 486, 551, 872, 198, 191, 366 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 437, 296, 375 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 342, 404, 446 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 320, 324, 887 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 383, 347, 429 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 302, 341, 602 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 344, 552, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 350, 658, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 760, 768, 800 }, { 800, 800, 562, 466, 409, 442, 409, 372, 368, 365, 377, 456, 84, 125, 259 }, }, { // dumb bucket 4 { 800, 800, 800, 800, 1200, 1200, 742, 640, 706, 431, 336, 265, 28, 44, 42 }, { 800, 800, 800, 800, 800, 800, 800, 660, 576, 480, 436, 393, 56, 24, 32 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 756, 686, 595, 59, 69, 171 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 696, 701, 70, 50, 49 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 787, 655, 66, 38, 33 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 73, 45, 42 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 96, 70, 75 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 138, 86, 96 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 131, 102, 136 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 193, 118, 175 }, { 800, 800, 800, 800, 721, 717, 553, 438, 365, 318, 299, 255, 26, 15, 28 }, }, { // dumb bucket 5 { 800, 800, 800, 703, 563, 473, 399, 389, 339, 310, 279, 289, 136, 83, 162 }, { 800, 800, 795, 571, 481, 456, 411, 384, 364, 359, 357, 345, 45, 75, 88 }, { 800, 800, 800, 800, 726, 681, 607, 572, 553, 555, 549, 546, 72, 82, 148 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 131, 171, 374 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 222, 277, 244 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 332, 428, 387 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 528, 800, 692 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 653, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 629, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 778, 786, 800, 745, 800, 749, 800, 800, 800, 800, 250, 567, 562 }, }, { // dumb bucket 6 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 579 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 363 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 483 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 709 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 576 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, }, { // dumb bucket 7 { 800, 800, 800, 800, 800, 645, 518, 499, 472, 423, 431, 407, 44, 37, 69 }, { 800, 800, 800, 563, 468, 396, 333, 323, 294, 275, 278, 269, 29, 39, 72 }, { 800, 800, 800, 800, 800, 649, 578, 527, 537, 506, 493, 448, 54, 47, 56 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 115, 94, 94 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 291, 174, 102 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 513, 157 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 304 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 355 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 442 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 339 }, }, { // dumb bucket 8 { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 515 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 423 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 563 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 774 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, }, { // dumb bucket 9 { 800, 800, 800, 800, 800, 742, 688, 535, 532, 475, 620, 359, 34, 19, 26 }, { 800, 800, 800, 800, 622, 567, 517, 543, 473, 396, 371, 308, 45, 16, 13 }, { 800, 800, 800, 800, 800, 758, 765, 570, 566, 571, 510, 447, 47, 31, 29 }, { 800, 800, 800, 800, 800, 800, 800, 795, 759, 623, 614, 551, 52, 31, 31 }, { 800, 800, 1400, 800, 800, 698, 651, 673, 552, 503, 457, 396, 40, 23, 21 }, { 800, 800, 800, 800, 800, 800, 800, 756, 684, 792, 628, 604, 56, 34, 28 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 92, 60, 55 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 120, 80, 71 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 189, 125, 115 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 292, 170, 179 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 102, 80, 79 }, }, { // dumb bucket 10 { 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4600, 4400, 4200, 4400 }, { 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000 }, { 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400 }, { 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, { 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800 }, }, }, };