// 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/abbychau/mysql-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
}

type yyhintXError struct {
	state, xsym int
}

const (
	yyhintDefault             = 57434
	yyhintEOFCode             = 57344
	yyhintErrCode             = 57345
	hintAggToCop              = 57380
	hintBCJoin                = 57402
	hintBKA                   = 57355
	hintBNL                   = 57357
	hintDupsWeedOut           = 57430
	hintFalse                 = 57426
	hintFirstMatch            = 57431
	hintForceIndex            = 57416
	hintGB                    = 57429
	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             = 57432
	hintMB                    = 57428
	hintMRR                   = 57367
	hintMaterialization       = 57433
	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                  = 57421
	hintOLTP                  = 57422
	hintOrderIndex            = 57408
	hintPartition             = 57423
	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               = 57425
	hintTiKV                  = 57424
	hintTimeRange             = 57412
	hintTrue                  = 57427
	hintUseCascades           = 57413
	hintUseIndex              = 57407
	hintUseIndexMerge         = 57406
	hintUsePlanCache          = 57410
	hintUseToja               = 57411

	yyhintMaxDepth = 200
	yyhintTabOfs   = -219
)

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

	yyhintXErrors = map[yyhintXError]string{}

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

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

	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:
		{
			parser.warnUnsupportedHint(yyS[yypt-3].ident)
			parser.yyVAL.hint = nil
		}
	case 11:
		{
			h := yyS[yypt-1].hint
			h.HintName = ast.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: ast.NewCIStr(yyS[yypt-4].ident),
				QBName:   ast.NewCIStr(yyS[yypt-2].ident),
				HintData: yyS[yypt-1].number,
			}
		}
	case 14:
		{
			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 15:
		{
			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 16:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: ast.NewCIStr(yyS[yypt-3].ident),
				HintData: yyS[yypt-1].ident,
			}
		}
	case 17:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: ast.NewCIStr(yyS[yypt-3].ident),
				QBName:   ast.NewCIStr(yyS[yypt-1].ident),
			}
		}
	case 18:
		{
			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 19:
		{
			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 20:
		{
			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 21:
		{
			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 22:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				HintName: ast.NewCIStr(yyS[yypt-3].ident),
				QBName:   ast.NewCIStr(yyS[yypt-1].ident),
			}
		}
	case 23:
		{
			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 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 := 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 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 = ast.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 = []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)}
		}
	case 39:
		{
			parser.yyVAL.modelIdents = append(yyS[yypt-2].modelIdents, ast.NewCIStr(yyS[yypt-0].ident))
		}
	case 41:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				QBName: ast.NewCIStr(yyS[yypt-0].ident),
			}
		}
	case 42:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				Tables: []ast.HintTable{yyS[yypt-0].table},
				QBName: ast.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:     ast.NewCIStr(yyS[yypt-2].ident),
				QBName:        ast.NewCIStr(yyS[yypt-1].ident),
				PartitionList: yyS[yypt-0].modelIdents,
			}
		}
	case 45:
		{
			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 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: ast.NewCIStr(yyS[yypt-1].ident),
				QBName:    ast.NewCIStr(yyS[yypt-0].ident),
			}
		}
	case 49:
		{
			parser.yyVAL.table = ast.HintTable{
				QBName: ast.NewCIStr(yyS[yypt-0].ident),
			}
		}
	case 50:
		{
			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 51:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{}
		}
	case 53:
		{
			parser.yyVAL.hint = &ast.TableOptimizerHint{
				Indexes: []ast.CIStr{ast.NewCIStr(yyS[yypt-0].ident)},
			}
		}
	case 54:
		{
			h := yyS[yypt-2].hint
			h.Indexes = append(h.Indexes, ast.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 */
}
