Files
tidb/pkg/parser/hintparser.go

1675 lines
94 KiB
Go

// Code generated by goyacc DO NOT EDIT.
// Copyright 2020 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package parser
import __yyfmt__ "fmt"
import (
"math"
"strconv"
"github.com/pingcap/tidb/pkg/parser/ast"
)
type yyhintSymType struct {
yys int
offset int
ident string
number uint64
hint *ast.TableOptimizerHint
hints []*ast.TableOptimizerHint
table ast.HintTable
modelIdents []ast.CIStr
leadingList *ast.LeadingList
leadingElement interface{} // Modified: Represents either *ast.HintTable or *ast.LeadingList
}
type yyhintXError struct {
state, xsym int
}
const (
yyhintDefault = 57436
yyhintEOFCode = 57344
yyhintErrCode = 57345
hintAggToCop = 57380
hintBCJoin = 57403
hintBKA = 57355
hintBNL = 57357
hintDupsWeedOut = 57432
hintFalse = 57428
hintFirstMatch = 57433
hintForceIndex = 57418
hintGB = 57431
hintHashAgg = 57383
hintHashJoin = 57359
hintHashJoinBuild = 57360
hintHashJoinProbe = 57361
hintHypoIndex = 57379
hintIdentifier = 57347
hintIgnoreIndex = 57386
hintIgnorePlanCache = 57381
hintIndexHashJoin = 57390
hintIndexJoin = 57387
hintIndexLookUpPushDown = 57411
hintIndexMerge = 57365
hintIndexMergeJoin = 57394
hintInlHashJoin = 57389
hintInlJoin = 57392
hintInlMergeJoin = 57393
hintIntLit = 57346
hintInvalid = 57348
hintJoinFixedOrder = 57351
hintJoinOrder = 57352
hintJoinPrefix = 57353
hintJoinSuffix = 57354
hintLeading = 57420
hintLimitToCop = 57417
hintLooseScan = 57434
hintMB = 57430
hintMRR = 57367
hintMaterialization = 57435
hintMaxExecutionTime = 57375
hintMemoryQuota = 57396
hintMerge = 57363
hintMpp1PhaseAgg = 57384
hintMpp2PhaseAgg = 57385
hintNoBKA = 57356
hintNoBNL = 57358
hintNoDecorrelate = 57422
hintNoHashJoin = 57362
hintNoICP = 57369
hintNoIndexHashJoin = 57391
hintNoIndexJoin = 57388
hintNoIndexMerge = 57366
hintNoIndexMergeJoin = 57395
hintNoMRR = 57368
hintNoMerge = 57364
hintNoOrderIndex = 57410
hintNoRangeOptimization = 57370
hintNoSMJoin = 57402
hintNoSemijoin = 57374
hintNoSkipScan = 57372
hintNoSwapJoinInputs = 57397
hintNthPlan = 57416
hintOLAP = 57423
hintOLTP = 57424
hintOrderIndex = 57409
hintPartition = 57425
hintQBName = 57378
hintQueryType = 57398
hintReadConsistentReplica = 57399
hintReadFromStorage = 57400
hintResourceGroup = 57377
hintSMJoin = 57401
hintSemiJoinRewrite = 57421
hintSemijoin = 57373
hintSetVar = 57376
hintShuffleJoin = 57404
hintSingleAtIdentifier = 57349
hintSkipScan = 57371
hintStraightJoin = 57419
hintStreamAgg = 57405
hintStringLit = 57350
hintSwapJoinInputs = 57406
hintTiFlash = 57427
hintTiKV = 57426
hintTimeRange = 57414
hintTrue = 57429
hintUseCascades = 57415
hintUseIndex = 57408
hintUseIndexMerge = 57407
hintUsePlanCache = 57412
hintUseToja = 57413
hintWriteSlowLog = 57382
yyhintMaxDepth = 200
yyhintTabOfs = -227
)
var (
yyhintXLAT = map[int]int{
41: 0, // ')' (171x)
57380: 1, // hintAggToCop (160x)
57403: 2, // hintBCJoin (160x)
57355: 3, // hintBKA (160x)
57357: 4, // hintBNL (160x)
57418: 5, // hintForceIndex (160x)
57383: 6, // hintHashAgg (160x)
57359: 7, // hintHashJoin (160x)
57360: 8, // hintHashJoinBuild (160x)
57361: 9, // hintHashJoinProbe (160x)
57379: 10, // hintHypoIndex (160x)
57347: 11, // hintIdentifier (160x)
57386: 12, // hintIgnoreIndex (160x)
57381: 13, // hintIgnorePlanCache (160x)
57390: 14, // hintIndexHashJoin (160x)
57387: 15, // hintIndexJoin (160x)
57411: 16, // hintIndexLookUpPushDown (160x)
57365: 17, // hintIndexMerge (160x)
57394: 18, // hintIndexMergeJoin (160x)
57389: 19, // hintInlHashJoin (160x)
57392: 20, // hintInlJoin (160x)
57393: 21, // hintInlMergeJoin (160x)
57351: 22, // hintJoinFixedOrder (160x)
57352: 23, // hintJoinOrder (160x)
57353: 24, // hintJoinPrefix (160x)
57354: 25, // hintJoinSuffix (160x)
57420: 26, // hintLeading (160x)
57417: 27, // hintLimitToCop (160x)
57375: 28, // hintMaxExecutionTime (160x)
57396: 29, // hintMemoryQuota (160x)
57363: 30, // hintMerge (160x)
57384: 31, // hintMpp1PhaseAgg (160x)
57385: 32, // hintMpp2PhaseAgg (160x)
57367: 33, // hintMRR (160x)
57356: 34, // hintNoBKA (160x)
57358: 35, // hintNoBNL (160x)
57422: 36, // hintNoDecorrelate (160x)
57362: 37, // hintNoHashJoin (160x)
57369: 38, // hintNoICP (160x)
57391: 39, // hintNoIndexHashJoin (160x)
57388: 40, // hintNoIndexJoin (160x)
57366: 41, // hintNoIndexMerge (160x)
57395: 42, // hintNoIndexMergeJoin (160x)
57364: 43, // hintNoMerge (160x)
57368: 44, // hintNoMRR (160x)
57410: 45, // hintNoOrderIndex (160x)
57370: 46, // hintNoRangeOptimization (160x)
57374: 47, // hintNoSemijoin (160x)
57372: 48, // hintNoSkipScan (160x)
57402: 49, // hintNoSMJoin (160x)
57397: 50, // hintNoSwapJoinInputs (160x)
57416: 51, // hintNthPlan (160x)
57409: 52, // hintOrderIndex (160x)
57378: 53, // hintQBName (160x)
57398: 54, // hintQueryType (160x)
57399: 55, // hintReadConsistentReplica (160x)
57400: 56, // hintReadFromStorage (160x)
57377: 57, // hintResourceGroup (160x)
57373: 58, // hintSemijoin (160x)
57421: 59, // hintSemiJoinRewrite (160x)
57376: 60, // hintSetVar (160x)
57404: 61, // hintShuffleJoin (160x)
57371: 62, // hintSkipScan (160x)
57401: 63, // hintSMJoin (160x)
57419: 64, // hintStraightJoin (160x)
57405: 65, // hintStreamAgg (160x)
57406: 66, // hintSwapJoinInputs (160x)
57414: 67, // hintTimeRange (160x)
57415: 68, // hintUseCascades (160x)
57408: 69, // hintUseIndex (160x)
57407: 70, // hintUseIndexMerge (160x)
57412: 71, // hintUsePlanCache (160x)
57413: 72, // hintUseToja (160x)
57382: 73, // hintWriteSlowLog (160x)
44: 74, // ',' (156x)
57432: 75, // hintDupsWeedOut (131x)
57433: 76, // hintFirstMatch (131x)
57434: 77, // hintLooseScan (131x)
57435: 78, // hintMaterialization (131x)
57427: 79, // hintTiFlash (131x)
57426: 80, // hintTiKV (131x)
57428: 81, // hintFalse (130x)
57423: 82, // hintOLAP (130x)
57424: 83, // hintOLTP (130x)
57429: 84, // hintTrue (130x)
57431: 85, // hintGB (129x)
57430: 86, // hintMB (129x)
57349: 87, // hintSingleAtIdentifier (107x)
57346: 88, // hintIntLit (103x)
93: 89, // ']' (96x)
46: 90, // '.' (95x)
57425: 91, // hintPartition (90x)
61: 92, // '=' (87x)
40: 93, // '(' (86x)
57344: 94, // $end (31x)
57458: 95, // QueryBlockOpt (22x)
57448: 96, // Identifier (21x)
57444: 97, // HintTable (7x)
57350: 98, // hintStringLit (6x)
57438: 99, // CommaOpt (5x)
57445: 100, // HintTableList (4x)
91: 101, // '[' (3x)
57452: 102, // LeadingTableElement (3x)
43: 103, // '+' (2x)
45: 104, // '-' (2x)
57437: 105, // BooleanHintName (2x)
57439: 106, // HintIndexList (2x)
57441: 107, // HintStorageType (2x)
57442: 108, // HintStorageTypeAndTable (2x)
57446: 109, // HintTableListOpt (2x)
57451: 110, // JoinOrderOptimizerHintName (2x)
57453: 111, // LeadingTableList (2x)
57454: 112, // NullaryHintName (2x)
57456: 113, // PartitionList (2x)
57457: 114, // PartitionListOpt (2x)
57460: 115, // StorageOptimizerHintOpt (2x)
57461: 116, // SubqueryOptimizerHintName (2x)
57464: 117, // SubqueryStrategy (2x)
57465: 118, // SupportedIndexLevelOptimizerHintName (2x)
57466: 119, // SupportedTableLevelOptimizerHintName (2x)
57467: 120, // TableOptimizerHintOpt (2x)
57469: 121, // UnsupportedIndexLevelOptimizerHintName (2x)
57470: 122, // UnsupportedTableLevelOptimizerHintName (2x)
57471: 123, // Value (2x)
57472: 124, // ViewName (2x)
57440: 125, // HintQueryType (1x)
57443: 126, // HintStorageTypeAndTableList (1x)
57447: 127, // HintTrueOrFalse (1x)
57449: 128, // IndexNameList (1x)
57450: 129, // IndexNameListOpt (1x)
57455: 130, // OptimizerHintList (1x)
57459: 131, // Start (1x)
57462: 132, // SubqueryStrategies (1x)
57463: 133, // SubqueryStrategiesOpt (1x)
57468: 134, // UnitOfBytes (1x)
57473: 135, // ViewNameList (1x)
57436: 136, // $default (0x)
57345: 137, // error (0x)
57348: 138, // hintInvalid (0x)
}
yyhintSymNames = []string{
"')'",
"hintAggToCop",
"hintBCJoin",
"hintBKA",
"hintBNL",
"hintForceIndex",
"hintHashAgg",
"hintHashJoin",
"hintHashJoinBuild",
"hintHashJoinProbe",
"hintHypoIndex",
"hintIdentifier",
"hintIgnoreIndex",
"hintIgnorePlanCache",
"hintIndexHashJoin",
"hintIndexJoin",
"hintIndexLookUpPushDown",
"hintIndexMerge",
"hintIndexMergeJoin",
"hintInlHashJoin",
"hintInlJoin",
"hintInlMergeJoin",
"hintJoinFixedOrder",
"hintJoinOrder",
"hintJoinPrefix",
"hintJoinSuffix",
"hintLeading",
"hintLimitToCop",
"hintMaxExecutionTime",
"hintMemoryQuota",
"hintMerge",
"hintMpp1PhaseAgg",
"hintMpp2PhaseAgg",
"hintMRR",
"hintNoBKA",
"hintNoBNL",
"hintNoDecorrelate",
"hintNoHashJoin",
"hintNoICP",
"hintNoIndexHashJoin",
"hintNoIndexJoin",
"hintNoIndexMerge",
"hintNoIndexMergeJoin",
"hintNoMerge",
"hintNoMRR",
"hintNoOrderIndex",
"hintNoRangeOptimization",
"hintNoSemijoin",
"hintNoSkipScan",
"hintNoSMJoin",
"hintNoSwapJoinInputs",
"hintNthPlan",
"hintOrderIndex",
"hintQBName",
"hintQueryType",
"hintReadConsistentReplica",
"hintReadFromStorage",
"hintResourceGroup",
"hintSemijoin",
"hintSemiJoinRewrite",
"hintSetVar",
"hintShuffleJoin",
"hintSkipScan",
"hintSMJoin",
"hintStraightJoin",
"hintStreamAgg",
"hintSwapJoinInputs",
"hintTimeRange",
"hintUseCascades",
"hintUseIndex",
"hintUseIndexMerge",
"hintUsePlanCache",
"hintUseToja",
"hintWriteSlowLog",
"','",
"hintDupsWeedOut",
"hintFirstMatch",
"hintLooseScan",
"hintMaterialization",
"hintTiFlash",
"hintTiKV",
"hintFalse",
"hintOLAP",
"hintOLTP",
"hintTrue",
"hintGB",
"hintMB",
"hintSingleAtIdentifier",
"hintIntLit",
"']'",
"'.'",
"hintPartition",
"'='",
"'('",
"$end",
"QueryBlockOpt",
"Identifier",
"HintTable",
"hintStringLit",
"CommaOpt",
"HintTableList",
"'['",
"LeadingTableElement",
"'+'",
"'-'",
"BooleanHintName",
"HintIndexList",
"HintStorageType",
"HintStorageTypeAndTable",
"HintTableListOpt",
"JoinOrderOptimizerHintName",
"LeadingTableList",
"NullaryHintName",
"PartitionList",
"PartitionListOpt",
"StorageOptimizerHintOpt",
"SubqueryOptimizerHintName",
"SubqueryStrategy",
"SupportedIndexLevelOptimizerHintName",
"SupportedTableLevelOptimizerHintName",
"TableOptimizerHintOpt",
"UnsupportedIndexLevelOptimizerHintName",
"UnsupportedTableLevelOptimizerHintName",
"Value",
"ViewName",
"HintQueryType",
"HintStorageTypeAndTableList",
"HintTrueOrFalse",
"IndexNameList",
"IndexNameListOpt",
"OptimizerHintList",
"Start",
"SubqueryStrategies",
"SubqueryStrategiesOpt",
"UnitOfBytes",
"ViewNameList",
"$default",
"error",
"hintInvalid",
}
yyhintReductions = []struct{ xsym, components int }{
{0, 1},
{131, 1},
{130, 1},
{130, 3},
{130, 1},
{130, 3},
{120, 4},
{120, 4},
{120, 4},
{120, 4},
{120, 5},
{120, 4},
{120, 4},
{120, 5},
{120, 5},
{120, 5},
{120, 6},
{120, 4},
{120, 4},
{120, 6},
{120, 6},
{120, 6},
{120, 5},
{120, 4},
{120, 1},
{120, 5},
{120, 5},
{120, 4},
{120, 6},
{120, 6},
{115, 5},
{126, 1},
{126, 3},
{108, 4},
{111, 1},
{111, 3},
{102, 1},
{102, 3},
{95, 0},
{95, 1},
{99, 0},
{99, 1},
{114, 0},
{114, 4},
{113, 1},
{113, 3},
{109, 1},
{109, 1},
{100, 2},
{100, 3},
{97, 3},
{97, 5},
{135, 3},
{135, 1},
{124, 2},
{124, 1},
{106, 4},
{129, 0},
{129, 1},
{128, 1},
{128, 3},
{133, 0},
{133, 1},
{132, 1},
{132, 3},
{123, 1},
{123, 1},
{123, 1},
{123, 2},
{123, 2},
{134, 1},
{134, 1},
{127, 1},
{127, 1},
{110, 1},
{110, 1},
{110, 1},
{122, 1},
{122, 1},
{122, 1},
{122, 1},
{122, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{119, 1},
{121, 1},
{121, 1},
{121, 1},
{121, 1},
{121, 1},
{121, 1},
{121, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{118, 1},
{116, 1},
{116, 1},
{117, 1},
{117, 1},
{117, 1},
{117, 1},
{105, 1},
{105, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{112, 1},
{125, 1},
{125, 1},
{107, 1},
{107, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
{96, 1},
}
yyhintXErrors = map[yyhintXError]string{}
yyhintParseTab = [333][]uint16{
// 0
{1: 305, 263, 256, 258, 292, 301, 277, 279, 280, 281, 251, 290, 309, 270, 266, 295, 282, 275, 269, 265, 274, 232, 253, 254, 255, 236, 306, 240, 245, 268, 302, 303, 283, 257, 259, 312, 278, 285, 271, 267, 307, 276, 260, 284, 294, 286, 297, 288, 262, 273, 241, 293, 244, 250, 308, 252, 243, 296, 311, 242, 264, 287, 261, 310, 304, 272, 246, 299, 289, 291, 300, 298, 249, 105: 247, 110: 233, 112: 248, 115: 231, 239, 118: 238, 235, 230, 237, 234, 130: 229, 228},
{94: 227},
{1: 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 420, 94: 226, 99: 557},
{1: 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 94: 225},
{1: 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 94: 223},
// 5
{93: 554},
{93: 551},
{93: 548},
{93: 543},
{93: 532},
// 10
{93: 529},
{93: 518},
{93: 506},
{93: 502},
{93: 498},
// 15
{93: 493},
{93: 490},
{93: 478},
{93: 471},
{93: 466},
// 20
{93: 460},
{93: 457},
{1: 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 94: 203},
{93: 451},
{93: 431},
// 25
{93: 313},
{93: 153},
{93: 152},
{93: 151},
{93: 150},
// 30
{93: 149},
{93: 148},
{93: 147},
{93: 146},
{93: 145},
// 35
{93: 144},
{93: 143},
{93: 142},
{93: 141},
{93: 140},
// 40
{93: 139},
{93: 138},
{93: 137},
{93: 136},
{93: 135},
// 45
{93: 134},
{93: 133},
{93: 132},
{93: 131},
{93: 130},
// 50
{93: 129},
{93: 128},
{93: 127},
{93: 126},
{93: 125},
// 55
{93: 124},
{93: 123},
{93: 122},
{93: 121},
{93: 120},
// 60
{93: 119},
{93: 118},
{93: 117},
{93: 116},
{93: 115},
// 65
{93: 114},
{93: 113},
{93: 112},
{93: 111},
{93: 110},
// 70
{93: 109},
{93: 104},
{93: 103},
{93: 102},
{93: 101},
// 75
{93: 100},
{93: 99},
{93: 98},
{93: 97},
{93: 96},
// 80
{93: 95},
{93: 94},
{93: 93},
{93: 92},
{93: 91},
// 85
{93: 90},
{79: 189, 189, 87: 315, 95: 314},
{79: 320, 319, 107: 318, 317, 126: 316},
{188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 88: 188, 188, 188, 188, 93: 188},
{428, 74: 429},
// 90
{196, 74: 196},
{101: 321},
{101: 87},
{101: 86},
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 75: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 95: 323, 100: 322},
// 95
{74: 426, 89: 425},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 325, 324},
{179, 74: 179, 89: 179},
{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 89: 189, 412, 189, 95: 411},
{85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85},
// 100
{84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84},
{83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83},
{82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82},
{81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81},
{80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80},
// 105
{79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79},
{78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78},
{77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77},
{76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76},
{75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75},
// 110
{74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74},
{73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73},
{72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72},
{71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71},
{70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70},
// 115
{69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69},
{68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68},
{67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67},
{66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66},
{65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65},
// 120
{64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64},
{63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63},
{62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62},
{61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61},
{60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60},
// 125
{59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59},
{58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58},
{57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57},
{56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56},
{55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55},
// 130
{54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54},
{53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53},
{52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52},
{51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51},
{50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50},
// 135
{49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49},
{48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48},
{47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47},
{46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46},
{45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45},
// 140
{44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44},
{43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43},
{42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42},
{41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41},
{40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40},
// 145
{39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39},
{38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38},
{37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37},
{36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36},
{35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35},
// 150
{34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34},
{33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33},
{32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
{31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31},
{30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30},
// 155
{29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29},
{28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28},
{27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27},
{26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26},
{25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25},
// 160
{24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24},
{23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23},
{22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22},
{21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21},
{20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20},
// 165
{19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19},
{18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18},
{17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17},
{16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
{15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
// 170
{14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
{13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
{12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
{11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11},
{10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
// 175
{9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9},
{8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
{7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7},
{6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6},
{5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
// 180
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 89: 185, 91: 415, 114: 424},
// 185
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 413},
{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 89: 189, 91: 189, 95: 414},
{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 89: 185, 91: 415, 114: 416},
{93: 417},
{176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 89: 176},
// 190
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 419, 113: 418},
{421, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 420, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 99: 422},
{183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183},
{186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 75: 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 88: 186, 98: 186},
{184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 89: 184},
// 195
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 423},
{182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 88: 182},
{177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 89: 177},
{194, 74: 194},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 325, 427},
// 200
{178, 74: 178, 89: 178},
{1: 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 94: 197},
{79: 320, 319, 107: 318, 430},
{195, 74: 195},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 315, 189, 95: 432, 434, 113: 433},
// 205
{88: 449},
{445, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 420, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 88: 187, 99: 446},
{183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 88: 183, 92: 435},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 88: 439, 96: 438, 98: 437, 103: 440, 441, 123: 436},
{444},
// 210
{162},
{161},
{160},
{88: 443},
{88: 442},
// 215
{158},
{159},
{1: 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 94: 198},
{1: 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 94: 200},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 88: 447, 96: 423},
// 220
{448},
{1: 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 94: 199},
{450},
{1: 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 94: 201},
{82: 189, 189, 87: 315, 95: 452},
// 225
{82: 454, 455, 125: 453},
{456},
{89},
{88},
{1: 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 94: 202},
// 230
{189, 87: 315, 95: 458},
{459},
{1: 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 94: 204},
{81: 189, 84: 189, 87: 315, 95: 461},
{81: 464, 84: 463, 127: 462},
// 235
{465},
{155},
{154},
{1: 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 94: 205},
{98: 467},
// 240
{74: 420, 98: 187, 468},
{98: 469},
{470},
{1: 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 94: 206},
{87: 315, 189, 95: 472},
// 245
{88: 473},
{85: 476, 475, 134: 474},
{477},
{157},
{156},
// 250
{1: 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 94: 207},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 479},
{480, 74: 481},
{1: 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 94: 209},
{189, 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 315, 90: 189, 95: 485, 484, 124: 483, 135: 482},
// 255
{487, 90: 488},
{174, 90: 174},
{189, 87: 315, 90: 189, 95: 486},
{172, 90: 172},
{173, 90: 173},
// 260
{1: 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 94: 208},
{189, 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 315, 90: 189, 95: 485, 484, 124: 489},
{175, 90: 175},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 491},
{492},
// 265
{1: 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 94: 210},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 494},
{92: 495},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 88: 439, 96: 438, 98: 437, 103: 440, 441, 123: 496},
{497},
// 270
{1: 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 94: 211},
{87: 315, 189, 95: 499},
{88: 500},
{501},
{1: 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 94: 212},
// 275
{87: 315, 189, 95: 503},
{88: 504},
{505},
{1: 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 94: 213},
{189, 75: 189, 189, 189, 189, 87: 315, 95: 507},
// 280
{166, 75: 511, 512, 513, 514, 117: 510, 132: 509, 508},
{517},
{165, 74: 515},
{164, 74: 164},
{108, 74: 108},
// 285
{107, 74: 107},
{106, 74: 106},
{105, 74: 105},
{75: 511, 512, 513, 514, 117: 516},
{163, 74: 163},
// 290
{1: 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 94: 214},
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 75: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 95: 520, 106: 519},
{528},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 325, 521},
{187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 420, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 99: 522},
// 295
{170, 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 525, 128: 524, 523},
{171},
{169, 74: 526},
{168, 74: 168},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 527},
// 300
{167, 74: 167},
{1: 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 94: 215},
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 75: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 95: 520, 106: 530},
{531},
{1: 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 94: 216},
// 305
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 75: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 93: 189, 95: 533},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 93: 537, 96: 325, 536, 102: 535, 111: 534},
{542, 74: 539},
{193, 74: 193},
{191, 74: 191},
// 310
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 93: 537, 96: 325, 536, 102: 535, 111: 538},
{540, 74: 539},
{1: 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 93: 537, 96: 325, 536, 102: 541},
{190, 74: 190},
{192, 74: 192},
// 315
{1: 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 94: 217},
{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 75: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 95: 546, 100: 545, 109: 544},
{547},
{181, 74: 426},
{180, 356, 380, 331, 333, 394, 360, 335, 336, 337, 355, 326, 363, 358, 365, 368, 388, 341, 371, 364, 367, 370, 327, 328, 329, 330, 396, 357, 351, 373, 339, 361, 362, 343, 332, 334, 398, 338, 345, 366, 369, 342, 372, 340, 344, 387, 346, 350, 348, 379, 374, 393, 386, 354, 375, 376, 377, 353, 349, 397, 352, 381, 347, 378, 395, 382, 383, 391, 392, 385, 384, 389, 390, 359, 75: 407, 408, 409, 410, 402, 401, 403, 399, 400, 404, 406, 405, 96: 325, 324},
// 320
{1: 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 94: 218},
{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 75: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 95: 546, 100: 545, 109: 549},
{550},
{1: 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 94: 219},
{1: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 75: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 315, 95: 323, 100: 552},
// 325
{553, 74: 426},
{1: 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 94: 220},
{189, 87: 315, 95: 555},
{556},
{1: 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 94: 221},
// 330
{1: 305, 263, 256, 258, 292, 301, 277, 279, 280, 281, 251, 290, 309, 270, 266, 295, 282, 275, 269, 265, 274, 232, 253, 254, 255, 236, 306, 240, 245, 268, 302, 303, 283, 257, 259, 312, 278, 285, 271, 267, 307, 276, 260, 284, 294, 286, 297, 288, 262, 273, 241, 293, 244, 250, 308, 252, 243, 296, 311, 242, 264, 287, 261, 310, 304, 272, 246, 299, 289, 291, 300, 298, 249, 105: 247, 110: 233, 112: 248, 115: 559, 239, 118: 238, 235, 558, 237, 234},
{1: 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 94: 224},
{1: 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 94: 222},
}
)
var yyhintDebug = 0
type yyhintLexer interface {
Lex(lval *yyhintSymType) int
Errorf(format string, a ...interface{}) error
AppendError(err error)
AppendWarn(err error)
Errors() (warns []error, errs []error)
}
type yyhintLexerEx interface {
yyhintLexer
Reduced(rule, state int, lval *yyhintSymType) bool
}
func yyhintSymName(c int) (s string) {
x, ok := yyhintXLAT[c]
if ok {
return yyhintSymNames[x]
}
return __yyfmt__.Sprintf("%d", c)
}
func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) {
n = yylex.Lex(lval)
if n <= 0 {
n = yyhintEOFCode
}
if yyhintDebug >= 3 {
__yyfmt__.Printf("\nlex %s(%#x %d), lval: %+v\n", yyhintSymName(n), n, n, lval)
}
return n
}
func yyhintParse(yylex yyhintLexer, parser *hintParser) int {
const yyError = 137
yyEx, _ := yylex.(yyhintLexerEx)
var yyn int
parser.yylval = yyhintSymType{}
yyS := parser.cache
Nerrs := 0 /* number of errors */
Errflag := 0 /* error recovery flag */
yyerrok := func() {
if yyhintDebug >= 2 {
__yyfmt__.Printf("yyerrok()\n")
}
Errflag = 0
}
_ = yyerrok
yystate := 0
yychar := -1
var yyxchar int
var yyshift int
yyp := -1
goto yystack
ret0:
return 0
ret1:
return 1
yystack:
/* put a state and value onto the stack */
yyp++
if yyp+1 >= len(yyS) {
nyys := make([]yyhintSymType, len(yyS)*2)
copy(nyys, yyS)
yyS = nyys
parser.cache = yyS
}
parser.yyVAL = &yyS[yyp+1]
yyS[yyp].yys = yystate
yynewstate:
if yychar < 0 {
yychar = yyhintlex1(yylex, &parser.yylval)
var ok bool
if yyxchar, ok = yyhintXLAT[yychar]; !ok {
yyxchar = len(yyhintSymNames) // > tab width
}
}
if yyhintDebug >= 4 {
var a []int
for _, v := range yyS[:yyp+1] {
a = append(a, v.yys)
}
__yyfmt__.Printf("state stack %v\n", a)
}
row := yyhintParseTab[yystate]
yyn = 0
if yyxchar < len(row) {
if yyn = int(row[yyxchar]); yyn != 0 {
yyn += yyhintTabOfs
}
}
switch {
case yyn > 0: // shift
yychar = -1
*parser.yyVAL = parser.yylval
yystate = yyn
yyshift = yyn
if yyhintDebug >= 2 {
__yyfmt__.Printf("shift, and goto state %d\n", yystate)
}
if Errflag > 0 {
Errflag--
}
goto yystack
case yyn < 0: // reduce
case yystate == 1: // accept
if yyhintDebug >= 2 {
__yyfmt__.Println("accept")
}
goto ret0
}
if yyn == 0 {
/* error ... attempt to resume parsing */
switch Errflag {
case 0: /* brand new error */
if yyhintDebug >= 1 {
__yyfmt__.Printf("no action for %s in state %d\n", yyhintSymName(yychar), yystate)
}
msg, ok := yyhintXErrors[yyhintXError{yystate, yyxchar}]
if !ok {
msg, ok = yyhintXErrors[yyhintXError{yystate, -1}]
}
if !ok && yyshift != 0 {
msg, ok = yyhintXErrors[yyhintXError{yyshift, yyxchar}]
}
if !ok {
msg, ok = yyhintXErrors[yyhintXError{yyshift, -1}]
}
if !ok || msg == "" {
msg = "syntax error"
}
// ignore goyacc error message
yylex.AppendError(yylex.Errorf(""))
Nerrs++
fallthrough
case 1, 2: /* incompletely recovered error ... try again */
Errflag = 3
/* find a state where "error" is a legal shift action */
for yyp >= 0 {
row := yyhintParseTab[yyS[yyp].yys]
if yyError < len(row) {
yyn = int(row[yyError]) + yyhintTabOfs
if yyn > 0 { // hit
if yyhintDebug >= 2 {
__yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys)
}
yystate = yyn /* simulate a shift of "error" */
goto yystack
}
}
/* the current p has no shift on "error", pop stack */
if yyhintDebug >= 2 {
__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
}
yyp--
}
/* there is no state on the stack with an error shift ... abort */
if yyhintDebug >= 2 {
__yyfmt__.Printf("error recovery failed\n")
}
goto ret1
case 3: /* no shift yet; clobber input char */
if yyhintDebug >= 2 {
__yyfmt__.Printf("error recovery discards %s\n", yyhintSymName(yychar))
}
if yychar == yyhintEOFCode {
goto ret1
}
yychar = -1
goto yynewstate /* try again in the same state */
}
}
r := -yyn
x0 := yyhintReductions[r]
x, n := x0.xsym, x0.components
yypt := yyp
_ = yypt // guard against "declared and not used"
yyp -= n
if yyp+1 >= len(yyS) {
nyys := make([]yyhintSymType, len(yyS)*2)
copy(nyys, yyS)
yyS = nyys
parser.cache = yyS
}
parser.yyVAL = &yyS[yyp+1]
/* consult goto table to find next state */
exState := yystate
yystate = int(yyhintParseTab[yyS[yyp].yys][x]) + yyhintTabOfs
/* reduction by production r */
if yyhintDebug >= 2 {
__yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yyhintSymNames[x], yystate)
}
switch r {
case 1:
{
parser.result = yyS[yypt-0].hints
}
case 2:
{
if yyS[yypt-0].hint != nil {
parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
}
}
case 3:
{
if yyS[yypt-0].hint != nil {
parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
} else {
parser.yyVAL.hints = yyS[yypt-2].hints
}
}
case 4:
{
parser.yyVAL.hints = yyS[yypt-0].hints
}
case 5:
{
parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hints...)
}
case 6:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 7:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 8:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 9:
{
h := yyS[yypt-1].hint
h.HintName = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 10:
{
h := &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: yyS[yypt-1].leadingList,
}
// For LEADING hints we need to maintain two views of the tables:
// h.HintData:
// - Stores the structured AST node (LeadingList).
// - Preserves the nesting and order information of LEADING(...),
//
// h.Tables:
// - Stores a flat slice of all HintTable elements inside the LeadingList.
// - Only used for initialization.
if leadingList, ok := h.HintData.(*ast.LeadingList); ok {
// be compatible with the prior flatten writing style
h.Tables = ast.FlattenLeadingList(leadingList)
}
parser.yyVAL.hint = h
}
case 11:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 12:
{
h := yyS[yypt-1].hint
h.HintName = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 13:
{
parser.warnUnsupportedHint(yyS[yypt-4].ident)
parser.yyVAL.hint = nil
}
case 14:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: yyS[yypt-1].number,
}
}
case 15:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: int64(yyS[yypt-1].number),
}
}
case 16:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: ast.HintSetVar{
VarName: yyS[yypt-3].ident,
Value: yyS[yypt-1].ident,
},
}
}
case 17:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
HintData: yyS[yypt-1].ident,
}
}
case 18:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 19:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
QBName: ast.NewCIStr(yyS[yypt-3].ident),
Tables: yyS[yypt-1].hint.Tables,
}
}
case 20:
{
maxValue := uint64(math.MaxInt64) / yyS[yypt-1].number
if yyS[yypt-2].number <= maxValue {
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: int64(yyS[yypt-2].number * yyS[yypt-1].number),
QBName: ast.NewCIStr(yyS[yypt-3].ident),
}
} else {
yylex.AppendError(ErrWarnMemoryQuotaOverflow.GenWithStackByArgs(math.MaxInt))
parser.lastErrorAsWarn()
parser.yyVAL.hint = nil
}
}
case 21:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-5].ident),
HintData: ast.HintTimeRange{
From: yyS[yypt-3].ident,
To: yyS[yypt-1].ident,
},
}
}
case 22:
{
h := yyS[yypt-1].hint
h.HintName = ast.NewCIStr(yyS[yypt-4].ident)
h.QBName = ast.NewCIStr(yyS[yypt-2].ident)
parser.yyVAL.hint = h
}
case 23:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-3].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 24:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 25:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
HintName: ast.NewCIStr(yyS[yypt-4].ident),
QBName: ast.NewCIStr(yyS[yypt-2].ident),
HintData: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 26:
{
parser.warnUnsupportedHint(yyS[yypt-4].ident)
parser.yyVAL.hint = nil
}
case 27:
{
parser.warnUnsupportedHint(yyS[yypt-3].ident)
parser.yyVAL.hint = nil
}
case 28:
{
parser.warnUnsupportedHint(yyS[yypt-5].ident)
parser.yyVAL.hint = nil
}
case 29:
{
parser.warnUnsupportedHint(yyS[yypt-5].ident)
parser.yyVAL.hint = nil
}
case 30:
{
hs := yyS[yypt-1].hints
name := ast.NewCIStr(yyS[yypt-4].ident)
qb := ast.NewCIStr(yyS[yypt-2].ident)
for _, h := range hs {
h.HintName = name
h.QBName = qb
}
parser.yyVAL.hints = hs
}
case 31:
{
parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
}
case 32:
{
parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
}
case 33:
{
h := yyS[yypt-1].hint
h.HintData = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 34:
{
parser.yyVAL.leadingList = &ast.LeadingList{Items: []interface{}{yyS[yypt-0].leadingElement}}
}
case 35:
{
parser.yyVAL.leadingList = yyS[yypt-2].leadingList
parser.yyVAL.leadingList.Items = append(parser.yyVAL.leadingList.Items, yyS[yypt-0].leadingElement)
}
case 36:
{
tmp := yyS[yypt-0].table
parser.yyVAL.leadingElement = &tmp
}
case 37:
{
parser.yyVAL.leadingElement = yyS[yypt-1].leadingList
}
case 38:
{
parser.yyVAL.ident = ""
}
case 42:
{
parser.yyVAL.modelIdents = nil
}
case 43:
{
parser.yyVAL.modelIdents = yyS[yypt-1].modelIdents
}
case 44:
{
parser.yyVAL.modelIdents = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
}
case 45:
{
parser.yyVAL.modelIdents = append(yyS[yypt-2].modelIdents, ast.NewCIStr(yyS[yypt-0].ident))
}
case 47:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 48:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Tables: []ast.HintTable{yyS[yypt-0].table},
QBName: ast.NewCIStr(yyS[yypt-1].ident),
}
}
case 49:
{
h := yyS[yypt-2].hint
h.Tables = append(h.Tables, yyS[yypt-0].table)
parser.yyVAL.hint = h
}
case 50:
{
parser.yyVAL.table = ast.HintTable{
TableName: ast.NewCIStr(yyS[yypt-2].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
PartitionList: yyS[yypt-0].modelIdents,
}
}
case 51:
{
parser.yyVAL.table = ast.HintTable{
DBName: ast.NewCIStr(yyS[yypt-4].ident),
TableName: ast.NewCIStr(yyS[yypt-2].ident),
QBName: ast.NewCIStr(yyS[yypt-1].ident),
PartitionList: yyS[yypt-0].modelIdents,
}
}
case 52:
{
h := yyS[yypt-2].hint
h.Tables = append(h.Tables, yyS[yypt-0].table)
parser.yyVAL.hint = h
}
case 53:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Tables: []ast.HintTable{yyS[yypt-0].table},
}
}
case 54:
{
parser.yyVAL.table = ast.HintTable{
TableName: ast.NewCIStr(yyS[yypt-1].ident),
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 55:
{
parser.yyVAL.table = ast.HintTable{
QBName: ast.NewCIStr(yyS[yypt-0].ident),
}
}
case 56:
{
h := yyS[yypt-0].hint
h.Tables = []ast.HintTable{yyS[yypt-2].table}
h.QBName = ast.NewCIStr(yyS[yypt-3].ident)
parser.yyVAL.hint = h
}
case 57:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{}
}
case 59:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{
Indexes: []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)},
}
}
case 60:
{
h := yyS[yypt-2].hint
h.Indexes = append(h.Indexes, ast.NewCIStr(yyS[yypt-0].ident))
parser.yyVAL.hint = h
}
case 67:
{
parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
}
case 68:
{
parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
}
case 69:
{
if yyS[yypt-0].number > 9223372036854775808 {
yylex.AppendError(yylex.Errorf("the Signed Value should be at the range of [-9223372036854775808, 9223372036854775807]."))
return 1
} else if yyS[yypt-0].number == 9223372036854775808 {
signed_one := int64(1)
parser.yyVAL.ident = strconv.FormatInt(signed_one<<63, 10)
} else {
parser.yyVAL.ident = strconv.FormatInt(-int64(yyS[yypt-0].number), 10)
}
}
case 70:
{
parser.yyVAL.number = 1024 * 1024
}
case 71:
{
parser.yyVAL.number = 1024 * 1024 * 1024
}
case 72:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: true}
}
case 73:
{
parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: false}
}
}
if !parser.lexer.skipPositionRecording {
yyhintSetOffset(parser.yyVAL, parser.yyVAL.offset)
}
if yyEx != nil && yyEx.Reduced(r, exState, parser.yyVAL) {
return -1
}
goto yystack /* stack new state and value */
}