// 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"
	"github.com/pingcap/tidb/pkg/parser/model"
)

type yyhintSymType struct {
	yys         int
	offset      int
	ident       string
	number      uint64
	hint        *ast.TableOptimizerHint
	hints       []*ast.TableOptimizerHint
	table       ast.HintTable
	modelIdents []model.CIStr
}

type yyhintXError struct {
	state, xsym int
}

const (
	yyhintDefault             = 57435
	yyhintEOFCode             = 57344
	yyhintErrCode             = 57345
	hintAggToCop              = 57380
	hintBCJoin                = 57402
	hintBKA                   = 57355
	hintBNL                   = 57357
	hintDupsWeedOut           = 57431
	hintFalse                 = 57427
	hintFirstMatch            = 57432
	hintForceIndex            = 57416
	hintGB                    = 57430
	hintHashAgg               = 57382
	hintHashJoin              = 57359
	hintHashJoinBuild         = 57360
	hintHashJoinProbe         = 57361
	hintHypoIndex             = 57379
	hintIdentifier            = 57347
	hintIgnoreIndex           = 57385
	hintIgnorePlanCache       = 57381
	hintIndexHashJoin         = 57389
	hintIndexJoin             = 57386
	hintIndexMerge            = 57365
	hintIndexMergeJoin        = 57393
	hintInlHashJoin           = 57388
	hintInlJoin               = 57391
	hintInlMergeJoin          = 57392
	hintIntLit                = 57346
	hintInvalid               = 57348
	hintJoinFixedOrder        = 57351
	hintJoinOrder             = 57352
	hintJoinPrefix            = 57353
	hintJoinSuffix            = 57354
	hintLeading               = 57418
	hintLimitToCop            = 57415
	hintLooseScan             = 57433
	hintMB                    = 57429
	hintMRR                   = 57367
	hintMaterialization       = 57434
	hintMaxExecutionTime      = 57375
	hintMemoryQuota           = 57395
	hintMerge                 = 57363
	hintMpp1PhaseAgg          = 57383
	hintMpp2PhaseAgg          = 57384
	hintNoBKA                 = 57356
	hintNoBNL                 = 57358
	hintNoDecorrelate         = 57420
	hintNoHashJoin            = 57362
	hintNoICP                 = 57369
	hintNoIndexHashJoin       = 57390
	hintNoIndexJoin           = 57387
	hintNoIndexMerge          = 57366
	hintNoIndexMergeJoin      = 57394
	hintNoMRR                 = 57368
	hintNoMerge               = 57364
	hintNoOrderIndex          = 57409
	hintNoRangeOptimization   = 57370
	hintNoSMJoin              = 57401
	hintNoSemijoin            = 57374
	hintNoSkipScan            = 57372
	hintNoSwapJoinInputs      = 57396
	hintNthPlan               = 57414
	hintOLAP                  = 57422
	hintOLTP                  = 57423
	hintOrderIndex            = 57408
	hintPartition             = 57424
	hintQBName                = 57378
	hintQueryType             = 57397
	hintReadConsistentReplica = 57398
	hintReadFromStorage       = 57399
	hintResourceGroup         = 57377
	hintSMJoin                = 57400
	hintSemiJoinRewrite       = 57419
	hintSemijoin              = 57373
	hintSetVar                = 57376
	hintShuffleJoin           = 57403
	hintSingleAtIdentifier    = 57349
	hintSkipScan              = 57371
	hintStraightJoin          = 57417
	hintStreamAgg             = 57404
	hintStringLit             = 57350
	hintSwapJoinInputs        = 57405
	hintTiFlash               = 57426
	hintTiKV                  = 57425
	hintTimeRange             = 57412
	hintTrue                  = 57428
	hintUseCascades           = 57413
	hintUseIndex              = 57407
	hintUseIndexMerge         = 57406
	hintUsePlanCache          = 57410
	hintUseToja               = 57411
	hintUseWorker             = 57421

	yyhintMaxDepth = 200
	yyhintTabOfs   = -221
)

var (
	yyhintXLAT = map[int]int{
		41:    0,   // ')' (164x)
		57380: 1,   // hintAggToCop (153x)
		57402: 2,   // hintBCJoin (153x)
		57355: 3,   // hintBKA (153x)
		57357: 4,   // hintBNL (153x)
		57416: 5,   // hintForceIndex (153x)
		57382: 6,   // hintHashAgg (153x)
		57359: 7,   // hintHashJoin (153x)
		57360: 8,   // hintHashJoinBuild (153x)
		57361: 9,   // hintHashJoinProbe (153x)
		57379: 10,  // hintHypoIndex (153x)
		57347: 11,  // hintIdentifier (153x)
		57385: 12,  // hintIgnoreIndex (153x)
		57381: 13,  // hintIgnorePlanCache (153x)
		57389: 14,  // hintIndexHashJoin (153x)
		57386: 15,  // hintIndexJoin (153x)
		57365: 16,  // hintIndexMerge (153x)
		57393: 17,  // hintIndexMergeJoin (153x)
		57388: 18,  // hintInlHashJoin (153x)
		57391: 19,  // hintInlJoin (153x)
		57392: 20,  // hintInlMergeJoin (153x)
		57351: 21,  // hintJoinFixedOrder (153x)
		57352: 22,  // hintJoinOrder (153x)
		57353: 23,  // hintJoinPrefix (153x)
		57354: 24,  // hintJoinSuffix (153x)
		57418: 25,  // hintLeading (153x)
		57415: 26,  // hintLimitToCop (153x)
		57375: 27,  // hintMaxExecutionTime (153x)
		57395: 28,  // hintMemoryQuota (153x)
		57363: 29,  // hintMerge (153x)
		57383: 30,  // hintMpp1PhaseAgg (153x)
		57384: 31,  // hintMpp2PhaseAgg (153x)
		57367: 32,  // hintMRR (153x)
		57356: 33,  // hintNoBKA (153x)
		57358: 34,  // hintNoBNL (153x)
		57420: 35,  // hintNoDecorrelate (153x)
		57362: 36,  // hintNoHashJoin (153x)
		57369: 37,  // hintNoICP (153x)
		57390: 38,  // hintNoIndexHashJoin (153x)
		57387: 39,  // hintNoIndexJoin (153x)
		57366: 40,  // hintNoIndexMerge (153x)
		57394: 41,  // hintNoIndexMergeJoin (153x)
		57364: 42,  // hintNoMerge (153x)
		57368: 43,  // hintNoMRR (153x)
		57409: 44,  // hintNoOrderIndex (153x)
		57370: 45,  // hintNoRangeOptimization (153x)
		57374: 46,  // hintNoSemijoin (153x)
		57372: 47,  // hintNoSkipScan (153x)
		57401: 48,  // hintNoSMJoin (153x)
		57396: 49,  // hintNoSwapJoinInputs (153x)
		57414: 50,  // hintNthPlan (153x)
		57408: 51,  // hintOrderIndex (153x)
		57378: 52,  // hintQBName (153x)
		57397: 53,  // hintQueryType (153x)
		57398: 54,  // hintReadConsistentReplica (153x)
		57399: 55,  // hintReadFromStorage (153x)
		57377: 56,  // hintResourceGroup (153x)
		57373: 57,  // hintSemijoin (153x)
		57419: 58,  // hintSemiJoinRewrite (153x)
		57376: 59,  // hintSetVar (153x)
		57403: 60,  // hintShuffleJoin (153x)
		57371: 61,  // hintSkipScan (153x)
		57400: 62,  // hintSMJoin (153x)
		57417: 63,  // hintStraightJoin (153x)
		57404: 64,  // hintStreamAgg (153x)
		57405: 65,  // hintSwapJoinInputs (153x)
		57412: 66,  // hintTimeRange (153x)
		57413: 67,  // hintUseCascades (153x)
		57407: 68,  // hintUseIndex (153x)
		57406: 69,  // hintUseIndexMerge (153x)
		57410: 70,  // hintUsePlanCache (153x)
		57411: 71,  // hintUseToja (153x)
		57421: 72,  // hintUseWorker (153x)
		44:    73,  // ',' (147x)
		57431: 74,  // hintDupsWeedOut (126x)
		57432: 75,  // hintFirstMatch (126x)
		57433: 76,  // hintLooseScan (126x)
		57434: 77,  // hintMaterialization (126x)
		57426: 78,  // hintTiFlash (126x)
		57425: 79,  // hintTiKV (126x)
		57427: 80,  // hintFalse (125x)
		57422: 81,  // hintOLAP (125x)
		57423: 82,  // hintOLTP (125x)
		57428: 83,  // hintTrue (125x)
		57430: 84,  // hintGB (124x)
		57429: 85,  // hintMB (124x)
		57349: 86,  // hintSingleAtIdentifier (105x)
		57346: 87,  // hintIntLit (102x)
		93:    88,  // ']' (95x)
		46:    89,  // '.' (94x)
		57424: 90,  // hintPartition (89x)
		61:    91,  // '=' (86x)
		40:    92,  // '(' (81x)
		57344: 93,  // $end (29x)
		57455: 94,  // QueryBlockOpt (21x)
		57447: 95,  // Identifier (18x)
		57350: 96,  // hintStringLit (6x)
		57437: 97,  // CommaOpt (5x)
		57443: 98,  // HintTable (4x)
		57444: 99,  // HintTableList (4x)
		91:    100, // '[' (3x)
		43:    101, // '+' (2x)
		45:    102, // '-' (2x)
		57436: 103, // BooleanHintName (2x)
		57438: 104, // HintIndexList (2x)
		57440: 105, // HintStorageType (2x)
		57441: 106, // HintStorageTypeAndTable (2x)
		57445: 107, // HintTableListOpt (2x)
		57450: 108, // JoinOrderOptimizerHintName (2x)
		57451: 109, // NullaryHintName (2x)
		57453: 110, // PartitionList (2x)
		57454: 111, // PartitionListOpt (2x)
		57457: 112, // StorageOptimizerHintOpt (2x)
		57458: 113, // SubqueryOptimizerHintName (2x)
		57461: 114, // SubqueryStrategy (2x)
		57462: 115, // SupportedIndexLevelOptimizerHintName (2x)
		57463: 116, // SupportedTableLevelOptimizerHintName (2x)
		57464: 117, // TableOptimizerHintOpt (2x)
		57466: 118, // UnsupportedIndexLevelOptimizerHintName (2x)
		57467: 119, // UnsupportedTableLevelOptimizerHintName (2x)
		57468: 120, // Value (2x)
		57469: 121, // ViewName (2x)
		57439: 122, // HintQueryType (1x)
		57442: 123, // HintStorageTypeAndTableList (1x)
		57446: 124, // HintTrueOrFalse (1x)
		57448: 125, // IndexNameList (1x)
		57449: 126, // IndexNameListOpt (1x)
		57452: 127, // OptimizerHintList (1x)
		57456: 128, // Start (1x)
		57459: 129, // SubqueryStrategies (1x)
		57460: 130, // SubqueryStrategiesOpt (1x)
		57465: 131, // UnitOfBytes (1x)
		57470: 132, // ViewNameList (1x)
		57435: 133, // $default (0x)
		57345: 134, // error (0x)
		57348: 135, // hintInvalid (0x)
	}

	yyhintSymNames = []string{
		"')'",
		"hintAggToCop",
		"hintBCJoin",
		"hintBKA",
		"hintBNL",
		"hintForceIndex",
		"hintHashAgg",
		"hintHashJoin",
		"hintHashJoinBuild",
		"hintHashJoinProbe",
		"hintHypoIndex",
		"hintIdentifier",
		"hintIgnoreIndex",
		"hintIgnorePlanCache",
		"hintIndexHashJoin",
		"hintIndexJoin",
		"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",
		"hintUseWorker",
		"','",
		"hintDupsWeedOut",
		"hintFirstMatch",
		"hintLooseScan",
		"hintMaterialization",
		"hintTiFlash",
		"hintTiKV",
		"hintFalse",
		"hintOLAP",
		"hintOLTP",
		"hintTrue",
		"hintGB",
		"hintMB",
		"hintSingleAtIdentifier",
		"hintIntLit",
		"']'",
		"'.'",
		"hintPartition",
		"'='",
		"'('",
		"$end",
		"QueryBlockOpt",
		"Identifier",
		"hintStringLit",
		"CommaOpt",
		"HintTable",
		"HintTableList",
		"'['",
		"'+'",
		"'-'",
		"BooleanHintName",
		"HintIndexList",
		"HintStorageType",
		"HintStorageTypeAndTable",
		"HintTableListOpt",
		"JoinOrderOptimizerHintName",
		"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},
		{128, 1},
		{127, 1},
		{127, 3},
		{127, 1},
		{127, 3},
		{117, 4},
		{117, 4},
		{117, 4},
		{117, 4},
		{117, 4},
		{117, 4},
		{117, 5},
		{117, 5},
		{117, 5},
		{117, 6},
		{117, 4},
		{117, 4},
		{117, 6},
		{117, 6},
		{117, 6},
		{117, 5},
		{117, 4},
		{117, 5},
		{117, 5},
		{117, 4},
		{117, 6},
		{117, 6},
		{112, 5},
		{123, 1},
		{123, 3},
		{106, 4},
		{94, 0},
		{94, 1},
		{97, 0},
		{97, 1},
		{111, 0},
		{111, 4},
		{110, 1},
		{110, 3},
		{107, 1},
		{107, 1},
		{99, 2},
		{99, 3},
		{98, 3},
		{98, 5},
		{132, 3},
		{132, 1},
		{121, 2},
		{121, 1},
		{104, 4},
		{126, 0},
		{126, 1},
		{125, 1},
		{125, 3},
		{130, 0},
		{130, 1},
		{129, 1},
		{129, 3},
		{120, 1},
		{120, 1},
		{120, 1},
		{120, 2},
		{120, 2},
		{131, 1},
		{131, 1},
		{124, 1},
		{124, 1},
		{108, 1},
		{108, 1},
		{108, 1},
		{119, 1},
		{119, 1},
		{119, 1},
		{119, 1},
		{119, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{116, 1},
		{118, 1},
		{118, 1},
		{118, 1},
		{118, 1},
		{118, 1},
		{118, 1},
		{118, 1},
		{115, 1},
		{115, 1},
		{115, 1},
		{115, 1},
		{115, 1},
		{115, 1},
		{113, 1},
		{113, 1},
		{114, 1},
		{114, 1},
		{114, 1},
		{114, 1},
		{103, 1},
		{103, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{109, 1},
		{122, 1},
		{122, 1},
		{105, 1},
		{105, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
		{95, 1},
	}

	yyhintXErrors = map[yyhintXError]string{}

	yyhintParseTab = [320][]uint16{
		// 0
		{1: 297, 255, 248, 250, 285, 293, 269, 271, 272, 274, 243, 283, 301, 262, 258, 275, 267, 261, 257, 266, 226, 245, 246, 247, 273, 298, 233, 238, 260, 294, 295, 276, 249, 251, 304, 270, 278, 263, 259, 299, 268, 252, 277, 287, 279, 289, 281, 254, 265, 234, 286, 237, 242, 300, 244, 236, 288, 303, 235, 256, 280, 253, 302, 296, 264, 239, 291, 282, 284, 292, 290, 305, 103: 240, 108: 227, 241, 112: 225, 232, 115: 231, 229, 224, 230, 228, 127: 223, 222},
		{93: 221},
		{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, 412, 93: 220, 97: 538},
		{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, 93: 219},
		{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, 93: 217},
		// 5
		{92: 535},
		{92: 532},
		{92: 529},
		{92: 524},
		{92: 521},
		// 10
		{92: 510},
		{92: 498},
		{92: 494},
		{92: 490},
		{92: 485},
		// 15
		{92: 482},
		{92: 470},
		{92: 463},
		{92: 458},
		{92: 452},
		// 20
		{92: 449},
		{92: 443},
		{92: 423},
		{92: 306},
		{92: 153},
		// 25
		{92: 152},
		{92: 151},
		{92: 150},
		{92: 149},
		{92: 148},
		// 30
		{92: 147},
		{92: 146},
		{92: 145},
		{92: 144},
		{92: 143},
		// 35
		{92: 142},
		{92: 141},
		{92: 140},
		{92: 139},
		{92: 138},
		// 40
		{92: 137},
		{92: 136},
		{92: 135},
		{92: 134},
		{92: 133},
		// 45
		{92: 132},
		{92: 131},
		{92: 130},
		{92: 129},
		{92: 128},
		// 50
		{92: 127},
		{92: 126},
		{92: 125},
		{92: 124},
		{92: 123},
		// 55
		{92: 122},
		{92: 121},
		{92: 120},
		{92: 119},
		{92: 118},
		// 60
		{92: 117},
		{92: 116},
		{92: 115},
		{92: 114},
		{92: 113},
		// 65
		{92: 112},
		{92: 111},
		{92: 110},
		{92: 109},
		{92: 104},
		// 70
		{92: 103},
		{92: 102},
		{92: 101},
		{92: 100},
		{92: 99},
		// 75
		{92: 98},
		{92: 97},
		{92: 96},
		{92: 95},
		{92: 94},
		// 80
		{92: 93},
		{92: 92},
		{92: 91},
		{92: 90},
		{92: 89},
		// 85
		{78: 189, 189, 86: 308, 94: 307},
		{78: 313, 312, 105: 311, 310, 123: 309},
		{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, 87: 188, 188, 188, 188},
		{420, 73: 421},
		{192, 73: 192},
		// 90
		{100: 314},
		{100: 86},
		{100: 85},
		{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, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 316, 99: 315},
		{73: 418, 88: 417},
		// 95
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 318, 98: 317},
		{179, 73: 179, 88: 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, 308, 88: 189, 404, 189, 94: 403},
		{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},
		// 100
		{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},
		{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},
		{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},
		// 105
		{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},
		{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},
		{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},
		// 110
		{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},
		{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},
		{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},
		// 115
		{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},
		{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},
		{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},
		// 120
		{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},
		{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},
		{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},
		// 125
		{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},
		{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},
		{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},
		// 130
		{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},
		{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},
		{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},
		// 135
		{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},
		{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},
		{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},
		// 140
		{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},
		{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},
		{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},
		// 145
		{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},
		{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},
		{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},
		// 150
		{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},
		{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},
		{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},
		// 155
		{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},
		{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},
		{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},
		// 160
		{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},
		{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},
		{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},
		// 165
		{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},
		{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},
		{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},
		// 170
		{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},
		{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},
		{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},
		// 175
		{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},
		{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},
		{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},
		// 180
		{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},
		{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, 88: 185, 90: 407, 111: 416},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 405},
		{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 88: 189, 90: 189, 94: 406},
		// 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, 88: 185, 90: 407, 111: 408},
		{92: 409},
		{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, 88: 176},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 411, 110: 410},
		{413, 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, 412, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 97: 414},
		// 190
		{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, 74: 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 87: 186, 96: 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, 88: 184},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 415},
		{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, 87: 182},
		// 195
		{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, 88: 177},
		{190, 73: 190},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 318, 98: 419},
		{178, 73: 178, 88: 178},
		{1: 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 93: 193},
		// 200
		{78: 313, 312, 105: 311, 422},
		{191, 73: 191},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 308, 189, 94: 424, 426, 110: 425},
		{87: 441},
		{437, 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, 412, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 87: 187, 97: 438},
		// 205
		{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, 87: 183, 91: 427},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 87: 431, 95: 430, 429, 101: 432, 433, 120: 428},
		{436},
		{162},
		{161},
		// 210
		{160},
		{87: 435},
		{87: 434},
		{158},
		{159},
		// 215
		{1: 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 93: 194},
		{1: 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 93: 196},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 87: 439, 95: 415},
		{440},
		{1: 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 93: 195},
		// 220
		{442},
		{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, 93: 197},
		{81: 189, 189, 86: 308, 94: 444},
		{81: 446, 447, 122: 445},
		{448},
		// 225
		{88},
		{87},
		{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, 93: 198},
		{189, 86: 308, 94: 450},
		{451},
		// 230
		{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, 93: 199},
		{80: 189, 83: 189, 86: 308, 94: 453},
		{80: 456, 83: 455, 124: 454},
		{457},
		{155},
		// 235
		{154},
		{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, 93: 200},
		{96: 459},
		{73: 412, 96: 187, 460},
		{96: 461},
		// 240
		{462},
		{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, 93: 201},
		{86: 308, 189, 94: 464},
		{87: 465},
		{84: 468, 467, 131: 466},
		// 245
		{469},
		{157},
		{156},
		{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, 93: 202},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 471},
		// 250
		{472, 73: 473},
		{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, 93: 204},
		{189, 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 308, 89: 189, 94: 477, 476, 121: 475, 132: 474},
		{479, 89: 480},
		{174, 89: 174},
		// 255
		{189, 86: 308, 89: 189, 94: 478},
		{172, 89: 172},
		{173, 89: 173},
		{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, 93: 203},
		{189, 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 308, 89: 189, 94: 477, 476, 121: 481},
		// 260
		{175, 89: 175},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 483},
		{484},
		{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, 93: 205},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 486},
		// 265
		{91: 487},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 87: 431, 95: 430, 429, 101: 432, 433, 120: 488},
		{489},
		{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, 93: 206},
		{86: 308, 189, 94: 491},
		// 270
		{87: 492},
		{493},
		{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, 93: 207},
		{86: 308, 189, 94: 495},
		{87: 496},
		// 275
		{497},
		{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, 93: 208},
		{189, 74: 189, 189, 189, 189, 86: 308, 94: 499},
		{166, 74: 503, 504, 505, 506, 114: 502, 129: 501, 500},
		{509},
		// 280
		{165, 73: 507},
		{164, 73: 164},
		{108, 73: 108},
		{107, 73: 107},
		{106, 73: 106},
		// 285
		{105, 73: 105},
		{74: 503, 504, 505, 506, 114: 508},
		{163, 73: 163},
		{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, 93: 209},
		{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, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 512, 104: 511},
		// 290
		{520},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 318, 98: 513},
		{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, 412, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 97: 514},
		{170, 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 517, 125: 516, 515},
		{171},
		// 295
		{169, 73: 518},
		{168, 73: 168},
		{1: 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 519},
		{167, 73: 167},
		{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, 93: 210},
		// 300
		{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, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 512, 104: 522},
		{523},
		{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, 93: 211},
		{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 527, 99: 526, 107: 525},
		{528},
		// 305
		{181, 73: 418},
		{180, 349, 372, 324, 326, 385, 352, 328, 329, 330, 348, 319, 355, 351, 357, 360, 334, 363, 356, 359, 362, 320, 321, 322, 323, 387, 350, 344, 365, 332, 353, 354, 336, 325, 327, 389, 331, 338, 358, 361, 335, 364, 333, 337, 379, 339, 343, 341, 371, 366, 384, 378, 347, 367, 368, 369, 346, 342, 388, 345, 373, 340, 370, 386, 374, 375, 382, 383, 377, 376, 380, 381, 390, 74: 399, 400, 401, 402, 394, 393, 395, 391, 392, 396, 398, 397, 95: 318, 98: 317},
		{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, 93: 212},
		{189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 527, 99: 526, 107: 530},
		{531},
		// 310
		{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, 93: 213},
		{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, 74: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 308, 94: 316, 99: 533},
		{534, 73: 418},
		{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, 93: 214},
		{189, 86: 308, 94: 536},
		// 315
		{537},
		{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, 93: 215},
		{1: 297, 255, 248, 250, 285, 293, 269, 271, 272, 274, 243, 283, 301, 262, 258, 275, 267, 261, 257, 266, 226, 245, 246, 247, 273, 298, 233, 238, 260, 294, 295, 276, 249, 251, 304, 270, 278, 263, 259, 299, 268, 252, 277, 287, 279, 289, 281, 254, 265, 234, 286, 237, 242, 300, 244, 236, 288, 303, 235, 256, 280, 253, 302, 296, 264, 239, 291, 282, 284, 292, 290, 305, 103: 240, 108: 227, 241, 112: 540, 232, 115: 231, 229, 539, 230, 228},
		{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, 93: 218},
		{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, 93: 216},
	}
)

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 = 134

	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 = model.NewCIStr(yyS[yypt-3].ident)
			parser.yyVAL.hint = h
		}
	case 10:
		{
			parser.warnUnsupportedHint(yyS[yypt-3].ident)
			parser.yyVAL.hint = nil
		}
	case 11:
		{
			h := yyS[yypt-1].hint
			h.HintName = model.NewCIStr(yyS[yypt-3].ident)
			parser.yyVAL.hint = h
		}
	case 12:
		{
			parser.warnUnsupportedHint(yyS[yypt-4].ident)
			parser.yyVAL.hint = nil
		}
	case 13:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-4].ident),
				QBName:   model.NewCIStr(yyS[yypt-2].ident),
				HintData: yyS[yypt-1].number,
			}
		}
	case 14:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-4].ident),
				QBName:   model.NewCIStr(yyS[yypt-2].ident),
				HintData: int64(yyS[yypt-1].number),
			}
		}
	case 15:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-5].ident),
				HintData: ast.HintSetVar{
					VarName: yyS[yypt-3].ident,
					Value:   yyS[yypt-1].ident,
				},
			}
		}
	case 16:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-3].ident),
				HintData: yyS[yypt-1].ident,
			}
		}
	case 17:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-3].ident),
				QBName:   model.NewCIStr(yyS[yypt-1].ident),
			}
		}
	case 18:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-5].ident),
				QBName:   model.NewCIStr(yyS[yypt-3].ident),
				Tables:   yyS[yypt-1].hint.Tables,
			}
		}
	case 19:
		{
			maxValue := uint64(math.MaxInt64) / yyS[yypt-1].number
			if yyS[yypt-2].number <= maxValue {
				parser.yyVAL.hint = &ast.TableOptimizerHint{
					HintName: model.NewCIStr(yyS[yypt-5].ident),
					HintData: int64(yyS[yypt-2].number * yyS[yypt-1].number),
					QBName:   model.NewCIStr(yyS[yypt-3].ident),
				}
			} else {
				yylex.AppendError(ErrWarnMemoryQuotaOverflow.GenWithStackByArgs(math.MaxInt64))
				parser.lastErrorAsWarn()
				parser.yyVAL.hint = nil
			}
		}
	case 20:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-5].ident),
				HintData: ast.HintTimeRange{
					From: yyS[yypt-3].ident,
					To:   yyS[yypt-1].ident,
				},
			}
		}
	case 21:
		{
			h := yyS[yypt-1].hint
			h.HintName = model.NewCIStr(yyS[yypt-4].ident)
			h.QBName = model.NewCIStr(yyS[yypt-2].ident)
			parser.yyVAL.hint = h
		}
	case 22:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-3].ident),
				QBName:   model.NewCIStr(yyS[yypt-1].ident),
			}
		}
	case 23:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: model.NewCIStr(yyS[yypt-4].ident),
				QBName:   model.NewCIStr(yyS[yypt-2].ident),
				HintData: model.NewCIStr(yyS[yypt-1].ident),
			}
		}
	case 24:
		{
			parser.warnUnsupportedHint(yyS[yypt-4].ident)
			parser.yyVAL.hint = nil
		}
	case 25:
		{
			parser.warnUnsupportedHint(yyS[yypt-3].ident)
			parser.yyVAL.hint = nil
		}
	case 26:
		{
			parser.warnUnsupportedHint(yyS[yypt-5].ident)
			parser.yyVAL.hint = nil
		}
	case 27:
		{
			parser.warnUnsupportedHint(yyS[yypt-5].ident)
			parser.yyVAL.hint = nil
		}
	case 28:
		{
			hs := yyS[yypt-1].hints
			name := model.NewCIStr(yyS[yypt-4].ident)
			qb := model.NewCIStr(yyS[yypt-2].ident)
			for _, h := range hs {
				h.HintName = name
				h.QBName = qb
			}
			parser.yyVAL.hints = hs
		}
	case 29:
		{
			parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
		}
	case 30:
		{
			parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
		}
	case 31:
		{
			h := yyS[yypt-1].hint
			h.HintData = model.NewCIStr(yyS[yypt-3].ident)
			parser.yyVAL.hint = h
		}
	case 32:
		{
			parser.yyVAL.ident = ""
		}
	case 36:
		{
			parser.yyVAL.modelIdents = nil
		}
	case 37:
		{
			parser.yyVAL.modelIdents = yyS[yypt-1].modelIdents
		}
	case 38:
		{
			parser.yyVAL.modelIdents = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)}
		}
	case 39:
		{
			parser.yyVAL.modelIdents = append(yyS[yypt-2].modelIdents, model.NewCIStr(yyS[yypt-0].ident))
		}
	case 41:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				QBName: model.NewCIStr(yyS[yypt-0].ident),
			}
		}
	case 42:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				Tables: []ast.HintTable{yyS[yypt-0].table},
				QBName: model.NewCIStr(yyS[yypt-1].ident),
			}
		}
	case 43:
		{
			h := yyS[yypt-2].hint
			h.Tables = append(h.Tables, yyS[yypt-0].table)
			parser.yyVAL.hint = h
		}
	case 44:
		{
			parser.yyVAL.table = ast.HintTable{
				TableName:     model.NewCIStr(yyS[yypt-2].ident),
				QBName:        model.NewCIStr(yyS[yypt-1].ident),
				PartitionList: yyS[yypt-0].modelIdents,
			}
		}
	case 45:
		{
			parser.yyVAL.table = ast.HintTable{
				DBName:        model.NewCIStr(yyS[yypt-4].ident),
				TableName:     model.NewCIStr(yyS[yypt-2].ident),
				QBName:        model.NewCIStr(yyS[yypt-1].ident),
				PartitionList: yyS[yypt-0].modelIdents,
			}
		}
	case 46:
		{
			h := yyS[yypt-2].hint
			h.Tables = append(h.Tables, yyS[yypt-0].table)
			parser.yyVAL.hint = h
		}
	case 47:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				Tables: []ast.HintTable{yyS[yypt-0].table},
			}
		}
	case 48:
		{
			parser.yyVAL.table = ast.HintTable{
				TableName: model.NewCIStr(yyS[yypt-1].ident),
				QBName:    model.NewCIStr(yyS[yypt-0].ident),
			}
		}
	case 49:
		{
			parser.yyVAL.table = ast.HintTable{
				QBName: model.NewCIStr(yyS[yypt-0].ident),
			}
		}
	case 50:
		{
			h := yyS[yypt-0].hint
			h.Tables = []ast.HintTable{yyS[yypt-2].table}
			h.QBName = model.NewCIStr(yyS[yypt-3].ident)
			parser.yyVAL.hint = h
		}
	case 51:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{}
		}
	case 53:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				Indexes: []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)},
			}
		}
	case 54:
		{
			h := yyS[yypt-2].hint
			h.Indexes = append(h.Indexes, model.NewCIStr(yyS[yypt-0].ident))
			parser.yyVAL.hint = h
		}
	case 61:
		{
			parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
		}
	case 62:
		{
			parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
		}
	case 63:
		{
			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 64:
		{
			parser.yyVAL.number = 1024 * 1024
		}
	case 65:
		{
			parser.yyVAL.number = 1024 * 1024 * 1024
		}
	case 66:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: true}
		}
	case 67:
		{
			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 */
}
