diff --git a/ast/misc.go b/ast/misc.go index 3cc1183f1..33974c96e 100755 --- a/ast/misc.go +++ b/ast/misc.go @@ -2597,7 +2597,7 @@ func (n *TableOptimizerHint) Restore(ctx *format.RestoreCtx) error { ctx.WritePlainf("%d", n.HintData.(uint64)) case "nth_plan": ctx.WritePlainf("%d", n.HintData.(int64)) - case "tidb_hj", "tidb_smj", "tidb_inlj", "hash_join", "merge_join", "inl_join": + case "tidb_hj", "tidb_smj", "tidb_inlj", "hash_join", "merge_join", "inl_join", "broadcast_join", "broadcast_join_local": for i, table := range n.Tables { if i != 0 { ctx.WritePlain(", ") diff --git a/ast/misc_test.go b/ast/misc_test.go index 2c762a651..7d5dde881 100644 --- a/ast/misc_test.go +++ b/ast/misc_test.go @@ -232,6 +232,7 @@ func (ts *testMiscSuite) TestTableOptimizerHintRestore(c *C) { {"TIDB_HJ(@sel1 t1,t2)", "TIDB_HJ(@`sel1` `t1`, `t2`)"}, {"TIDB_HJ(t1@sel1,t2@sel2)", "TIDB_HJ(`t1`@`sel1`, `t2`@`sel2`)"}, {"MERGE_JOIN(t1,t2)", "MERGE_JOIN(`t1`, `t2`)"}, + {"BROADCAST_JOIN(t1,t2)", "BROADCAST_JOIN(`t1`, `t2`)"}, {"INL_JOIN(t1,t2)", "INL_JOIN(`t1`, `t2`)"}, {"HASH_JOIN(t1,t2)", "HASH_JOIN(`t1`, `t2`)"}, {"MAX_EXECUTION_TIME(3000)", "MAX_EXECUTION_TIME(3000)"}, diff --git a/hintparser.go b/hintparser.go index 2e6c88ae7..c382e1473 100644 --- a/hintparser.go +++ b/hintparser.go @@ -40,16 +40,18 @@ type yyhintXError struct { } const ( - yyhintDefault = 57411 + yyhintDefault = 57413 yyhintEOFCode = 57344 yyhintErrCode = 57345 hintAggToCop = 57376 + hintBCJoin = 57389 + hintBCJoinPreferLocal = 57390 hintBKA = 57354 hintBNL = 57356 - hintDupsWeedOut = 57407 - hintFalse = 57403 - hintFirstMatch = 57408 - hintGB = 57406 + hintDupsWeedOut = 57409 + hintFalse = 57405 + hintFirstMatch = 57410 + hintGB = 57408 hintHashAgg = 57378 hintHashJoin = 57358 hintIdentifier = 57347 @@ -64,10 +66,10 @@ const ( hintJoinOrder = 57351 hintJoinPrefix = 57352 hintJoinSuffix = 57353 - hintLooseScan = 57409 - hintMB = 57405 + hintLooseScan = 57411 + hintMB = 57407 hintMRR = 57364 - hintMaterialization = 57410 + hintMaterialization = 57412 hintMaxExecutionTime = 57372 hintMemoryQuota = 57383 hintMerge = 57360 @@ -82,10 +84,10 @@ const ( hintNoSemijoin = 57371 hintNoSkipScan = 57369 hintNoSwapJoinInputs = 57384 - hintNthPlan = 57397 - hintOLAP = 57398 - hintOLTP = 57399 - hintPartition = 57400 + hintNthPlan = 57399 + hintOLAP = 57400 + hintOLTP = 57401 + hintPartition = 57402 hintQBName = 57375 hintQueryType = 57385 hintReadConsistentReplica = 57386 @@ -96,138 +98,142 @@ const ( hintSetVar = 57373 hintSingleAtIdentifier = 57348 hintSkipScan = 57368 - hintStreamAgg = 57389 + hintStreamAgg = 57391 hintStringLit = 57349 - hintSwapJoinInputs = 57390 - hintTiFlash = 57402 - hintTiKV = 57401 - hintTimeRange = 57395 - hintTrue = 57404 - hintUseCascades = 57396 - hintUseIndex = 57392 - hintUseIndexMerge = 57391 - hintUsePlanCache = 57393 - hintUseToja = 57394 + hintSwapJoinInputs = 57392 + hintTiFlash = 57404 + hintTiKV = 57403 + hintTimeRange = 57397 + hintTrue = 57406 + hintUseCascades = 57398 + hintUseIndex = 57394 + hintUseIndexMerge = 57393 + hintUsePlanCache = 57395 + hintUseToja = 57396 yyhintMaxDepth = 200 - yyhintTabOfs = -164 + yyhintTabOfs = -168 ) var ( yyhintXLAT = map[int]int{ - 41: 0, // ')' (126x) - 57376: 1, // hintAggToCop (118x) - 57354: 2, // hintBKA (118x) - 57356: 3, // hintBNL (118x) - 57378: 4, // hintHashAgg (118x) - 57358: 5, // hintHashJoin (118x) - 57379: 6, // hintIgnoreIndex (118x) - 57377: 7, // hintIgnorePlanCache (118x) - 57362: 8, // hintIndexMerge (118x) - 57380: 9, // hintInlHashJoin (118x) - 57381: 10, // hintInlJoin (118x) - 57382: 11, // hintInlMergeJoin (118x) - 57350: 12, // hintJoinFixedOrder (118x) - 57351: 13, // hintJoinOrder (118x) - 57352: 14, // hintJoinPrefix (118x) - 57353: 15, // hintJoinSuffix (118x) - 57372: 16, // hintMaxExecutionTime (118x) - 57383: 17, // hintMemoryQuota (118x) - 57360: 18, // hintMerge (118x) - 57364: 19, // hintMRR (118x) - 57355: 20, // hintNoBKA (118x) - 57357: 21, // hintNoBNL (118x) - 57359: 22, // hintNoHashJoin (118x) - 57366: 23, // hintNoICP (118x) - 57363: 24, // hintNoIndexMerge (118x) - 57361: 25, // hintNoMerge (118x) - 57365: 26, // hintNoMRR (118x) - 57367: 27, // hintNoRangeOptimization (118x) - 57371: 28, // hintNoSemijoin (118x) - 57369: 29, // hintNoSkipScan (118x) - 57384: 30, // hintNoSwapJoinInputs (118x) - 57397: 31, // hintNthPlan (118x) - 57375: 32, // hintQBName (118x) - 57385: 33, // hintQueryType (118x) - 57386: 34, // hintReadConsistentReplica (118x) - 57387: 35, // hintReadFromStorage (118x) - 57374: 36, // hintResourceGroup (118x) - 57370: 37, // hintSemijoin (118x) - 57373: 38, // hintSetVar (118x) - 57368: 39, // hintSkipScan (118x) - 57388: 40, // hintSMJoin (118x) - 57389: 41, // hintStreamAgg (118x) - 57390: 42, // hintSwapJoinInputs (118x) - 57395: 43, // hintTimeRange (118x) - 57396: 44, // hintUseCascades (118x) - 57392: 45, // hintUseIndex (118x) - 57391: 46, // hintUseIndexMerge (118x) - 57393: 47, // hintUsePlanCache (118x) - 57394: 48, // hintUseToja (118x) - 44: 49, // ',' (116x) - 57407: 50, // hintDupsWeedOut (96x) - 57408: 51, // hintFirstMatch (96x) - 57409: 52, // hintLooseScan (96x) - 57410: 53, // hintMaterialization (96x) - 57402: 54, // hintTiFlash (96x) - 57401: 55, // hintTiKV (96x) - 57403: 56, // hintFalse (95x) - 57398: 57, // hintOLAP (95x) - 57399: 58, // hintOLTP (95x) - 57404: 59, // hintTrue (95x) - 57406: 60, // hintGB (94x) - 57405: 61, // hintMB (94x) - 57347: 62, // hintIdentifier (93x) - 57348: 63, // hintSingleAtIdentifier (78x) - 93: 64, // ']' (72x) - 57400: 65, // hintPartition (66x) - 46: 66, // '.' (62x) - 61: 67, // '=' (62x) - 40: 68, // '(' (57x) - 57344: 69, // $end (24x) - 57431: 70, // QueryBlockOpt (17x) - 57423: 71, // Identifier (13x) - 57346: 72, // hintIntLit (8x) - 57349: 73, // hintStringLit (5x) - 57413: 74, // CommaOpt (4x) - 57419: 75, // HintTable (4x) - 57420: 76, // HintTableList (4x) - 91: 77, // '[' (3x) - 57412: 78, // BooleanHintName (2x) - 57414: 79, // HintIndexList (2x) - 57416: 80, // HintStorageType (2x) - 57417: 81, // HintStorageTypeAndTable (2x) - 57421: 82, // HintTableListOpt (2x) - 57426: 83, // JoinOrderOptimizerHintName (2x) - 57427: 84, // NullaryHintName (2x) - 57430: 85, // PartitionListOpt (2x) - 57433: 86, // StorageOptimizerHintOpt (2x) - 57434: 87, // SubqueryOptimizerHintName (2x) - 57437: 88, // SubqueryStrategy (2x) - 57438: 89, // SupportedIndexLevelOptimizerHintName (2x) - 57439: 90, // SupportedTableLevelOptimizerHintName (2x) - 57440: 91, // TableOptimizerHintOpt (2x) - 57442: 92, // UnsupportedIndexLevelOptimizerHintName (2x) - 57443: 93, // UnsupportedTableLevelOptimizerHintName (2x) - 57415: 94, // HintQueryType (1x) - 57418: 95, // HintStorageTypeAndTableList (1x) - 57422: 96, // HintTrueOrFalse (1x) - 57424: 97, // IndexNameList (1x) - 57425: 98, // IndexNameListOpt (1x) - 57428: 99, // OptimizerHintList (1x) - 57429: 100, // PartitionList (1x) - 57432: 101, // Start (1x) - 57435: 102, // SubqueryStrategies (1x) - 57436: 103, // SubqueryStrategiesOpt (1x) - 57441: 104, // UnitOfBytes (1x) - 57444: 105, // Value (1x) - 57411: 106, // $default (0x) - 57345: 107, // error (0x) + 41: 0, // ')' (128x) + 57376: 1, // hintAggToCop (120x) + 57389: 2, // hintBCJoin (120x) + 57390: 3, // hintBCJoinPreferLocal (120x) + 57354: 4, // hintBKA (120x) + 57356: 5, // hintBNL (120x) + 57378: 6, // hintHashAgg (120x) + 57358: 7, // hintHashJoin (120x) + 57379: 8, // hintIgnoreIndex (120x) + 57377: 9, // hintIgnorePlanCache (120x) + 57362: 10, // hintIndexMerge (120x) + 57380: 11, // hintInlHashJoin (120x) + 57381: 12, // hintInlJoin (120x) + 57382: 13, // hintInlMergeJoin (120x) + 57350: 14, // hintJoinFixedOrder (120x) + 57351: 15, // hintJoinOrder (120x) + 57352: 16, // hintJoinPrefix (120x) + 57353: 17, // hintJoinSuffix (120x) + 57372: 18, // hintMaxExecutionTime (120x) + 57383: 19, // hintMemoryQuota (120x) + 57360: 20, // hintMerge (120x) + 57364: 21, // hintMRR (120x) + 57355: 22, // hintNoBKA (120x) + 57357: 23, // hintNoBNL (120x) + 57359: 24, // hintNoHashJoin (120x) + 57366: 25, // hintNoICP (120x) + 57363: 26, // hintNoIndexMerge (120x) + 57361: 27, // hintNoMerge (120x) + 57365: 28, // hintNoMRR (120x) + 57367: 29, // hintNoRangeOptimization (120x) + 57371: 30, // hintNoSemijoin (120x) + 57369: 31, // hintNoSkipScan (120x) + 57384: 32, // hintNoSwapJoinInputs (120x) + 57399: 33, // hintNthPlan (120x) + 57375: 34, // hintQBName (120x) + 57385: 35, // hintQueryType (120x) + 57386: 36, // hintReadConsistentReplica (120x) + 57387: 37, // hintReadFromStorage (120x) + 57374: 38, // hintResourceGroup (120x) + 57370: 39, // hintSemijoin (120x) + 57373: 40, // hintSetVar (120x) + 57368: 41, // hintSkipScan (120x) + 57388: 42, // hintSMJoin (120x) + 57391: 43, // hintStreamAgg (120x) + 57392: 44, // hintSwapJoinInputs (120x) + 57397: 45, // hintTimeRange (120x) + 57398: 46, // hintUseCascades (120x) + 57394: 47, // hintUseIndex (120x) + 57393: 48, // hintUseIndexMerge (120x) + 57395: 49, // hintUsePlanCache (120x) + 57396: 50, // hintUseToja (120x) + 44: 51, // ',' (118x) + 57409: 52, // hintDupsWeedOut (98x) + 57410: 53, // hintFirstMatch (98x) + 57411: 54, // hintLooseScan (98x) + 57412: 55, // hintMaterialization (98x) + 57404: 56, // hintTiFlash (98x) + 57403: 57, // hintTiKV (98x) + 57405: 58, // hintFalse (97x) + 57400: 59, // hintOLAP (97x) + 57401: 60, // hintOLTP (97x) + 57406: 61, // hintTrue (97x) + 57408: 62, // hintGB (96x) + 57407: 63, // hintMB (96x) + 57347: 64, // hintIdentifier (95x) + 57348: 65, // hintSingleAtIdentifier (80x) + 93: 66, // ']' (74x) + 57402: 67, // hintPartition (68x) + 46: 68, // '.' (64x) + 61: 69, // '=' (64x) + 40: 70, // '(' (59x) + 57344: 71, // $end (24x) + 57433: 72, // QueryBlockOpt (17x) + 57425: 73, // Identifier (13x) + 57346: 74, // hintIntLit (8x) + 57349: 75, // hintStringLit (5x) + 57415: 76, // CommaOpt (4x) + 57421: 77, // HintTable (4x) + 57422: 78, // HintTableList (4x) + 91: 79, // '[' (3x) + 57414: 80, // BooleanHintName (2x) + 57416: 81, // HintIndexList (2x) + 57418: 82, // HintStorageType (2x) + 57419: 83, // HintStorageTypeAndTable (2x) + 57423: 84, // HintTableListOpt (2x) + 57428: 85, // JoinOrderOptimizerHintName (2x) + 57429: 86, // NullaryHintName (2x) + 57432: 87, // PartitionListOpt (2x) + 57435: 88, // StorageOptimizerHintOpt (2x) + 57436: 89, // SubqueryOptimizerHintName (2x) + 57439: 90, // SubqueryStrategy (2x) + 57440: 91, // SupportedIndexLevelOptimizerHintName (2x) + 57441: 92, // SupportedTableLevelOptimizerHintName (2x) + 57442: 93, // TableOptimizerHintOpt (2x) + 57444: 94, // UnsupportedIndexLevelOptimizerHintName (2x) + 57445: 95, // UnsupportedTableLevelOptimizerHintName (2x) + 57417: 96, // HintQueryType (1x) + 57420: 97, // HintStorageTypeAndTableList (1x) + 57424: 98, // HintTrueOrFalse (1x) + 57426: 99, // IndexNameList (1x) + 57427: 100, // IndexNameListOpt (1x) + 57430: 101, // OptimizerHintList (1x) + 57431: 102, // PartitionList (1x) + 57434: 103, // Start (1x) + 57437: 104, // SubqueryStrategies (1x) + 57438: 105, // SubqueryStrategiesOpt (1x) + 57443: 106, // UnitOfBytes (1x) + 57446: 107, // Value (1x) + 57413: 108, // $default (0x) + 57345: 109, // error (0x) } yyhintSymNames = []string{ "')'", "hintAggToCop", + "hintBCJoin", + "hintBCJoinPreferLocal", "hintBKA", "hintBNL", "hintHashAgg", @@ -338,79 +344,72 @@ var ( yyhintReductions = []struct{ xsym, components int }{ {0, 1}, + {103, 1}, {101, 1}, - {99, 1}, - {99, 3}, - {99, 1}, - {99, 3}, - {91, 4}, - {91, 4}, - {91, 4}, - {91, 4}, - {91, 4}, - {91, 4}, - {91, 5}, - {91, 5}, - {91, 5}, - {91, 6}, - {91, 4}, - {91, 4}, - {91, 6}, - {91, 6}, - {91, 5}, - {91, 4}, - {91, 5}, - {86, 5}, - {95, 1}, - {95, 3}, - {81, 4}, - {70, 0}, - {70, 1}, - {74, 0}, - {74, 1}, - {85, 0}, - {85, 4}, - {100, 1}, - {100, 3}, - {82, 1}, - {82, 1}, - {76, 2}, - {76, 3}, - {75, 3}, - {75, 5}, - {79, 4}, - {98, 0}, - {98, 1}, + {101, 3}, + {101, 1}, + {101, 3}, + {93, 4}, + {93, 4}, + {93, 4}, + {93, 4}, + {93, 4}, + {93, 4}, + {93, 5}, + {93, 5}, + {93, 5}, + {93, 6}, + {93, 4}, + {93, 4}, + {93, 6}, + {93, 6}, + {93, 5}, + {93, 4}, + {93, 5}, + {88, 5}, {97, 1}, {97, 3}, - {103, 0}, - {103, 1}, + {83, 4}, + {72, 0}, + {72, 1}, + {76, 0}, + {76, 1}, + {87, 0}, + {87, 4}, {102, 1}, {102, 3}, + {84, 1}, + {84, 1}, + {78, 2}, + {78, 3}, + {77, 3}, + {77, 5}, + {81, 4}, + {100, 0}, + {100, 1}, + {99, 1}, + {99, 3}, + {105, 0}, {105, 1}, - {105, 1}, - {105, 1}, - {104, 1}, {104, 1}, - {96, 1}, - {96, 1}, - {83, 1}, - {83, 1}, - {83, 1}, - {93, 1}, - {93, 1}, - {93, 1}, - {93, 1}, - {93, 1}, - {93, 1}, - {93, 1}, - {90, 1}, - {90, 1}, - {90, 1}, - {90, 1}, - {90, 1}, - {90, 1}, - {90, 1}, + {104, 3}, + {107, 1}, + {107, 1}, + {107, 1}, + {106, 1}, + {106, 1}, + {98, 1}, + {98, 1}, + {85, 1}, + {85, 1}, + {85, 1}, + {95, 1}, + {95, 1}, + {95, 1}, + {95, 1}, + {95, 1}, + {95, 1}, + {95, 1}, {92, 1}, {92, 1}, {92, 1}, @@ -418,391 +417,407 @@ var ( {92, 1}, {92, 1}, {92, 1}, - {89, 1}, - {89, 1}, - {89, 1}, - {87, 1}, - {87, 1}, - {88, 1}, - {88, 1}, - {88, 1}, - {88, 1}, - {78, 1}, - {78, 1}, - {84, 1}, - {84, 1}, - {84, 1}, - {84, 1}, - {84, 1}, - {84, 1}, - {84, 1}, + {92, 1}, + {92, 1}, + {94, 1}, + {94, 1}, + {94, 1}, {94, 1}, {94, 1}, + {94, 1}, + {94, 1}, + {91, 1}, + {91, 1}, + {91, 1}, + {89, 1}, + {89, 1}, + {90, 1}, + {90, 1}, + {90, 1}, + {90, 1}, {80, 1}, {80, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, - {71, 1}, + {86, 1}, + {86, 1}, + {86, 1}, + {86, 1}, + {86, 1}, + {86, 1}, + {86, 1}, + {96, 1}, + {96, 1}, + {82, 1}, + {82, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, + {73, 1}, } yyhintXErrors = map[yyhintXError]string{} - yyhintParseTab = [247][]uint16{ + yyhintParseTab = [251][]uint16{ // 0 - {1: 221, 190, 192, 219, 203, 212, 224, 204, 199, 198, 202, 169, 187, 188, 189, 176, 181, 195, 205, 191, 193, 194, 207, 222, 196, 206, 208, 215, 210, 201, 177, 180, 185, 223, 186, 179, 214, 178, 209, 197, 220, 200, 182, 217, 211, 213, 218, 216, 78: 183, 83: 170, 184, 86: 168, 175, 89: 174, 172, 167, 173, 171, 99: 166, 101: 165}, - {69: 164}, - {1: 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 308, 69: 163, 74: 408}, - {1: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 69: 162}, - {1: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 69: 160}, + {1: 227, 202, 203, 194, 196, 225, 209, 218, 230, 210, 205, 204, 208, 173, 191, 192, 193, 180, 185, 199, 211, 195, 197, 198, 213, 228, 200, 212, 214, 221, 216, 207, 181, 184, 189, 229, 190, 183, 220, 182, 215, 201, 226, 206, 186, 223, 217, 219, 224, 222, 80: 187, 85: 174, 188, 88: 172, 179, 91: 178, 176, 171, 177, 175, 101: 170, 103: 169}, + {71: 168}, + {1: 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 316, 71: 167, 76: 416}, + {1: 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 71: 166}, + {1: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 71: 164}, // 5 - {68: 405}, - {68: 402}, - {68: 399}, - {68: 394}, - {68: 391}, + {70: 413}, + {70: 410}, + {70: 407}, + {70: 402}, + {70: 399}, // 10 - {68: 380}, - {68: 368}, - {68: 364}, - {68: 360}, - {68: 352}, + {70: 388}, + {70: 376}, + {70: 372}, + {70: 368}, + {70: 360}, // 15 - {68: 349}, - {68: 346}, - {68: 339}, - {68: 334}, - {68: 328}, + {70: 357}, + {70: 354}, + {70: 347}, + {70: 342}, + {70: 336}, // 20 - {68: 325}, - {68: 319}, - {68: 225}, - {68: 107}, - {68: 106}, + {70: 333}, + {70: 327}, + {70: 231}, + {70: 111}, + {70: 110}, // 25 - {68: 105}, - {68: 104}, - {68: 103}, - {68: 102}, - {68: 101}, + {70: 109}, + {70: 108}, + {70: 107}, + {70: 106}, + {70: 105}, // 30 - {68: 100}, - {68: 99}, - {68: 98}, - {68: 97}, - {68: 96}, + {70: 104}, + {70: 103}, + {70: 102}, + {70: 101}, + {70: 100}, // 35 - {68: 95}, - {68: 94}, - {68: 93}, - {68: 92}, - {68: 91}, + {70: 99}, + {70: 98}, + {70: 97}, + {70: 96}, + {70: 95}, // 40 - {68: 90}, - {68: 89}, - {68: 88}, - {68: 87}, - {68: 86}, + {70: 94}, + {70: 93}, + {70: 92}, + {70: 91}, + {70: 90}, // 45 - {68: 85}, - {68: 84}, - {68: 83}, - {68: 82}, - {68: 81}, + {70: 89}, + {70: 88}, + {70: 87}, + {70: 86}, + {70: 85}, // 50 - {68: 80}, - {68: 79}, - {68: 74}, - {68: 73}, - {68: 72}, + {70: 84}, + {70: 83}, + {70: 82}, + {70: 81}, + {70: 76}, // 55 - {68: 71}, - {68: 70}, - {68: 69}, - {68: 68}, - {68: 67}, + {70: 75}, + {70: 74}, + {70: 73}, + {70: 72}, + {70: 71}, // 60 - {68: 66}, - {54: 137, 137, 63: 227, 70: 226}, - {54: 232, 231, 80: 230, 229, 95: 228}, - {136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 64: 136, 136, 72: 136}, - {316, 49: 317}, + {70: 70}, + {70: 69}, + {70: 68}, + {56: 141, 141, 65: 233, 72: 232}, + {56: 238, 237, 82: 236, 235, 97: 234}, // 65 - {140, 49: 140}, - {77: 233}, - {77: 63}, - {77: 62}, - {1: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 50: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 227, 70: 235, 76: 234}, + {140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 66: 140, 140, 74: 140}, + {324, 51: 325}, + {144, 51: 144}, + {79: 239}, + {79: 65}, // 70 - {49: 314, 64: 313}, - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 237, 75: 236}, - {127, 49: 127, 64: 127}, - {137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 227, 137, 137, 300, 70: 299}, - {61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61}, + {79: 64}, + {1: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 52: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 233, 72: 241, 78: 240}, + {51: 322, 66: 321}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 243, 77: 242}, + {131, 51: 131, 66: 131}, // 75 - {60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60}, - {59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59}, - {58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58}, - {57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57}, - {56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}, + {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 233, 141, 141, 308, 72: 307}, + {63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63}, + {62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62}, + {61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61}, + {60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60}, // 80 - {55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55}, - {54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54}, - {53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53}, - {52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52}, - {51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51}, + {59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59}, + {58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58}, + {57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57}, + {56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56}, + {55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55}, // 85 - {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, - {49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49}, - {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48}, - {47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47}, - {46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46}, + {54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54}, + {53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53}, + {52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52}, + {51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51}, + {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, // 90 - {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45}, - {44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44}, - {43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43}, - {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}, - {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}, + {49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49}, + {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48}, + {47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47}, + {46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46}, + {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45}, // 95 - {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}, - {39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39}, - {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38}, - {37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37}, - {36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36}, + {44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44}, + {43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43}, + {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}, + {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41}, + {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40}, // 100 - {35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35}, - {34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34}, - {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33}, - {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, - {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}, + {39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39}, + {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38}, + {37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37}, + {36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36}, + {35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35}, // 105 - {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, - {29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29}, - {28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28}, - {27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27}, - {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}, + {34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34}, + {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33}, + {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}, + {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31}, + {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, // 110 - {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25}, - {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}, - {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}, - {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22}, - {21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}, + {29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29}, + {28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28}, + {27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27}, + {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}, + {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25}, // 115 - {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}, - {19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19}, - {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}, - {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}, - {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, + {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24}, + {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23}, + {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22}, + {21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}, + {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20}, // 120 - {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, - {14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, - {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, - {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, - {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, + {19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19}, + {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18}, + {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17}, + {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}, + {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15}, // 125 - {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, - {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}, - {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, - {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, - {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, + {14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14}, + {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13}, + {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12}, + {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11}, + {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}, // 130 - {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, - {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, - {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, - {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9}, + {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}, + {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, + {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, + {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5}, // 135 - {133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 64: 133, 303, 85: 312}, - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 301}, - {137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 227, 137, 137, 70: 302}, - {133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 64: 133, 303, 85: 304}, - {68: 305}, + {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}, + {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}, + {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 66: 137, 311, 87: 320}, // 140 - {124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 64: 124}, - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 307, 100: 306}, - {309, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 308, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 74: 310}, - {131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131}, - {134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 50: 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 73: 134}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 309}, + {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 233, 141, 141, 72: 310}, + {137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 66: 137, 311, 87: 312}, + {70: 313}, + {128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 66: 128}, // 145 - {132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 64: 132}, - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 311}, - {130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130}, - {125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 64: 125}, - {138, 49: 138}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 315, 102: 314}, + {317, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 316, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 76: 318}, + {135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135}, + {138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 52: 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 75: 138}, + {136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 66: 136}, // 150 - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 237, 75: 315}, - {126, 49: 126, 64: 126}, - {1: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 69: 141}, - {54: 232, 231, 80: 230, 318}, - {139, 49: 139}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 319}, + {134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134}, + {129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 66: 129}, + {142, 51: 142}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 243, 77: 323}, // 155 - {57: 137, 137, 63: 227, 70: 320}, - {57: 322, 323, 94: 321}, - {324}, - {65}, - {64}, + {130, 51: 130, 66: 130}, + {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 71: 145}, + {56: 238, 237, 82: 236, 326}, + {143, 51: 143}, + {59: 141, 141, 65: 233, 72: 328}, // 160 - {1: 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 69: 142}, - {137, 63: 227, 70: 326}, - {327}, - {1: 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 69: 143}, - {56: 137, 59: 137, 63: 227, 70: 329}, + {59: 330, 331, 96: 329}, + {332}, + {67}, + {66}, + {1: 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 71: 146}, // 165 - {56: 332, 59: 331, 96: 330}, - {333}, - {109}, - {108}, - {1: 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 69: 144}, + {141, 65: 233, 72: 334}, + {335}, + {1: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 71: 147}, + {58: 141, 61: 141, 65: 233, 72: 337}, + {58: 340, 61: 339, 98: 338}, // 170 - {73: 335}, - {49: 308, 73: 135, 336}, - {73: 337}, - {338}, - {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 69: 145}, + {341}, + {113}, + {112}, + {1: 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 71: 148}, + {75: 343}, // 175 - {63: 227, 70: 340, 72: 137}, - {72: 341}, - {60: 344, 343, 104: 342}, - {345}, - {111}, + {51: 316, 75: 139, 344}, + {75: 345}, + {346}, + {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 71: 149}, + {65: 233, 72: 348, 74: 141}, // 180 - {110}, - {1: 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 69: 146}, - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 347}, - {348}, - {1: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 69: 147}, + {74: 349}, + {62: 352, 351, 106: 350}, + {353}, + {115}, + {114}, // 185 - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 350}, - {351}, - {1: 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 69: 148}, - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 353}, - {67: 354}, + {1: 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 71: 150}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 355}, + {356}, + {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 71: 151}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 358}, // 190 - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 357, 358, 356, 105: 355}, {359}, - {114}, - {113}, - {112}, + {1: 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 71: 152}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 361}, + {69: 362}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 365, 366, 364, 107: 363}, // 195 - {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 69: 149}, - {63: 227, 70: 361, 72: 137}, - {72: 362}, - {363}, - {1: 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 69: 150}, - // 200 - {63: 227, 70: 365, 72: 137}, - {72: 366}, {367}, - {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 69: 151}, - {137, 50: 137, 137, 137, 137, 63: 227, 70: 369}, + {118}, + {117}, + {116}, + {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 71: 153}, + // 200 + {65: 233, 72: 369, 74: 141}, + {74: 370}, + {371}, + {1: 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 71: 154}, + {65: 233, 72: 373, 74: 141}, // 205 - {118, 50: 373, 374, 375, 376, 88: 372, 102: 371, 370}, - {379}, - {117, 49: 377}, - {116, 49: 116}, - {78, 49: 78}, + {74: 374}, + {375}, + {1: 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 71: 155}, + {141, 52: 141, 141, 141, 141, 65: 233, 72: 377}, + {122, 52: 381, 382, 383, 384, 90: 380, 104: 379, 378}, // 210 - {77, 49: 77}, - {76, 49: 76}, - {75, 49: 75}, - {50: 373, 374, 375, 376, 88: 378}, - {115, 49: 115}, + {387}, + {121, 51: 385}, + {120, 51: 120}, + {80, 51: 80}, + {79, 51: 79}, // 215 - {1: 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 69: 152}, - {1: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 50: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 227, 70: 382, 79: 381}, - {390}, - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 237, 75: 383}, - {135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 308, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 74: 384}, + {78, 51: 78}, + {77, 51: 77}, + {52: 381, 382, 383, 384, 90: 386}, + {119, 51: 119}, + {1: 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 71: 156}, // 220 - {122, 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 387, 97: 386, 385}, - {123}, - {121, 49: 388}, - {120, 49: 120}, - {1: 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 389}, + {1: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 52: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 233, 72: 390, 81: 389}, + {398}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 243, 77: 391}, + {139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 316, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 76: 392}, + {126, 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 395, 99: 394, 393}, // 225 - {119, 49: 119}, - {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 69: 153}, - {1: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 50: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 227, 70: 382, 79: 392}, - {393}, - {1: 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 69: 154}, + {127}, + {125, 51: 396}, + {124, 51: 124}, + {1: 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 397}, + {123, 51: 123}, // 230 - {137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 50: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 227, 70: 397, 76: 396, 82: 395}, - {398}, - {129, 49: 314}, - {128, 265, 243, 245, 267, 247, 268, 266, 251, 269, 270, 271, 239, 240, 241, 242, 261, 272, 249, 253, 244, 246, 248, 255, 252, 250, 254, 256, 260, 258, 273, 286, 264, 274, 275, 276, 263, 259, 262, 257, 277, 278, 279, 284, 285, 281, 280, 282, 283, 50: 295, 296, 297, 298, 290, 289, 291, 287, 288, 292, 294, 293, 238, 71: 237, 75: 236}, - {1: 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 69: 155}, - // 235 - {137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 50: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 227, 70: 397, 76: 396, 82: 400}, + {1: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 71: 157}, + {1: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 52: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 233, 72: 390, 81: 400}, {401}, - {1: 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 69: 156}, - {1: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 50: 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 227, 70: 235, 76: 403}, - {404, 49: 314}, + {1: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 71: 158}, + {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 52: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 233, 72: 405, 78: 404, 84: 403}, + // 235 + {406}, + {133, 51: 322}, + {132, 271, 284, 285, 249, 251, 273, 253, 274, 272, 257, 275, 276, 277, 245, 246, 247, 248, 267, 278, 255, 259, 250, 252, 254, 261, 258, 256, 260, 262, 266, 264, 279, 294, 270, 280, 281, 282, 269, 265, 268, 263, 283, 286, 287, 292, 293, 289, 288, 290, 291, 52: 303, 304, 305, 306, 298, 297, 299, 295, 296, 300, 302, 301, 244, 73: 243, 77: 242}, + {1: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 71: 159}, + {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 52: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 233, 72: 405, 78: 404, 84: 408}, // 240 - {1: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 69: 157}, - {137, 63: 227, 70: 406}, - {407}, - {1: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 69: 158}, - {1: 221, 190, 192, 219, 203, 212, 224, 204, 199, 198, 202, 169, 187, 188, 189, 176, 181, 195, 205, 191, 193, 194, 207, 222, 196, 206, 208, 215, 210, 201, 177, 180, 185, 223, 186, 179, 214, 178, 209, 197, 220, 200, 182, 217, 211, 213, 218, 216, 78: 183, 83: 170, 184, 86: 410, 175, 89: 174, 172, 409, 173, 171}, + {409}, + {1: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 71: 160}, + {1: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 52: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 233, 72: 241, 78: 411}, + {412, 51: 322}, + {1: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 71: 161}, // 245 - {1: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 69: 161}, - {1: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 69: 159}, + {141, 65: 233, 72: 414}, + {415}, + {1: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 71: 162}, + {1: 227, 202, 203, 194, 196, 225, 209, 218, 230, 210, 205, 204, 208, 173, 191, 192, 193, 180, 185, 199, 211, 195, 197, 198, 213, 228, 200, 212, 214, 221, 216, 207, 181, 184, 189, 229, 190, 183, 220, 182, 215, 201, 226, 206, 186, 223, 217, 219, 224, 222, 80: 187, 85: 174, 188, 88: 418, 179, 91: 178, 176, 417, 177, 175}, + {1: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 71: 165}, + // 250 + {1: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 71: 163}, } ) @@ -841,7 +856,7 @@ func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) { } func yyhintParse(yylex yyhintLexer, parser *hintParser) int { - const yyError = 107 + const yyError = 109 yyEx, _ := yylex.(yyhintLexerEx) var yyn int diff --git a/hintparser.y b/hintparser.y index 7d94988c9..dcd3e4ae9 100644 --- a/hintparser.y +++ b/hintparser.y @@ -91,6 +91,8 @@ import ( hintReadConsistentReplica "READ_CONSISTENT_REPLICA" hintReadFromStorage "READ_FROM_STORAGE" hintSMJoin "MERGE_JOIN" + hintBCJoin "BROADCAST_JOIN" + hintBCJoinPreferLocal "BROADCAST_JOIN_LOCAL" hintStreamAgg "STREAM_AGG" hintSwapJoinInputs "SWAP_JOIN_INPUTS" hintUseIndexMerge "USE_INDEX_MERGE" @@ -522,6 +524,8 @@ UnsupportedTableLevelOptimizerHintName: SupportedTableLevelOptimizerHintName: "MERGE_JOIN" +| "BROADCAST_JOIN" +| "BROADCAST_JOIN_LOCAL" | "INL_JOIN" | "INL_HASH_JOIN" | "SWAP_JOIN_INPUTS" @@ -618,6 +622,8 @@ Identifier: | "READ_CONSISTENT_REPLICA" | "READ_FROM_STORAGE" | "MERGE_JOIN" +| "BROADCAST_JOIN" +| "BROADCAST_JOIN_LOCAL" | "STREAM_AGG" | "SWAP_JOIN_INPUTS" | "USE_INDEX_MERGE" diff --git a/misc.go b/misc.go index c127baf59..e9829b390 100644 --- a/misc.go +++ b/misc.go @@ -847,6 +847,8 @@ var hintTokenMap = map[string]int{ "QUERY_TYPE": hintQueryType, "READ_CONSISTENT_REPLICA": hintReadConsistentReplica, "READ_FROM_STORAGE": hintReadFromStorage, + "BROADCAST_JOIN": hintBCJoin, + "BROADCAST_JOIN_LOCAL": hintBCJoinPreferLocal, "MERGE_JOIN": hintSMJoin, "STREAM_AGG": hintStreamAgg, "SWAP_JOIN_INPUTS": hintSwapJoinInputs, diff --git a/parser_test.go b/parser_test.go index d640922bb..3a8278eab 100644 --- a/parser_test.go +++ b/parser_test.go @@ -3170,6 +3170,27 @@ func (s *testParserSuite) TestOptimizerHints(c *C) { c.Assert(hints[1].Tables[0].TableName.L, Equals, "t3") c.Assert(hints[1].Tables[1].TableName.L, Equals, "t4") + // TEST BROADCAST_JOIN + stmt, _, err = parser.Parse("select /*+ BROADCAST_JOIN(t1, T2), broadcast_join(t3, t4), BROADCAST_JOIN_LOCAL(t2) */ c1, c2 from t1, t2 where t1.c1 = t2.c1", "", "") + c.Assert(err, IsNil) + selectStmt = stmt[0].(*ast.SelectStmt) + + hints = selectStmt.TableHints + c.Assert(hints, HasLen, 3) + c.Assert(hints[0].HintName.L, Equals, "broadcast_join") + c.Assert(hints[0].Tables, HasLen, 2) + c.Assert(hints[0].Tables[0].TableName.L, Equals, "t1") + c.Assert(hints[0].Tables[1].TableName.L, Equals, "t2") + + c.Assert(hints[1].HintName.L, Equals, "broadcast_join") + c.Assert(hints[1].Tables, HasLen, 2) + c.Assert(hints[1].Tables[0].TableName.L, Equals, "t3") + c.Assert(hints[1].Tables[1].TableName.L, Equals, "t4") + + c.Assert(hints[2].HintName.L, Equals, "broadcast_join_local") + c.Assert(hints[2].Tables, HasLen, 1) + c.Assert(hints[2].Tables[0].TableName.L, Equals, "t2") + // Test TIDB_INLJ stmt, _, err = parser.Parse("select /*+ TIDB_INLJ(t1, T2), tidb_inlj(t3, t4) */ c1, c2 from t1, t2 where t1.c1 = t2.c1", "", "") c.Assert(err, IsNil)