github.com/pingcap/tidb/parser@v0.0.0-20231013125129-93a834a6bf8d/hintparser.go (about)

     1  // Code generated by goyacc DO NOT EDIT.
     2  
     3  // Copyright 2020 PingCAP, Inc.
     4  //
     5  // Licensed under the Apache License, Version 2.0 (the "License");
     6  // you may not use this file except in compliance with the License.
     7  // You may obtain a copy of the License at
     8  //
     9  //     http://www.apache.org/licenses/LICENSE-2.0
    10  //
    11  // Unless required by applicable law or agreed to in writing, software
    12  // distributed under the License is distributed on an "AS IS" BASIS,
    13  // See the License for the specific language governing permissions and
    14  // limitations under the License.
    15  
    16  package parser
    17  
    18  import __yyfmt__ "fmt"
    19  
    20  import (
    21  	"math"
    22  	"strconv"
    23  
    24  	"github.com/pingcap/tidb/parser/ast"
    25  	"github.com/pingcap/tidb/parser/model"
    26  )
    27  
    28  type yyhintSymType struct {
    29  	yys         int
    30  	offset      int
    31  	ident       string
    32  	number      uint64
    33  	hint        *ast.TableOptimizerHint
    34  	hints       []*ast.TableOptimizerHint
    35  	table       ast.HintTable
    36  	modelIdents []model.CIStr
    37  }
    38  
    39  type yyhintXError struct {
    40  	state, xsym int
    41  }
    42  
    43  const (
    44  	yyhintDefault             = 57433
    45  	yyhintEOFCode             = 57344
    46  	yyhintErrCode             = 57345
    47  	hintAggToCop              = 57379
    48  	hintBCJoin                = 57401
    49  	hintBKA                   = 57355
    50  	hintBNL                   = 57357
    51  	hintDupsWeedOut           = 57429
    52  	hintFalse                 = 57425
    53  	hintFirstMatch            = 57430
    54  	hintForceIndex            = 57415
    55  	hintGB                    = 57428
    56  	hintHashAgg               = 57381
    57  	hintHashJoin              = 57359
    58  	hintHashJoinBuild         = 57360
    59  	hintHashJoinProbe         = 57361
    60  	hintIdentifier            = 57347
    61  	hintIgnoreIndex           = 57384
    62  	hintIgnorePlanCache       = 57380
    63  	hintIndexHashJoin         = 57388
    64  	hintIndexJoin             = 57385
    65  	hintIndexMerge            = 57365
    66  	hintIndexMergeJoin        = 57392
    67  	hintInlHashJoin           = 57387
    68  	hintInlJoin               = 57390
    69  	hintInlMergeJoin          = 57391
    70  	hintIntLit                = 57346
    71  	hintInvalid               = 57348
    72  	hintJoinFixedOrder        = 57351
    73  	hintJoinOrder             = 57352
    74  	hintJoinPrefix            = 57353
    75  	hintJoinSuffix            = 57354
    76  	hintLeading               = 57417
    77  	hintLimitToCop            = 57414
    78  	hintLooseScan             = 57431
    79  	hintMB                    = 57427
    80  	hintMRR                   = 57367
    81  	hintMaterialization       = 57432
    82  	hintMaxExecutionTime      = 57375
    83  	hintMemoryQuota           = 57394
    84  	hintMerge                 = 57363
    85  	hintMpp1PhaseAgg          = 57382
    86  	hintMpp2PhaseAgg          = 57383
    87  	hintNoBKA                 = 57356
    88  	hintNoBNL                 = 57358
    89  	hintNoDecorrelate         = 57419
    90  	hintNoHashJoin            = 57362
    91  	hintNoICP                 = 57369
    92  	hintNoIndexHashJoin       = 57389
    93  	hintNoIndexJoin           = 57386
    94  	hintNoIndexMerge          = 57366
    95  	hintNoIndexMergeJoin      = 57393
    96  	hintNoMRR                 = 57368
    97  	hintNoMerge               = 57364
    98  	hintNoOrderIndex          = 57408
    99  	hintNoRangeOptimization   = 57370
   100  	hintNoSMJoin              = 57400
   101  	hintNoSemijoin            = 57374
   102  	hintNoSkipScan            = 57372
   103  	hintNoSwapJoinInputs      = 57395
   104  	hintNthPlan               = 57413
   105  	hintOLAP                  = 57420
   106  	hintOLTP                  = 57421
   107  	hintOrderIndex            = 57407
   108  	hintPartition             = 57422
   109  	hintQBName                = 57378
   110  	hintQueryType             = 57396
   111  	hintReadConsistentReplica = 57397
   112  	hintReadFromStorage       = 57398
   113  	hintResourceGroup         = 57377
   114  	hintSMJoin                = 57399
   115  	hintSemiJoinRewrite       = 57418
   116  	hintSemijoin              = 57373
   117  	hintSetVar                = 57376
   118  	hintShuffleJoin           = 57402
   119  	hintSingleAtIdentifier    = 57349
   120  	hintSkipScan              = 57371
   121  	hintStraightJoin          = 57416
   122  	hintStreamAgg             = 57403
   123  	hintStringLit             = 57350
   124  	hintSwapJoinInputs        = 57404
   125  	hintTiFlash               = 57424
   126  	hintTiKV                  = 57423
   127  	hintTimeRange             = 57411
   128  	hintTrue                  = 57426
   129  	hintUseCascades           = 57412
   130  	hintUseIndex              = 57406
   131  	hintUseIndexMerge         = 57405
   132  	hintUsePlanCache          = 57409
   133  	hintUseToja               = 57410
   134  
   135  	yyhintMaxDepth = 200
   136  	yyhintTabOfs   = -213
   137  )
   138  
   139  var (
   140  	yyhintXLAT = map[int]int{
   141  		41:    0,   // ')' (157x)
   142  		57379: 1,   // hintAggToCop (142x)
   143  		57401: 2,   // hintBCJoin (142x)
   144  		57355: 3,   // hintBKA (142x)
   145  		57357: 4,   // hintBNL (142x)
   146  		57415: 5,   // hintForceIndex (142x)
   147  		57381: 6,   // hintHashAgg (142x)
   148  		57359: 7,   // hintHashJoin (142x)
   149  		57360: 8,   // hintHashJoinBuild (142x)
   150  		57361: 9,   // hintHashJoinProbe (142x)
   151  		57384: 10,  // hintIgnoreIndex (142x)
   152  		57380: 11,  // hintIgnorePlanCache (142x)
   153  		57388: 12,  // hintIndexHashJoin (142x)
   154  		57385: 13,  // hintIndexJoin (142x)
   155  		57365: 14,  // hintIndexMerge (142x)
   156  		57392: 15,  // hintIndexMergeJoin (142x)
   157  		57387: 16,  // hintInlHashJoin (142x)
   158  		57390: 17,  // hintInlJoin (142x)
   159  		57391: 18,  // hintInlMergeJoin (142x)
   160  		57351: 19,  // hintJoinFixedOrder (142x)
   161  		57352: 20,  // hintJoinOrder (142x)
   162  		57353: 21,  // hintJoinPrefix (142x)
   163  		57354: 22,  // hintJoinSuffix (142x)
   164  		57417: 23,  // hintLeading (142x)
   165  		57414: 24,  // hintLimitToCop (142x)
   166  		57375: 25,  // hintMaxExecutionTime (142x)
   167  		57394: 26,  // hintMemoryQuota (142x)
   168  		57363: 27,  // hintMerge (142x)
   169  		57382: 28,  // hintMpp1PhaseAgg (142x)
   170  		57383: 29,  // hintMpp2PhaseAgg (142x)
   171  		57367: 30,  // hintMRR (142x)
   172  		57356: 31,  // hintNoBKA (142x)
   173  		57358: 32,  // hintNoBNL (142x)
   174  		57419: 33,  // hintNoDecorrelate (142x)
   175  		57362: 34,  // hintNoHashJoin (142x)
   176  		57369: 35,  // hintNoICP (142x)
   177  		57389: 36,  // hintNoIndexHashJoin (142x)
   178  		57386: 37,  // hintNoIndexJoin (142x)
   179  		57366: 38,  // hintNoIndexMerge (142x)
   180  		57393: 39,  // hintNoIndexMergeJoin (142x)
   181  		57364: 40,  // hintNoMerge (142x)
   182  		57368: 41,  // hintNoMRR (142x)
   183  		57408: 42,  // hintNoOrderIndex (142x)
   184  		57370: 43,  // hintNoRangeOptimization (142x)
   185  		57374: 44,  // hintNoSemijoin (142x)
   186  		57372: 45,  // hintNoSkipScan (142x)
   187  		57400: 46,  // hintNoSMJoin (142x)
   188  		57395: 47,  // hintNoSwapJoinInputs (142x)
   189  		57413: 48,  // hintNthPlan (142x)
   190  		57407: 49,  // hintOrderIndex (142x)
   191  		57378: 50,  // hintQBName (142x)
   192  		57396: 51,  // hintQueryType (142x)
   193  		57397: 52,  // hintReadConsistentReplica (142x)
   194  		57398: 53,  // hintReadFromStorage (142x)
   195  		57377: 54,  // hintResourceGroup (142x)
   196  		57373: 55,  // hintSemijoin (142x)
   197  		57418: 56,  // hintSemiJoinRewrite (142x)
   198  		57376: 57,  // hintSetVar (142x)
   199  		57402: 58,  // hintShuffleJoin (142x)
   200  		57371: 59,  // hintSkipScan (142x)
   201  		57399: 60,  // hintSMJoin (142x)
   202  		57416: 61,  // hintStraightJoin (142x)
   203  		57403: 62,  // hintStreamAgg (142x)
   204  		57404: 63,  // hintSwapJoinInputs (142x)
   205  		57411: 64,  // hintTimeRange (142x)
   206  		57412: 65,  // hintUseCascades (142x)
   207  		57406: 66,  // hintUseIndex (142x)
   208  		57405: 67,  // hintUseIndexMerge (142x)
   209  		57409: 68,  // hintUsePlanCache (142x)
   210  		57410: 69,  // hintUseToja (142x)
   211  		44:    70,  // ',' (139x)
   212  		57429: 71,  // hintDupsWeedOut (119x)
   213  		57430: 72,  // hintFirstMatch (119x)
   214  		57431: 73,  // hintLooseScan (119x)
   215  		57432: 74,  // hintMaterialization (119x)
   216  		57424: 75,  // hintTiFlash (119x)
   217  		57423: 76,  // hintTiKV (119x)
   218  		57425: 77,  // hintFalse (118x)
   219  		57420: 78,  // hintOLAP (118x)
   220  		57421: 79,  // hintOLTP (118x)
   221  		57426: 80,  // hintTrue (118x)
   222  		57428: 81,  // hintGB (117x)
   223  		57427: 82,  // hintMB (117x)
   224  		57347: 83,  // hintIdentifier (116x)
   225  		57349: 84,  // hintSingleAtIdentifier (102x)
   226  		93:    85,  // ']' (93x)
   227  		46:    86,  // '.' (92x)
   228  		57422: 87,  // hintPartition (87x)
   229  		61:    88,  // '=' (83x)
   230  		40:    89,  // '(' (78x)
   231  		57344: 90,  // $end (25x)
   232  		57453: 91,  // QueryBlockOpt (20x)
   233  		57445: 92,  // Identifier (15x)
   234  		57346: 93,  // hintIntLit (10x)
   235  		57350: 94,  // hintStringLit (5x)
   236  		57435: 95,  // CommaOpt (4x)
   237  		57441: 96,  // HintTable (4x)
   238  		57442: 97,  // HintTableList (4x)
   239  		91:    98,  // '[' (3x)
   240  		57434: 99,  // BooleanHintName (2x)
   241  		57436: 100, // HintIndexList (2x)
   242  		57438: 101, // HintStorageType (2x)
   243  		57439: 102, // HintStorageTypeAndTable (2x)
   244  		57443: 103, // HintTableListOpt (2x)
   245  		57448: 104, // JoinOrderOptimizerHintName (2x)
   246  		57449: 105, // NullaryHintName (2x)
   247  		57452: 106, // PartitionListOpt (2x)
   248  		57455: 107, // StorageOptimizerHintOpt (2x)
   249  		57456: 108, // SubqueryOptimizerHintName (2x)
   250  		57459: 109, // SubqueryStrategy (2x)
   251  		57460: 110, // SupportedIndexLevelOptimizerHintName (2x)
   252  		57461: 111, // SupportedTableLevelOptimizerHintName (2x)
   253  		57462: 112, // TableOptimizerHintOpt (2x)
   254  		57464: 113, // UnsupportedIndexLevelOptimizerHintName (2x)
   255  		57465: 114, // UnsupportedTableLevelOptimizerHintName (2x)
   256  		57467: 115, // ViewName (2x)
   257  		43:    116, // '+' (1x)
   258  		45:    117, // '-' (1x)
   259  		57437: 118, // HintQueryType (1x)
   260  		57440: 119, // HintStorageTypeAndTableList (1x)
   261  		57444: 120, // HintTrueOrFalse (1x)
   262  		57446: 121, // IndexNameList (1x)
   263  		57447: 122, // IndexNameListOpt (1x)
   264  		57450: 123, // OptimizerHintList (1x)
   265  		57451: 124, // PartitionList (1x)
   266  		57454: 125, // Start (1x)
   267  		57457: 126, // SubqueryStrategies (1x)
   268  		57458: 127, // SubqueryStrategiesOpt (1x)
   269  		57463: 128, // UnitOfBytes (1x)
   270  		57466: 129, // Value (1x)
   271  		57468: 130, // ViewNameList (1x)
   272  		57433: 131, // $default (0x)
   273  		57345: 132, // error (0x)
   274  		57348: 133, // hintInvalid (0x)
   275  	}
   276  
   277  	yyhintSymNames = []string{
   278  		"')'",
   279  		"hintAggToCop",
   280  		"hintBCJoin",
   281  		"hintBKA",
   282  		"hintBNL",
   283  		"hintForceIndex",
   284  		"hintHashAgg",
   285  		"hintHashJoin",
   286  		"hintHashJoinBuild",
   287  		"hintHashJoinProbe",
   288  		"hintIgnoreIndex",
   289  		"hintIgnorePlanCache",
   290  		"hintIndexHashJoin",
   291  		"hintIndexJoin",
   292  		"hintIndexMerge",
   293  		"hintIndexMergeJoin",
   294  		"hintInlHashJoin",
   295  		"hintInlJoin",
   296  		"hintInlMergeJoin",
   297  		"hintJoinFixedOrder",
   298  		"hintJoinOrder",
   299  		"hintJoinPrefix",
   300  		"hintJoinSuffix",
   301  		"hintLeading",
   302  		"hintLimitToCop",
   303  		"hintMaxExecutionTime",
   304  		"hintMemoryQuota",
   305  		"hintMerge",
   306  		"hintMpp1PhaseAgg",
   307  		"hintMpp2PhaseAgg",
   308  		"hintMRR",
   309  		"hintNoBKA",
   310  		"hintNoBNL",
   311  		"hintNoDecorrelate",
   312  		"hintNoHashJoin",
   313  		"hintNoICP",
   314  		"hintNoIndexHashJoin",
   315  		"hintNoIndexJoin",
   316  		"hintNoIndexMerge",
   317  		"hintNoIndexMergeJoin",
   318  		"hintNoMerge",
   319  		"hintNoMRR",
   320  		"hintNoOrderIndex",
   321  		"hintNoRangeOptimization",
   322  		"hintNoSemijoin",
   323  		"hintNoSkipScan",
   324  		"hintNoSMJoin",
   325  		"hintNoSwapJoinInputs",
   326  		"hintNthPlan",
   327  		"hintOrderIndex",
   328  		"hintQBName",
   329  		"hintQueryType",
   330  		"hintReadConsistentReplica",
   331  		"hintReadFromStorage",
   332  		"hintResourceGroup",
   333  		"hintSemijoin",
   334  		"hintSemiJoinRewrite",
   335  		"hintSetVar",
   336  		"hintShuffleJoin",
   337  		"hintSkipScan",
   338  		"hintSMJoin",
   339  		"hintStraightJoin",
   340  		"hintStreamAgg",
   341  		"hintSwapJoinInputs",
   342  		"hintTimeRange",
   343  		"hintUseCascades",
   344  		"hintUseIndex",
   345  		"hintUseIndexMerge",
   346  		"hintUsePlanCache",
   347  		"hintUseToja",
   348  		"','",
   349  		"hintDupsWeedOut",
   350  		"hintFirstMatch",
   351  		"hintLooseScan",
   352  		"hintMaterialization",
   353  		"hintTiFlash",
   354  		"hintTiKV",
   355  		"hintFalse",
   356  		"hintOLAP",
   357  		"hintOLTP",
   358  		"hintTrue",
   359  		"hintGB",
   360  		"hintMB",
   361  		"hintIdentifier",
   362  		"hintSingleAtIdentifier",
   363  		"']'",
   364  		"'.'",
   365  		"hintPartition",
   366  		"'='",
   367  		"'('",
   368  		"$end",
   369  		"QueryBlockOpt",
   370  		"Identifier",
   371  		"hintIntLit",
   372  		"hintStringLit",
   373  		"CommaOpt",
   374  		"HintTable",
   375  		"HintTableList",
   376  		"'['",
   377  		"BooleanHintName",
   378  		"HintIndexList",
   379  		"HintStorageType",
   380  		"HintStorageTypeAndTable",
   381  		"HintTableListOpt",
   382  		"JoinOrderOptimizerHintName",
   383  		"NullaryHintName",
   384  		"PartitionListOpt",
   385  		"StorageOptimizerHintOpt",
   386  		"SubqueryOptimizerHintName",
   387  		"SubqueryStrategy",
   388  		"SupportedIndexLevelOptimizerHintName",
   389  		"SupportedTableLevelOptimizerHintName",
   390  		"TableOptimizerHintOpt",
   391  		"UnsupportedIndexLevelOptimizerHintName",
   392  		"UnsupportedTableLevelOptimizerHintName",
   393  		"ViewName",
   394  		"'+'",
   395  		"'-'",
   396  		"HintQueryType",
   397  		"HintStorageTypeAndTableList",
   398  		"HintTrueOrFalse",
   399  		"IndexNameList",
   400  		"IndexNameListOpt",
   401  		"OptimizerHintList",
   402  		"PartitionList",
   403  		"Start",
   404  		"SubqueryStrategies",
   405  		"SubqueryStrategiesOpt",
   406  		"UnitOfBytes",
   407  		"Value",
   408  		"ViewNameList",
   409  		"$default",
   410  		"error",
   411  		"hintInvalid",
   412  	}
   413  
   414  	yyhintReductions = []struct{ xsym, components int }{
   415  		{0, 1},
   416  		{125, 1},
   417  		{123, 1},
   418  		{123, 3},
   419  		{123, 1},
   420  		{123, 3},
   421  		{112, 4},
   422  		{112, 4},
   423  		{112, 4},
   424  		{112, 4},
   425  		{112, 4},
   426  		{112, 4},
   427  		{112, 5},
   428  		{112, 5},
   429  		{112, 5},
   430  		{112, 6},
   431  		{112, 4},
   432  		{112, 4},
   433  		{112, 6},
   434  		{112, 6},
   435  		{112, 6},
   436  		{112, 5},
   437  		{112, 4},
   438  		{112, 5},
   439  		{107, 5},
   440  		{119, 1},
   441  		{119, 3},
   442  		{102, 4},
   443  		{91, 0},
   444  		{91, 1},
   445  		{95, 0},
   446  		{95, 1},
   447  		{106, 0},
   448  		{106, 4},
   449  		{124, 1},
   450  		{124, 3},
   451  		{103, 1},
   452  		{103, 1},
   453  		{97, 2},
   454  		{97, 3},
   455  		{96, 3},
   456  		{96, 5},
   457  		{130, 3},
   458  		{130, 1},
   459  		{115, 2},
   460  		{115, 1},
   461  		{100, 4},
   462  		{122, 0},
   463  		{122, 1},
   464  		{121, 1},
   465  		{121, 3},
   466  		{127, 0},
   467  		{127, 1},
   468  		{126, 1},
   469  		{126, 3},
   470  		{129, 1},
   471  		{129, 1},
   472  		{129, 1},
   473  		{129, 2},
   474  		{129, 2},
   475  		{128, 1},
   476  		{128, 1},
   477  		{120, 1},
   478  		{120, 1},
   479  		{104, 1},
   480  		{104, 1},
   481  		{104, 1},
   482  		{114, 1},
   483  		{114, 1},
   484  		{114, 1},
   485  		{114, 1},
   486  		{114, 1},
   487  		{111, 1},
   488  		{111, 1},
   489  		{111, 1},
   490  		{111, 1},
   491  		{111, 1},
   492  		{111, 1},
   493  		{111, 1},
   494  		{111, 1},
   495  		{111, 1},
   496  		{111, 1},
   497  		{111, 1},
   498  		{111, 1},
   499  		{111, 1},
   500  		{111, 1},
   501  		{111, 1},
   502  		{111, 1},
   503  		{111, 1},
   504  		{111, 1},
   505  		{111, 1},
   506  		{111, 1},
   507  		{111, 1},
   508  		{113, 1},
   509  		{113, 1},
   510  		{113, 1},
   511  		{113, 1},
   512  		{113, 1},
   513  		{113, 1},
   514  		{113, 1},
   515  		{110, 1},
   516  		{110, 1},
   517  		{110, 1},
   518  		{110, 1},
   519  		{110, 1},
   520  		{110, 1},
   521  		{108, 1},
   522  		{108, 1},
   523  		{109, 1},
   524  		{109, 1},
   525  		{109, 1},
   526  		{109, 1},
   527  		{99, 1},
   528  		{99, 1},
   529  		{105, 1},
   530  		{105, 1},
   531  		{105, 1},
   532  		{105, 1},
   533  		{105, 1},
   534  		{105, 1},
   535  		{105, 1},
   536  		{105, 1},
   537  		{105, 1},
   538  		{105, 1},
   539  		{105, 1},
   540  		{105, 1},
   541  		{105, 1},
   542  		{118, 1},
   543  		{118, 1},
   544  		{101, 1},
   545  		{101, 1},
   546  		{92, 1},
   547  		{92, 1},
   548  		{92, 1},
   549  		{92, 1},
   550  		{92, 1},
   551  		{92, 1},
   552  		{92, 1},
   553  		{92, 1},
   554  		{92, 1},
   555  		{92, 1},
   556  		{92, 1},
   557  		{92, 1},
   558  		{92, 1},
   559  		{92, 1},
   560  		{92, 1},
   561  		{92, 1},
   562  		{92, 1},
   563  		{92, 1},
   564  		{92, 1},
   565  		{92, 1},
   566  		{92, 1},
   567  		{92, 1},
   568  		{92, 1},
   569  		{92, 1},
   570  		{92, 1},
   571  		{92, 1},
   572  		{92, 1},
   573  		{92, 1},
   574  		{92, 1},
   575  		{92, 1},
   576  		{92, 1},
   577  		{92, 1},
   578  		{92, 1},
   579  		{92, 1},
   580  		{92, 1},
   581  		{92, 1},
   582  		{92, 1},
   583  		{92, 1},
   584  		{92, 1},
   585  		{92, 1},
   586  		{92, 1},
   587  		{92, 1},
   588  		{92, 1},
   589  		{92, 1},
   590  		{92, 1},
   591  		{92, 1},
   592  		{92, 1},
   593  		{92, 1},
   594  		{92, 1},
   595  		{92, 1},
   596  		{92, 1},
   597  		{92, 1},
   598  		{92, 1},
   599  		{92, 1},
   600  		{92, 1},
   601  		{92, 1},
   602  		{92, 1},
   603  		{92, 1},
   604  		{92, 1},
   605  		{92, 1},
   606  		{92, 1},
   607  		{92, 1},
   608  		{92, 1},
   609  		{92, 1},
   610  		{92, 1},
   611  		{92, 1},
   612  		{92, 1},
   613  		{92, 1},
   614  		{92, 1},
   615  		{92, 1},
   616  		{92, 1},
   617  		{92, 1},
   618  		{92, 1},
   619  		{92, 1},
   620  		{92, 1},
   621  		{92, 1},
   622  		{92, 1},
   623  		{92, 1},
   624  		{92, 1},
   625  		{92, 1},
   626  		{92, 1},
   627  		{92, 1},
   628  	}
   629  
   630  	yyhintXErrors = map[yyhintXError]string{}
   631  
   632  	yyhintParseTab = [302][]uint16{
   633  		// 0
   634  		{1: 287, 246, 239, 241, 275, 283, 260, 262, 263, 273, 291, 253, 249, 265, 258, 252, 248, 257, 218, 236, 237, 238, 264, 288, 225, 230, 251, 284, 285, 266, 240, 242, 294, 261, 268, 254, 250, 289, 259, 243, 267, 277, 269, 279, 271, 245, 256, 226, 276, 229, 234, 290, 235, 228, 278, 293, 227, 247, 270, 244, 292, 286, 255, 231, 281, 272, 274, 282, 280, 99: 232, 104: 219, 233, 107: 217, 224, 110: 223, 221, 216, 222, 220, 123: 215, 125: 214},
   635  		{90: 213},
   636  		{1: 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 399, 90: 212, 95: 512},
   637  		{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, 90: 211},
   638  		{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, 90: 209},
   639  		// 5
   640  		{89: 509},
   641  		{89: 506},
   642  		{89: 503},
   643  		{89: 498},
   644  		{89: 495},
   645  		// 10
   646  		{89: 484},
   647  		{89: 472},
   648  		{89: 468},
   649  		{89: 464},
   650  		{89: 452},
   651  		// 15
   652  		{89: 449},
   653  		{89: 437},
   654  		{89: 430},
   655  		{89: 425},
   656  		{89: 419},
   657  		// 20
   658  		{89: 416},
   659  		{89: 410},
   660  		{89: 295},
   661  		{89: 149},
   662  		{89: 148},
   663  		// 25
   664  		{89: 147},
   665  		{89: 146},
   666  		{89: 145},
   667  		{89: 144},
   668  		{89: 143},
   669  		// 30
   670  		{89: 142},
   671  		{89: 141},
   672  		{89: 140},
   673  		{89: 139},
   674  		{89: 138},
   675  		// 35
   676  		{89: 137},
   677  		{89: 136},
   678  		{89: 135},
   679  		{89: 134},
   680  		{89: 133},
   681  		// 40
   682  		{89: 132},
   683  		{89: 131},
   684  		{89: 130},
   685  		{89: 129},
   686  		{89: 128},
   687  		// 45
   688  		{89: 127},
   689  		{89: 126},
   690  		{89: 125},
   691  		{89: 124},
   692  		{89: 123},
   693  		// 50
   694  		{89: 122},
   695  		{89: 121},
   696  		{89: 120},
   697  		{89: 119},
   698  		{89: 118},
   699  		// 55
   700  		{89: 117},
   701  		{89: 116},
   702  		{89: 115},
   703  		{89: 114},
   704  		{89: 113},
   705  		// 60
   706  		{89: 112},
   707  		{89: 111},
   708  		{89: 110},
   709  		{89: 109},
   710  		{89: 108},
   711  		// 65
   712  		{89: 107},
   713  		{89: 106},
   714  		{89: 101},
   715  		{89: 100},
   716  		{89: 99},
   717  		// 70
   718  		{89: 98},
   719  		{89: 97},
   720  		{89: 96},
   721  		{89: 95},
   722  		{89: 94},
   723  		// 75
   724  		{89: 93},
   725  		{89: 92},
   726  		{89: 91},
   727  		{89: 90},
   728  		{89: 89},
   729  		// 80
   730  		{89: 88},
   731  		{89: 87},
   732  		{75: 185, 185, 84: 297, 91: 296},
   733  		{75: 302, 301, 101: 300, 299, 119: 298},
   734  		{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, 85: 184, 184, 184, 93: 184},
   735  		// 85
   736  		{407, 70: 408},
   737  		{188, 70: 188},
   738  		{98: 303},
   739  		{98: 84},
   740  		{98: 83},
   741  		// 90
   742  		{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, 71: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 297, 91: 305, 97: 304},
   743  		{70: 405, 85: 404},
   744  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 307, 96: 306},
   745  		{175, 70: 175, 85: 175},
   746  		{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 297, 185, 391, 185, 91: 390},
   747  		// 95
   748  		{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},
   749  		{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},
   750  		{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},
   751  		{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},
   752  		{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},
   753  		// 100
   754  		{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},
   755  		{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},
   756  		{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},
   757  		{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},
   758  		{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},
   759  		// 105
   760  		{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},
   761  		{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},
   762  		{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},
   763  		{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},
   764  		{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},
   765  		// 110
   766  		{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},
   767  		{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},
   768  		{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},
   769  		{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},
   770  		{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},
   771  		// 115
   772  		{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},
   773  		{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},
   774  		{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},
   775  		{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},
   776  		{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},
   777  		// 120
   778  		{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},
   779  		{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},
   780  		{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},
   781  		{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},
   782  		{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},
   783  		// 125
   784  		{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},
   785  		{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},
   786  		{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},
   787  		{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},
   788  		{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},
   789  		// 130
   790  		{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},
   791  		{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},
   792  		{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},
   793  		{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},
   794  		{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},
   795  		// 135
   796  		{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},
   797  		{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},
   798  		{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},
   799  		{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},
   800  		{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},
   801  		// 140
   802  		{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},
   803  		{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},
   804  		{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},
   805  		{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},
   806  		{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},
   807  		// 145
   808  		{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},
   809  		{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},
   810  		{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},
   811  		{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},
   812  		{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},
   813  		// 150
   814  		{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},
   815  		{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},
   816  		{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},
   817  		{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},
   818  		{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},
   819  		// 155
   820  		{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},
   821  		{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},
   822  		{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},
   823  		{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},
   824  		{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},
   825  		// 160
   826  		{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},
   827  		{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},
   828  		{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},
   829  		{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},
   830  		{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},
   831  		// 165
   832  		{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},
   833  		{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},
   834  		{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},
   835  		{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},
   836  		{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},
   837  		// 170
   838  		{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},
   839  		{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},
   840  		{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},
   841  		{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},
   842  		{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},
   843  		// 175
   844  		{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},
   845  		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
   846  		{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, 85: 181, 87: 394, 106: 403},
   847  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 392},
   848  		{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 297, 185, 87: 185, 91: 393},
   849  		// 180
   850  		{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, 85: 181, 87: 394, 106: 395},
   851  		{89: 396},
   852  		{172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 85: 172},
   853  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 398, 124: 397},
   854  		{400, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 399, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 95: 401},
   855  		// 185
   856  		{179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179},
   857  		{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, 71: 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 94: 182},
   858  		{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, 85: 180},
   859  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 402},
   860  		{178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178},
   861  		// 190
   862  		{173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 85: 173},
   863  		{186, 70: 186},
   864  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 307, 96: 406},
   865  		{174, 70: 174, 85: 174},
   866  		{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, 90: 189},
   867  		// 195
   868  		{75: 302, 301, 101: 300, 409},
   869  		{187, 70: 187},
   870  		{78: 185, 185, 84: 297, 91: 411},
   871  		{78: 413, 414, 118: 412},
   872  		{415},
   873  		// 200
   874  		{86},
   875  		{85},
   876  		{1: 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 90: 190},
   877  		{185, 84: 297, 91: 417},
   878  		{418},
   879  		// 205
   880  		{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, 90: 191},
   881  		{77: 185, 80: 185, 84: 297, 91: 420},
   882  		{77: 423, 80: 422, 120: 421},
   883  		{424},
   884  		{151},
   885  		// 210
   886  		{150},
   887  		{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, 90: 192},
   888  		{94: 426},
   889  		{70: 399, 94: 183, 427},
   890  		{94: 428},
   891  		// 215
   892  		{429},
   893  		{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, 90: 193},
   894  		{84: 297, 91: 431, 93: 185},
   895  		{93: 432},
   896  		{81: 435, 434, 128: 433},
   897  		// 220
   898  		{436},
   899  		{153},
   900  		{152},
   901  		{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, 90: 194},
   902  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 438},
   903  		// 225
   904  		{439, 70: 440},
   905  		{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, 90: 196},
   906  		{185, 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 297, 86: 185, 91: 444, 443, 115: 442, 130: 441},
   907  		{446, 86: 447},
   908  		{170, 86: 170},
   909  		// 230
   910  		{185, 84: 297, 86: 185, 91: 445},
   911  		{168, 86: 168},
   912  		{169, 86: 169},
   913  		{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, 90: 195},
   914  		{185, 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 297, 86: 185, 91: 444, 443, 115: 448},
   915  		// 235
   916  		{171, 86: 171},
   917  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 450},
   918  		{451},
   919  		{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, 90: 197},
   920  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 453},
   921  		// 240
   922  		{88: 454},
   923  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 457, 458, 456, 116: 459, 460, 129: 455},
   924  		{463},
   925  		{158},
   926  		{157},
   927  		// 245
   928  		{156},
   929  		{93: 462},
   930  		{93: 461},
   931  		{154},
   932  		{155},
   933  		// 250
   934  		{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, 90: 198},
   935  		{84: 297, 91: 465, 93: 185},
   936  		{93: 466},
   937  		{467},
   938  		{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, 90: 199},
   939  		// 255
   940  		{84: 297, 91: 469, 93: 185},
   941  		{93: 470},
   942  		{471},
   943  		{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, 90: 200},
   944  		{185, 71: 185, 185, 185, 185, 84: 297, 91: 473},
   945  		// 260
   946  		{162, 71: 477, 478, 479, 480, 109: 476, 126: 475, 474},
   947  		{483},
   948  		{161, 70: 481},
   949  		{160, 70: 160},
   950  		{105, 70: 105},
   951  		// 265
   952  		{104, 70: 104},
   953  		{103, 70: 103},
   954  		{102, 70: 102},
   955  		{71: 477, 478, 479, 480, 109: 482},
   956  		{159, 70: 159},
   957  		// 270
   958  		{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, 90: 201},
   959  		{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, 71: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 297, 91: 486, 100: 485},
   960  		{494},
   961  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 307, 96: 487},
   962  		{183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 399, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 95: 488},
   963  		// 275
   964  		{166, 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 491, 121: 490, 489},
   965  		{167},
   966  		{165, 70: 492},
   967  		{164, 70: 164},
   968  		{1: 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 493},
   969  		// 280
   970  		{163, 70: 163},
   971  		{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, 90: 202},
   972  		{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, 71: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 297, 91: 486, 100: 496},
   973  		{497},
   974  		{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, 90: 203},
   975  		// 285
   976  		{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 71: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 297, 91: 501, 97: 500, 103: 499},
   977  		{502},
   978  		{177, 70: 405},
   979  		{176, 337, 360, 313, 315, 373, 340, 317, 318, 319, 343, 339, 345, 348, 323, 351, 344, 347, 350, 309, 310, 311, 312, 375, 338, 333, 353, 321, 341, 342, 325, 314, 316, 377, 320, 327, 346, 349, 324, 352, 322, 326, 367, 328, 332, 330, 359, 354, 372, 366, 336, 355, 356, 357, 335, 331, 376, 334, 361, 329, 358, 374, 362, 363, 370, 371, 365, 364, 368, 369, 71: 386, 387, 388, 389, 381, 380, 382, 378, 379, 383, 385, 384, 308, 92: 307, 96: 306},
   980  		{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, 90: 204},
   981  		// 290
   982  		{185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 71: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 297, 91: 501, 97: 500, 103: 504},
   983  		{505},
   984  		{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, 90: 205},
   985  		{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, 71: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 297, 91: 305, 97: 507},
   986  		{508, 70: 405},
   987  		// 295
   988  		{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, 90: 206},
   989  		{185, 84: 297, 91: 510},
   990  		{511},
   991  		{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, 90: 207},
   992  		{1: 287, 246, 239, 241, 275, 283, 260, 262, 263, 273, 291, 253, 249, 265, 258, 252, 248, 257, 218, 236, 237, 238, 264, 288, 225, 230, 251, 284, 285, 266, 240, 242, 294, 261, 268, 254, 250, 289, 259, 243, 267, 277, 269, 279, 271, 245, 256, 226, 276, 229, 234, 290, 235, 228, 278, 293, 227, 247, 270, 244, 292, 286, 255, 231, 281, 272, 274, 282, 280, 99: 232, 104: 219, 233, 107: 514, 224, 110: 223, 221, 513, 222, 220},
   993  		// 300
   994  		{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, 90: 210},
   995  		{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, 90: 208},
   996  	}
   997  )
   998  
   999  var yyhintDebug = 0
  1000  
  1001  type yyhintLexer interface {
  1002  	Lex(lval *yyhintSymType) int
  1003  	Errorf(format string, a ...interface{}) error
  1004  	AppendError(err error)
  1005  	AppendWarn(err error)
  1006  	Errors() (warns []error, errs []error)
  1007  }
  1008  
  1009  type yyhintLexerEx interface {
  1010  	yyhintLexer
  1011  	Reduced(rule, state int, lval *yyhintSymType) bool
  1012  }
  1013  
  1014  func yyhintSymName(c int) (s string) {
  1015  	x, ok := yyhintXLAT[c]
  1016  	if ok {
  1017  		return yyhintSymNames[x]
  1018  	}
  1019  
  1020  	return __yyfmt__.Sprintf("%d", c)
  1021  }
  1022  
  1023  func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) {
  1024  	n = yylex.Lex(lval)
  1025  	if n <= 0 {
  1026  		n = yyhintEOFCode
  1027  	}
  1028  	if yyhintDebug >= 3 {
  1029  		__yyfmt__.Printf("\nlex %s(%#x %d), lval: %+v\n", yyhintSymName(n), n, n, lval)
  1030  	}
  1031  	return n
  1032  }
  1033  
  1034  func yyhintParse(yylex yyhintLexer, parser *hintParser) int {
  1035  	const yyError = 132
  1036  
  1037  	yyEx, _ := yylex.(yyhintLexerEx)
  1038  	var yyn int
  1039  	parser.yylval = yyhintSymType{}
  1040  	yyS := parser.cache
  1041  
  1042  	Nerrs := 0   /* number of errors */
  1043  	Errflag := 0 /* error recovery flag */
  1044  	yyerrok := func() {
  1045  		if yyhintDebug >= 2 {
  1046  			__yyfmt__.Printf("yyerrok()\n")
  1047  		}
  1048  		Errflag = 0
  1049  	}
  1050  	_ = yyerrok
  1051  	yystate := 0
  1052  	yychar := -1
  1053  	var yyxchar int
  1054  	var yyshift int
  1055  	yyp := -1
  1056  	goto yystack
  1057  
  1058  ret0:
  1059  	return 0
  1060  
  1061  ret1:
  1062  	return 1
  1063  
  1064  yystack:
  1065  	/* put a state and value onto the stack */
  1066  	yyp++
  1067  	if yyp+1 >= len(yyS) {
  1068  		nyys := make([]yyhintSymType, len(yyS)*2)
  1069  		copy(nyys, yyS)
  1070  		yyS = nyys
  1071  		parser.cache = yyS
  1072  	}
  1073  	parser.yyVAL = &yyS[yyp+1]
  1074  	yyS[yyp].yys = yystate
  1075  
  1076  yynewstate:
  1077  	if yychar < 0 {
  1078  		yychar = yyhintlex1(yylex, &parser.yylval)
  1079  		var ok bool
  1080  		if yyxchar, ok = yyhintXLAT[yychar]; !ok {
  1081  			yyxchar = len(yyhintSymNames) // > tab width
  1082  		}
  1083  	}
  1084  	if yyhintDebug >= 4 {
  1085  		var a []int
  1086  		for _, v := range yyS[:yyp+1] {
  1087  			a = append(a, v.yys)
  1088  		}
  1089  		__yyfmt__.Printf("state stack %v\n", a)
  1090  	}
  1091  	row := yyhintParseTab[yystate]
  1092  	yyn = 0
  1093  	if yyxchar < len(row) {
  1094  		if yyn = int(row[yyxchar]); yyn != 0 {
  1095  			yyn += yyhintTabOfs
  1096  		}
  1097  	}
  1098  	switch {
  1099  	case yyn > 0: // shift
  1100  		yychar = -1
  1101  		*parser.yyVAL = parser.yylval
  1102  		yystate = yyn
  1103  		yyshift = yyn
  1104  		if yyhintDebug >= 2 {
  1105  			__yyfmt__.Printf("shift, and goto state %d\n", yystate)
  1106  		}
  1107  		if Errflag > 0 {
  1108  			Errflag--
  1109  		}
  1110  		goto yystack
  1111  	case yyn < 0: // reduce
  1112  	case yystate == 1: // accept
  1113  		if yyhintDebug >= 2 {
  1114  			__yyfmt__.Println("accept")
  1115  		}
  1116  		goto ret0
  1117  	}
  1118  
  1119  	if yyn == 0 {
  1120  		/* error ... attempt to resume parsing */
  1121  		switch Errflag {
  1122  		case 0: /* brand new error */
  1123  			if yyhintDebug >= 1 {
  1124  				__yyfmt__.Printf("no action for %s in state %d\n", yyhintSymName(yychar), yystate)
  1125  			}
  1126  			msg, ok := yyhintXErrors[yyhintXError{yystate, yyxchar}]
  1127  			if !ok {
  1128  				msg, ok = yyhintXErrors[yyhintXError{yystate, -1}]
  1129  			}
  1130  			if !ok && yyshift != 0 {
  1131  				msg, ok = yyhintXErrors[yyhintXError{yyshift, yyxchar}]
  1132  			}
  1133  			if !ok {
  1134  				msg, ok = yyhintXErrors[yyhintXError{yyshift, -1}]
  1135  			}
  1136  			if !ok || msg == "" {
  1137  				msg = "syntax error"
  1138  			}
  1139  			// ignore goyacc error message
  1140  			yylex.AppendError(yylex.Errorf(""))
  1141  			Nerrs++
  1142  			fallthrough
  1143  
  1144  		case 1, 2: /* incompletely recovered error ... try again */
  1145  			Errflag = 3
  1146  
  1147  			/* find a state where "error" is a legal shift action */
  1148  			for yyp >= 0 {
  1149  				row := yyhintParseTab[yyS[yyp].yys]
  1150  				if yyError < len(row) {
  1151  					yyn = int(row[yyError]) + yyhintTabOfs
  1152  					if yyn > 0 { // hit
  1153  						if yyhintDebug >= 2 {
  1154  							__yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys)
  1155  						}
  1156  						yystate = yyn /* simulate a shift of "error" */
  1157  						goto yystack
  1158  					}
  1159  				}
  1160  
  1161  				/* the current p has no shift on "error", pop stack */
  1162  				if yyhintDebug >= 2 {
  1163  					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
  1164  				}
  1165  				yyp--
  1166  			}
  1167  			/* there is no state on the stack with an error shift ... abort */
  1168  			if yyhintDebug >= 2 {
  1169  				__yyfmt__.Printf("error recovery failed\n")
  1170  			}
  1171  			goto ret1
  1172  
  1173  		case 3: /* no shift yet; clobber input char */
  1174  			if yyhintDebug >= 2 {
  1175  				__yyfmt__.Printf("error recovery discards %s\n", yyhintSymName(yychar))
  1176  			}
  1177  			if yychar == yyhintEOFCode {
  1178  				goto ret1
  1179  			}
  1180  
  1181  			yychar = -1
  1182  			goto yynewstate /* try again in the same state */
  1183  		}
  1184  	}
  1185  
  1186  	r := -yyn
  1187  	x0 := yyhintReductions[r]
  1188  	x, n := x0.xsym, x0.components
  1189  	yypt := yyp
  1190  	_ = yypt // guard against "declared and not used"
  1191  
  1192  	yyp -= n
  1193  	if yyp+1 >= len(yyS) {
  1194  		nyys := make([]yyhintSymType, len(yyS)*2)
  1195  		copy(nyys, yyS)
  1196  		yyS = nyys
  1197  		parser.cache = yyS
  1198  	}
  1199  	parser.yyVAL = &yyS[yyp+1]
  1200  
  1201  	/* consult goto table to find next state */
  1202  	exState := yystate
  1203  	yystate = int(yyhintParseTab[yyS[yyp].yys][x]) + yyhintTabOfs
  1204  	/* reduction by production r */
  1205  	if yyhintDebug >= 2 {
  1206  		__yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yyhintSymNames[x], yystate)
  1207  	}
  1208  
  1209  	switch r {
  1210  	case 1:
  1211  		{
  1212  			parser.result = yyS[yypt-0].hints
  1213  		}
  1214  	case 2:
  1215  		{
  1216  			if yyS[yypt-0].hint != nil {
  1217  				parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
  1218  			}
  1219  		}
  1220  	case 3:
  1221  		{
  1222  			if yyS[yypt-0].hint != nil {
  1223  				parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
  1224  			} else {
  1225  				parser.yyVAL.hints = yyS[yypt-2].hints
  1226  			}
  1227  		}
  1228  	case 4:
  1229  		{
  1230  			parser.yyVAL.hints = yyS[yypt-0].hints
  1231  		}
  1232  	case 5:
  1233  		{
  1234  			parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hints...)
  1235  		}
  1236  	case 6:
  1237  		{
  1238  			parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1239  			parser.yyVAL.hint = nil
  1240  		}
  1241  	case 7:
  1242  		{
  1243  			parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1244  			parser.yyVAL.hint = nil
  1245  		}
  1246  	case 8:
  1247  		{
  1248  			parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1249  			parser.yyVAL.hint = nil
  1250  		}
  1251  	case 9:
  1252  		{
  1253  			h := yyS[yypt-1].hint
  1254  			h.HintName = model.NewCIStr(yyS[yypt-3].ident)
  1255  			parser.yyVAL.hint = h
  1256  		}
  1257  	case 10:
  1258  		{
  1259  			parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1260  			parser.yyVAL.hint = nil
  1261  		}
  1262  	case 11:
  1263  		{
  1264  			h := yyS[yypt-1].hint
  1265  			h.HintName = model.NewCIStr(yyS[yypt-3].ident)
  1266  			parser.yyVAL.hint = h
  1267  		}
  1268  	case 12:
  1269  		{
  1270  			parser.warnUnsupportedHint(yyS[yypt-4].ident)
  1271  			parser.yyVAL.hint = nil
  1272  		}
  1273  	case 13:
  1274  		{
  1275  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1276  				HintName: model.NewCIStr(yyS[yypt-4].ident),
  1277  				QBName:   model.NewCIStr(yyS[yypt-2].ident),
  1278  				HintData: yyS[yypt-1].number,
  1279  			}
  1280  		}
  1281  	case 14:
  1282  		{
  1283  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1284  				HintName: model.NewCIStr(yyS[yypt-4].ident),
  1285  				QBName:   model.NewCIStr(yyS[yypt-2].ident),
  1286  				HintData: int64(yyS[yypt-1].number),
  1287  			}
  1288  		}
  1289  	case 15:
  1290  		{
  1291  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1292  				HintName: model.NewCIStr(yyS[yypt-5].ident),
  1293  				HintData: ast.HintSetVar{
  1294  					VarName: yyS[yypt-3].ident,
  1295  					Value:   yyS[yypt-1].ident,
  1296  				},
  1297  			}
  1298  		}
  1299  	case 16:
  1300  		{
  1301  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1302  				HintName: model.NewCIStr(yyS[yypt-3].ident),
  1303  				HintData: yyS[yypt-1].ident,
  1304  			}
  1305  		}
  1306  	case 17:
  1307  		{
  1308  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1309  				HintName: model.NewCIStr(yyS[yypt-3].ident),
  1310  				QBName:   model.NewCIStr(yyS[yypt-1].ident),
  1311  			}
  1312  		}
  1313  	case 18:
  1314  		{
  1315  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1316  				HintName: model.NewCIStr(yyS[yypt-5].ident),
  1317  				QBName:   model.NewCIStr(yyS[yypt-3].ident),
  1318  				Tables:   yyS[yypt-1].hint.Tables,
  1319  			}
  1320  		}
  1321  	case 19:
  1322  		{
  1323  			maxValue := uint64(math.MaxInt64) / yyS[yypt-1].number
  1324  			if yyS[yypt-2].number <= maxValue {
  1325  				parser.yyVAL.hint = &ast.TableOptimizerHint{
  1326  					HintName: model.NewCIStr(yyS[yypt-5].ident),
  1327  					HintData: int64(yyS[yypt-2].number * yyS[yypt-1].number),
  1328  					QBName:   model.NewCIStr(yyS[yypt-3].ident),
  1329  				}
  1330  			} else {
  1331  				yylex.AppendError(ErrWarnMemoryQuotaOverflow.GenWithStackByArgs(math.MaxInt64))
  1332  				parser.lastErrorAsWarn()
  1333  				parser.yyVAL.hint = nil
  1334  			}
  1335  		}
  1336  	case 20:
  1337  		{
  1338  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1339  				HintName: model.NewCIStr(yyS[yypt-5].ident),
  1340  				HintData: ast.HintTimeRange{
  1341  					From: yyS[yypt-3].ident,
  1342  					To:   yyS[yypt-1].ident,
  1343  				},
  1344  			}
  1345  		}
  1346  	case 21:
  1347  		{
  1348  			h := yyS[yypt-1].hint
  1349  			h.HintName = model.NewCIStr(yyS[yypt-4].ident)
  1350  			h.QBName = model.NewCIStr(yyS[yypt-2].ident)
  1351  			parser.yyVAL.hint = h
  1352  		}
  1353  	case 22:
  1354  		{
  1355  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1356  				HintName: model.NewCIStr(yyS[yypt-3].ident),
  1357  				QBName:   model.NewCIStr(yyS[yypt-1].ident),
  1358  			}
  1359  		}
  1360  	case 23:
  1361  		{
  1362  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1363  				HintName: model.NewCIStr(yyS[yypt-4].ident),
  1364  				QBName:   model.NewCIStr(yyS[yypt-2].ident),
  1365  				HintData: model.NewCIStr(yyS[yypt-1].ident),
  1366  			}
  1367  		}
  1368  	case 24:
  1369  		{
  1370  			hs := yyS[yypt-1].hints
  1371  			name := model.NewCIStr(yyS[yypt-4].ident)
  1372  			qb := model.NewCIStr(yyS[yypt-2].ident)
  1373  			for _, h := range hs {
  1374  				h.HintName = name
  1375  				h.QBName = qb
  1376  			}
  1377  			parser.yyVAL.hints = hs
  1378  		}
  1379  	case 25:
  1380  		{
  1381  			parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
  1382  		}
  1383  	case 26:
  1384  		{
  1385  			parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
  1386  		}
  1387  	case 27:
  1388  		{
  1389  			h := yyS[yypt-1].hint
  1390  			h.HintData = model.NewCIStr(yyS[yypt-3].ident)
  1391  			parser.yyVAL.hint = h
  1392  		}
  1393  	case 28:
  1394  		{
  1395  			parser.yyVAL.ident = ""
  1396  		}
  1397  	case 32:
  1398  		{
  1399  			parser.yyVAL.modelIdents = nil
  1400  		}
  1401  	case 33:
  1402  		{
  1403  			parser.yyVAL.modelIdents = yyS[yypt-1].modelIdents
  1404  		}
  1405  	case 34:
  1406  		{
  1407  			parser.yyVAL.modelIdents = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)}
  1408  		}
  1409  	case 35:
  1410  		{
  1411  			parser.yyVAL.modelIdents = append(yyS[yypt-2].modelIdents, model.NewCIStr(yyS[yypt-0].ident))
  1412  		}
  1413  	case 37:
  1414  		{
  1415  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1416  				QBName: model.NewCIStr(yyS[yypt-0].ident),
  1417  			}
  1418  		}
  1419  	case 38:
  1420  		{
  1421  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1422  				Tables: []ast.HintTable{yyS[yypt-0].table},
  1423  				QBName: model.NewCIStr(yyS[yypt-1].ident),
  1424  			}
  1425  		}
  1426  	case 39:
  1427  		{
  1428  			h := yyS[yypt-2].hint
  1429  			h.Tables = append(h.Tables, yyS[yypt-0].table)
  1430  			parser.yyVAL.hint = h
  1431  		}
  1432  	case 40:
  1433  		{
  1434  			parser.yyVAL.table = ast.HintTable{
  1435  				TableName:     model.NewCIStr(yyS[yypt-2].ident),
  1436  				QBName:        model.NewCIStr(yyS[yypt-1].ident),
  1437  				PartitionList: yyS[yypt-0].modelIdents,
  1438  			}
  1439  		}
  1440  	case 41:
  1441  		{
  1442  			parser.yyVAL.table = ast.HintTable{
  1443  				DBName:        model.NewCIStr(yyS[yypt-4].ident),
  1444  				TableName:     model.NewCIStr(yyS[yypt-2].ident),
  1445  				QBName:        model.NewCIStr(yyS[yypt-1].ident),
  1446  				PartitionList: yyS[yypt-0].modelIdents,
  1447  			}
  1448  		}
  1449  	case 42:
  1450  		{
  1451  			h := yyS[yypt-2].hint
  1452  			h.Tables = append(h.Tables, yyS[yypt-0].table)
  1453  			parser.yyVAL.hint = h
  1454  		}
  1455  	case 43:
  1456  		{
  1457  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1458  				Tables: []ast.HintTable{yyS[yypt-0].table},
  1459  			}
  1460  		}
  1461  	case 44:
  1462  		{
  1463  			parser.yyVAL.table = ast.HintTable{
  1464  				TableName: model.NewCIStr(yyS[yypt-1].ident),
  1465  				QBName:    model.NewCIStr(yyS[yypt-0].ident),
  1466  			}
  1467  		}
  1468  	case 45:
  1469  		{
  1470  			parser.yyVAL.table = ast.HintTable{
  1471  				QBName: model.NewCIStr(yyS[yypt-0].ident),
  1472  			}
  1473  		}
  1474  	case 46:
  1475  		{
  1476  			h := yyS[yypt-0].hint
  1477  			h.Tables = []ast.HintTable{yyS[yypt-2].table}
  1478  			h.QBName = model.NewCIStr(yyS[yypt-3].ident)
  1479  			parser.yyVAL.hint = h
  1480  		}
  1481  	case 47:
  1482  		{
  1483  			parser.yyVAL.hint = &ast.TableOptimizerHint{}
  1484  		}
  1485  	case 49:
  1486  		{
  1487  			parser.yyVAL.hint = &ast.TableOptimizerHint{
  1488  				Indexes: []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)},
  1489  			}
  1490  		}
  1491  	case 50:
  1492  		{
  1493  			h := yyS[yypt-2].hint
  1494  			h.Indexes = append(h.Indexes, model.NewCIStr(yyS[yypt-0].ident))
  1495  			parser.yyVAL.hint = h
  1496  		}
  1497  	case 57:
  1498  		{
  1499  			parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
  1500  		}
  1501  	case 58:
  1502  		{
  1503  			parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
  1504  		}
  1505  	case 59:
  1506  		{
  1507  			if yyS[yypt-0].number > 9223372036854775808 {
  1508  				yylex.AppendError(yylex.Errorf("the Signed Value should be at the range of [-9223372036854775808, 9223372036854775807]."))
  1509  				return 1
  1510  			} else if yyS[yypt-0].number == 9223372036854775808 {
  1511  				signed_one := int64(1)
  1512  				parser.yyVAL.ident = strconv.FormatInt(signed_one<<63, 10)
  1513  			} else {
  1514  				parser.yyVAL.ident = strconv.FormatInt(-int64(yyS[yypt-0].number), 10)
  1515  			}
  1516  		}
  1517  	case 60:
  1518  		{
  1519  			parser.yyVAL.number = 1024 * 1024
  1520  		}
  1521  	case 61:
  1522  		{
  1523  			parser.yyVAL.number = 1024 * 1024 * 1024
  1524  		}
  1525  	case 62:
  1526  		{
  1527  			parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: true}
  1528  		}
  1529  	case 63:
  1530  		{
  1531  			parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: false}
  1532  		}
  1533  
  1534  	}
  1535  
  1536  	if !parser.lexer.skipPositionRecording {
  1537  		yyhintSetOffset(parser.yyVAL, parser.yyVAL.offset)
  1538  	}
  1539  
  1540  	if yyEx != nil && yyEx.Reduced(r, exState, parser.yyVAL) {
  1541  		return -1
  1542  	}
  1543  	goto yystack /* stack new state and value */
  1544  }