diff --git a/src/grammar/trino/TrinoSql.g4 b/src/grammar/trino/TrinoSql.g4 index 9895ee27..5bfd04ef 100644 --- a/src/grammar/trino/TrinoSql.g4 +++ b/src/grammar/trino/TrinoSql.g4 @@ -614,6 +614,7 @@ primaryExpression | KW_SUBSTRING '(' valueExpression KW_FROM valueExpression (KW_FOR valueExpression)? ')' # substring | KW_NORMALIZE '(' valueExpression (',' normalForm)? ')' # normalize | KW_EXTRACT '(' identifier KW_FROM valueExpression ')' # extract + | KW_COALESCE '(' expression (',' expression)* ')' # coalesce | '(' expression ')' # parenthesizedExpression | KW_GROUPING '(' (qualifiedName (',' qualifiedName)*)? ')' # groupingOperation | KW_JSON_EXISTS '(' jsonPathInvocation (jsonExistsErrorBehavior KW_ON KW_ERROR)? ')' # jsonExists @@ -1101,6 +1102,7 @@ nonReserved | KW_CASCADE | KW_CATALOG | KW_CATALOGS + | KW_COALESCE | KW_COLUMN | KW_COLUMNS | KW_COMMENT @@ -1334,6 +1336,7 @@ KW_CASE : 'CASE'; KW_CAST : 'CAST'; KW_CATALOG : 'CATALOG'; KW_CATALOGS : 'CATALOGS'; +KW_COALESCE : 'COALESCE'; KW_COLUMN : 'COLUMN'; KW_COLUMNS : 'COLUMNS'; KW_COMMENT : 'COMMENT'; diff --git a/src/lib/trino/TrinoSql.interp b/src/lib/trino/TrinoSql.interp index ae5ef5ec..7c9a50ed 100644 --- a/src/lib/trino/TrinoSql.interp +++ b/src/lib/trino/TrinoSql.interp @@ -43,6 +43,7 @@ null 'CAST' 'CATALOG' 'CATALOGS' +'COALESCE' 'COLUMN' 'COLUMNS' 'COMMENT' @@ -386,6 +387,7 @@ KW_CASE KW_CAST KW_CATALOG KW_CATALOGS +KW_COALESCE KW_COLUMN KW_COLUMNS KW_COMMENT @@ -843,4 +845,4 @@ nonReserved atn: -[4, 1, 340, 3667, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 1, 0, 5, 0, 312, 8, 0, 10, 0, 12, 0, 315, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 323, 8, 2, 1, 3, 1, 3, 3, 3, 327, 8, 3, 1, 4, 1, 4, 3, 4, 331, 8, 4, 1, 5, 1, 5, 3, 5, 335, 8, 5, 1, 6, 1, 6, 3, 6, 339, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 352, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 359, 8, 8, 1, 8, 1, 8, 3, 8, 363, 8, 8, 1, 8, 1, 8, 3, 8, 367, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 373, 8, 8, 1, 8, 1, 8, 3, 8, 377, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 384, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 389, 8, 8, 1, 8, 1, 8, 3, 8, 393, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 399, 8, 8, 1, 8, 1, 8, 3, 8, 403, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 422, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 428, 8, 8, 1, 8, 1, 8, 3, 8, 432, 8, 8, 1, 8, 1, 8, 3, 8, 436, 8, 8, 1, 8, 1, 8, 3, 8, 440, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 448, 8, 8, 1, 8, 1, 8, 3, 8, 452, 8, 8, 1, 8, 3, 8, 455, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 460, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 466, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 473, 8, 8, 10, 8, 12, 8, 476, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 481, 8, 8, 1, 8, 1, 8, 3, 8, 485, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 491, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 498, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 506, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 518, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 527, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 536, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 542, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 553, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 561, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 569, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 576, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 586, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 593, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 601, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 616, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 649, 8, 8, 10, 8, 12, 8, 652, 9, 8, 3, 8, 654, 8, 8, 1, 8, 3, 8, 657, 8, 8, 1, 8, 3, 8, 660, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 666, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 671, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 678, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 684, 8, 8, 1, 8, 1, 8, 3, 8, 688, 8, 8, 1, 8, 1, 8, 3, 8, 692, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 700, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 706, 8, 8, 1, 8, 1, 8, 3, 8, 710, 8, 8, 1, 8, 1, 8, 3, 8, 714, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 728, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 736, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 755, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 778, 8, 8, 10, 8, 12, 8, 781, 9, 8, 3, 8, 783, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 790, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 797, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 806, 8, 8, 1, 8, 1, 8, 3, 8, 810, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 817, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 823, 8, 8, 10, 8, 12, 8, 826, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 832, 8, 8, 10, 8, 12, 8, 835, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 840, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 845, 8, 8, 1, 8, 1, 8, 3, 8, 849, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 855, 8, 8, 10, 8, 12, 8, 858, 9, 8, 1, 8, 1, 8, 3, 8, 862, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 871, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 877, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 882, 8, 8, 10, 8, 12, 8, 885, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 891, 8, 8, 10, 8, 12, 8, 894, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 899, 8, 8, 1, 8, 1, 8, 3, 8, 903, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 909, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 914, 8, 8, 10, 8, 12, 8, 917, 9, 8, 1, 8, 1, 8, 3, 8, 921, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 932, 8, 8, 10, 8, 12, 8, 935, 9, 8, 1, 8, 1, 8, 3, 8, 939, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 951, 8, 8, 1, 8, 1, 8, 3, 8, 955, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 961, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 968, 8, 8, 10, 8, 12, 8, 971, 9, 8, 1, 8, 1, 8, 3, 8, 975, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 981, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1009, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1015, 8, 8, 3, 8, 1017, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1023, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1029, 8, 8, 3, 8, 1031, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1039, 8, 8, 3, 8, 1041, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1051, 8, 8, 3, 8, 1053, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1068, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1073, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1080, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1090, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1096, 8, 8, 3, 8, 1098, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1106, 8, 8, 3, 8, 1108, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1131, 8, 8, 10, 8, 12, 8, 1134, 9, 8, 3, 8, 1136, 8, 8, 1, 8, 1, 8, 3, 8, 1140, 8, 8, 1, 8, 1, 8, 3, 8, 1144, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1160, 8, 8, 10, 8, 12, 8, 1163, 9, 8, 3, 8, 1165, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1174, 8, 8, 10, 8, 12, 8, 1177, 9, 8, 3, 8, 1179, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1195, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1203, 8, 8, 10, 8, 12, 8, 1206, 9, 8, 1, 8, 3, 8, 1209, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1215, 8, 8, 1, 8, 3, 8, 1218, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1225, 8, 8, 11, 8, 12, 8, 1226, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1239, 8, 8, 1, 9, 3, 9, 1242, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1250, 8, 10, 10, 10, 12, 10, 1253, 9, 10, 1, 11, 3, 11, 1256, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 1262, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 1267, 8, 12, 10, 12, 12, 12, 1270, 9, 12, 1, 13, 1, 13, 3, 13, 1274, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1280, 8, 14, 1, 14, 1, 14, 3, 14, 1284, 8, 14, 1, 14, 1, 14, 3, 14, 1288, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1294, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 1303, 8, 17, 10, 17, 12, 17, 1306, 9, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 1314, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 1322, 8, 20, 10, 20, 12, 20, 1325, 9, 20, 3, 20, 1327, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1332, 8, 20, 3, 20, 1334, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1341, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1347, 8, 20, 3, 20, 1349, 8, 20, 1, 21, 1, 21, 3, 21, 1353, 8, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1363, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1369, 8, 23, 1, 23, 5, 23, 1372, 8, 23, 10, 23, 12, 23, 1375, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1384, 8, 24, 10, 24, 12, 24, 1387, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1393, 8, 24, 1, 25, 1, 25, 3, 25, 1397, 8, 25, 1, 25, 3, 25, 1400, 8, 25, 1, 25, 1, 25, 3, 25, 1404, 8, 25, 1, 26, 1, 26, 3, 26, 1408, 8, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1413, 8, 26, 10, 26, 12, 26, 1416, 9, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1422, 8, 26, 10, 26, 12, 26, 1425, 9, 26, 3, 26, 1427, 8, 26, 1, 26, 3, 26, 1430, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1435, 8, 26, 1, 26, 3, 26, 1438, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1444, 8, 26, 10, 26, 12, 26, 1447, 9, 26, 3, 26, 1449, 8, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 3, 29, 1458, 8, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1463, 8, 29, 10, 29, 12, 29, 1466, 9, 29, 1, 30, 1, 30, 1, 30, 5, 30, 1471, 8, 30, 10, 30, 12, 30, 1474, 9, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 1482, 8, 31, 10, 31, 12, 31, 1485, 9, 31, 3, 31, 1487, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 1495, 8, 31, 10, 31, 12, 31, 1498, 9, 31, 3, 31, 1500, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 1509, 8, 31, 10, 31, 12, 31, 1512, 9, 31, 1, 31, 1, 31, 3, 31, 1516, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1522, 8, 32, 10, 32, 12, 32, 1525, 9, 32, 3, 32, 1527, 8, 32, 1, 32, 1, 32, 3, 32, 1531, 8, 32, 1, 33, 1, 33, 3, 33, 1535, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 3, 35, 1544, 8, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1549, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1556, 8, 35, 10, 35, 12, 35, 1559, 9, 35, 3, 35, 1561, 8, 35, 1, 35, 3, 35, 1564, 8, 35, 1, 36, 1, 36, 3, 36, 1568, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 1579, 8, 38, 1, 38, 3, 38, 1582, 8, 38, 1, 38, 3, 38, 1585, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1592, 8, 38, 1, 38, 3, 38, 1595, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1614, 8, 39, 5, 39, 1616, 8, 39, 10, 39, 12, 39, 1619, 9, 39, 1, 40, 3, 40, 1622, 8, 40, 1, 40, 1, 40, 3, 40, 1626, 8, 40, 1, 40, 1, 40, 3, 40, 1630, 8, 40, 1, 40, 1, 40, 3, 40, 1634, 8, 40, 3, 40, 1636, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 1645, 8, 41, 10, 41, 12, 41, 1648, 9, 41, 1, 41, 1, 41, 3, 41, 1652, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1661, 8, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 3, 45, 1670, 8, 45, 1, 45, 3, 45, 1673, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1679, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1687, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1694, 8, 47, 10, 47, 12, 47, 1697, 9, 47, 3, 47, 1699, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1705, 8, 47, 10, 47, 12, 47, 1708, 9, 47, 3, 47, 1710, 8, 47, 1, 47, 3, 47, 1713, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1718, 8, 47, 1, 47, 3, 47, 1721, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1731, 8, 47, 10, 47, 12, 47, 1734, 9, 47, 3, 47, 1736, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1742, 8, 47, 10, 47, 12, 47, 1745, 9, 47, 1, 47, 1, 47, 3, 47, 1749, 8, 47, 1, 47, 1, 47, 3, 47, 1753, 8, 47, 3, 47, 1755, 8, 47, 3, 47, 1757, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1772, 8, 49, 3, 49, 1774, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1785, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1806, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1814, 8, 52, 10, 52, 12, 52, 1817, 9, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 1827, 8, 54, 1, 54, 1, 54, 3, 54, 1831, 8, 54, 3, 54, 1833, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1839, 8, 55, 10, 55, 12, 55, 1842, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1850, 8, 56, 10, 56, 12, 56, 1853, 9, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 1861, 8, 57, 10, 57, 12, 57, 1864, 9, 57, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1870, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1881, 8, 58, 10, 58, 12, 58, 1884, 9, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1889, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1913, 8, 58, 10, 58, 12, 58, 1916, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1930, 8, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1935, 8, 58, 1, 58, 1, 58, 3, 58, 1939, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1949, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1955, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1961, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1969, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1974, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1981, 8, 59, 3, 59, 1983, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1989, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1995, 8, 59, 1, 59, 1, 59, 3, 59, 1999, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2004, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 2011, 8, 59, 10, 59, 12, 59, 2014, 9, 59, 1, 59, 1, 59, 3, 59, 2018, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 2030, 8, 60, 10, 60, 12, 60, 2033, 9, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 2040, 8, 60, 10, 60, 12, 60, 2043, 9, 60, 3, 60, 2045, 8, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2054, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 2059, 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2064, 8, 63, 3, 63, 2066, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2073, 8, 64, 10, 64, 12, 64, 2076, 9, 64, 3, 64, 2078, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2084, 8, 64, 10, 64, 12, 64, 2087, 9, 64, 3, 64, 2089, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 3, 65, 2096, 8, 65, 1, 65, 1, 65, 1, 65, 3, 65, 2101, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2108, 8, 66, 1, 66, 1, 66, 3, 66, 2112, 8, 66, 3, 66, 2114, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2122, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 2130, 8, 66, 10, 66, 12, 66, 2133, 9, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2138, 8, 66, 3, 66, 2140, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 2147, 8, 67, 1, 67, 1, 67, 3, 67, 2151, 8, 67, 3, 67, 2153, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 2160, 8, 67, 1, 67, 1, 67, 3, 67, 2164, 8, 67, 3, 67, 2166, 8, 67, 3, 67, 2168, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 2175, 8, 68, 10, 68, 12, 68, 2178, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2188, 8, 68, 1, 69, 1, 69, 3, 69, 2192, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 2200, 8, 70, 10, 70, 12, 70, 2203, 9, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 3, 72, 2212, 8, 72, 1, 72, 1, 72, 3, 72, 2216, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2224, 8, 72, 10, 72, 12, 72, 2227, 9, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2239, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2247, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2254, 8, 73, 10, 73, 12, 73, 2257, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2262, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2270, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2276, 8, 73, 1, 73, 1, 73, 3, 73, 2280, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2285, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2290, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2296, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 2310, 8, 74, 10, 74, 12, 74, 2313, 9, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 4, 75, 2340, 8, 75, 11, 75, 12, 75, 2341, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2351, 8, 75, 10, 75, 12, 75, 2354, 9, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2361, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2366, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2371, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2382, 8, 75, 10, 75, 12, 75, 2385, 9, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2390, 8, 75, 1, 75, 3, 75, 2393, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2400, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2405, 8, 75, 1, 75, 3, 75, 2408, 8, 75, 1, 75, 3, 75, 2411, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2416, 8, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2421, 8, 75, 10, 75, 12, 75, 2424, 9, 75, 3, 75, 2426, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2433, 8, 75, 10, 75, 12, 75, 2436, 9, 75, 3, 75, 2438, 8, 75, 1, 75, 1, 75, 3, 75, 2442, 8, 75, 1, 75, 3, 75, 2445, 8, 75, 1, 75, 3, 75, 2448, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2461, 8, 75, 10, 75, 12, 75, 2464, 9, 75, 3, 75, 2466, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 4, 75, 2483, 8, 75, 11, 75, 12, 75, 2484, 1, 75, 1, 75, 3, 75, 2489, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 4, 75, 2495, 8, 75, 11, 75, 12, 75, 2496, 1, 75, 1, 75, 3, 75, 2501, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2524, 8, 75, 10, 75, 12, 75, 2527, 9, 75, 3, 75, 2529, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2538, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2544, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2550, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2556, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2565, 8, 75, 1, 75, 3, 75, 2568, 8, 75, 1, 75, 3, 75, 2571, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2590, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2599, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2619, 8, 75, 10, 75, 12, 75, 2622, 9, 75, 3, 75, 2624, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2634, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2643, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2649, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2655, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2666, 8, 75, 3, 75, 2668, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2673, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2680, 8, 75, 3, 75, 2682, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2688, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2694, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2703, 8, 75, 10, 75, 12, 75, 2706, 9, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2714, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2719, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2724, 8, 75, 3, 75, 2726, 8, 75, 3, 75, 2728, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2734, 8, 75, 3, 75, 2736, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2744, 8, 75, 10, 75, 12, 75, 2747, 9, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2755, 8, 75, 3, 75, 2757, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2763, 8, 75, 3, 75, 2765, 8, 75, 1, 75, 3, 75, 2768, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2778, 8, 75, 10, 75, 12, 75, 2781, 9, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 2788, 8, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 2794, 8, 76, 10, 76, 12, 76, 2797, 9, 76, 3, 76, 2799, 8, 76, 1, 77, 1, 77, 1, 77, 3, 77, 2804, 8, 77, 1, 78, 1, 78, 1, 78, 3, 78, 2809, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2821, 8, 81, 1, 82, 1, 82, 3, 82, 2825, 8, 82, 1, 82, 1, 82, 3, 82, 2829, 8, 82, 1, 82, 3, 82, 2832, 8, 82, 3, 82, 2834, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 2842, 8, 83, 1, 84, 3, 84, 2845, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2855, 8, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2863, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2869, 8, 87, 3, 87, 2871, 8, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 2879, 8, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 3, 92, 2889, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2895, 8, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 5, 95, 2907, 8, 95, 10, 95, 12, 95, 2910, 9, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2918, 8, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2925, 8, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2930, 8, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2937, 8, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2942, 8, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 5, 95, 2963, 8, 95, 10, 95, 12, 95, 2966, 9, 95, 1, 95, 1, 95, 3, 95, 2970, 8, 95, 3, 95, 2972, 8, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2979, 8, 95, 5, 95, 2981, 8, 95, 10, 95, 12, 95, 2984, 9, 95, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2990, 8, 96, 1, 97, 1, 97, 3, 97, 2994, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 3010, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 5, 100, 3023, 8, 100, 10, 100, 12, 100, 3026, 9, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 3032, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 3041, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 5, 100, 3049, 8, 100, 10, 100, 12, 100, 3052, 9, 100, 1, 100, 1, 100, 3, 100, 3056, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 5, 100, 3063, 8, 100, 10, 100, 12, 100, 3066, 9, 100, 1, 100, 1, 100, 3, 100, 3070, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3078, 8, 101, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3084, 8, 102, 10, 102, 12, 102, 3087, 9, 102, 3, 102, 3089, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3095, 8, 102, 1, 102, 3, 102, 3098, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3105, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3111, 8, 102, 10, 102, 12, 102, 3114, 9, 102, 3, 102, 3116, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3122, 8, 102, 10, 102, 12, 102, 3125, 9, 102, 3, 102, 3127, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 3153, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3164, 8, 104, 1, 105, 1, 105, 1, 105, 3, 105, 3169, 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 3176, 8, 105, 10, 105, 12, 105, 3179, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 5, 106, 3189, 8, 106, 10, 106, 12, 106, 3192, 9, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 3206, 8, 106, 1, 107, 1, 107, 3, 107, 3210, 8, 107, 1, 107, 1, 107, 3, 107, 3214, 8, 107, 1, 107, 1, 107, 3, 107, 3218, 8, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3224, 8, 107, 1, 107, 1, 107, 3, 107, 3228, 8, 107, 1, 107, 1, 107, 3, 107, 3232, 8, 107, 1, 107, 1, 107, 3, 107, 3236, 8, 107, 3, 107, 3238, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3248, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 3255, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 3264, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 3271, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 3278, 8, 113, 1, 114, 1, 114, 1, 114, 5, 114, 3283, 8, 114, 10, 114, 12, 114, 3286, 9, 114, 1, 115, 1, 115, 1, 115, 1, 115, 5, 115, 3292, 8, 115, 10, 115, 12, 115, 3295, 9, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 3304, 8, 116, 10, 116, 12, 116, 3307, 9, 116, 3, 116, 3309, 8, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 5, 117, 3318, 8, 117, 10, 117, 12, 117, 3321, 9, 117, 3, 117, 3323, 8, 117, 1, 117, 1, 117, 1, 118, 3, 118, 3328, 8, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 3, 120, 3338, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3354, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 4, 121, 3366, 8, 121, 11, 121, 12, 121, 3367, 1, 121, 3, 121, 3371, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 4, 121, 3378, 8, 121, 11, 121, 12, 121, 3379, 1, 121, 3, 121, 3383, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 3393, 8, 121, 10, 121, 12, 121, 3396, 9, 121, 1, 121, 3, 121, 3399, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 3412, 8, 121, 10, 121, 12, 121, 3415, 9, 121, 1, 121, 3, 121, 3418, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3424, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3434, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3446, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3455, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 3474, 8, 125, 10, 125, 12, 125, 3477, 9, 125, 1, 125, 1, 125, 1, 125, 3, 125, 3482, 8, 125, 1, 126, 1, 126, 1, 126, 4, 126, 3487, 8, 126, 11, 126, 12, 126, 3488, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 3497, 8, 127, 1, 128, 1, 128, 1, 128, 3, 128, 3502, 8, 128, 1, 129, 3, 129, 3505, 8, 129, 1, 129, 1, 129, 1, 130, 1, 130, 3, 130, 3511, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3524, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3537, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3550, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 3563, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 3570, 8, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 3577, 8, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 140, 1, 140, 1, 141, 1, 141, 3, 141, 3589, 8, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 5, 144, 3598, 8, 144, 10, 144, 12, 144, 3601, 9, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 3, 147, 3614, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3621, 8, 148, 1, 149, 1, 149, 1, 149, 5, 149, 3626, 8, 149, 10, 149, 12, 149, 3629, 9, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 3638, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 3645, 8, 151, 1, 152, 3, 152, 3648, 8, 152, 1, 152, 1, 152, 3, 152, 3652, 8, 152, 1, 152, 1, 152, 3, 152, 3656, 8, 152, 1, 152, 3, 152, 3659, 8, 152, 1, 153, 1, 153, 3, 153, 3663, 8, 153, 1, 154, 1, 154, 1, 154, 0, 7, 46, 78, 144, 148, 150, 190, 210, 155, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 0, 36, 2, 0, 39, 39, 229, 229, 2, 0, 72, 72, 131, 131, 2, 0, 105, 105, 122, 122, 2, 0, 92, 92, 123, 123, 1, 0, 239, 240, 2, 0, 101, 101, 174, 174, 2, 0, 324, 324, 329, 329, 2, 0, 91, 91, 281, 281, 2, 0, 29, 29, 75, 75, 2, 0, 101, 101, 148, 148, 2, 0, 22, 22, 79, 79, 2, 0, 33, 33, 259, 259, 3, 0, 35, 35, 150, 150, 270, 270, 2, 0, 124, 124, 247, 247, 2, 0, 85, 85, 89, 89, 2, 0, 144, 144, 189, 189, 2, 0, 125, 125, 197, 197, 2, 0, 54, 54, 281, 281, 1, 0, 318, 319, 1, 0, 320, 322, 1, 0, 291, 293, 4, 0, 89, 89, 97, 97, 273, 273, 283, 283, 2, 0, 49, 49, 280, 280, 2, 0, 100, 100, 241, 241, 1, 0, 312, 317, 3, 0, 22, 22, 26, 26, 254, 254, 2, 0, 97, 97, 273, 273, 5, 0, 67, 67, 118, 118, 170, 171, 245, 245, 310, 310, 1, 0, 175, 178, 2, 0, 304, 304, 306, 306, 2, 0, 102, 102, 212, 212, 3, 0, 113, 113, 137, 137, 263, 263, 4, 0, 80, 80, 132, 132, 160, 160, 294, 294, 2, 0, 192, 192, 309, 309, 2, 0, 268, 268, 298, 298, 54, 0, 18, 22, 24, 24, 26, 27, 29, 33, 35, 35, 37, 39, 42, 49, 51, 52, 56, 56, 65, 67, 69, 72, 74, 75, 77, 78, 80, 82, 85, 87, 89, 89, 92, 92, 95, 95, 98, 102, 104, 104, 107, 113, 116, 116, 118, 121, 123, 124, 126, 126, 129, 129, 131, 132, 134, 135, 137, 137, 144, 151, 153, 153, 155, 155, 157, 157, 160, 171, 173, 180, 184, 189, 191, 193, 196, 196, 198, 213, 215, 220, 222, 233, 235, 237, 239, 247, 249, 259, 261, 264, 266, 271, 274, 276, 278, 280, 282, 284, 286, 289, 291, 295, 297, 299, 302, 303, 305, 311, 4212, 0, 313, 1, 0, 0, 0, 2, 318, 1, 0, 0, 0, 4, 320, 1, 0, 0, 0, 6, 324, 1, 0, 0, 0, 8, 328, 1, 0, 0, 0, 10, 332, 1, 0, 0, 0, 12, 336, 1, 0, 0, 0, 14, 340, 1, 0, 0, 0, 16, 1238, 1, 0, 0, 0, 18, 1241, 1, 0, 0, 0, 20, 1245, 1, 0, 0, 0, 22, 1255, 1, 0, 0, 0, 24, 1259, 1, 0, 0, 0, 26, 1273, 1, 0, 0, 0, 28, 1275, 1, 0, 0, 0, 30, 1289, 1, 0, 0, 0, 32, 1295, 1, 0, 0, 0, 34, 1299, 1, 0, 0, 0, 36, 1307, 1, 0, 0, 0, 38, 1313, 1, 0, 0, 0, 40, 1315, 1, 0, 0, 0, 42, 1352, 1, 0, 0, 0, 44, 1354, 1, 0, 0, 0, 46, 1356, 1, 0, 0, 0, 48, 1392, 1, 0, 0, 0, 50, 1396, 1, 0, 0, 0, 52, 1405, 1, 0, 0, 0, 54, 1450, 1, 0, 0, 0, 56, 1453, 1, 0, 0, 0, 58, 1457, 1, 0, 0, 0, 60, 1467, 1, 0, 0, 0, 62, 1515, 1, 0, 0, 0, 64, 1530, 1, 0, 0, 0, 66, 1534, 1, 0, 0, 0, 68, 1536, 1, 0, 0, 0, 70, 1543, 1, 0, 0, 0, 72, 1565, 1, 0, 0, 0, 74, 1574, 1, 0, 0, 0, 76, 1594, 1, 0, 0, 0, 78, 1596, 1, 0, 0, 0, 80, 1635, 1, 0, 0, 0, 82, 1651, 1, 0, 0, 0, 84, 1653, 1, 0, 0, 0, 86, 1662, 1, 0, 0, 0, 88, 1664, 1, 0, 0, 0, 90, 1672, 1, 0, 0, 0, 92, 1678, 1, 0, 0, 0, 94, 1680, 1, 0, 0, 0, 96, 1758, 1, 0, 0, 0, 98, 1773, 1, 0, 0, 0, 100, 1784, 1, 0, 0, 0, 102, 1805, 1, 0, 0, 0, 104, 1807, 1, 0, 0, 0, 106, 1820, 1, 0, 0, 0, 108, 1824, 1, 0, 0, 0, 110, 1834, 1, 0, 0, 0, 112, 1845, 1, 0, 0, 0, 114, 1856, 1, 0, 0, 0, 116, 1938, 1, 0, 0, 0, 118, 2017, 1, 0, 0, 0, 120, 2044, 1, 0, 0, 0, 122, 2046, 1, 0, 0, 0, 124, 2053, 1, 0, 0, 0, 126, 2065, 1, 0, 0, 0, 128, 2067, 1, 0, 0, 0, 130, 2095, 1, 0, 0, 0, 132, 2102, 1, 0, 0, 0, 134, 2167, 1, 0, 0, 0, 136, 2187, 1, 0, 0, 0, 138, 2189, 1, 0, 0, 0, 140, 2193, 1, 0, 0, 0, 142, 2206, 1, 0, 0, 0, 144, 2215, 1, 0, 0, 0, 146, 2289, 1, 0, 0, 0, 148, 2295, 1, 0, 0, 0, 150, 2767, 1, 0, 0, 0, 152, 2782, 1, 0, 0, 0, 154, 2800, 1, 0, 0, 0, 156, 2805, 1, 0, 0, 0, 158, 2810, 1, 0, 0, 0, 160, 2814, 1, 0, 0, 0, 162, 2820, 1, 0, 0, 0, 164, 2833, 1, 0, 0, 0, 166, 2841, 1, 0, 0, 0, 168, 2854, 1, 0, 0, 0, 170, 2856, 1, 0, 0, 0, 172, 2862, 1, 0, 0, 0, 174, 2870, 1, 0, 0, 0, 176, 2878, 1, 0, 0, 0, 178, 2880, 1, 0, 0, 0, 180, 2882, 1, 0, 0, 0, 182, 2884, 1, 0, 0, 0, 184, 2886, 1, 0, 0, 0, 186, 2896, 1, 0, 0, 0, 188, 2898, 1, 0, 0, 0, 190, 2971, 1, 0, 0, 0, 192, 2989, 1, 0, 0, 0, 194, 2993, 1, 0, 0, 0, 196, 2995, 1, 0, 0, 0, 198, 3000, 1, 0, 0, 0, 200, 3069, 1, 0, 0, 0, 202, 3071, 1, 0, 0, 0, 204, 3088, 1, 0, 0, 0, 206, 3152, 1, 0, 0, 0, 208, 3163, 1, 0, 0, 0, 210, 3165, 1, 0, 0, 0, 212, 3205, 1, 0, 0, 0, 214, 3237, 1, 0, 0, 0, 216, 3239, 1, 0, 0, 0, 218, 3247, 1, 0, 0, 0, 220, 3254, 1, 0, 0, 0, 222, 3263, 1, 0, 0, 0, 224, 3270, 1, 0, 0, 0, 226, 3277, 1, 0, 0, 0, 228, 3279, 1, 0, 0, 0, 230, 3287, 1, 0, 0, 0, 232, 3298, 1, 0, 0, 0, 234, 3312, 1, 0, 0, 0, 236, 3327, 1, 0, 0, 0, 238, 3331, 1, 0, 0, 0, 240, 3353, 1, 0, 0, 0, 242, 3454, 1, 0, 0, 0, 244, 3456, 1, 0, 0, 0, 246, 3461, 1, 0, 0, 0, 248, 3466, 1, 0, 0, 0, 250, 3469, 1, 0, 0, 0, 252, 3486, 1, 0, 0, 0, 254, 3496, 1, 0, 0, 0, 256, 3501, 1, 0, 0, 0, 258, 3504, 1, 0, 0, 0, 260, 3510, 1, 0, 0, 0, 262, 3523, 1, 0, 0, 0, 264, 3536, 1, 0, 0, 0, 266, 3549, 1, 0, 0, 0, 268, 3562, 1, 0, 0, 0, 270, 3569, 1, 0, 0, 0, 272, 3576, 1, 0, 0, 0, 274, 3578, 1, 0, 0, 0, 276, 3580, 1, 0, 0, 0, 278, 3582, 1, 0, 0, 0, 280, 3584, 1, 0, 0, 0, 282, 3588, 1, 0, 0, 0, 284, 3590, 1, 0, 0, 0, 286, 3592, 1, 0, 0, 0, 288, 3594, 1, 0, 0, 0, 290, 3602, 1, 0, 0, 0, 292, 3608, 1, 0, 0, 0, 294, 3613, 1, 0, 0, 0, 296, 3620, 1, 0, 0, 0, 298, 3622, 1, 0, 0, 0, 300, 3637, 1, 0, 0, 0, 302, 3644, 1, 0, 0, 0, 304, 3658, 1, 0, 0, 0, 306, 3662, 1, 0, 0, 0, 308, 3664, 1, 0, 0, 0, 310, 312, 3, 2, 1, 0, 311, 310, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 0, 0, 1, 317, 1, 1, 0, 0, 0, 318, 319, 3, 4, 2, 0, 319, 3, 1, 0, 0, 0, 320, 322, 3, 16, 8, 0, 321, 323, 5, 325, 0, 0, 322, 321, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 5, 1, 0, 0, 0, 324, 326, 3, 142, 71, 0, 325, 327, 5, 325, 0, 0, 326, 325, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 7, 1, 0, 0, 0, 328, 330, 3, 228, 114, 0, 329, 331, 5, 325, 0, 0, 330, 329, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 9, 1, 0, 0, 0, 332, 334, 3, 190, 95, 0, 333, 335, 5, 325, 0, 0, 334, 333, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 11, 1, 0, 0, 0, 336, 338, 3, 210, 105, 0, 337, 339, 5, 325, 0, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 13, 1, 0, 0, 0, 340, 341, 3, 230, 115, 0, 341, 342, 5, 0, 0, 1, 342, 15, 1, 0, 0, 0, 343, 1239, 3, 18, 9, 0, 344, 345, 5, 288, 0, 0, 345, 1239, 3, 270, 135, 0, 346, 347, 5, 53, 0, 0, 347, 351, 5, 42, 0, 0, 348, 349, 5, 119, 0, 0, 349, 350, 5, 182, 0, 0, 350, 352, 5, 94, 0, 0, 351, 348, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 354, 3, 276, 138, 0, 354, 355, 5, 290, 0, 0, 355, 358, 3, 302, 151, 0, 356, 357, 5, 46, 0, 0, 357, 359, 3, 174, 87, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 361, 5, 31, 0, 0, 361, 363, 3, 296, 148, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 366, 1, 0, 0, 0, 364, 365, 5, 304, 0, 0, 365, 367, 3, 32, 16, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 1239, 1, 0, 0, 0, 368, 369, 5, 83, 0, 0, 369, 372, 5, 42, 0, 0, 370, 371, 5, 119, 0, 0, 371, 373, 5, 94, 0, 0, 372, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 376, 3, 274, 137, 0, 375, 377, 7, 0, 0, 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 1239, 1, 0, 0, 0, 378, 379, 5, 53, 0, 0, 379, 383, 5, 243, 0, 0, 380, 381, 5, 119, 0, 0, 381, 382, 5, 182, 0, 0, 382, 384, 5, 94, 0, 0, 383, 380, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 388, 3, 272, 136, 0, 386, 387, 5, 31, 0, 0, 387, 389, 3, 296, 148, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 391, 5, 304, 0, 0, 391, 393, 3, 32, 16, 0, 392, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 1239, 1, 0, 0, 0, 394, 395, 5, 83, 0, 0, 395, 398, 5, 243, 0, 0, 396, 397, 5, 119, 0, 0, 397, 399, 5, 94, 0, 0, 398, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 402, 3, 270, 135, 0, 401, 403, 7, 0, 0, 0, 402, 401, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 1239, 1, 0, 0, 0, 404, 405, 5, 23, 0, 0, 405, 406, 5, 243, 0, 0, 406, 407, 3, 270, 135, 0, 407, 408, 5, 223, 0, 0, 408, 409, 5, 269, 0, 0, 409, 410, 3, 272, 136, 0, 410, 1239, 1, 0, 0, 0, 411, 412, 5, 23, 0, 0, 412, 413, 5, 243, 0, 0, 413, 414, 3, 270, 135, 0, 414, 415, 5, 251, 0, 0, 415, 416, 5, 31, 0, 0, 416, 417, 3, 296, 148, 0, 417, 1239, 1, 0, 0, 0, 418, 421, 5, 53, 0, 0, 419, 420, 5, 194, 0, 0, 420, 422, 5, 226, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 427, 5, 260, 0, 0, 424, 425, 5, 119, 0, 0, 425, 426, 5, 182, 0, 0, 426, 428, 5, 94, 0, 0, 427, 424, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 431, 3, 264, 132, 0, 430, 432, 3, 110, 55, 0, 431, 430, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 435, 1, 0, 0, 0, 433, 434, 5, 46, 0, 0, 434, 436, 3, 174, 87, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 438, 5, 304, 0, 0, 438, 440, 3, 32, 16, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 447, 5, 28, 0, 0, 442, 448, 3, 18, 9, 0, 443, 444, 5, 1, 0, 0, 444, 445, 3, 18, 9, 0, 445, 446, 5, 2, 0, 0, 446, 448, 1, 0, 0, 0, 447, 442, 1, 0, 0, 0, 447, 443, 1, 0, 0, 0, 448, 454, 1, 0, 0, 0, 449, 451, 5, 304, 0, 0, 450, 452, 5, 179, 0, 0, 451, 450, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 455, 5, 65, 0, 0, 454, 449, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 1239, 1, 0, 0, 0, 456, 459, 5, 53, 0, 0, 457, 458, 5, 194, 0, 0, 458, 460, 5, 226, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 465, 5, 260, 0, 0, 462, 463, 5, 119, 0, 0, 463, 464, 5, 182, 0, 0, 464, 466, 5, 94, 0, 0, 465, 462, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 468, 3, 264, 132, 0, 468, 469, 5, 1, 0, 0, 469, 474, 3, 26, 13, 0, 470, 471, 5, 3, 0, 0, 471, 473, 3, 26, 13, 0, 472, 470, 1, 0, 0, 0, 473, 476, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 477, 1, 0, 0, 0, 476, 474, 1, 0, 0, 0, 477, 480, 5, 2, 0, 0, 478, 479, 5, 46, 0, 0, 479, 481, 3, 174, 87, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 484, 1, 0, 0, 0, 482, 483, 5, 304, 0, 0, 483, 485, 3, 32, 16, 0, 484, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 1239, 1, 0, 0, 0, 486, 487, 5, 83, 0, 0, 487, 490, 5, 260, 0, 0, 488, 489, 5, 119, 0, 0, 489, 491, 5, 94, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 1239, 3, 262, 131, 0, 493, 494, 5, 127, 0, 0, 494, 495, 5, 130, 0, 0, 495, 497, 3, 262, 131, 0, 496, 498, 3, 112, 56, 0, 497, 496, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 3, 18, 9, 0, 500, 1239, 1, 0, 0, 0, 501, 502, 5, 73, 0, 0, 502, 503, 5, 105, 0, 0, 503, 505, 3, 262, 131, 0, 504, 506, 3, 54, 27, 0, 505, 504, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 1239, 1, 0, 0, 0, 507, 508, 5, 274, 0, 0, 508, 509, 5, 260, 0, 0, 509, 1239, 3, 262, 131, 0, 510, 511, 5, 46, 0, 0, 511, 512, 5, 190, 0, 0, 512, 513, 5, 260, 0, 0, 513, 514, 3, 262, 131, 0, 514, 517, 5, 133, 0, 0, 515, 518, 3, 174, 87, 0, 516, 518, 5, 183, 0, 0, 517, 515, 1, 0, 0, 0, 517, 516, 1, 0, 0, 0, 518, 1239, 1, 0, 0, 0, 519, 520, 5, 46, 0, 0, 520, 521, 5, 190, 0, 0, 521, 522, 5, 299, 0, 0, 522, 523, 3, 266, 133, 0, 523, 526, 5, 133, 0, 0, 524, 527, 3, 174, 87, 0, 525, 527, 5, 183, 0, 0, 526, 524, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 1239, 1, 0, 0, 0, 528, 529, 5, 46, 0, 0, 529, 530, 5, 190, 0, 0, 530, 531, 5, 44, 0, 0, 531, 532, 3, 282, 141, 0, 532, 535, 5, 133, 0, 0, 533, 536, 3, 174, 87, 0, 534, 536, 5, 183, 0, 0, 535, 533, 1, 0, 0, 0, 535, 534, 1, 0, 0, 0, 536, 1239, 1, 0, 0, 0, 537, 538, 5, 23, 0, 0, 538, 541, 5, 260, 0, 0, 539, 540, 5, 119, 0, 0, 540, 542, 5, 94, 0, 0, 541, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 544, 3, 262, 131, 0, 544, 545, 5, 223, 0, 0, 545, 546, 5, 269, 0, 0, 546, 547, 3, 264, 132, 0, 547, 1239, 1, 0, 0, 0, 548, 549, 5, 23, 0, 0, 549, 552, 5, 260, 0, 0, 550, 551, 5, 119, 0, 0, 551, 553, 5, 94, 0, 0, 552, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 3, 262, 131, 0, 555, 556, 5, 19, 0, 0, 556, 560, 5, 44, 0, 0, 557, 558, 5, 119, 0, 0, 558, 559, 5, 182, 0, 0, 559, 561, 5, 94, 0, 0, 560, 557, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 28, 14, 0, 563, 1239, 1, 0, 0, 0, 564, 565, 5, 23, 0, 0, 565, 568, 5, 260, 0, 0, 566, 567, 5, 119, 0, 0, 567, 569, 5, 94, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 3, 262, 131, 0, 571, 572, 5, 223, 0, 0, 572, 575, 5, 44, 0, 0, 573, 574, 5, 119, 0, 0, 574, 576, 5, 94, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 3, 282, 141, 0, 578, 579, 5, 269, 0, 0, 579, 580, 3, 286, 143, 0, 580, 1239, 1, 0, 0, 0, 581, 582, 5, 23, 0, 0, 582, 585, 5, 260, 0, 0, 583, 584, 5, 119, 0, 0, 584, 586, 5, 94, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 3, 262, 131, 0, 588, 589, 5, 83, 0, 0, 589, 592, 5, 44, 0, 0, 590, 591, 5, 119, 0, 0, 591, 593, 5, 94, 0, 0, 592, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 3, 282, 141, 0, 595, 1239, 1, 0, 0, 0, 596, 597, 5, 23, 0, 0, 597, 600, 5, 260, 0, 0, 598, 599, 5, 119, 0, 0, 599, 601, 5, 94, 0, 0, 600, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 603, 3, 262, 131, 0, 603, 604, 5, 23, 0, 0, 604, 605, 5, 44, 0, 0, 605, 606, 3, 282, 141, 0, 606, 607, 5, 251, 0, 0, 607, 608, 5, 65, 0, 0, 608, 609, 5, 276, 0, 0, 609, 610, 3, 190, 95, 0, 610, 1239, 1, 0, 0, 0, 611, 612, 5, 23, 0, 0, 612, 615, 5, 260, 0, 0, 613, 614, 5, 119, 0, 0, 614, 616, 5, 94, 0, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 3, 262, 131, 0, 618, 619, 5, 23, 0, 0, 619, 620, 5, 44, 0, 0, 620, 621, 3, 282, 141, 0, 621, 622, 5, 83, 0, 0, 622, 623, 5, 182, 0, 0, 623, 624, 5, 183, 0, 0, 624, 1239, 1, 0, 0, 0, 625, 626, 5, 23, 0, 0, 626, 627, 5, 260, 0, 0, 627, 628, 3, 262, 131, 0, 628, 629, 5, 251, 0, 0, 629, 630, 5, 31, 0, 0, 630, 631, 3, 296, 148, 0, 631, 1239, 1, 0, 0, 0, 632, 633, 5, 23, 0, 0, 633, 634, 5, 260, 0, 0, 634, 635, 3, 262, 131, 0, 635, 636, 5, 251, 0, 0, 636, 637, 5, 216, 0, 0, 637, 638, 3, 34, 17, 0, 638, 1239, 1, 0, 0, 0, 639, 640, 5, 23, 0, 0, 640, 641, 5, 260, 0, 0, 641, 642, 3, 262, 131, 0, 642, 643, 5, 93, 0, 0, 643, 656, 3, 278, 139, 0, 644, 653, 5, 1, 0, 0, 645, 650, 3, 224, 112, 0, 646, 647, 5, 3, 0, 0, 647, 649, 3, 224, 112, 0, 648, 646, 1, 0, 0, 0, 649, 652, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 653, 645, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 657, 5, 2, 0, 0, 656, 644, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 659, 1, 0, 0, 0, 658, 660, 3, 54, 27, 0, 659, 658, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 1239, 1, 0, 0, 0, 661, 662, 5, 24, 0, 0, 662, 665, 3, 262, 131, 0, 663, 664, 5, 304, 0, 0, 664, 666, 3, 32, 16, 0, 665, 663, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 1239, 1, 0, 0, 0, 667, 670, 5, 53, 0, 0, 668, 669, 5, 194, 0, 0, 669, 671, 5, 226, 0, 0, 670, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 673, 5, 167, 0, 0, 673, 677, 5, 299, 0, 0, 674, 675, 5, 119, 0, 0, 675, 676, 5, 182, 0, 0, 676, 678, 5, 94, 0, 0, 677, 674, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 683, 3, 268, 134, 0, 680, 681, 5, 109, 0, 0, 681, 682, 5, 208, 0, 0, 682, 684, 3, 184, 92, 0, 683, 680, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 687, 1, 0, 0, 0, 685, 686, 5, 46, 0, 0, 686, 688, 3, 174, 87, 0, 687, 685, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 691, 1, 0, 0, 0, 689, 690, 5, 304, 0, 0, 690, 692, 3, 32, 16, 0, 691, 689, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 5, 28, 0, 0, 694, 695, 3, 18, 9, 0, 695, 1239, 1, 0, 0, 0, 696, 699, 5, 53, 0, 0, 697, 698, 5, 194, 0, 0, 698, 700, 5, 226, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 702, 5, 299, 0, 0, 702, 705, 3, 268, 134, 0, 703, 704, 5, 46, 0, 0, 704, 706, 3, 174, 87, 0, 705, 703, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 709, 1, 0, 0, 0, 707, 708, 5, 246, 0, 0, 708, 710, 7, 1, 0, 0, 709, 707, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 712, 5, 304, 0, 0, 712, 714, 3, 32, 16, 0, 713, 711, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 5, 28, 0, 0, 716, 717, 3, 18, 9, 0, 717, 1239, 1, 0, 0, 0, 718, 719, 5, 222, 0, 0, 719, 720, 5, 167, 0, 0, 720, 721, 5, 299, 0, 0, 721, 1239, 3, 266, 133, 0, 722, 723, 5, 83, 0, 0, 723, 724, 5, 167, 0, 0, 724, 727, 5, 299, 0, 0, 725, 726, 5, 119, 0, 0, 726, 728, 5, 94, 0, 0, 727, 725, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 1239, 3, 266, 133, 0, 730, 731, 5, 23, 0, 0, 731, 732, 5, 167, 0, 0, 732, 735, 5, 299, 0, 0, 733, 734, 5, 119, 0, 0, 734, 736, 5, 94, 0, 0, 735, 733, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 738, 3, 266, 133, 0, 738, 739, 5, 223, 0, 0, 739, 740, 5, 269, 0, 0, 740, 741, 3, 268, 134, 0, 741, 1239, 1, 0, 0, 0, 742, 743, 5, 23, 0, 0, 743, 744, 5, 167, 0, 0, 744, 745, 5, 299, 0, 0, 745, 746, 3, 266, 133, 0, 746, 747, 5, 251, 0, 0, 747, 748, 5, 216, 0, 0, 748, 749, 3, 34, 17, 0, 749, 1239, 1, 0, 0, 0, 750, 751, 5, 83, 0, 0, 751, 754, 5, 299, 0, 0, 752, 753, 5, 119, 0, 0, 753, 755, 5, 94, 0, 0, 754, 752, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 1239, 3, 266, 133, 0, 757, 758, 5, 23, 0, 0, 758, 759, 5, 299, 0, 0, 759, 760, 3, 266, 133, 0, 760, 761, 5, 223, 0, 0, 761, 762, 5, 269, 0, 0, 762, 763, 3, 268, 134, 0, 763, 1239, 1, 0, 0, 0, 764, 765, 5, 23, 0, 0, 765, 766, 5, 299, 0, 0, 766, 767, 3, 266, 133, 0, 767, 768, 5, 251, 0, 0, 768, 769, 5, 31, 0, 0, 769, 770, 3, 296, 148, 0, 770, 1239, 1, 0, 0, 0, 771, 772, 5, 37, 0, 0, 772, 773, 3, 278, 139, 0, 773, 782, 5, 1, 0, 0, 774, 779, 3, 224, 112, 0, 775, 776, 5, 3, 0, 0, 776, 778, 3, 224, 112, 0, 777, 775, 1, 0, 0, 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 783, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 774, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 5, 2, 0, 0, 785, 1239, 1, 0, 0, 0, 786, 789, 5, 53, 0, 0, 787, 788, 5, 194, 0, 0, 788, 790, 5, 226, 0, 0, 789, 787, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 1239, 3, 230, 115, 0, 792, 793, 5, 83, 0, 0, 793, 796, 5, 107, 0, 0, 794, 795, 5, 119, 0, 0, 795, 797, 5, 94, 0, 0, 796, 794, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 1239, 3, 234, 117, 0, 799, 800, 5, 53, 0, 0, 800, 801, 5, 235, 0, 0, 801, 805, 3, 302, 151, 0, 802, 803, 5, 304, 0, 0, 803, 804, 5, 20, 0, 0, 804, 806, 3, 294, 147, 0, 805, 802, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 809, 1, 0, 0, 0, 807, 808, 5, 122, 0, 0, 808, 810, 3, 274, 137, 0, 809, 807, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 1239, 1, 0, 0, 0, 811, 812, 5, 83, 0, 0, 812, 813, 5, 235, 0, 0, 813, 816, 3, 302, 151, 0, 814, 815, 5, 122, 0, 0, 815, 817, 3, 274, 137, 0, 816, 814, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 1239, 1, 0, 0, 0, 818, 819, 5, 110, 0, 0, 819, 824, 3, 300, 150, 0, 820, 821, 5, 3, 0, 0, 821, 823, 3, 300, 150, 0, 822, 820, 1, 0, 0, 0, 823, 826, 1, 0, 0, 0, 824, 822, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, 1, 0, 0, 0, 826, 824, 1, 0, 0, 0, 827, 828, 5, 269, 0, 0, 828, 833, 3, 296, 148, 0, 829, 830, 5, 3, 0, 0, 830, 832, 3, 296, 148, 0, 831, 829, 1, 0, 0, 0, 832, 835, 1, 0, 0, 0, 833, 831, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 839, 1, 0, 0, 0, 835, 833, 1, 0, 0, 0, 836, 837, 5, 304, 0, 0, 837, 838, 5, 20, 0, 0, 838, 840, 5, 193, 0, 0, 839, 836, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 844, 1, 0, 0, 0, 841, 842, 5, 111, 0, 0, 842, 843, 5, 36, 0, 0, 843, 845, 3, 294, 147, 0, 844, 841, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 848, 1, 0, 0, 0, 846, 847, 5, 122, 0, 0, 847, 849, 3, 274, 137, 0, 848, 846, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 1239, 1, 0, 0, 0, 850, 861, 5, 110, 0, 0, 851, 856, 3, 300, 150, 0, 852, 853, 5, 3, 0, 0, 853, 855, 3, 300, 150, 0, 854, 852, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 862, 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 859, 860, 5, 22, 0, 0, 860, 862, 5, 215, 0, 0, 861, 851, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 864, 5, 190, 0, 0, 864, 865, 3, 258, 129, 0, 865, 866, 5, 269, 0, 0, 866, 870, 3, 296, 148, 0, 867, 868, 5, 304, 0, 0, 868, 869, 5, 110, 0, 0, 869, 871, 5, 193, 0, 0, 870, 867, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 1239, 1, 0, 0, 0, 872, 876, 5, 233, 0, 0, 873, 874, 5, 20, 0, 0, 874, 875, 5, 193, 0, 0, 875, 877, 5, 103, 0, 0, 876, 873, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 883, 3, 300, 150, 0, 879, 880, 5, 3, 0, 0, 880, 882, 3, 300, 150, 0, 881, 879, 1, 0, 0, 0, 882, 885, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 886, 1, 0, 0, 0, 885, 883, 1, 0, 0, 0, 886, 887, 5, 105, 0, 0, 887, 892, 3, 296, 148, 0, 888, 889, 5, 3, 0, 0, 889, 891, 3, 296, 148, 0, 890, 888, 1, 0, 0, 0, 891, 894, 1, 0, 0, 0, 892, 890, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 898, 1, 0, 0, 0, 894, 892, 1, 0, 0, 0, 895, 896, 5, 111, 0, 0, 896, 897, 5, 36, 0, 0, 897, 899, 3, 294, 147, 0, 898, 895, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 902, 1, 0, 0, 0, 900, 901, 5, 122, 0, 0, 901, 903, 3, 274, 137, 0, 902, 900, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 1239, 1, 0, 0, 0, 904, 908, 5, 233, 0, 0, 905, 906, 5, 110, 0, 0, 906, 907, 5, 193, 0, 0, 907, 909, 5, 103, 0, 0, 908, 905, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 920, 1, 0, 0, 0, 910, 915, 3, 300, 150, 0, 911, 912, 5, 3, 0, 0, 912, 914, 3, 300, 150, 0, 913, 911, 1, 0, 0, 0, 914, 917, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 921, 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 919, 5, 22, 0, 0, 919, 921, 5, 215, 0, 0, 920, 910, 1, 0, 0, 0, 920, 918, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 923, 5, 190, 0, 0, 923, 924, 3, 258, 129, 0, 924, 925, 5, 105, 0, 0, 925, 926, 3, 296, 148, 0, 926, 1239, 1, 0, 0, 0, 927, 938, 5, 74, 0, 0, 928, 933, 3, 254, 127, 0, 929, 930, 5, 3, 0, 0, 930, 932, 3, 254, 127, 0, 931, 929, 1, 0, 0, 0, 932, 935, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 939, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 936, 937, 5, 22, 0, 0, 937, 939, 5, 215, 0, 0, 938, 928, 1, 0, 0, 0, 938, 936, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 941, 5, 190, 0, 0, 941, 942, 3, 258, 129, 0, 942, 943, 5, 269, 0, 0, 943, 944, 3, 296, 148, 0, 944, 1239, 1, 0, 0, 0, 945, 946, 5, 251, 0, 0, 946, 950, 5, 235, 0, 0, 947, 951, 5, 22, 0, 0, 948, 951, 5, 180, 0, 0, 949, 951, 3, 302, 151, 0, 950, 947, 1, 0, 0, 0, 950, 948, 1, 0, 0, 0, 950, 949, 1, 0, 0, 0, 951, 954, 1, 0, 0, 0, 952, 953, 5, 122, 0, 0, 953, 955, 3, 274, 137, 0, 954, 952, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 1239, 1, 0, 0, 0, 956, 957, 5, 253, 0, 0, 957, 960, 5, 112, 0, 0, 958, 959, 5, 190, 0, 0, 959, 961, 3, 258, 129, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 1239, 1, 0, 0, 0, 962, 974, 5, 95, 0, 0, 963, 964, 5, 1, 0, 0, 964, 969, 3, 218, 109, 0, 965, 966, 5, 3, 0, 0, 966, 968, 3, 218, 109, 0, 967, 965, 1, 0, 0, 0, 968, 971, 1, 0, 0, 0, 969, 967, 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 972, 1, 0, 0, 0, 971, 969, 1, 0, 0, 0, 972, 973, 5, 2, 0, 0, 973, 975, 1, 0, 0, 0, 974, 963, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 1239, 3, 16, 8, 0, 977, 978, 5, 95, 0, 0, 978, 980, 5, 24, 0, 0, 979, 981, 5, 297, 0, 0, 980, 979, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 1239, 3, 16, 8, 0, 983, 984, 5, 253, 0, 0, 984, 985, 5, 53, 0, 0, 985, 986, 5, 260, 0, 0, 986, 1239, 3, 262, 131, 0, 987, 988, 5, 253, 0, 0, 988, 989, 5, 53, 0, 0, 989, 990, 5, 243, 0, 0, 990, 1239, 3, 270, 135, 0, 991, 992, 5, 253, 0, 0, 992, 993, 5, 53, 0, 0, 993, 994, 5, 299, 0, 0, 994, 1239, 3, 266, 133, 0, 995, 996, 5, 253, 0, 0, 996, 997, 5, 53, 0, 0, 997, 998, 5, 167, 0, 0, 998, 999, 5, 299, 0, 0, 999, 1239, 3, 266, 133, 0, 1000, 1001, 5, 253, 0, 0, 1001, 1002, 5, 53, 0, 0, 1002, 1003, 5, 107, 0, 0, 1003, 1239, 3, 278, 139, 0, 1004, 1005, 5, 253, 0, 0, 1005, 1008, 5, 261, 0, 0, 1006, 1007, 7, 2, 0, 0, 1007, 1009, 3, 270, 135, 0, 1008, 1006, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1016, 1, 0, 0, 0, 1010, 1011, 5, 154, 0, 0, 1011, 1014, 3, 174, 87, 0, 1012, 1013, 5, 90, 0, 0, 1013, 1015, 3, 174, 87, 0, 1014, 1012, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1017, 1, 0, 0, 0, 1016, 1010, 1, 0, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1239, 1, 0, 0, 0, 1018, 1019, 5, 253, 0, 0, 1019, 1022, 5, 244, 0, 0, 1020, 1021, 7, 2, 0, 0, 1021, 1023, 3, 274, 137, 0, 1022, 1020, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1030, 1, 0, 0, 0, 1024, 1025, 5, 154, 0, 0, 1025, 1028, 3, 174, 87, 0, 1026, 1027, 5, 90, 0, 0, 1027, 1029, 3, 174, 87, 0, 1028, 1026, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1031, 1, 0, 0, 0, 1030, 1024, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1239, 1, 0, 0, 0, 1032, 1033, 5, 253, 0, 0, 1033, 1040, 5, 43, 0, 0, 1034, 1035, 5, 154, 0, 0, 1035, 1038, 3, 174, 87, 0, 1036, 1037, 5, 90, 0, 0, 1037, 1039, 3, 174, 87, 0, 1038, 1036, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1041, 1, 0, 0, 0, 1040, 1034, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1239, 1, 0, 0, 0, 1042, 1043, 5, 253, 0, 0, 1043, 1044, 5, 45, 0, 0, 1044, 1045, 7, 2, 0, 0, 1045, 1052, 3, 260, 130, 0, 1046, 1047, 5, 154, 0, 0, 1047, 1050, 3, 174, 87, 0, 1048, 1049, 5, 90, 0, 0, 1049, 1051, 3, 174, 87, 0, 1050, 1048, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1053, 1, 0, 0, 0, 1052, 1046, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1239, 1, 0, 0, 0, 1054, 1055, 5, 253, 0, 0, 1055, 1056, 5, 256, 0, 0, 1056, 1057, 5, 103, 0, 0, 1057, 1239, 3, 260, 130, 0, 1058, 1059, 5, 253, 0, 0, 1059, 1060, 5, 256, 0, 0, 1060, 1061, 5, 103, 0, 0, 1061, 1062, 5, 1, 0, 0, 1062, 1063, 3, 18, 9, 0, 1063, 1064, 5, 2, 0, 0, 1064, 1239, 1, 0, 0, 0, 1065, 1067, 5, 253, 0, 0, 1066, 1068, 5, 56, 0, 0, 1067, 1066, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 1072, 5, 236, 0, 0, 1070, 1071, 7, 2, 0, 0, 1071, 1073, 3, 274, 137, 0, 1072, 1070, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1239, 1, 0, 0, 0, 1074, 1075, 5, 253, 0, 0, 1075, 1076, 5, 235, 0, 0, 1076, 1079, 5, 112, 0, 0, 1077, 1078, 7, 2, 0, 0, 1078, 1080, 3, 274, 137, 0, 1079, 1077, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1239, 1, 0, 0, 0, 1081, 1082, 5, 76, 0, 0, 1082, 1239, 3, 260, 130, 0, 1083, 1084, 5, 75, 0, 0, 1084, 1239, 3, 260, 130, 0, 1085, 1086, 5, 253, 0, 0, 1086, 1089, 5, 108, 0, 0, 1087, 1088, 7, 2, 0, 0, 1088, 1090, 3, 270, 135, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1097, 1, 0, 0, 0, 1091, 1092, 5, 154, 0, 0, 1092, 1095, 3, 174, 87, 0, 1093, 1094, 5, 90, 0, 0, 1094, 1096, 3, 174, 87, 0, 1095, 1093, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1098, 1, 0, 0, 0, 1097, 1091, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1239, 1, 0, 0, 0, 1099, 1100, 5, 253, 0, 0, 1100, 1107, 5, 250, 0, 0, 1101, 1102, 5, 154, 0, 0, 1102, 1105, 3, 174, 87, 0, 1103, 1104, 5, 90, 0, 0, 1104, 1106, 3, 174, 87, 0, 1105, 1103, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1108, 1, 0, 0, 0, 1107, 1101, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1239, 1, 0, 0, 0, 1109, 1110, 5, 251, 0, 0, 1110, 1111, 5, 250, 0, 0, 1111, 1112, 5, 31, 0, 0, 1112, 1239, 3, 306, 153, 0, 1113, 1114, 5, 227, 0, 0, 1114, 1115, 5, 250, 0, 0, 1115, 1239, 5, 31, 0, 0, 1116, 1117, 5, 251, 0, 0, 1117, 1118, 5, 250, 0, 0, 1118, 1119, 3, 288, 144, 0, 1119, 1120, 5, 312, 0, 0, 1120, 1121, 3, 142, 71, 0, 1121, 1239, 1, 0, 0, 0, 1122, 1123, 5, 227, 0, 0, 1123, 1124, 5, 250, 0, 0, 1124, 1239, 3, 288, 144, 0, 1125, 1126, 5, 255, 0, 0, 1126, 1135, 5, 271, 0, 0, 1127, 1132, 3, 220, 110, 0, 1128, 1129, 5, 3, 0, 0, 1129, 1131, 3, 220, 110, 0, 1130, 1128, 1, 0, 0, 0, 1131, 1134, 1, 0, 0, 0, 1132, 1130, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1136, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1135, 1127, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1239, 1, 0, 0, 0, 1137, 1139, 5, 47, 0, 0, 1138, 1140, 5, 307, 0, 0, 1139, 1138, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1239, 1, 0, 0, 0, 1141, 1143, 5, 237, 0, 0, 1142, 1144, 5, 307, 0, 0, 1143, 1142, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1239, 1, 0, 0, 0, 1145, 1146, 5, 214, 0, 0, 1146, 1147, 3, 302, 151, 0, 1147, 1148, 5, 105, 0, 0, 1148, 1149, 3, 16, 8, 0, 1149, 1239, 1, 0, 0, 0, 1150, 1151, 5, 68, 0, 0, 1151, 1152, 5, 214, 0, 0, 1152, 1239, 3, 302, 151, 0, 1153, 1154, 5, 93, 0, 0, 1154, 1164, 3, 302, 151, 0, 1155, 1156, 5, 290, 0, 0, 1156, 1161, 3, 142, 71, 0, 1157, 1158, 5, 3, 0, 0, 1158, 1160, 3, 142, 71, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1163, 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1165, 1, 0, 0, 0, 1163, 1161, 1, 0, 0, 0, 1164, 1155, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1239, 1, 0, 0, 0, 1166, 1167, 5, 93, 0, 0, 1167, 1168, 5, 121, 0, 0, 1168, 1178, 3, 174, 87, 0, 1169, 1170, 5, 290, 0, 0, 1170, 1175, 3, 142, 71, 0, 1171, 1172, 5, 3, 0, 0, 1172, 1174, 3, 142, 71, 0, 1173, 1171, 1, 0, 0, 0, 1174, 1177, 1, 0, 0, 0, 1175, 1173, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1178, 1169, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1239, 1, 0, 0, 0, 1180, 1181, 5, 76, 0, 0, 1181, 1182, 5, 126, 0, 0, 1182, 1239, 3, 302, 151, 0, 1183, 1184, 5, 76, 0, 0, 1184, 1185, 5, 198, 0, 0, 1185, 1239, 3, 302, 151, 0, 1186, 1187, 5, 251, 0, 0, 1187, 1188, 5, 205, 0, 0, 1188, 1239, 3, 228, 114, 0, 1189, 1190, 5, 251, 0, 0, 1190, 1191, 5, 267, 0, 0, 1191, 1194, 5, 311, 0, 0, 1192, 1195, 5, 157, 0, 0, 1193, 1195, 3, 142, 71, 0, 1194, 1192, 1, 0, 0, 0, 1194, 1193, 1, 0, 0, 0, 1195, 1239, 1, 0, 0, 0, 1196, 1197, 5, 287, 0, 0, 1197, 1198, 3, 262, 131, 0, 1198, 1199, 5, 251, 0, 0, 1199, 1204, 3, 216, 108, 0, 1200, 1201, 5, 3, 0, 0, 1201, 1203, 3, 216, 108, 0, 1202, 1200, 1, 0, 0, 0, 1203, 1206, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1208, 1, 0, 0, 0, 1206, 1204, 1, 0, 0, 0, 1207, 1209, 3, 54, 27, 0, 1208, 1207, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1239, 1, 0, 0, 0, 1210, 1211, 5, 169, 0, 0, 1211, 1212, 5, 130, 0, 0, 1212, 1217, 3, 262, 131, 0, 1213, 1215, 5, 28, 0, 0, 1214, 1213, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1218, 3, 302, 151, 0, 1217, 1214, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1220, 5, 290, 0, 0, 1220, 1221, 3, 78, 39, 0, 1221, 1222, 5, 190, 0, 0, 1222, 1224, 3, 142, 71, 0, 1223, 1225, 3, 200, 100, 0, 1224, 1223, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1224, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1239, 1, 0, 0, 0, 1228, 1229, 5, 253, 0, 0, 1229, 1230, 5, 46, 0, 0, 1230, 1231, 5, 190, 0, 0, 1231, 1232, 5, 260, 0, 0, 1232, 1239, 3, 262, 131, 0, 1233, 1234, 5, 253, 0, 0, 1234, 1235, 5, 46, 0, 0, 1235, 1236, 5, 190, 0, 0, 1236, 1237, 5, 44, 0, 0, 1237, 1239, 3, 282, 141, 0, 1238, 343, 1, 0, 0, 0, 1238, 344, 1, 0, 0, 0, 1238, 346, 1, 0, 0, 0, 1238, 368, 1, 0, 0, 0, 1238, 378, 1, 0, 0, 0, 1238, 394, 1, 0, 0, 0, 1238, 404, 1, 0, 0, 0, 1238, 411, 1, 0, 0, 0, 1238, 418, 1, 0, 0, 0, 1238, 456, 1, 0, 0, 0, 1238, 486, 1, 0, 0, 0, 1238, 493, 1, 0, 0, 0, 1238, 501, 1, 0, 0, 0, 1238, 507, 1, 0, 0, 0, 1238, 510, 1, 0, 0, 0, 1238, 519, 1, 0, 0, 0, 1238, 528, 1, 0, 0, 0, 1238, 537, 1, 0, 0, 0, 1238, 548, 1, 0, 0, 0, 1238, 564, 1, 0, 0, 0, 1238, 581, 1, 0, 0, 0, 1238, 596, 1, 0, 0, 0, 1238, 611, 1, 0, 0, 0, 1238, 625, 1, 0, 0, 0, 1238, 632, 1, 0, 0, 0, 1238, 639, 1, 0, 0, 0, 1238, 661, 1, 0, 0, 0, 1238, 667, 1, 0, 0, 0, 1238, 696, 1, 0, 0, 0, 1238, 718, 1, 0, 0, 0, 1238, 722, 1, 0, 0, 0, 1238, 730, 1, 0, 0, 0, 1238, 742, 1, 0, 0, 0, 1238, 750, 1, 0, 0, 0, 1238, 757, 1, 0, 0, 0, 1238, 764, 1, 0, 0, 0, 1238, 771, 1, 0, 0, 0, 1238, 786, 1, 0, 0, 0, 1238, 792, 1, 0, 0, 0, 1238, 799, 1, 0, 0, 0, 1238, 811, 1, 0, 0, 0, 1238, 818, 1, 0, 0, 0, 1238, 850, 1, 0, 0, 0, 1238, 872, 1, 0, 0, 0, 1238, 904, 1, 0, 0, 0, 1238, 927, 1, 0, 0, 0, 1238, 945, 1, 0, 0, 0, 1238, 956, 1, 0, 0, 0, 1238, 962, 1, 0, 0, 0, 1238, 977, 1, 0, 0, 0, 1238, 983, 1, 0, 0, 0, 1238, 987, 1, 0, 0, 0, 1238, 991, 1, 0, 0, 0, 1238, 995, 1, 0, 0, 0, 1238, 1000, 1, 0, 0, 0, 1238, 1004, 1, 0, 0, 0, 1238, 1018, 1, 0, 0, 0, 1238, 1032, 1, 0, 0, 0, 1238, 1042, 1, 0, 0, 0, 1238, 1054, 1, 0, 0, 0, 1238, 1058, 1, 0, 0, 0, 1238, 1065, 1, 0, 0, 0, 1238, 1074, 1, 0, 0, 0, 1238, 1081, 1, 0, 0, 0, 1238, 1083, 1, 0, 0, 0, 1238, 1085, 1, 0, 0, 0, 1238, 1099, 1, 0, 0, 0, 1238, 1109, 1, 0, 0, 0, 1238, 1113, 1, 0, 0, 0, 1238, 1116, 1, 0, 0, 0, 1238, 1122, 1, 0, 0, 0, 1238, 1125, 1, 0, 0, 0, 1238, 1137, 1, 0, 0, 0, 1238, 1141, 1, 0, 0, 0, 1238, 1145, 1, 0, 0, 0, 1238, 1150, 1, 0, 0, 0, 1238, 1153, 1, 0, 0, 0, 1238, 1166, 1, 0, 0, 0, 1238, 1180, 1, 0, 0, 0, 1238, 1183, 1, 0, 0, 0, 1238, 1186, 1, 0, 0, 0, 1238, 1189, 1, 0, 0, 0, 1238, 1196, 1, 0, 0, 0, 1238, 1210, 1, 0, 0, 0, 1238, 1228, 1, 0, 0, 0, 1238, 1233, 1, 0, 0, 0, 1239, 17, 1, 0, 0, 0, 1240, 1242, 3, 20, 10, 0, 1241, 1240, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, 1243, 1244, 3, 22, 11, 0, 1244, 19, 1, 0, 0, 0, 1245, 1246, 5, 304, 0, 0, 1246, 1251, 3, 230, 115, 0, 1247, 1248, 5, 3, 0, 0, 1248, 1250, 3, 230, 115, 0, 1249, 1247, 1, 0, 0, 0, 1250, 1253, 1, 0, 0, 0, 1251, 1249, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 21, 1, 0, 0, 0, 1253, 1251, 1, 0, 0, 0, 1254, 1256, 3, 24, 12, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 3, 40, 20, 0, 1258, 23, 1, 0, 0, 0, 1259, 1261, 5, 304, 0, 0, 1260, 1262, 5, 221, 0, 0, 1261, 1260, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1268, 3, 72, 36, 0, 1264, 1265, 5, 3, 0, 0, 1265, 1267, 3, 72, 36, 0, 1266, 1264, 1, 0, 0, 0, 1267, 1270, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 25, 1, 0, 0, 0, 1270, 1268, 1, 0, 0, 0, 1271, 1274, 3, 28, 14, 0, 1272, 1274, 3, 30, 15, 0, 1273, 1271, 1, 0, 0, 0, 1273, 1272, 1, 0, 0, 0, 1274, 27, 1, 0, 0, 0, 1275, 1276, 3, 286, 143, 0, 1276, 1279, 3, 190, 95, 0, 1277, 1278, 5, 182, 0, 0, 1278, 1280, 5, 183, 0, 0, 1279, 1277, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1283, 1, 0, 0, 0, 1281, 1282, 5, 46, 0, 0, 1282, 1284, 3, 174, 87, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1287, 1, 0, 0, 0, 1285, 1286, 5, 304, 0, 0, 1286, 1288, 3, 32, 16, 0, 1287, 1285, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 29, 1, 0, 0, 0, 1289, 1290, 5, 154, 0, 0, 1290, 1293, 3, 262, 131, 0, 1291, 1292, 7, 3, 0, 0, 1292, 1294, 5, 216, 0, 0, 1293, 1291, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 31, 1, 0, 0, 0, 1295, 1296, 5, 1, 0, 0, 1296, 1297, 3, 34, 17, 0, 1297, 1298, 5, 2, 0, 0, 1298, 33, 1, 0, 0, 0, 1299, 1304, 3, 36, 18, 0, 1300, 1301, 5, 3, 0, 0, 1301, 1303, 3, 36, 18, 0, 1302, 1300, 1, 0, 0, 0, 1303, 1306, 1, 0, 0, 0, 1304, 1302, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 35, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1307, 1308, 3, 302, 151, 0, 1308, 1309, 5, 312, 0, 0, 1309, 1310, 3, 38, 19, 0, 1310, 37, 1, 0, 0, 0, 1311, 1314, 5, 70, 0, 0, 1312, 1314, 3, 142, 71, 0, 1313, 1311, 1, 0, 0, 0, 1313, 1312, 1, 0, 0, 0, 1314, 39, 1, 0, 0, 0, 1315, 1326, 3, 46, 23, 0, 1316, 1317, 5, 195, 0, 0, 1317, 1318, 5, 36, 0, 0, 1318, 1323, 3, 50, 25, 0, 1319, 1320, 5, 3, 0, 0, 1320, 1322, 3, 50, 25, 0, 1321, 1319, 1, 0, 0, 0, 1322, 1325, 1, 0, 0, 0, 1323, 1321, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1327, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, 1326, 1316, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1333, 1, 0, 0, 0, 1328, 1329, 5, 188, 0, 0, 1329, 1331, 3, 44, 22, 0, 1330, 1332, 7, 4, 0, 0, 1331, 1330, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1334, 1, 0, 0, 0, 1333, 1328, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1348, 1, 0, 0, 0, 1335, 1336, 5, 155, 0, 0, 1336, 1349, 3, 42, 21, 0, 1337, 1338, 5, 98, 0, 0, 1338, 1340, 7, 5, 0, 0, 1339, 1341, 3, 44, 22, 0, 1340, 1339, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1346, 7, 4, 0, 0, 1343, 1347, 5, 192, 0, 0, 1344, 1345, 5, 304, 0, 0, 1345, 1347, 5, 266, 0, 0, 1346, 1343, 1, 0, 0, 0, 1346, 1344, 1, 0, 0, 0, 1347, 1349, 1, 0, 0, 0, 1348, 1335, 1, 0, 0, 0, 1348, 1337, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 41, 1, 0, 0, 0, 1350, 1353, 5, 22, 0, 0, 1351, 1353, 3, 44, 22, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1351, 1, 0, 0, 0, 1353, 43, 1, 0, 0, 0, 1354, 1355, 7, 6, 0, 0, 1355, 45, 1, 0, 0, 0, 1356, 1357, 6, 23, -1, 0, 1357, 1358, 3, 48, 24, 0, 1358, 1373, 1, 0, 0, 0, 1359, 1360, 10, 2, 0, 0, 1360, 1362, 5, 128, 0, 0, 1361, 1363, 3, 74, 37, 0, 1362, 1361, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1372, 3, 46, 23, 3, 1365, 1366, 10, 1, 0, 0, 1366, 1368, 7, 7, 0, 0, 1367, 1369, 3, 74, 37, 0, 1368, 1367, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1372, 3, 46, 23, 2, 1371, 1359, 1, 0, 0, 0, 1371, 1365, 1, 0, 0, 0, 1372, 1375, 1, 0, 0, 0, 1373, 1371, 1, 0, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 47, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1376, 1393, 3, 52, 26, 0, 1377, 1378, 5, 260, 0, 0, 1378, 1393, 3, 262, 131, 0, 1379, 1380, 5, 296, 0, 0, 1380, 1385, 3, 142, 71, 0, 1381, 1382, 5, 3, 0, 0, 1382, 1384, 3, 142, 71, 0, 1383, 1381, 1, 0, 0, 0, 1384, 1387, 1, 0, 0, 0, 1385, 1383, 1, 0, 0, 0, 1385, 1386, 1, 0, 0, 0, 1386, 1393, 1, 0, 0, 0, 1387, 1385, 1, 0, 0, 0, 1388, 1389, 5, 1, 0, 0, 1389, 1390, 3, 40, 20, 0, 1390, 1391, 5, 2, 0, 0, 1391, 1393, 1, 0, 0, 0, 1392, 1376, 1, 0, 0, 0, 1392, 1377, 1, 0, 0, 0, 1392, 1379, 1, 0, 0, 0, 1392, 1388, 1, 0, 0, 0, 1393, 49, 1, 0, 0, 0, 1394, 1397, 3, 282, 141, 0, 1395, 1397, 3, 142, 71, 0, 1396, 1394, 1, 0, 0, 0, 1396, 1395, 1, 0, 0, 0, 1397, 1399, 1, 0, 0, 0, 1398, 1400, 7, 8, 0, 0, 1399, 1398, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1403, 1, 0, 0, 0, 1401, 1402, 5, 185, 0, 0, 1402, 1404, 7, 9, 0, 0, 1403, 1401, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 51, 1, 0, 0, 0, 1405, 1407, 5, 248, 0, 0, 1406, 1408, 3, 74, 37, 0, 1407, 1406, 1, 0, 0, 0, 1407, 1408, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1414, 3, 76, 38, 0, 1410, 1411, 5, 3, 0, 0, 1411, 1413, 3, 76, 38, 0, 1412, 1410, 1, 0, 0, 0, 1413, 1416, 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1426, 1, 0, 0, 0, 1416, 1414, 1, 0, 0, 0, 1417, 1418, 5, 105, 0, 0, 1418, 1423, 3, 78, 39, 0, 1419, 1420, 5, 3, 0, 0, 1420, 1422, 3, 78, 39, 0, 1421, 1419, 1, 0, 0, 0, 1422, 1425, 1, 0, 0, 0, 1423, 1421, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1427, 1, 0, 0, 0, 1425, 1423, 1, 0, 0, 0, 1426, 1417, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1429, 1, 0, 0, 0, 1428, 1430, 3, 54, 27, 0, 1429, 1428, 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1434, 1, 0, 0, 0, 1431, 1432, 5, 114, 0, 0, 1432, 1433, 5, 36, 0, 0, 1433, 1435, 3, 58, 29, 0, 1434, 1431, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1437, 1, 0, 0, 0, 1436, 1438, 3, 56, 28, 0, 1437, 1436, 1, 0, 0, 0, 1437, 1438, 1, 0, 0, 0, 1438, 1448, 1, 0, 0, 0, 1439, 1440, 5, 303, 0, 0, 1440, 1445, 3, 68, 34, 0, 1441, 1442, 5, 3, 0, 0, 1442, 1444, 3, 68, 34, 0, 1443, 1441, 1, 0, 0, 0, 1444, 1447, 1, 0, 0, 0, 1445, 1443, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1449, 1, 0, 0, 0, 1447, 1445, 1, 0, 0, 0, 1448, 1439, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 53, 1, 0, 0, 0, 1450, 1451, 5, 301, 0, 0, 1451, 1452, 3, 144, 72, 0, 1452, 55, 1, 0, 0, 0, 1453, 1454, 5, 117, 0, 0, 1454, 1455, 3, 144, 72, 0, 1455, 57, 1, 0, 0, 0, 1456, 1458, 3, 74, 37, 0, 1457, 1456, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1464, 3, 62, 31, 0, 1460, 1461, 5, 3, 0, 0, 1461, 1463, 3, 62, 31, 0, 1462, 1460, 1, 0, 0, 0, 1463, 1466, 1, 0, 0, 0, 1464, 1462, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 59, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1467, 1472, 3, 142, 71, 0, 1468, 1469, 5, 3, 0, 0, 1469, 1471, 3, 142, 71, 0, 1470, 1468, 1, 0, 0, 0, 1471, 1474, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 61, 1, 0, 0, 0, 1474, 1472, 1, 0, 0, 0, 1475, 1516, 3, 64, 32, 0, 1476, 1477, 5, 238, 0, 0, 1477, 1486, 5, 1, 0, 0, 1478, 1483, 3, 64, 32, 0, 1479, 1480, 5, 3, 0, 0, 1480, 1482, 3, 64, 32, 0, 1481, 1479, 1, 0, 0, 0, 1482, 1485, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1487, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1486, 1478, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1516, 5, 2, 0, 0, 1489, 1490, 5, 55, 0, 0, 1490, 1499, 5, 1, 0, 0, 1491, 1496, 3, 64, 32, 0, 1492, 1493, 5, 3, 0, 0, 1493, 1495, 3, 64, 32, 0, 1494, 1492, 1, 0, 0, 0, 1495, 1498, 1, 0, 0, 0, 1496, 1494, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1500, 1, 0, 0, 0, 1498, 1496, 1, 0, 0, 0, 1499, 1491, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1516, 5, 2, 0, 0, 1502, 1503, 5, 115, 0, 0, 1503, 1504, 5, 252, 0, 0, 1504, 1505, 5, 1, 0, 0, 1505, 1510, 3, 64, 32, 0, 1506, 1507, 5, 3, 0, 0, 1507, 1509, 3, 64, 32, 0, 1508, 1506, 1, 0, 0, 0, 1509, 1512, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1513, 1, 0, 0, 0, 1512, 1510, 1, 0, 0, 0, 1513, 1514, 5, 2, 0, 0, 1514, 1516, 1, 0, 0, 0, 1515, 1475, 1, 0, 0, 0, 1515, 1476, 1, 0, 0, 0, 1515, 1489, 1, 0, 0, 0, 1515, 1502, 1, 0, 0, 0, 1516, 63, 1, 0, 0, 0, 1517, 1526, 5, 1, 0, 0, 1518, 1523, 3, 66, 33, 0, 1519, 1520, 5, 3, 0, 0, 1520, 1522, 3, 66, 33, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1525, 1, 0, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1527, 1, 0, 0, 0, 1525, 1523, 1, 0, 0, 0, 1526, 1518, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1528, 1, 0, 0, 0, 1528, 1531, 5, 2, 0, 0, 1529, 1531, 3, 66, 33, 0, 1530, 1517, 1, 0, 0, 0, 1530, 1529, 1, 0, 0, 0, 1531, 65, 1, 0, 0, 0, 1532, 1535, 3, 282, 141, 0, 1533, 1535, 3, 142, 71, 0, 1534, 1532, 1, 0, 0, 0, 1534, 1533, 1, 0, 0, 0, 1535, 67, 1, 0, 0, 0, 1536, 1537, 3, 302, 151, 0, 1537, 1538, 5, 28, 0, 0, 1538, 1539, 5, 1, 0, 0, 1539, 1540, 3, 70, 35, 0, 1540, 1541, 5, 2, 0, 0, 1541, 69, 1, 0, 0, 0, 1542, 1544, 3, 302, 151, 0, 1543, 1542, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1548, 1, 0, 0, 0, 1545, 1546, 5, 201, 0, 0, 1546, 1547, 5, 36, 0, 0, 1547, 1549, 3, 60, 30, 0, 1548, 1545, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1560, 1, 0, 0, 0, 1550, 1551, 5, 195, 0, 0, 1551, 1552, 5, 36, 0, 0, 1552, 1557, 3, 50, 25, 0, 1553, 1554, 5, 3, 0, 0, 1554, 1556, 3, 50, 25, 0, 1555, 1553, 1, 0, 0, 0, 1556, 1559, 1, 0, 0, 0, 1557, 1555, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1561, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1560, 1550, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1563, 1, 0, 0, 0, 1562, 1564, 3, 204, 102, 0, 1563, 1562, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 71, 1, 0, 0, 0, 1565, 1567, 3, 302, 151, 0, 1566, 1568, 3, 114, 57, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 1570, 5, 28, 0, 0, 1570, 1571, 5, 1, 0, 0, 1571, 1572, 3, 22, 11, 0, 1572, 1573, 5, 2, 0, 0, 1573, 73, 1, 0, 0, 0, 1574, 1575, 7, 10, 0, 0, 1575, 75, 1, 0, 0, 0, 1576, 1579, 3, 282, 141, 0, 1577, 1579, 3, 142, 71, 0, 1578, 1576, 1, 0, 0, 0, 1578, 1577, 1, 0, 0, 0, 1579, 1584, 1, 0, 0, 0, 1580, 1582, 5, 28, 0, 0, 1581, 1580, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1583, 1, 0, 0, 0, 1583, 1585, 3, 302, 151, 0, 1584, 1581, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1595, 1, 0, 0, 0, 1586, 1587, 3, 150, 75, 0, 1587, 1588, 5, 4, 0, 0, 1588, 1591, 5, 320, 0, 0, 1589, 1590, 5, 28, 0, 0, 1590, 1592, 3, 114, 57, 0, 1591, 1589, 1, 0, 0, 0, 1591, 1592, 1, 0, 0, 0, 1592, 1595, 1, 0, 0, 0, 1593, 1595, 5, 320, 0, 0, 1594, 1578, 1, 0, 0, 0, 1594, 1586, 1, 0, 0, 0, 1594, 1593, 1, 0, 0, 0, 1595, 77, 1, 0, 0, 0, 1596, 1597, 6, 39, -1, 0, 1597, 1598, 3, 84, 42, 0, 1598, 1617, 1, 0, 0, 0, 1599, 1613, 10, 2, 0, 0, 1600, 1601, 5, 54, 0, 0, 1601, 1602, 5, 136, 0, 0, 1602, 1614, 3, 84, 42, 0, 1603, 1604, 3, 80, 40, 0, 1604, 1605, 5, 136, 0, 0, 1605, 1606, 3, 78, 39, 0, 1606, 1607, 3, 82, 41, 0, 1607, 1614, 1, 0, 0, 0, 1608, 1609, 5, 172, 0, 0, 1609, 1610, 3, 80, 40, 0, 1610, 1611, 5, 136, 0, 0, 1611, 1612, 3, 84, 42, 0, 1612, 1614, 1, 0, 0, 0, 1613, 1600, 1, 0, 0, 0, 1613, 1603, 1, 0, 0, 0, 1613, 1608, 1, 0, 0, 0, 1614, 1616, 1, 0, 0, 0, 1615, 1599, 1, 0, 0, 0, 1616, 1619, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 79, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1622, 5, 125, 0, 0, 1621, 1620, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1636, 1, 0, 0, 0, 1623, 1625, 5, 152, 0, 0, 1624, 1626, 5, 197, 0, 0, 1625, 1624, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1636, 1, 0, 0, 0, 1627, 1629, 5, 234, 0, 0, 1628, 1630, 5, 197, 0, 0, 1629, 1628, 1, 0, 0, 0, 1629, 1630, 1, 0, 0, 0, 1630, 1636, 1, 0, 0, 0, 1631, 1633, 5, 106, 0, 0, 1632, 1634, 5, 197, 0, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1621, 1, 0, 0, 0, 1635, 1623, 1, 0, 0, 0, 1635, 1627, 1, 0, 0, 0, 1635, 1631, 1, 0, 0, 0, 1636, 81, 1, 0, 0, 0, 1637, 1638, 5, 190, 0, 0, 1638, 1652, 3, 144, 72, 0, 1639, 1640, 5, 290, 0, 0, 1640, 1641, 5, 1, 0, 0, 1641, 1646, 3, 302, 151, 0, 1642, 1643, 5, 3, 0, 0, 1643, 1645, 3, 302, 151, 0, 1644, 1642, 1, 0, 0, 0, 1645, 1648, 1, 0, 0, 0, 1646, 1644, 1, 0, 0, 0, 1646, 1647, 1, 0, 0, 0, 1647, 1649, 1, 0, 0, 0, 1648, 1646, 1, 0, 0, 0, 1649, 1650, 5, 2, 0, 0, 1650, 1652, 1, 0, 0, 0, 1651, 1637, 1, 0, 0, 0, 1651, 1639, 1, 0, 0, 0, 1652, 83, 1, 0, 0, 0, 1653, 1660, 3, 94, 47, 0, 1654, 1655, 5, 262, 0, 0, 1655, 1656, 3, 86, 43, 0, 1656, 1657, 5, 1, 0, 0, 1657, 1658, 3, 142, 71, 0, 1658, 1659, 5, 2, 0, 0, 1659, 1661, 1, 0, 0, 0, 1660, 1654, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 85, 1, 0, 0, 0, 1662, 1663, 7, 11, 0, 0, 1663, 87, 1, 0, 0, 0, 1664, 1665, 7, 12, 0, 0, 1665, 89, 1, 0, 0, 0, 1666, 1673, 5, 89, 0, 0, 1667, 1669, 5, 274, 0, 0, 1668, 1670, 3, 174, 87, 0, 1669, 1668, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 1671, 1, 0, 0, 0, 1671, 1673, 3, 92, 46, 0, 1672, 1666, 1, 0, 0, 0, 1672, 1667, 1, 0, 0, 0, 1673, 91, 1, 0, 0, 0, 1674, 1675, 5, 304, 0, 0, 1675, 1679, 5, 51, 0, 0, 1676, 1677, 5, 306, 0, 0, 1677, 1679, 5, 51, 0, 0, 1678, 1674, 1, 0, 0, 0, 1678, 1676, 1, 0, 0, 0, 1679, 93, 1, 0, 0, 0, 1680, 1756, 3, 108, 54, 0, 1681, 1682, 5, 166, 0, 0, 1682, 1686, 5, 1, 0, 0, 1683, 1684, 5, 201, 0, 0, 1684, 1685, 5, 36, 0, 0, 1685, 1687, 3, 60, 30, 0, 1686, 1683, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 1698, 1, 0, 0, 0, 1688, 1689, 5, 195, 0, 0, 1689, 1690, 5, 36, 0, 0, 1690, 1695, 3, 50, 25, 0, 1691, 1692, 5, 3, 0, 0, 1692, 1694, 3, 50, 25, 0, 1693, 1691, 1, 0, 0, 0, 1694, 1697, 1, 0, 0, 0, 1695, 1693, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1699, 1, 0, 0, 0, 1697, 1695, 1, 0, 0, 0, 1698, 1688, 1, 0, 0, 0, 1698, 1699, 1, 0, 0, 0, 1699, 1709, 1, 0, 0, 0, 1700, 1701, 5, 168, 0, 0, 1701, 1706, 3, 96, 48, 0, 1702, 1703, 5, 3, 0, 0, 1703, 1705, 3, 96, 48, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1710, 1, 0, 0, 0, 1708, 1706, 1, 0, 0, 0, 1709, 1700, 1, 0, 0, 0, 1709, 1710, 1, 0, 0, 0, 1710, 1712, 1, 0, 0, 0, 1711, 1713, 3, 98, 49, 0, 1712, 1711, 1, 0, 0, 0, 1712, 1713, 1, 0, 0, 0, 1713, 1717, 1, 0, 0, 0, 1714, 1715, 5, 21, 0, 0, 1715, 1716, 5, 163, 0, 0, 1716, 1718, 3, 102, 51, 0, 1717, 1714, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 1720, 1, 0, 0, 0, 1719, 1721, 7, 13, 0, 0, 1720, 1719, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1723, 5, 206, 0, 0, 1723, 1724, 5, 1, 0, 0, 1724, 1725, 3, 210, 105, 0, 1725, 1735, 5, 2, 0, 0, 1726, 1727, 5, 257, 0, 0, 1727, 1732, 3, 104, 52, 0, 1728, 1729, 5, 3, 0, 0, 1729, 1731, 3, 104, 52, 0, 1730, 1728, 1, 0, 0, 0, 1731, 1734, 1, 0, 0, 0, 1732, 1730, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, 1, 0, 0, 0, 1735, 1726, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1738, 5, 71, 0, 0, 1738, 1743, 3, 106, 53, 0, 1739, 1740, 5, 3, 0, 0, 1740, 1742, 3, 106, 53, 0, 1741, 1739, 1, 0, 0, 0, 1742, 1745, 1, 0, 0, 0, 1743, 1741, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1746, 1, 0, 0, 0, 1745, 1743, 1, 0, 0, 0, 1746, 1754, 5, 2, 0, 0, 1747, 1749, 5, 28, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1752, 3, 302, 151, 0, 1751, 1753, 3, 114, 57, 0, 1752, 1751, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1755, 1, 0, 0, 0, 1754, 1748, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1757, 1, 0, 0, 0, 1756, 1681, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 95, 1, 0, 0, 0, 1758, 1759, 3, 142, 71, 0, 1759, 1760, 5, 28, 0, 0, 1760, 1761, 3, 302, 151, 0, 1761, 97, 1, 0, 0, 0, 1762, 1763, 5, 191, 0, 0, 1763, 1764, 5, 239, 0, 0, 1764, 1765, 5, 207, 0, 0, 1765, 1774, 5, 163, 0, 0, 1766, 1767, 5, 22, 0, 0, 1767, 1768, 5, 240, 0, 0, 1768, 1769, 5, 207, 0, 0, 1769, 1771, 5, 163, 0, 0, 1770, 1772, 3, 100, 50, 0, 1771, 1770, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1774, 1, 0, 0, 0, 1773, 1762, 1, 0, 0, 0, 1773, 1766, 1, 0, 0, 0, 1774, 99, 1, 0, 0, 0, 1775, 1776, 5, 253, 0, 0, 1776, 1777, 5, 85, 0, 0, 1777, 1785, 5, 165, 0, 0, 1778, 1779, 5, 189, 0, 0, 1779, 1780, 5, 85, 0, 0, 1780, 1785, 5, 165, 0, 0, 1781, 1782, 5, 304, 0, 0, 1782, 1783, 5, 284, 0, 0, 1783, 1785, 5, 240, 0, 0, 1784, 1775, 1, 0, 0, 0, 1784, 1778, 1, 0, 0, 0, 1784, 1781, 1, 0, 0, 0, 1785, 101, 1, 0, 0, 0, 1786, 1787, 5, 5, 0, 0, 1787, 1788, 5, 269, 0, 0, 1788, 1789, 5, 174, 0, 0, 1789, 1806, 5, 239, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1792, 5, 204, 0, 0, 1792, 1793, 5, 148, 0, 0, 1793, 1806, 5, 239, 0, 0, 1794, 1795, 5, 5, 0, 0, 1795, 1796, 5, 269, 0, 0, 1796, 1797, 5, 101, 0, 0, 1797, 1806, 3, 302, 151, 0, 1798, 1799, 5, 5, 0, 0, 1799, 1800, 5, 269, 0, 0, 1800, 1801, 5, 148, 0, 0, 1801, 1806, 3, 302, 151, 0, 1802, 1803, 5, 5, 0, 0, 1803, 1804, 5, 269, 0, 0, 1804, 1806, 3, 302, 151, 0, 1805, 1786, 1, 0, 0, 0, 1805, 1790, 1, 0, 0, 0, 1805, 1794, 1, 0, 0, 0, 1805, 1798, 1, 0, 0, 0, 1805, 1802, 1, 0, 0, 0, 1806, 103, 1, 0, 0, 0, 1807, 1808, 3, 302, 151, 0, 1808, 1809, 5, 312, 0, 0, 1809, 1810, 5, 1, 0, 0, 1810, 1815, 3, 302, 151, 0, 1811, 1812, 5, 3, 0, 0, 1812, 1814, 3, 302, 151, 0, 1813, 1811, 1, 0, 0, 0, 1814, 1817, 1, 0, 0, 0, 1815, 1813, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1818, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1818, 1819, 5, 2, 0, 0, 1819, 105, 1, 0, 0, 0, 1820, 1821, 3, 302, 151, 0, 1821, 1822, 5, 28, 0, 0, 1822, 1823, 3, 142, 71, 0, 1823, 107, 1, 0, 0, 0, 1824, 1832, 3, 116, 58, 0, 1825, 1827, 5, 28, 0, 0, 1826, 1825, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1830, 3, 302, 151, 0, 1829, 1831, 3, 114, 57, 0, 1830, 1829, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1833, 1, 0, 0, 0, 1832, 1826, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 109, 1, 0, 0, 0, 1834, 1835, 5, 1, 0, 0, 1835, 1840, 3, 286, 143, 0, 1836, 1837, 5, 3, 0, 0, 1837, 1839, 3, 286, 143, 0, 1838, 1836, 1, 0, 0, 0, 1839, 1842, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1843, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1843, 1844, 5, 2, 0, 0, 1844, 111, 1, 0, 0, 0, 1845, 1846, 5, 1, 0, 0, 1846, 1851, 3, 282, 141, 0, 1847, 1848, 5, 3, 0, 0, 1848, 1850, 3, 282, 141, 0, 1849, 1847, 1, 0, 0, 0, 1850, 1853, 1, 0, 0, 0, 1851, 1849, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1854, 1, 0, 0, 0, 1853, 1851, 1, 0, 0, 0, 1854, 1855, 5, 2, 0, 0, 1855, 113, 1, 0, 0, 0, 1856, 1857, 5, 1, 0, 0, 1857, 1862, 3, 302, 151, 0, 1858, 1859, 5, 3, 0, 0, 1859, 1861, 3, 302, 151, 0, 1860, 1858, 1, 0, 0, 0, 1861, 1864, 1, 0, 0, 0, 1862, 1860, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 1865, 1, 0, 0, 0, 1864, 1862, 1, 0, 0, 0, 1865, 1866, 5, 2, 0, 0, 1866, 115, 1, 0, 0, 0, 1867, 1869, 3, 260, 130, 0, 1868, 1870, 3, 290, 145, 0, 1869, 1868, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1939, 1, 0, 0, 0, 1871, 1872, 5, 1, 0, 0, 1872, 1873, 3, 22, 11, 0, 1873, 1874, 5, 2, 0, 0, 1874, 1939, 1, 0, 0, 0, 1875, 1876, 5, 285, 0, 0, 1876, 1877, 5, 1, 0, 0, 1877, 1882, 3, 142, 71, 0, 1878, 1879, 5, 3, 0, 0, 1879, 1881, 3, 142, 71, 0, 1880, 1878, 1, 0, 0, 0, 1881, 1884, 1, 0, 0, 0, 1882, 1880, 1, 0, 0, 0, 1882, 1883, 1, 0, 0, 0, 1883, 1885, 1, 0, 0, 0, 1884, 1882, 1, 0, 0, 0, 1885, 1888, 5, 2, 0, 0, 1886, 1887, 5, 304, 0, 0, 1887, 1889, 5, 196, 0, 0, 1888, 1886, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 1939, 1, 0, 0, 0, 1890, 1891, 5, 149, 0, 0, 1891, 1892, 5, 1, 0, 0, 1892, 1893, 3, 22, 11, 0, 1893, 1894, 5, 2, 0, 0, 1894, 1939, 1, 0, 0, 0, 1895, 1896, 5, 260, 0, 0, 1896, 1897, 5, 1, 0, 0, 1897, 1898, 3, 128, 64, 0, 1898, 1899, 5, 2, 0, 0, 1899, 1939, 1, 0, 0, 0, 1900, 1901, 5, 1, 0, 0, 1901, 1902, 3, 78, 39, 0, 1902, 1903, 5, 2, 0, 0, 1903, 1939, 1, 0, 0, 0, 1904, 1905, 5, 142, 0, 0, 1905, 1906, 5, 1, 0, 0, 1906, 1907, 3, 152, 76, 0, 1907, 1908, 5, 45, 0, 0, 1908, 1909, 5, 1, 0, 0, 1909, 1914, 3, 118, 59, 0, 1910, 1911, 5, 3, 0, 0, 1911, 1913, 3, 118, 59, 0, 1912, 1910, 1, 0, 0, 0, 1913, 1916, 1, 0, 0, 0, 1914, 1912, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1917, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1917, 1929, 5, 2, 0, 0, 1918, 1919, 5, 210, 0, 0, 1919, 1920, 5, 1, 0, 0, 1920, 1921, 3, 120, 60, 0, 1921, 1922, 5, 2, 0, 0, 1922, 1930, 1, 0, 0, 0, 1923, 1924, 5, 210, 0, 0, 1924, 1925, 5, 70, 0, 0, 1925, 1926, 5, 1, 0, 0, 1926, 1927, 3, 126, 63, 0, 1927, 1928, 5, 2, 0, 0, 1928, 1930, 1, 0, 0, 0, 1929, 1918, 1, 0, 0, 0, 1929, 1923, 1, 0, 0, 0, 1929, 1930, 1, 0, 0, 0, 1930, 1934, 1, 0, 0, 0, 1931, 1932, 7, 14, 0, 0, 1932, 1933, 5, 190, 0, 0, 1933, 1935, 5, 89, 0, 0, 1934, 1931, 1, 0, 0, 0, 1934, 1935, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1937, 5, 2, 0, 0, 1937, 1939, 1, 0, 0, 0, 1938, 1867, 1, 0, 0, 0, 1938, 1871, 1, 0, 0, 0, 1938, 1875, 1, 0, 0, 0, 1938, 1890, 1, 0, 0, 0, 1938, 1895, 1, 0, 0, 0, 1938, 1900, 1, 0, 0, 0, 1938, 1904, 1, 0, 0, 0, 1939, 117, 1, 0, 0, 0, 1940, 1941, 3, 302, 151, 0, 1941, 1942, 5, 103, 0, 0, 1942, 1943, 5, 196, 0, 0, 1943, 2018, 1, 0, 0, 0, 1944, 1945, 3, 302, 151, 0, 1945, 1948, 3, 190, 95, 0, 1946, 1947, 5, 205, 0, 0, 1947, 1949, 3, 174, 87, 0, 1948, 1946, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 1954, 1, 0, 0, 0, 1950, 1951, 3, 162, 81, 0, 1951, 1952, 5, 190, 0, 0, 1952, 1953, 5, 85, 0, 0, 1953, 1955, 1, 0, 0, 0, 1954, 1950, 1, 0, 0, 0, 1954, 1955, 1, 0, 0, 0, 1955, 1960, 1, 0, 0, 0, 1956, 1957, 3, 162, 81, 0, 1957, 1958, 5, 190, 0, 0, 1958, 1959, 5, 89, 0, 0, 1959, 1961, 1, 0, 0, 0, 1960, 1956, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 2018, 1, 0, 0, 0, 1962, 1963, 3, 302, 151, 0, 1963, 1964, 3, 190, 95, 0, 1964, 1965, 5, 104, 0, 0, 1965, 1968, 3, 156, 78, 0, 1966, 1967, 5, 205, 0, 0, 1967, 1969, 3, 174, 87, 0, 1968, 1966, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 1973, 1, 0, 0, 0, 1970, 1971, 3, 164, 82, 0, 1971, 1972, 5, 308, 0, 0, 1972, 1974, 1, 0, 0, 0, 1973, 1970, 1, 0, 0, 0, 1973, 1974, 1, 0, 0, 0, 1974, 1982, 1, 0, 0, 0, 1975, 1976, 7, 15, 0, 0, 1976, 1980, 5, 218, 0, 0, 1977, 1978, 5, 190, 0, 0, 1978, 1979, 5, 242, 0, 0, 1979, 1981, 5, 264, 0, 0, 1980, 1977, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 1983, 1, 0, 0, 0, 1982, 1975, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 1988, 1, 0, 0, 0, 1984, 1985, 3, 166, 83, 0, 1985, 1986, 5, 190, 0, 0, 1986, 1987, 5, 85, 0, 0, 1987, 1989, 1, 0, 0, 0, 1988, 1984, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1994, 1, 0, 0, 0, 1990, 1991, 3, 166, 83, 0, 1991, 1992, 5, 190, 0, 0, 1992, 1993, 5, 89, 0, 0, 1993, 1995, 1, 0, 0, 0, 1994, 1990, 1, 0, 0, 0, 1994, 1995, 1, 0, 0, 0, 1995, 2018, 1, 0, 0, 0, 1996, 1998, 5, 173, 0, 0, 1997, 1999, 5, 205, 0, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2000, 1, 0, 0, 0, 2000, 2003, 3, 174, 87, 0, 2001, 2002, 5, 28, 0, 0, 2002, 2004, 3, 302, 151, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 2005, 1, 0, 0, 0, 2005, 2006, 5, 45, 0, 0, 2006, 2007, 5, 1, 0, 0, 2007, 2012, 3, 118, 59, 0, 2008, 2009, 5, 3, 0, 0, 2009, 2011, 3, 118, 59, 0, 2010, 2008, 1, 0, 0, 0, 2011, 2014, 1, 0, 0, 0, 2012, 2010, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2015, 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2015, 2016, 5, 2, 0, 0, 2016, 2018, 1, 0, 0, 0, 2017, 1940, 1, 0, 0, 0, 2017, 1944, 1, 0, 0, 0, 2017, 1962, 1, 0, 0, 0, 2017, 1996, 1, 0, 0, 0, 2018, 119, 1, 0, 0, 0, 2019, 2045, 3, 122, 61, 0, 2020, 2021, 3, 122, 61, 0, 2021, 2022, 7, 16, 0, 0, 2022, 2023, 3, 124, 62, 0, 2023, 2045, 1, 0, 0, 0, 2024, 2025, 3, 124, 62, 0, 2025, 2026, 5, 281, 0, 0, 2026, 2031, 3, 124, 62, 0, 2027, 2028, 5, 281, 0, 0, 2028, 2030, 3, 124, 62, 0, 2029, 2027, 1, 0, 0, 0, 2030, 2033, 1, 0, 0, 0, 2031, 2029, 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 2045, 1, 0, 0, 0, 2033, 2031, 1, 0, 0, 0, 2034, 2035, 3, 124, 62, 0, 2035, 2036, 5, 54, 0, 0, 2036, 2041, 3, 124, 62, 0, 2037, 2038, 5, 54, 0, 0, 2038, 2040, 3, 124, 62, 0, 2039, 2037, 1, 0, 0, 0, 2040, 2043, 1, 0, 0, 0, 2041, 2039, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2045, 1, 0, 0, 0, 2043, 2041, 1, 0, 0, 0, 2044, 2019, 1, 0, 0, 0, 2044, 2020, 1, 0, 0, 0, 2044, 2024, 1, 0, 0, 0, 2044, 2034, 1, 0, 0, 0, 2045, 121, 1, 0, 0, 0, 2046, 2047, 3, 302, 151, 0, 2047, 123, 1, 0, 0, 0, 2048, 2054, 3, 122, 61, 0, 2049, 2050, 5, 1, 0, 0, 2050, 2051, 3, 120, 60, 0, 2051, 2052, 5, 2, 0, 0, 2052, 2054, 1, 0, 0, 0, 2053, 2048, 1, 0, 0, 0, 2053, 2049, 1, 0, 0, 0, 2054, 125, 1, 0, 0, 0, 2055, 2058, 7, 16, 0, 0, 2056, 2057, 5, 3, 0, 0, 2057, 2059, 7, 17, 0, 0, 2058, 2056, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 2066, 1, 0, 0, 0, 2060, 2063, 7, 17, 0, 0, 2061, 2062, 5, 3, 0, 0, 2062, 2064, 7, 16, 0, 0, 2063, 2061, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2066, 1, 0, 0, 0, 2065, 2055, 1, 0, 0, 0, 2065, 2060, 1, 0, 0, 0, 2066, 127, 1, 0, 0, 0, 2067, 2068, 3, 278, 139, 0, 2068, 2077, 5, 1, 0, 0, 2069, 2074, 3, 130, 65, 0, 2070, 2071, 5, 3, 0, 0, 2071, 2073, 3, 130, 65, 0, 2072, 2070, 1, 0, 0, 0, 2073, 2076, 1, 0, 0, 0, 2074, 2072, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2078, 1, 0, 0, 0, 2076, 2074, 1, 0, 0, 0, 2077, 2069, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2088, 1, 0, 0, 0, 2079, 2080, 5, 52, 0, 0, 2080, 2085, 3, 140, 70, 0, 2081, 2082, 5, 3, 0, 0, 2082, 2084, 3, 140, 70, 0, 2083, 2081, 1, 0, 0, 0, 2084, 2087, 1, 0, 0, 0, 2085, 2083, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2089, 1, 0, 0, 0, 2087, 2085, 1, 0, 0, 0, 2088, 2079, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2090, 1, 0, 0, 0, 2090, 2091, 5, 2, 0, 0, 2091, 129, 1, 0, 0, 0, 2092, 2093, 3, 302, 151, 0, 2093, 2094, 5, 6, 0, 0, 2094, 2096, 1, 0, 0, 0, 2095, 2092, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 2100, 1, 0, 0, 0, 2097, 2101, 3, 132, 66, 0, 2098, 2101, 3, 136, 68, 0, 2099, 2101, 3, 142, 71, 0, 2100, 2097, 1, 0, 0, 0, 2100, 2098, 1, 0, 0, 0, 2100, 2099, 1, 0, 0, 0, 2101, 131, 1, 0, 0, 0, 2102, 2113, 3, 134, 67, 0, 2103, 2104, 5, 201, 0, 0, 2104, 2111, 5, 36, 0, 0, 2105, 2107, 5, 1, 0, 0, 2106, 2108, 3, 60, 30, 0, 2107, 2106, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2112, 5, 2, 0, 0, 2110, 2112, 3, 142, 71, 0, 2111, 2105, 1, 0, 0, 0, 2111, 2110, 1, 0, 0, 0, 2112, 2114, 1, 0, 0, 0, 2113, 2103, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2121, 1, 0, 0, 0, 2115, 2116, 5, 217, 0, 0, 2116, 2117, 5, 300, 0, 0, 2117, 2122, 5, 85, 0, 0, 2118, 2119, 5, 144, 0, 0, 2119, 2120, 5, 300, 0, 0, 2120, 2122, 5, 85, 0, 0, 2121, 2115, 1, 0, 0, 0, 2121, 2118, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2139, 1, 0, 0, 0, 2123, 2124, 5, 195, 0, 0, 2124, 2137, 5, 36, 0, 0, 2125, 2126, 5, 1, 0, 0, 2126, 2131, 3, 50, 25, 0, 2127, 2128, 5, 3, 0, 0, 2128, 2130, 3, 50, 25, 0, 2129, 2127, 1, 0, 0, 0, 2130, 2133, 1, 0, 0, 0, 2131, 2129, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2134, 1, 0, 0, 0, 2133, 2131, 1, 0, 0, 0, 2134, 2135, 5, 2, 0, 0, 2135, 2138, 1, 0, 0, 0, 2136, 2138, 3, 50, 25, 0, 2137, 2125, 1, 0, 0, 0, 2137, 2136, 1, 0, 0, 0, 2138, 2140, 1, 0, 0, 0, 2139, 2123, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 133, 1, 0, 0, 0, 2141, 2142, 5, 260, 0, 0, 2142, 2143, 5, 1, 0, 0, 2143, 2144, 3, 262, 131, 0, 2144, 2152, 5, 2, 0, 0, 2145, 2147, 5, 28, 0, 0, 2146, 2145, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2150, 3, 302, 151, 0, 2149, 2151, 3, 114, 57, 0, 2150, 2149, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2153, 1, 0, 0, 0, 2152, 2146, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2168, 1, 0, 0, 0, 2154, 2155, 5, 260, 0, 0, 2155, 2156, 5, 1, 0, 0, 2156, 2157, 3, 22, 11, 0, 2157, 2165, 5, 2, 0, 0, 2158, 2160, 5, 28, 0, 0, 2159, 2158, 1, 0, 0, 0, 2159, 2160, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2163, 3, 302, 151, 0, 2162, 2164, 3, 114, 57, 0, 2163, 2162, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2166, 1, 0, 0, 0, 2165, 2159, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2168, 1, 0, 0, 0, 2167, 2141, 1, 0, 0, 0, 2167, 2154, 1, 0, 0, 0, 2168, 135, 1, 0, 0, 0, 2169, 2170, 5, 77, 0, 0, 2170, 2171, 5, 1, 0, 0, 2171, 2176, 3, 138, 69, 0, 2172, 2173, 5, 3, 0, 0, 2173, 2175, 3, 138, 69, 0, 2174, 2172, 1, 0, 0, 0, 2175, 2178, 1, 0, 0, 0, 2176, 2174, 1, 0, 0, 0, 2176, 2177, 1, 0, 0, 0, 2177, 2179, 1, 0, 0, 0, 2178, 2176, 1, 0, 0, 0, 2179, 2180, 5, 2, 0, 0, 2180, 2188, 1, 0, 0, 0, 2181, 2182, 5, 41, 0, 0, 2182, 2183, 5, 1, 0, 0, 2183, 2184, 5, 183, 0, 0, 2184, 2185, 5, 28, 0, 0, 2185, 2186, 5, 77, 0, 0, 2186, 2188, 5, 2, 0, 0, 2187, 2169, 1, 0, 0, 0, 2187, 2181, 1, 0, 0, 0, 2188, 137, 1, 0, 0, 0, 2189, 2191, 3, 302, 151, 0, 2190, 2192, 3, 190, 95, 0, 2191, 2190, 1, 0, 0, 0, 2191, 2192, 1, 0, 0, 0, 2192, 139, 1, 0, 0, 0, 2193, 2194, 5, 1, 0, 0, 2194, 2195, 3, 288, 144, 0, 2195, 2196, 5, 3, 0, 0, 2196, 2201, 3, 288, 144, 0, 2197, 2198, 5, 3, 0, 0, 2198, 2200, 3, 288, 144, 0, 2199, 2197, 1, 0, 0, 0, 2200, 2203, 1, 0, 0, 0, 2201, 2199, 1, 0, 0, 0, 2201, 2202, 1, 0, 0, 0, 2202, 2204, 1, 0, 0, 0, 2203, 2201, 1, 0, 0, 0, 2204, 2205, 5, 2, 0, 0, 2205, 141, 1, 0, 0, 0, 2206, 2207, 3, 144, 72, 0, 2207, 143, 1, 0, 0, 0, 2208, 2209, 6, 72, -1, 0, 2209, 2211, 3, 148, 74, 0, 2210, 2212, 3, 146, 73, 0, 2211, 2210, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, 2216, 1, 0, 0, 0, 2213, 2214, 5, 182, 0, 0, 2214, 2216, 3, 144, 72, 3, 2215, 2208, 1, 0, 0, 0, 2215, 2213, 1, 0, 0, 0, 2216, 2225, 1, 0, 0, 0, 2217, 2218, 10, 2, 0, 0, 2218, 2219, 5, 25, 0, 0, 2219, 2224, 3, 144, 72, 3, 2220, 2221, 10, 1, 0, 0, 2221, 2222, 5, 194, 0, 0, 2222, 2224, 3, 144, 72, 2, 2223, 2217, 1, 0, 0, 0, 2223, 2220, 1, 0, 0, 0, 2224, 2227, 1, 0, 0, 0, 2225, 2223, 1, 0, 0, 0, 2225, 2226, 1, 0, 0, 0, 2226, 145, 1, 0, 0, 0, 2227, 2225, 1, 0, 0, 0, 2228, 2229, 3, 178, 89, 0, 2229, 2230, 3, 148, 74, 0, 2230, 2290, 1, 0, 0, 0, 2231, 2232, 3, 178, 89, 0, 2232, 2233, 3, 180, 90, 0, 2233, 2234, 5, 1, 0, 0, 2234, 2235, 3, 22, 11, 0, 2235, 2236, 5, 2, 0, 0, 2236, 2290, 1, 0, 0, 0, 2237, 2239, 5, 182, 0, 0, 2238, 2237, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 2240, 1, 0, 0, 0, 2240, 2241, 5, 34, 0, 0, 2241, 2242, 3, 148, 74, 0, 2242, 2243, 5, 25, 0, 0, 2243, 2244, 3, 148, 74, 0, 2244, 2290, 1, 0, 0, 0, 2245, 2247, 5, 182, 0, 0, 2246, 2245, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2249, 5, 122, 0, 0, 2249, 2250, 5, 1, 0, 0, 2250, 2255, 3, 142, 71, 0, 2251, 2252, 5, 3, 0, 0, 2252, 2254, 3, 142, 71, 0, 2253, 2251, 1, 0, 0, 0, 2254, 2257, 1, 0, 0, 0, 2255, 2253, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2258, 1, 0, 0, 0, 2257, 2255, 1, 0, 0, 0, 2258, 2259, 5, 2, 0, 0, 2259, 2290, 1, 0, 0, 0, 2260, 2262, 5, 182, 0, 0, 2261, 2260, 1, 0, 0, 0, 2261, 2262, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 2264, 5, 122, 0, 0, 2264, 2265, 5, 1, 0, 0, 2265, 2266, 3, 22, 11, 0, 2266, 2267, 5, 2, 0, 0, 2267, 2290, 1, 0, 0, 0, 2268, 2270, 5, 182, 0, 0, 2269, 2268, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2271, 1, 0, 0, 0, 2271, 2272, 5, 154, 0, 0, 2272, 2275, 3, 148, 74, 0, 2273, 2274, 5, 90, 0, 0, 2274, 2276, 3, 148, 74, 0, 2275, 2273, 1, 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2290, 1, 0, 0, 0, 2277, 2279, 5, 133, 0, 0, 2278, 2280, 5, 182, 0, 0, 2279, 2278, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2281, 1, 0, 0, 0, 2281, 2290, 5, 183, 0, 0, 2282, 2284, 5, 133, 0, 0, 2283, 2285, 5, 182, 0, 0, 2284, 2283, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2286, 1, 0, 0, 0, 2286, 2287, 5, 79, 0, 0, 2287, 2288, 5, 105, 0, 0, 2288, 2290, 3, 148, 74, 0, 2289, 2228, 1, 0, 0, 0, 2289, 2231, 1, 0, 0, 0, 2289, 2238, 1, 0, 0, 0, 2289, 2246, 1, 0, 0, 0, 2289, 2261, 1, 0, 0, 0, 2289, 2269, 1, 0, 0, 0, 2289, 2277, 1, 0, 0, 0, 2289, 2282, 1, 0, 0, 0, 2290, 147, 1, 0, 0, 0, 2291, 2292, 6, 74, -1, 0, 2292, 2296, 3, 150, 75, 0, 2293, 2294, 7, 18, 0, 0, 2294, 2296, 3, 148, 74, 4, 2295, 2291, 1, 0, 0, 0, 2295, 2293, 1, 0, 0, 0, 2296, 2311, 1, 0, 0, 0, 2297, 2298, 10, 3, 0, 0, 2298, 2299, 7, 19, 0, 0, 2299, 2310, 3, 148, 74, 4, 2300, 2301, 10, 2, 0, 0, 2301, 2302, 7, 18, 0, 0, 2302, 2310, 3, 148, 74, 3, 2303, 2304, 10, 1, 0, 0, 2304, 2305, 5, 323, 0, 0, 2305, 2310, 3, 148, 74, 2, 2306, 2307, 10, 5, 0, 0, 2307, 2308, 5, 30, 0, 0, 2308, 2310, 3, 176, 88, 0, 2309, 2297, 1, 0, 0, 0, 2309, 2300, 1, 0, 0, 0, 2309, 2303, 1, 0, 0, 0, 2309, 2306, 1, 0, 0, 0, 2310, 2313, 1, 0, 0, 0, 2311, 2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 149, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2314, 2315, 6, 75, -1, 0, 2315, 2768, 5, 183, 0, 0, 2316, 2768, 3, 184, 92, 0, 2317, 2318, 3, 302, 151, 0, 2318, 2319, 3, 174, 87, 0, 2319, 2768, 1, 0, 0, 0, 2320, 2321, 5, 82, 0, 0, 2321, 2322, 5, 213, 0, 0, 2322, 2768, 3, 174, 87, 0, 2323, 2768, 3, 304, 152, 0, 2324, 2768, 3, 182, 91, 0, 2325, 2768, 3, 174, 87, 0, 2326, 2768, 5, 328, 0, 0, 2327, 2768, 5, 324, 0, 0, 2328, 2329, 5, 211, 0, 0, 2329, 2330, 5, 1, 0, 0, 2330, 2331, 3, 148, 74, 0, 2331, 2332, 5, 122, 0, 0, 2332, 2333, 3, 148, 74, 0, 2333, 2334, 5, 2, 0, 0, 2334, 2768, 1, 0, 0, 0, 2335, 2336, 5, 1, 0, 0, 2336, 2339, 3, 142, 71, 0, 2337, 2338, 5, 3, 0, 0, 2338, 2340, 3, 142, 71, 0, 2339, 2337, 1, 0, 0, 0, 2340, 2341, 1, 0, 0, 0, 2341, 2339, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2344, 5, 2, 0, 0, 2344, 2768, 1, 0, 0, 0, 2345, 2346, 5, 239, 0, 0, 2346, 2347, 5, 1, 0, 0, 2347, 2352, 3, 142, 71, 0, 2348, 2349, 5, 3, 0, 0, 2349, 2351, 3, 142, 71, 0, 2350, 2348, 1, 0, 0, 0, 2351, 2354, 1, 0, 0, 0, 2352, 2350, 1, 0, 0, 0, 2352, 2353, 1, 0, 0, 0, 2353, 2355, 1, 0, 0, 0, 2354, 2352, 1, 0, 0, 0, 2355, 2356, 5, 2, 0, 0, 2356, 2768, 1, 0, 0, 0, 2357, 2358, 5, 156, 0, 0, 2358, 2360, 5, 1, 0, 0, 2359, 2361, 3, 74, 37, 0, 2360, 2359, 1, 0, 0, 0, 2360, 2361, 1, 0, 0, 0, 2361, 2362, 1, 0, 0, 0, 2362, 2365, 3, 142, 71, 0, 2363, 2364, 5, 3, 0, 0, 2364, 2366, 3, 174, 87, 0, 2365, 2363, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2370, 1, 0, 0, 0, 2367, 2368, 5, 190, 0, 0, 2368, 2369, 5, 200, 0, 0, 2369, 2371, 3, 90, 45, 0, 2370, 2367, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2373, 5, 2, 0, 0, 2373, 2374, 5, 305, 0, 0, 2374, 2375, 5, 114, 0, 0, 2375, 2376, 5, 1, 0, 0, 2376, 2377, 5, 195, 0, 0, 2377, 2378, 5, 36, 0, 0, 2378, 2383, 3, 50, 25, 0, 2379, 2380, 5, 3, 0, 0, 2380, 2382, 3, 50, 25, 0, 2381, 2379, 1, 0, 0, 0, 2382, 2385, 1, 0, 0, 0, 2383, 2381, 1, 0, 0, 0, 2383, 2384, 1, 0, 0, 0, 2384, 2386, 1, 0, 0, 0, 2385, 2383, 1, 0, 0, 0, 2386, 2387, 5, 2, 0, 0, 2387, 2389, 1, 0, 0, 0, 2388, 2390, 3, 198, 99, 0, 2389, 2388, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 2768, 1, 0, 0, 0, 2391, 2393, 3, 170, 85, 0, 2392, 2391, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2395, 3, 278, 139, 0, 2395, 2399, 5, 1, 0, 0, 2396, 2397, 3, 302, 151, 0, 2397, 2398, 5, 4, 0, 0, 2398, 2400, 1, 0, 0, 0, 2399, 2396, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2401, 1, 0, 0, 0, 2401, 2402, 5, 320, 0, 0, 2402, 2404, 5, 2, 0, 0, 2403, 2405, 3, 198, 99, 0, 2404, 2403, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2407, 1, 0, 0, 0, 2406, 2408, 3, 202, 101, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2768, 1, 0, 0, 0, 2409, 2411, 3, 170, 85, 0, 2410, 2409, 1, 0, 0, 0, 2410, 2411, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2413, 3, 278, 139, 0, 2413, 2425, 5, 1, 0, 0, 2414, 2416, 3, 74, 37, 0, 2415, 2414, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2422, 3, 142, 71, 0, 2418, 2419, 5, 3, 0, 0, 2419, 2421, 3, 142, 71, 0, 2420, 2418, 1, 0, 0, 0, 2421, 2424, 1, 0, 0, 0, 2422, 2420, 1, 0, 0, 0, 2422, 2423, 1, 0, 0, 0, 2423, 2426, 1, 0, 0, 0, 2424, 2422, 1, 0, 0, 0, 2425, 2415, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2437, 1, 0, 0, 0, 2427, 2428, 5, 195, 0, 0, 2428, 2429, 5, 36, 0, 0, 2429, 2434, 3, 50, 25, 0, 2430, 2431, 5, 3, 0, 0, 2431, 2433, 3, 50, 25, 0, 2432, 2430, 1, 0, 0, 0, 2433, 2436, 1, 0, 0, 0, 2434, 2432, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2438, 1, 0, 0, 0, 2436, 2434, 1, 0, 0, 0, 2437, 2427, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2439, 1, 0, 0, 0, 2439, 2441, 5, 2, 0, 0, 2440, 2442, 3, 198, 99, 0, 2441, 2440, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2447, 1, 0, 0, 0, 2443, 2445, 3, 172, 86, 0, 2444, 2443, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2448, 3, 202, 101, 0, 2447, 2444, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2768, 1, 0, 0, 0, 2449, 2450, 3, 302, 151, 0, 2450, 2451, 3, 202, 101, 0, 2451, 2768, 1, 0, 0, 0, 2452, 2453, 3, 302, 151, 0, 2453, 2454, 5, 7, 0, 0, 2454, 2455, 3, 142, 71, 0, 2455, 2768, 1, 0, 0, 0, 2456, 2465, 5, 1, 0, 0, 2457, 2462, 3, 302, 151, 0, 2458, 2459, 5, 3, 0, 0, 2459, 2461, 3, 302, 151, 0, 2460, 2458, 1, 0, 0, 0, 2461, 2464, 1, 0, 0, 0, 2462, 2460, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2466, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2465, 2457, 1, 0, 0, 0, 2465, 2466, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2468, 5, 2, 0, 0, 2468, 2469, 5, 7, 0, 0, 2469, 2768, 3, 142, 71, 0, 2470, 2471, 5, 1, 0, 0, 2471, 2472, 3, 22, 11, 0, 2472, 2473, 5, 2, 0, 0, 2473, 2768, 1, 0, 0, 0, 2474, 2475, 5, 94, 0, 0, 2475, 2476, 5, 1, 0, 0, 2476, 2477, 3, 22, 11, 0, 2477, 2478, 5, 2, 0, 0, 2478, 2768, 1, 0, 0, 0, 2479, 2480, 5, 40, 0, 0, 2480, 2482, 3, 142, 71, 0, 2481, 2483, 3, 196, 98, 0, 2482, 2481, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2482, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2488, 1, 0, 0, 0, 2486, 2487, 5, 84, 0, 0, 2487, 2489, 3, 142, 71, 0, 2488, 2486, 1, 0, 0, 0, 2488, 2489, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 2491, 5, 88, 0, 0, 2491, 2768, 1, 0, 0, 0, 2492, 2494, 5, 40, 0, 0, 2493, 2495, 3, 196, 98, 0, 2494, 2493, 1, 0, 0, 0, 2495, 2496, 1, 0, 0, 0, 2496, 2494, 1, 0, 0, 0, 2496, 2497, 1, 0, 0, 0, 2497, 2500, 1, 0, 0, 0, 2498, 2499, 5, 84, 0, 0, 2499, 2501, 3, 142, 71, 0, 2500, 2498, 1, 0, 0, 0, 2500, 2501, 1, 0, 0, 0, 2501, 2502, 1, 0, 0, 0, 2502, 2503, 5, 88, 0, 0, 2503, 2768, 1, 0, 0, 0, 2504, 2505, 5, 41, 0, 0, 2505, 2506, 5, 1, 0, 0, 2506, 2507, 3, 142, 71, 0, 2507, 2508, 5, 28, 0, 0, 2508, 2509, 3, 190, 95, 0, 2509, 2510, 5, 2, 0, 0, 2510, 2768, 1, 0, 0, 0, 2511, 2512, 5, 275, 0, 0, 2512, 2513, 5, 1, 0, 0, 2513, 2514, 3, 142, 71, 0, 2514, 2515, 5, 28, 0, 0, 2515, 2516, 3, 190, 95, 0, 2516, 2517, 5, 2, 0, 0, 2517, 2768, 1, 0, 0, 0, 2518, 2519, 5, 27, 0, 0, 2519, 2528, 5, 8, 0, 0, 2520, 2525, 3, 142, 71, 0, 2521, 2522, 5, 3, 0, 0, 2522, 2524, 3, 142, 71, 0, 2523, 2521, 1, 0, 0, 0, 2524, 2527, 1, 0, 0, 0, 2525, 2523, 1, 0, 0, 0, 2525, 2526, 1, 0, 0, 0, 2526, 2529, 1, 0, 0, 0, 2527, 2525, 1, 0, 0, 0, 2528, 2520, 1, 0, 0, 0, 2528, 2529, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2768, 5, 9, 0, 0, 2531, 2768, 3, 284, 142, 0, 2532, 2768, 5, 58, 0, 0, 2533, 2537, 5, 62, 0, 0, 2534, 2535, 5, 1, 0, 0, 2535, 2536, 5, 329, 0, 0, 2536, 2538, 5, 2, 0, 0, 2537, 2534, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2768, 1, 0, 0, 0, 2539, 2543, 5, 63, 0, 0, 2540, 2541, 5, 1, 0, 0, 2541, 2542, 5, 329, 0, 0, 2542, 2544, 5, 2, 0, 0, 2543, 2540, 1, 0, 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2768, 1, 0, 0, 0, 2545, 2549, 5, 158, 0, 0, 2546, 2547, 5, 1, 0, 0, 2547, 2548, 5, 329, 0, 0, 2548, 2550, 5, 2, 0, 0, 2549, 2546, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2768, 1, 0, 0, 0, 2551, 2555, 5, 159, 0, 0, 2552, 2553, 5, 1, 0, 0, 2553, 2554, 5, 329, 0, 0, 2554, 2556, 5, 2, 0, 0, 2555, 2552, 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 2768, 1, 0, 0, 0, 2557, 2768, 5, 64, 0, 0, 2558, 2768, 5, 57, 0, 0, 2559, 2768, 5, 61, 0, 0, 2560, 2768, 5, 59, 0, 0, 2561, 2562, 5, 272, 0, 0, 2562, 2570, 5, 1, 0, 0, 2563, 2565, 3, 88, 44, 0, 2564, 2563, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, 1, 0, 0, 0, 2566, 2568, 3, 148, 74, 0, 2567, 2566, 1, 0, 0, 0, 2567, 2568, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2571, 5, 105, 0, 0, 2570, 2564, 1, 0, 0, 0, 2570, 2571, 1, 0, 0, 0, 2571, 2572, 1, 0, 0, 0, 2572, 2573, 3, 148, 74, 0, 2573, 2574, 5, 2, 0, 0, 2574, 2768, 1, 0, 0, 0, 2575, 2576, 5, 272, 0, 0, 2576, 2577, 5, 1, 0, 0, 2577, 2578, 3, 148, 74, 0, 2578, 2579, 5, 3, 0, 0, 2579, 2580, 3, 148, 74, 0, 2580, 2581, 5, 2, 0, 0, 2581, 2768, 1, 0, 0, 0, 2582, 2583, 5, 258, 0, 0, 2583, 2584, 5, 1, 0, 0, 2584, 2585, 3, 148, 74, 0, 2585, 2586, 5, 105, 0, 0, 2586, 2589, 3, 148, 74, 0, 2587, 2588, 5, 103, 0, 0, 2588, 2590, 3, 148, 74, 0, 2589, 2587, 1, 0, 0, 0, 2589, 2590, 1, 0, 0, 0, 2590, 2591, 1, 0, 0, 0, 2591, 2592, 5, 2, 0, 0, 2592, 2768, 1, 0, 0, 0, 2593, 2594, 5, 181, 0, 0, 2594, 2595, 5, 1, 0, 0, 2595, 2598, 3, 148, 74, 0, 2596, 2597, 5, 3, 0, 0, 2597, 2599, 3, 188, 94, 0, 2598, 2596, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2601, 5, 2, 0, 0, 2601, 2768, 1, 0, 0, 0, 2602, 2603, 5, 96, 0, 0, 2603, 2604, 5, 1, 0, 0, 2604, 2605, 3, 302, 151, 0, 2605, 2606, 5, 105, 0, 0, 2606, 2607, 3, 148, 74, 0, 2607, 2608, 5, 2, 0, 0, 2608, 2768, 1, 0, 0, 0, 2609, 2610, 5, 1, 0, 0, 2610, 2611, 3, 142, 71, 0, 2611, 2612, 5, 2, 0, 0, 2612, 2768, 1, 0, 0, 0, 2613, 2614, 5, 115, 0, 0, 2614, 2623, 5, 1, 0, 0, 2615, 2620, 3, 288, 144, 0, 2616, 2617, 5, 3, 0, 0, 2617, 2619, 3, 288, 144, 0, 2618, 2616, 1, 0, 0, 0, 2619, 2622, 1, 0, 0, 0, 2620, 2618, 1, 0, 0, 0, 2620, 2621, 1, 0, 0, 0, 2621, 2624, 1, 0, 0, 0, 2622, 2620, 1, 0, 0, 0, 2623, 2615, 1, 0, 0, 0, 2623, 2624, 1, 0, 0, 0, 2624, 2625, 1, 0, 0, 0, 2625, 2768, 5, 2, 0, 0, 2626, 2627, 5, 139, 0, 0, 2627, 2628, 5, 1, 0, 0, 2628, 2633, 3, 152, 76, 0, 2629, 2630, 3, 160, 80, 0, 2630, 2631, 5, 190, 0, 0, 2631, 2632, 5, 89, 0, 0, 2632, 2634, 1, 0, 0, 0, 2633, 2629, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2636, 5, 2, 0, 0, 2636, 2768, 1, 0, 0, 0, 2637, 2638, 5, 143, 0, 0, 2638, 2639, 5, 1, 0, 0, 2639, 2642, 3, 152, 76, 0, 2640, 2641, 5, 231, 0, 0, 2641, 2643, 3, 190, 95, 0, 2642, 2640, 1, 0, 0, 0, 2642, 2643, 1, 0, 0, 0, 2643, 2648, 1, 0, 0, 0, 2644, 2645, 3, 162, 81, 0, 2645, 2646, 5, 190, 0, 0, 2646, 2647, 5, 85, 0, 0, 2647, 2649, 1, 0, 0, 0, 2648, 2644, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2654, 1, 0, 0, 0, 2650, 2651, 3, 162, 81, 0, 2651, 2652, 5, 190, 0, 0, 2652, 2653, 5, 89, 0, 0, 2653, 2655, 1, 0, 0, 0, 2654, 2650, 1, 0, 0, 0, 2654, 2655, 1, 0, 0, 0, 2655, 2656, 1, 0, 0, 0, 2656, 2657, 5, 2, 0, 0, 2657, 2768, 1, 0, 0, 0, 2658, 2659, 5, 141, 0, 0, 2659, 2660, 5, 1, 0, 0, 2660, 2667, 3, 152, 76, 0, 2661, 2662, 5, 231, 0, 0, 2662, 2665, 3, 190, 95, 0, 2663, 2664, 5, 104, 0, 0, 2664, 2666, 3, 156, 78, 0, 2665, 2663, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2668, 1, 0, 0, 0, 2667, 2661, 1, 0, 0, 0, 2667, 2668, 1, 0, 0, 0, 2668, 2672, 1, 0, 0, 0, 2669, 2670, 3, 164, 82, 0, 2670, 2671, 5, 308, 0, 0, 2671, 2673, 1, 0, 0, 0, 2672, 2669, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2681, 1, 0, 0, 0, 2674, 2675, 7, 15, 0, 0, 2675, 2679, 5, 218, 0, 0, 2676, 2677, 5, 190, 0, 0, 2677, 2678, 5, 242, 0, 0, 2678, 2680, 5, 264, 0, 0, 2679, 2676, 1, 0, 0, 0, 2679, 2680, 1, 0, 0, 0, 2680, 2682, 1, 0, 0, 0, 2681, 2674, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2687, 1, 0, 0, 0, 2683, 2684, 3, 166, 83, 0, 2684, 2685, 5, 190, 0, 0, 2685, 2686, 5, 85, 0, 0, 2686, 2688, 1, 0, 0, 0, 2687, 2683, 1, 0, 0, 0, 2687, 2688, 1, 0, 0, 0, 2688, 2693, 1, 0, 0, 0, 2689, 2690, 3, 166, 83, 0, 2690, 2691, 5, 190, 0, 0, 2691, 2692, 5, 89, 0, 0, 2692, 2694, 1, 0, 0, 0, 2693, 2689, 1, 0, 0, 0, 2693, 2694, 1, 0, 0, 0, 2694, 2695, 1, 0, 0, 0, 2695, 2696, 5, 2, 0, 0, 2696, 2768, 1, 0, 0, 0, 2697, 2698, 5, 140, 0, 0, 2698, 2727, 5, 1, 0, 0, 2699, 2704, 3, 168, 84, 0, 2700, 2701, 5, 3, 0, 0, 2701, 2703, 3, 168, 84, 0, 2702, 2700, 1, 0, 0, 0, 2703, 2706, 1, 0, 0, 0, 2704, 2702, 1, 0, 0, 0, 2704, 2705, 1, 0, 0, 0, 2705, 2713, 1, 0, 0, 0, 2706, 2704, 1, 0, 0, 0, 2707, 2708, 5, 183, 0, 0, 2708, 2709, 5, 190, 0, 0, 2709, 2714, 5, 183, 0, 0, 2710, 2711, 5, 18, 0, 0, 2711, 2712, 5, 190, 0, 0, 2712, 2714, 5, 183, 0, 0, 2713, 2707, 1, 0, 0, 0, 2713, 2710, 1, 0, 0, 0, 2713, 2714, 1, 0, 0, 0, 2714, 2725, 1, 0, 0, 0, 2715, 2716, 5, 304, 0, 0, 2716, 2718, 5, 282, 0, 0, 2717, 2719, 5, 146, 0, 0, 2718, 2717, 1, 0, 0, 0, 2718, 2719, 1, 0, 0, 0, 2719, 2726, 1, 0, 0, 0, 2720, 2721, 5, 306, 0, 0, 2721, 2723, 5, 282, 0, 0, 2722, 2724, 5, 146, 0, 0, 2723, 2722, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2726, 1, 0, 0, 0, 2725, 2715, 1, 0, 0, 0, 2725, 2720, 1, 0, 0, 0, 2725, 2726, 1, 0, 0, 0, 2726, 2728, 1, 0, 0, 0, 2727, 2699, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2735, 1, 0, 0, 0, 2729, 2730, 5, 231, 0, 0, 2730, 2733, 3, 190, 95, 0, 2731, 2732, 5, 104, 0, 0, 2732, 2734, 3, 156, 78, 0, 2733, 2731, 1, 0, 0, 0, 2733, 2734, 1, 0, 0, 0, 2734, 2736, 1, 0, 0, 0, 2735, 2729, 1, 0, 0, 0, 2735, 2736, 1, 0, 0, 0, 2736, 2737, 1, 0, 0, 0, 2737, 2768, 5, 2, 0, 0, 2738, 2739, 5, 138, 0, 0, 2739, 2756, 5, 1, 0, 0, 2740, 2745, 3, 154, 77, 0, 2741, 2742, 5, 3, 0, 0, 2742, 2744, 3, 154, 77, 0, 2743, 2741, 1, 0, 0, 0, 2744, 2747, 1, 0, 0, 0, 2745, 2743, 1, 0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 2754, 1, 0, 0, 0, 2747, 2745, 1, 0, 0, 0, 2748, 2749, 5, 183, 0, 0, 2749, 2750, 5, 190, 0, 0, 2750, 2755, 5, 183, 0, 0, 2751, 2752, 5, 18, 0, 0, 2752, 2753, 5, 190, 0, 0, 2753, 2755, 5, 183, 0, 0, 2754, 2748, 1, 0, 0, 0, 2754, 2751, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, 2755, 2757, 1, 0, 0, 0, 2756, 2740, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2764, 1, 0, 0, 0, 2758, 2759, 5, 231, 0, 0, 2759, 2762, 3, 190, 95, 0, 2760, 2761, 5, 104, 0, 0, 2761, 2763, 3, 156, 78, 0, 2762, 2760, 1, 0, 0, 0, 2762, 2763, 1, 0, 0, 0, 2763, 2765, 1, 0, 0, 0, 2764, 2758, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 2766, 1, 0, 0, 0, 2766, 2768, 5, 2, 0, 0, 2767, 2314, 1, 0, 0, 0, 2767, 2316, 1, 0, 0, 0, 2767, 2317, 1, 0, 0, 0, 2767, 2320, 1, 0, 0, 0, 2767, 2323, 1, 0, 0, 0, 2767, 2324, 1, 0, 0, 0, 2767, 2325, 1, 0, 0, 0, 2767, 2326, 1, 0, 0, 0, 2767, 2327, 1, 0, 0, 0, 2767, 2328, 1, 0, 0, 0, 2767, 2335, 1, 0, 0, 0, 2767, 2345, 1, 0, 0, 0, 2767, 2357, 1, 0, 0, 0, 2767, 2392, 1, 0, 0, 0, 2767, 2410, 1, 0, 0, 0, 2767, 2449, 1, 0, 0, 0, 2767, 2452, 1, 0, 0, 0, 2767, 2456, 1, 0, 0, 0, 2767, 2470, 1, 0, 0, 0, 2767, 2474, 1, 0, 0, 0, 2767, 2479, 1, 0, 0, 0, 2767, 2492, 1, 0, 0, 0, 2767, 2504, 1, 0, 0, 0, 2767, 2511, 1, 0, 0, 0, 2767, 2518, 1, 0, 0, 0, 2767, 2531, 1, 0, 0, 0, 2767, 2532, 1, 0, 0, 0, 2767, 2533, 1, 0, 0, 0, 2767, 2539, 1, 0, 0, 0, 2767, 2545, 1, 0, 0, 0, 2767, 2551, 1, 0, 0, 0, 2767, 2557, 1, 0, 0, 0, 2767, 2558, 1, 0, 0, 0, 2767, 2559, 1, 0, 0, 0, 2767, 2560, 1, 0, 0, 0, 2767, 2561, 1, 0, 0, 0, 2767, 2575, 1, 0, 0, 0, 2767, 2582, 1, 0, 0, 0, 2767, 2593, 1, 0, 0, 0, 2767, 2602, 1, 0, 0, 0, 2767, 2609, 1, 0, 0, 0, 2767, 2613, 1, 0, 0, 0, 2767, 2626, 1, 0, 0, 0, 2767, 2637, 1, 0, 0, 0, 2767, 2658, 1, 0, 0, 0, 2767, 2697, 1, 0, 0, 0, 2767, 2738, 1, 0, 0, 0, 2768, 2779, 1, 0, 0, 0, 2769, 2770, 10, 24, 0, 0, 2770, 2771, 5, 8, 0, 0, 2771, 2772, 3, 148, 74, 0, 2772, 2773, 5, 9, 0, 0, 2773, 2778, 1, 0, 0, 0, 2774, 2775, 10, 22, 0, 0, 2775, 2776, 5, 4, 0, 0, 2776, 2778, 3, 302, 151, 0, 2777, 2769, 1, 0, 0, 0, 2777, 2774, 1, 0, 0, 0, 2778, 2781, 1, 0, 0, 0, 2779, 2777, 1, 0, 0, 0, 2779, 2780, 1, 0, 0, 0, 2780, 151, 1, 0, 0, 0, 2781, 2779, 1, 0, 0, 0, 2782, 2783, 3, 154, 77, 0, 2783, 2784, 5, 3, 0, 0, 2784, 2787, 3, 174, 87, 0, 2785, 2786, 5, 28, 0, 0, 2786, 2788, 3, 302, 151, 0, 2787, 2785, 1, 0, 0, 0, 2787, 2788, 1, 0, 0, 0, 2788, 2798, 1, 0, 0, 0, 2789, 2790, 5, 203, 0, 0, 2790, 2795, 3, 158, 79, 0, 2791, 2792, 5, 3, 0, 0, 2792, 2794, 3, 158, 79, 0, 2793, 2791, 1, 0, 0, 0, 2794, 2797, 1, 0, 0, 0, 2795, 2793, 1, 0, 0, 0, 2795, 2796, 1, 0, 0, 0, 2796, 2799, 1, 0, 0, 0, 2797, 2795, 1, 0, 0, 0, 2798, 2789, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 153, 1, 0, 0, 0, 2800, 2803, 3, 142, 71, 0, 2801, 2802, 5, 104, 0, 0, 2802, 2804, 3, 156, 78, 0, 2803, 2801, 1, 0, 0, 0, 2803, 2804, 1, 0, 0, 0, 2804, 155, 1, 0, 0, 0, 2805, 2808, 5, 137, 0, 0, 2806, 2807, 5, 87, 0, 0, 2807, 2809, 7, 20, 0, 0, 2808, 2806, 1, 0, 0, 0, 2808, 2809, 1, 0, 0, 0, 2809, 157, 1, 0, 0, 0, 2810, 2811, 3, 154, 77, 0, 2811, 2812, 5, 28, 0, 0, 2812, 2813, 3, 302, 151, 0, 2813, 159, 1, 0, 0, 0, 2814, 2815, 7, 21, 0, 0, 2815, 161, 1, 0, 0, 0, 2816, 2821, 5, 89, 0, 0, 2817, 2821, 5, 183, 0, 0, 2818, 2819, 5, 70, 0, 0, 2819, 2821, 3, 142, 71, 0, 2820, 2816, 1, 0, 0, 0, 2820, 2817, 1, 0, 0, 0, 2820, 2818, 1, 0, 0, 0, 2821, 163, 1, 0, 0, 0, 2822, 2824, 5, 306, 0, 0, 2823, 2825, 5, 27, 0, 0, 2824, 2823, 1, 0, 0, 0, 2824, 2825, 1, 0, 0, 0, 2825, 2834, 1, 0, 0, 0, 2826, 2828, 5, 304, 0, 0, 2827, 2829, 7, 22, 0, 0, 2828, 2827, 1, 0, 0, 0, 2828, 2829, 1, 0, 0, 0, 2829, 2831, 1, 0, 0, 0, 2830, 2832, 5, 27, 0, 0, 2831, 2830, 1, 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 2834, 1, 0, 0, 0, 2833, 2822, 1, 0, 0, 0, 2833, 2826, 1, 0, 0, 0, 2834, 165, 1, 0, 0, 0, 2835, 2842, 5, 89, 0, 0, 2836, 2842, 5, 183, 0, 0, 2837, 2838, 5, 85, 0, 0, 2838, 2842, 5, 27, 0, 0, 2839, 2840, 5, 85, 0, 0, 2840, 2842, 5, 186, 0, 0, 2841, 2835, 1, 0, 0, 0, 2841, 2836, 1, 0, 0, 0, 2841, 2837, 1, 0, 0, 0, 2841, 2839, 1, 0, 0, 0, 2842, 167, 1, 0, 0, 0, 2843, 2845, 5, 145, 0, 0, 2844, 2843, 1, 0, 0, 0, 2844, 2845, 1, 0, 0, 0, 2845, 2846, 1, 0, 0, 0, 2846, 2847, 3, 142, 71, 0, 2847, 2848, 5, 295, 0, 0, 2848, 2849, 3, 154, 77, 0, 2849, 2855, 1, 0, 0, 0, 2850, 2851, 3, 142, 71, 0, 2851, 2852, 5, 10, 0, 0, 2852, 2853, 3, 154, 77, 0, 2853, 2855, 1, 0, 0, 0, 2854, 2844, 1, 0, 0, 0, 2854, 2850, 1, 0, 0, 0, 2855, 169, 1, 0, 0, 0, 2856, 2857, 7, 23, 0, 0, 2857, 171, 1, 0, 0, 0, 2858, 2859, 5, 120, 0, 0, 2859, 2863, 5, 185, 0, 0, 2860, 2861, 5, 228, 0, 0, 2861, 2863, 5, 185, 0, 0, 2862, 2858, 1, 0, 0, 0, 2862, 2860, 1, 0, 0, 0, 2863, 173, 1, 0, 0, 0, 2864, 2871, 5, 326, 0, 0, 2865, 2868, 5, 327, 0, 0, 2866, 2867, 5, 277, 0, 0, 2867, 2869, 5, 326, 0, 0, 2868, 2866, 1, 0, 0, 0, 2868, 2869, 1, 0, 0, 0, 2869, 2871, 1, 0, 0, 0, 2870, 2864, 1, 0, 0, 0, 2870, 2865, 1, 0, 0, 0, 2871, 175, 1, 0, 0, 0, 2872, 2873, 5, 267, 0, 0, 2873, 2874, 5, 311, 0, 0, 2874, 2879, 3, 184, 92, 0, 2875, 2876, 5, 267, 0, 0, 2876, 2877, 5, 311, 0, 0, 2877, 2879, 3, 174, 87, 0, 2878, 2872, 1, 0, 0, 0, 2878, 2875, 1, 0, 0, 0, 2879, 177, 1, 0, 0, 0, 2880, 2881, 7, 24, 0, 0, 2881, 179, 1, 0, 0, 0, 2882, 2883, 7, 25, 0, 0, 2883, 181, 1, 0, 0, 0, 2884, 2885, 7, 26, 0, 0, 2885, 183, 1, 0, 0, 0, 2886, 2888, 5, 129, 0, 0, 2887, 2889, 7, 18, 0, 0, 2888, 2887, 1, 0, 0, 0, 2888, 2889, 1, 0, 0, 0, 2889, 2890, 1, 0, 0, 0, 2890, 2891, 3, 174, 87, 0, 2891, 2894, 3, 186, 93, 0, 2892, 2893, 5, 269, 0, 0, 2893, 2895, 3, 186, 93, 0, 2894, 2892, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 185, 1, 0, 0, 0, 2896, 2897, 7, 27, 0, 0, 2897, 187, 1, 0, 0, 0, 2898, 2899, 7, 28, 0, 0, 2899, 189, 1, 0, 0, 0, 2900, 2901, 6, 95, -1, 0, 2901, 2902, 5, 239, 0, 0, 2902, 2903, 5, 1, 0, 0, 2903, 2908, 3, 192, 96, 0, 2904, 2905, 5, 3, 0, 0, 2905, 2907, 3, 192, 96, 0, 2906, 2904, 1, 0, 0, 0, 2907, 2910, 1, 0, 0, 0, 2908, 2906, 1, 0, 0, 0, 2908, 2909, 1, 0, 0, 0, 2909, 2911, 1, 0, 0, 0, 2910, 2908, 1, 0, 0, 0, 2911, 2912, 5, 2, 0, 0, 2912, 2972, 1, 0, 0, 0, 2913, 2914, 5, 129, 0, 0, 2914, 2917, 3, 186, 93, 0, 2915, 2916, 5, 269, 0, 0, 2916, 2918, 3, 186, 93, 0, 2917, 2915, 1, 0, 0, 0, 2917, 2918, 1, 0, 0, 0, 2918, 2972, 1, 0, 0, 0, 2919, 2924, 5, 268, 0, 0, 2920, 2921, 5, 1, 0, 0, 2921, 2922, 3, 194, 97, 0, 2922, 2923, 5, 2, 0, 0, 2923, 2925, 1, 0, 0, 0, 2924, 2920, 1, 0, 0, 0, 2924, 2925, 1, 0, 0, 0, 2925, 2929, 1, 0, 0, 0, 2926, 2927, 7, 29, 0, 0, 2927, 2928, 5, 267, 0, 0, 2928, 2930, 5, 311, 0, 0, 2929, 2926, 1, 0, 0, 0, 2929, 2930, 1, 0, 0, 0, 2930, 2972, 1, 0, 0, 0, 2931, 2936, 5, 267, 0, 0, 2932, 2933, 5, 1, 0, 0, 2933, 2934, 3, 194, 97, 0, 2934, 2935, 5, 2, 0, 0, 2935, 2937, 1, 0, 0, 0, 2936, 2932, 1, 0, 0, 0, 2936, 2937, 1, 0, 0, 0, 2937, 2941, 1, 0, 0, 0, 2938, 2939, 7, 29, 0, 0, 2939, 2940, 5, 267, 0, 0, 2940, 2942, 5, 311, 0, 0, 2941, 2938, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2972, 1, 0, 0, 0, 2943, 2944, 5, 82, 0, 0, 2944, 2972, 5, 213, 0, 0, 2945, 2946, 5, 27, 0, 0, 2946, 2947, 5, 314, 0, 0, 2947, 2948, 3, 190, 95, 0, 2948, 2949, 5, 316, 0, 0, 2949, 2972, 1, 0, 0, 0, 2950, 2951, 5, 162, 0, 0, 2951, 2952, 5, 314, 0, 0, 2952, 2953, 3, 190, 95, 0, 2953, 2954, 5, 3, 0, 0, 2954, 2955, 3, 190, 95, 0, 2955, 2956, 5, 316, 0, 0, 2956, 2972, 1, 0, 0, 0, 2957, 2969, 3, 302, 151, 0, 2958, 2959, 5, 1, 0, 0, 2959, 2964, 3, 194, 97, 0, 2960, 2961, 5, 3, 0, 0, 2961, 2963, 3, 194, 97, 0, 2962, 2960, 1, 0, 0, 0, 2963, 2966, 1, 0, 0, 0, 2964, 2962, 1, 0, 0, 0, 2964, 2965, 1, 0, 0, 0, 2965, 2967, 1, 0, 0, 0, 2966, 2964, 1, 0, 0, 0, 2967, 2968, 5, 2, 0, 0, 2968, 2970, 1, 0, 0, 0, 2969, 2958, 1, 0, 0, 0, 2969, 2970, 1, 0, 0, 0, 2970, 2972, 1, 0, 0, 0, 2971, 2900, 1, 0, 0, 0, 2971, 2913, 1, 0, 0, 0, 2971, 2919, 1, 0, 0, 0, 2971, 2931, 1, 0, 0, 0, 2971, 2943, 1, 0, 0, 0, 2971, 2945, 1, 0, 0, 0, 2971, 2950, 1, 0, 0, 0, 2971, 2957, 1, 0, 0, 0, 2972, 2982, 1, 0, 0, 0, 2973, 2974, 10, 2, 0, 0, 2974, 2978, 5, 27, 0, 0, 2975, 2976, 5, 8, 0, 0, 2976, 2977, 5, 329, 0, 0, 2977, 2979, 5, 9, 0, 0, 2978, 2975, 1, 0, 0, 0, 2978, 2979, 1, 0, 0, 0, 2979, 2981, 1, 0, 0, 0, 2980, 2973, 1, 0, 0, 0, 2981, 2984, 1, 0, 0, 0, 2982, 2980, 1, 0, 0, 0, 2982, 2983, 1, 0, 0, 0, 2983, 191, 1, 0, 0, 0, 2984, 2982, 1, 0, 0, 0, 2985, 2990, 3, 190, 95, 0, 2986, 2987, 3, 302, 151, 0, 2987, 2988, 3, 190, 95, 0, 2988, 2990, 1, 0, 0, 0, 2989, 2985, 1, 0, 0, 0, 2989, 2986, 1, 0, 0, 0, 2990, 193, 1, 0, 0, 0, 2991, 2994, 5, 329, 0, 0, 2992, 2994, 3, 190, 95, 0, 2993, 2991, 1, 0, 0, 0, 2993, 2992, 1, 0, 0, 0, 2994, 195, 1, 0, 0, 0, 2995, 2996, 5, 300, 0, 0, 2996, 2997, 3, 142, 71, 0, 2997, 2998, 5, 265, 0, 0, 2998, 2999, 3, 142, 71, 0, 2999, 197, 1, 0, 0, 0, 3000, 3001, 5, 99, 0, 0, 3001, 3002, 5, 1, 0, 0, 3002, 3003, 3, 54, 27, 0, 3003, 3004, 5, 2, 0, 0, 3004, 199, 1, 0, 0, 0, 3005, 3006, 5, 300, 0, 0, 3006, 3009, 5, 164, 0, 0, 3007, 3008, 5, 25, 0, 0, 3008, 3010, 3, 142, 71, 0, 3009, 3007, 1, 0, 0, 0, 3009, 3010, 1, 0, 0, 0, 3010, 3011, 1, 0, 0, 0, 3011, 3012, 5, 265, 0, 0, 3012, 3013, 5, 287, 0, 0, 3013, 3014, 5, 251, 0, 0, 3014, 3015, 3, 302, 151, 0, 3015, 3016, 5, 312, 0, 0, 3016, 3024, 3, 142, 71, 0, 3017, 3018, 5, 3, 0, 0, 3018, 3019, 3, 302, 151, 0, 3019, 3020, 5, 312, 0, 0, 3020, 3021, 3, 142, 71, 0, 3021, 3023, 1, 0, 0, 0, 3022, 3017, 1, 0, 0, 0, 3023, 3026, 1, 0, 0, 0, 3024, 3022, 1, 0, 0, 0, 3024, 3025, 1, 0, 0, 0, 3025, 3070, 1, 0, 0, 0, 3026, 3024, 1, 0, 0, 0, 3027, 3028, 5, 300, 0, 0, 3028, 3031, 5, 164, 0, 0, 3029, 3030, 5, 25, 0, 0, 3030, 3032, 3, 142, 71, 0, 3031, 3029, 1, 0, 0, 0, 3031, 3032, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3034, 5, 265, 0, 0, 3034, 3070, 5, 73, 0, 0, 3035, 3036, 5, 300, 0, 0, 3036, 3037, 5, 182, 0, 0, 3037, 3040, 5, 164, 0, 0, 3038, 3039, 5, 25, 0, 0, 3039, 3041, 3, 142, 71, 0, 3040, 3038, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 3042, 1, 0, 0, 0, 3042, 3043, 5, 265, 0, 0, 3043, 3055, 5, 127, 0, 0, 3044, 3045, 5, 1, 0, 0, 3045, 3050, 3, 302, 151, 0, 3046, 3047, 5, 3, 0, 0, 3047, 3049, 3, 302, 151, 0, 3048, 3046, 1, 0, 0, 0, 3049, 3052, 1, 0, 0, 0, 3050, 3048, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3053, 1, 0, 0, 0, 3052, 3050, 1, 0, 0, 0, 3053, 3054, 5, 2, 0, 0, 3054, 3056, 1, 0, 0, 0, 3055, 3044, 1, 0, 0, 0, 3055, 3056, 1, 0, 0, 0, 3056, 3057, 1, 0, 0, 0, 3057, 3058, 5, 296, 0, 0, 3058, 3059, 5, 1, 0, 0, 3059, 3064, 3, 142, 71, 0, 3060, 3061, 5, 3, 0, 0, 3061, 3063, 3, 142, 71, 0, 3062, 3060, 1, 0, 0, 0, 3063, 3066, 1, 0, 0, 0, 3064, 3062, 1, 0, 0, 0, 3064, 3065, 1, 0, 0, 0, 3065, 3067, 1, 0, 0, 0, 3066, 3064, 1, 0, 0, 0, 3067, 3068, 5, 2, 0, 0, 3068, 3070, 1, 0, 0, 0, 3069, 3005, 1, 0, 0, 0, 3069, 3027, 1, 0, 0, 0, 3069, 3035, 1, 0, 0, 0, 3070, 201, 1, 0, 0, 0, 3071, 3077, 5, 199, 0, 0, 3072, 3078, 3, 302, 151, 0, 3073, 3074, 5, 1, 0, 0, 3074, 3075, 3, 70, 35, 0, 3075, 3076, 5, 2, 0, 0, 3076, 3078, 1, 0, 0, 0, 3077, 3072, 1, 0, 0, 0, 3077, 3073, 1, 0, 0, 0, 3078, 203, 1, 0, 0, 0, 3079, 3080, 5, 168, 0, 0, 3080, 3085, 3, 96, 48, 0, 3081, 3082, 5, 3, 0, 0, 3082, 3084, 3, 96, 48, 0, 3083, 3081, 1, 0, 0, 0, 3084, 3087, 1, 0, 0, 0, 3085, 3083, 1, 0, 0, 0, 3085, 3086, 1, 0, 0, 0, 3086, 3089, 1, 0, 0, 0, 3087, 3085, 1, 0, 0, 0, 3088, 3079, 1, 0, 0, 0, 3088, 3089, 1, 0, 0, 0, 3089, 3090, 1, 0, 0, 0, 3090, 3094, 3, 206, 103, 0, 3091, 3092, 5, 21, 0, 0, 3092, 3093, 5, 163, 0, 0, 3093, 3095, 3, 102, 51, 0, 3094, 3091, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3097, 1, 0, 0, 0, 3096, 3098, 7, 13, 0, 0, 3097, 3096, 1, 0, 0, 0, 3097, 3098, 1, 0, 0, 0, 3098, 3104, 1, 0, 0, 0, 3099, 3100, 5, 206, 0, 0, 3100, 3101, 5, 1, 0, 0, 3101, 3102, 3, 210, 105, 0, 3102, 3103, 5, 2, 0, 0, 3103, 3105, 1, 0, 0, 0, 3104, 3099, 1, 0, 0, 0, 3104, 3105, 1, 0, 0, 0, 3105, 3115, 1, 0, 0, 0, 3106, 3107, 5, 257, 0, 0, 3107, 3112, 3, 104, 52, 0, 3108, 3109, 5, 3, 0, 0, 3109, 3111, 3, 104, 52, 0, 3110, 3108, 1, 0, 0, 0, 3111, 3114, 1, 0, 0, 0, 3112, 3110, 1, 0, 0, 0, 3112, 3113, 1, 0, 0, 0, 3113, 3116, 1, 0, 0, 0, 3114, 3112, 1, 0, 0, 0, 3115, 3106, 1, 0, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3126, 1, 0, 0, 0, 3117, 3118, 5, 71, 0, 0, 3118, 3123, 3, 106, 53, 0, 3119, 3120, 5, 3, 0, 0, 3120, 3122, 3, 106, 53, 0, 3121, 3119, 1, 0, 0, 0, 3122, 3125, 1, 0, 0, 0, 3123, 3121, 1, 0, 0, 0, 3123, 3124, 1, 0, 0, 0, 3124, 3127, 1, 0, 0, 0, 3125, 3123, 1, 0, 0, 0, 3126, 3117, 1, 0, 0, 0, 3126, 3127, 1, 0, 0, 0, 3127, 205, 1, 0, 0, 0, 3128, 3129, 5, 219, 0, 0, 3129, 3153, 3, 208, 104, 0, 3130, 3131, 5, 240, 0, 0, 3131, 3153, 3, 208, 104, 0, 3132, 3133, 5, 116, 0, 0, 3133, 3153, 3, 208, 104, 0, 3134, 3135, 5, 219, 0, 0, 3135, 3136, 5, 34, 0, 0, 3136, 3137, 3, 208, 104, 0, 3137, 3138, 5, 25, 0, 0, 3138, 3139, 3, 208, 104, 0, 3139, 3153, 1, 0, 0, 0, 3140, 3141, 5, 240, 0, 0, 3141, 3142, 5, 34, 0, 0, 3142, 3143, 3, 208, 104, 0, 3143, 3144, 5, 25, 0, 0, 3144, 3145, 3, 208, 104, 0, 3145, 3153, 1, 0, 0, 0, 3146, 3147, 5, 116, 0, 0, 3147, 3148, 5, 34, 0, 0, 3148, 3149, 3, 208, 104, 0, 3149, 3150, 5, 25, 0, 0, 3150, 3151, 3, 208, 104, 0, 3151, 3153, 1, 0, 0, 0, 3152, 3128, 1, 0, 0, 0, 3152, 3130, 1, 0, 0, 0, 3152, 3132, 1, 0, 0, 0, 3152, 3134, 1, 0, 0, 0, 3152, 3140, 1, 0, 0, 0, 3152, 3146, 1, 0, 0, 0, 3153, 207, 1, 0, 0, 0, 3154, 3155, 5, 278, 0, 0, 3155, 3164, 5, 212, 0, 0, 3156, 3157, 5, 278, 0, 0, 3157, 3164, 5, 102, 0, 0, 3158, 3159, 5, 56, 0, 0, 3159, 3164, 5, 239, 0, 0, 3160, 3161, 3, 142, 71, 0, 3161, 3162, 7, 30, 0, 0, 3162, 3164, 1, 0, 0, 0, 3163, 3154, 1, 0, 0, 0, 3163, 3156, 1, 0, 0, 0, 3163, 3158, 1, 0, 0, 0, 3163, 3160, 1, 0, 0, 0, 3164, 209, 1, 0, 0, 0, 3165, 3166, 6, 105, -1, 0, 3166, 3168, 3, 212, 106, 0, 3167, 3169, 3, 214, 107, 0, 3168, 3167, 1, 0, 0, 0, 3168, 3169, 1, 0, 0, 0, 3169, 3177, 1, 0, 0, 0, 3170, 3171, 10, 2, 0, 0, 3171, 3176, 3, 210, 105, 3, 3172, 3173, 10, 1, 0, 0, 3173, 3174, 5, 11, 0, 0, 3174, 3176, 3, 210, 105, 2, 3175, 3170, 1, 0, 0, 0, 3175, 3172, 1, 0, 0, 0, 3176, 3179, 1, 0, 0, 0, 3177, 3175, 1, 0, 0, 0, 3177, 3178, 1, 0, 0, 0, 3178, 211, 1, 0, 0, 0, 3179, 3177, 1, 0, 0, 0, 3180, 3206, 3, 302, 151, 0, 3181, 3182, 5, 1, 0, 0, 3182, 3206, 5, 2, 0, 0, 3183, 3184, 5, 209, 0, 0, 3184, 3185, 5, 1, 0, 0, 3185, 3190, 3, 210, 105, 0, 3186, 3187, 5, 3, 0, 0, 3187, 3189, 3, 210, 105, 0, 3188, 3186, 1, 0, 0, 0, 3189, 3192, 1, 0, 0, 0, 3190, 3188, 1, 0, 0, 0, 3190, 3191, 1, 0, 0, 0, 3191, 3193, 1, 0, 0, 0, 3192, 3190, 1, 0, 0, 0, 3193, 3194, 5, 2, 0, 0, 3194, 3206, 1, 0, 0, 0, 3195, 3196, 5, 1, 0, 0, 3196, 3197, 3, 210, 105, 0, 3197, 3198, 5, 2, 0, 0, 3198, 3206, 1, 0, 0, 0, 3199, 3206, 5, 12, 0, 0, 3200, 3206, 5, 13, 0, 0, 3201, 3202, 5, 14, 0, 0, 3202, 3203, 3, 210, 105, 0, 3203, 3204, 5, 15, 0, 0, 3204, 3206, 1, 0, 0, 0, 3205, 3180, 1, 0, 0, 0, 3205, 3181, 1, 0, 0, 0, 3205, 3183, 1, 0, 0, 0, 3205, 3195, 1, 0, 0, 0, 3205, 3199, 1, 0, 0, 0, 3205, 3200, 1, 0, 0, 0, 3205, 3201, 1, 0, 0, 0, 3206, 213, 1, 0, 0, 0, 3207, 3209, 5, 320, 0, 0, 3208, 3210, 5, 324, 0, 0, 3209, 3208, 1, 0, 0, 0, 3209, 3210, 1, 0, 0, 0, 3210, 3238, 1, 0, 0, 0, 3211, 3213, 5, 318, 0, 0, 3212, 3214, 5, 324, 0, 0, 3213, 3212, 1, 0, 0, 0, 3213, 3214, 1, 0, 0, 0, 3214, 3238, 1, 0, 0, 0, 3215, 3217, 5, 324, 0, 0, 3216, 3218, 5, 324, 0, 0, 3217, 3216, 1, 0, 0, 0, 3217, 3218, 1, 0, 0, 0, 3218, 3238, 1, 0, 0, 0, 3219, 3220, 5, 16, 0, 0, 3220, 3221, 5, 329, 0, 0, 3221, 3223, 5, 17, 0, 0, 3222, 3224, 5, 324, 0, 0, 3223, 3222, 1, 0, 0, 0, 3223, 3224, 1, 0, 0, 0, 3224, 3238, 1, 0, 0, 0, 3225, 3227, 5, 16, 0, 0, 3226, 3228, 5, 329, 0, 0, 3227, 3226, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3229, 1, 0, 0, 0, 3229, 3231, 5, 3, 0, 0, 3230, 3232, 5, 329, 0, 0, 3231, 3230, 1, 0, 0, 0, 3231, 3232, 1, 0, 0, 0, 3232, 3233, 1, 0, 0, 0, 3233, 3235, 5, 17, 0, 0, 3234, 3236, 5, 324, 0, 0, 3235, 3234, 1, 0, 0, 0, 3235, 3236, 1, 0, 0, 0, 3236, 3238, 1, 0, 0, 0, 3237, 3207, 1, 0, 0, 0, 3237, 3211, 1, 0, 0, 0, 3237, 3215, 1, 0, 0, 0, 3237, 3219, 1, 0, 0, 0, 3237, 3225, 1, 0, 0, 0, 3238, 215, 1, 0, 0, 0, 3239, 3240, 3, 302, 151, 0, 3240, 3241, 5, 312, 0, 0, 3241, 3242, 3, 142, 71, 0, 3242, 217, 1, 0, 0, 0, 3243, 3244, 5, 104, 0, 0, 3244, 3248, 7, 31, 0, 0, 3245, 3246, 5, 276, 0, 0, 3246, 3248, 7, 32, 0, 0, 3247, 3243, 1, 0, 0, 0, 3247, 3245, 1, 0, 0, 0, 3248, 219, 1, 0, 0, 0, 3249, 3250, 5, 134, 0, 0, 3250, 3251, 5, 153, 0, 0, 3251, 3255, 3, 222, 111, 0, 3252, 3253, 5, 220, 0, 0, 3253, 3255, 7, 33, 0, 0, 3254, 3249, 1, 0, 0, 0, 3254, 3252, 1, 0, 0, 0, 3255, 221, 1, 0, 0, 0, 3256, 3257, 5, 220, 0, 0, 3257, 3264, 5, 279, 0, 0, 3258, 3259, 5, 220, 0, 0, 3259, 3264, 5, 48, 0, 0, 3260, 3261, 5, 225, 0, 0, 3261, 3264, 5, 220, 0, 0, 3262, 3264, 5, 249, 0, 0, 3263, 3256, 1, 0, 0, 0, 3263, 3258, 1, 0, 0, 0, 3263, 3260, 1, 0, 0, 0, 3263, 3262, 1, 0, 0, 0, 3264, 223, 1, 0, 0, 0, 3265, 3271, 3, 142, 71, 0, 3266, 3267, 3, 302, 151, 0, 3267, 3268, 5, 6, 0, 0, 3268, 3269, 3, 142, 71, 0, 3269, 3271, 1, 0, 0, 0, 3270, 3265, 1, 0, 0, 0, 3270, 3266, 1, 0, 0, 0, 3271, 225, 1, 0, 0, 0, 3272, 3273, 3, 302, 151, 0, 3273, 3274, 5, 4, 0, 0, 3274, 3275, 3, 302, 151, 0, 3275, 3278, 1, 0, 0, 0, 3276, 3278, 3, 302, 151, 0, 3277, 3272, 1, 0, 0, 0, 3277, 3276, 1, 0, 0, 0, 3278, 227, 1, 0, 0, 0, 3279, 3284, 3, 226, 113, 0, 3280, 3281, 5, 3, 0, 0, 3281, 3283, 3, 226, 113, 0, 3282, 3280, 1, 0, 0, 0, 3283, 3286, 1, 0, 0, 0, 3284, 3282, 1, 0, 0, 0, 3284, 3285, 1, 0, 0, 0, 3285, 229, 1, 0, 0, 0, 3286, 3284, 1, 0, 0, 0, 3287, 3288, 5, 107, 0, 0, 3288, 3289, 3, 232, 116, 0, 3289, 3293, 3, 238, 119, 0, 3290, 3292, 3, 240, 120, 0, 3291, 3290, 1, 0, 0, 0, 3292, 3295, 1, 0, 0, 0, 3293, 3291, 1, 0, 0, 0, 3293, 3294, 1, 0, 0, 0, 3294, 3296, 1, 0, 0, 0, 3295, 3293, 1, 0, 0, 0, 3296, 3297, 3, 242, 121, 0, 3297, 231, 1, 0, 0, 0, 3298, 3299, 3, 280, 140, 0, 3299, 3308, 5, 1, 0, 0, 3300, 3305, 3, 236, 118, 0, 3301, 3302, 5, 3, 0, 0, 3302, 3304, 3, 236, 118, 0, 3303, 3301, 1, 0, 0, 0, 3304, 3307, 1, 0, 0, 0, 3305, 3303, 1, 0, 0, 0, 3305, 3306, 1, 0, 0, 0, 3306, 3309, 1, 0, 0, 0, 3307, 3305, 1, 0, 0, 0, 3308, 3300, 1, 0, 0, 0, 3308, 3309, 1, 0, 0, 0, 3309, 3310, 1, 0, 0, 0, 3310, 3311, 5, 2, 0, 0, 3311, 233, 1, 0, 0, 0, 3312, 3313, 3, 278, 139, 0, 3313, 3322, 5, 1, 0, 0, 3314, 3319, 3, 236, 118, 0, 3315, 3316, 5, 3, 0, 0, 3316, 3318, 3, 236, 118, 0, 3317, 3315, 1, 0, 0, 0, 3318, 3321, 1, 0, 0, 0, 3319, 3317, 1, 0, 0, 0, 3319, 3320, 1, 0, 0, 0, 3320, 3323, 1, 0, 0, 0, 3321, 3319, 1, 0, 0, 0, 3322, 3314, 1, 0, 0, 0, 3322, 3323, 1, 0, 0, 0, 3323, 3324, 1, 0, 0, 0, 3324, 3325, 5, 2, 0, 0, 3325, 235, 1, 0, 0, 0, 3326, 3328, 3, 302, 151, 0, 3327, 3326, 1, 0, 0, 0, 3327, 3328, 1, 0, 0, 0, 3328, 3329, 1, 0, 0, 0, 3329, 3330, 3, 190, 95, 0, 3330, 237, 1, 0, 0, 0, 3331, 3332, 5, 232, 0, 0, 3332, 3333, 3, 190, 95, 0, 3333, 239, 1, 0, 0, 0, 3334, 3335, 5, 147, 0, 0, 3335, 3354, 3, 302, 151, 0, 3336, 3338, 5, 182, 0, 0, 3337, 3336, 1, 0, 0, 0, 3337, 3338, 1, 0, 0, 0, 3338, 3339, 1, 0, 0, 0, 3339, 3354, 5, 78, 0, 0, 3340, 3341, 5, 232, 0, 0, 3341, 3342, 5, 183, 0, 0, 3342, 3343, 5, 190, 0, 0, 3343, 3344, 5, 183, 0, 0, 3344, 3354, 5, 126, 0, 0, 3345, 3346, 5, 38, 0, 0, 3346, 3347, 5, 190, 0, 0, 3347, 3348, 5, 183, 0, 0, 3348, 3354, 5, 126, 0, 0, 3349, 3350, 5, 246, 0, 0, 3350, 3354, 7, 1, 0, 0, 3351, 3352, 5, 46, 0, 0, 3352, 3354, 3, 174, 87, 0, 3353, 3334, 1, 0, 0, 0, 3353, 3337, 1, 0, 0, 0, 3353, 3340, 1, 0, 0, 0, 3353, 3345, 1, 0, 0, 0, 3353, 3349, 1, 0, 0, 0, 3353, 3351, 1, 0, 0, 0, 3354, 241, 1, 0, 0, 0, 3355, 3356, 5, 230, 0, 0, 3356, 3455, 3, 148, 74, 0, 3357, 3358, 5, 251, 0, 0, 3358, 3359, 3, 302, 151, 0, 3359, 3360, 5, 312, 0, 0, 3360, 3361, 3, 142, 71, 0, 3361, 3455, 1, 0, 0, 0, 3362, 3363, 5, 40, 0, 0, 3363, 3365, 3, 142, 71, 0, 3364, 3366, 3, 244, 122, 0, 3365, 3364, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3365, 1, 0, 0, 0, 3367, 3368, 1, 0, 0, 0, 3368, 3370, 1, 0, 0, 0, 3369, 3371, 3, 248, 124, 0, 3370, 3369, 1, 0, 0, 0, 3370, 3371, 1, 0, 0, 0, 3371, 3372, 1, 0, 0, 0, 3372, 3373, 5, 88, 0, 0, 3373, 3374, 5, 40, 0, 0, 3374, 3455, 1, 0, 0, 0, 3375, 3377, 5, 40, 0, 0, 3376, 3378, 3, 244, 122, 0, 3377, 3376, 1, 0, 0, 0, 3378, 3379, 1, 0, 0, 0, 3379, 3377, 1, 0, 0, 0, 3379, 3380, 1, 0, 0, 0, 3380, 3382, 1, 0, 0, 0, 3381, 3383, 3, 248, 124, 0, 3382, 3381, 1, 0, 0, 0, 3382, 3383, 1, 0, 0, 0, 3383, 3384, 1, 0, 0, 0, 3384, 3385, 5, 88, 0, 0, 3385, 3386, 5, 40, 0, 0, 3386, 3455, 1, 0, 0, 0, 3387, 3388, 5, 119, 0, 0, 3388, 3389, 3, 142, 71, 0, 3389, 3390, 5, 265, 0, 0, 3390, 3394, 3, 252, 126, 0, 3391, 3393, 3, 246, 123, 0, 3392, 3391, 1, 0, 0, 0, 3393, 3396, 1, 0, 0, 0, 3394, 3392, 1, 0, 0, 0, 3394, 3395, 1, 0, 0, 0, 3395, 3398, 1, 0, 0, 0, 3396, 3394, 1, 0, 0, 0, 3397, 3399, 3, 248, 124, 0, 3398, 3397, 1, 0, 0, 0, 3398, 3399, 1, 0, 0, 0, 3399, 3400, 1, 0, 0, 0, 3400, 3401, 5, 88, 0, 0, 3401, 3402, 5, 119, 0, 0, 3402, 3455, 1, 0, 0, 0, 3403, 3404, 5, 135, 0, 0, 3404, 3455, 3, 302, 151, 0, 3405, 3406, 5, 151, 0, 0, 3406, 3455, 3, 302, 151, 0, 3407, 3413, 5, 32, 0, 0, 3408, 3409, 3, 250, 125, 0, 3409, 3410, 5, 325, 0, 0, 3410, 3412, 1, 0, 0, 0, 3411, 3408, 1, 0, 0, 0, 3412, 3415, 1, 0, 0, 0, 3413, 3411, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, 3417, 1, 0, 0, 0, 3415, 3413, 1, 0, 0, 0, 3416, 3418, 3, 252, 126, 0, 3417, 3416, 1, 0, 0, 0, 3417, 3418, 1, 0, 0, 0, 3418, 3419, 1, 0, 0, 0, 3419, 3455, 5, 88, 0, 0, 3420, 3421, 3, 302, 151, 0, 3421, 3422, 5, 10, 0, 0, 3422, 3424, 1, 0, 0, 0, 3423, 3420, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3426, 5, 161, 0, 0, 3426, 3427, 3, 252, 126, 0, 3427, 3428, 5, 88, 0, 0, 3428, 3429, 5, 161, 0, 0, 3429, 3455, 1, 0, 0, 0, 3430, 3431, 3, 302, 151, 0, 3431, 3432, 5, 10, 0, 0, 3432, 3434, 1, 0, 0, 0, 3433, 3430, 1, 0, 0, 0, 3433, 3434, 1, 0, 0, 0, 3434, 3435, 1, 0, 0, 0, 3435, 3436, 5, 302, 0, 0, 3436, 3437, 3, 142, 71, 0, 3437, 3438, 5, 81, 0, 0, 3438, 3439, 3, 252, 126, 0, 3439, 3440, 5, 88, 0, 0, 3440, 3441, 5, 302, 0, 0, 3441, 3455, 1, 0, 0, 0, 3442, 3443, 3, 302, 151, 0, 3443, 3444, 5, 10, 0, 0, 3444, 3446, 1, 0, 0, 0, 3445, 3442, 1, 0, 0, 0, 3445, 3446, 1, 0, 0, 0, 3446, 3447, 1, 0, 0, 0, 3447, 3448, 5, 224, 0, 0, 3448, 3449, 3, 252, 126, 0, 3449, 3450, 5, 286, 0, 0, 3450, 3451, 3, 142, 71, 0, 3451, 3452, 5, 88, 0, 0, 3452, 3453, 5, 224, 0, 0, 3453, 3455, 1, 0, 0, 0, 3454, 3355, 1, 0, 0, 0, 3454, 3357, 1, 0, 0, 0, 3454, 3362, 1, 0, 0, 0, 3454, 3375, 1, 0, 0, 0, 3454, 3387, 1, 0, 0, 0, 3454, 3403, 1, 0, 0, 0, 3454, 3405, 1, 0, 0, 0, 3454, 3407, 1, 0, 0, 0, 3454, 3423, 1, 0, 0, 0, 3454, 3433, 1, 0, 0, 0, 3454, 3445, 1, 0, 0, 0, 3455, 243, 1, 0, 0, 0, 3456, 3457, 5, 300, 0, 0, 3457, 3458, 3, 142, 71, 0, 3458, 3459, 5, 265, 0, 0, 3459, 3460, 3, 252, 126, 0, 3460, 245, 1, 0, 0, 0, 3461, 3462, 5, 86, 0, 0, 3462, 3463, 3, 142, 71, 0, 3463, 3464, 5, 265, 0, 0, 3464, 3465, 3, 252, 126, 0, 3465, 247, 1, 0, 0, 0, 3466, 3467, 5, 84, 0, 0, 3467, 3468, 3, 252, 126, 0, 3468, 249, 1, 0, 0, 0, 3469, 3470, 5, 69, 0, 0, 3470, 3475, 3, 302, 151, 0, 3471, 3472, 5, 3, 0, 0, 3472, 3474, 3, 302, 151, 0, 3473, 3471, 1, 0, 0, 0, 3474, 3477, 1, 0, 0, 0, 3475, 3473, 1, 0, 0, 0, 3475, 3476, 1, 0, 0, 0, 3476, 3478, 1, 0, 0, 0, 3477, 3475, 1, 0, 0, 0, 3478, 3481, 3, 190, 95, 0, 3479, 3480, 5, 70, 0, 0, 3480, 3482, 3, 148, 74, 0, 3481, 3479, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 251, 1, 0, 0, 0, 3483, 3484, 3, 242, 121, 0, 3484, 3485, 5, 325, 0, 0, 3485, 3487, 1, 0, 0, 0, 3486, 3483, 1, 0, 0, 0, 3487, 3488, 1, 0, 0, 0, 3488, 3486, 1, 0, 0, 0, 3488, 3489, 1, 0, 0, 0, 3489, 253, 1, 0, 0, 0, 3490, 3497, 5, 53, 0, 0, 3491, 3497, 5, 248, 0, 0, 3492, 3497, 5, 73, 0, 0, 3493, 3497, 5, 127, 0, 0, 3494, 3497, 5, 287, 0, 0, 3495, 3497, 3, 302, 151, 0, 3496, 3490, 1, 0, 0, 0, 3496, 3491, 1, 0, 0, 0, 3496, 3492, 1, 0, 0, 0, 3496, 3493, 1, 0, 0, 0, 3496, 3494, 1, 0, 0, 0, 3496, 3495, 1, 0, 0, 0, 3497, 255, 1, 0, 0, 0, 3498, 3502, 5, 260, 0, 0, 3499, 3502, 5, 243, 0, 0, 3500, 3502, 3, 302, 151, 0, 3501, 3498, 1, 0, 0, 0, 3501, 3499, 1, 0, 0, 0, 3501, 3500, 1, 0, 0, 0, 3502, 257, 1, 0, 0, 0, 3503, 3505, 3, 256, 128, 0, 3504, 3503, 1, 0, 0, 0, 3504, 3505, 1, 0, 0, 0, 3505, 3506, 1, 0, 0, 0, 3506, 3507, 3, 288, 144, 0, 3507, 259, 1, 0, 0, 0, 3508, 3511, 3, 262, 131, 0, 3509, 3511, 3, 266, 133, 0, 3510, 3508, 1, 0, 0, 0, 3510, 3509, 1, 0, 0, 0, 3511, 261, 1, 0, 0, 0, 3512, 3524, 3, 302, 151, 0, 3513, 3514, 3, 302, 151, 0, 3514, 3515, 5, 4, 0, 0, 3515, 3516, 3, 302, 151, 0, 3516, 3524, 1, 0, 0, 0, 3517, 3518, 3, 302, 151, 0, 3518, 3519, 5, 4, 0, 0, 3519, 3520, 3, 302, 151, 0, 3520, 3521, 5, 4, 0, 0, 3521, 3522, 3, 302, 151, 0, 3522, 3524, 1, 0, 0, 0, 3523, 3512, 1, 0, 0, 0, 3523, 3513, 1, 0, 0, 0, 3523, 3517, 1, 0, 0, 0, 3524, 263, 1, 0, 0, 0, 3525, 3537, 3, 302, 151, 0, 3526, 3527, 3, 302, 151, 0, 3527, 3528, 5, 4, 0, 0, 3528, 3529, 3, 302, 151, 0, 3529, 3537, 1, 0, 0, 0, 3530, 3531, 3, 302, 151, 0, 3531, 3532, 5, 4, 0, 0, 3532, 3533, 3, 302, 151, 0, 3533, 3534, 5, 4, 0, 0, 3534, 3535, 3, 302, 151, 0, 3535, 3537, 1, 0, 0, 0, 3536, 3525, 1, 0, 0, 0, 3536, 3526, 1, 0, 0, 0, 3536, 3530, 1, 0, 0, 0, 3537, 265, 1, 0, 0, 0, 3538, 3550, 3, 302, 151, 0, 3539, 3540, 3, 302, 151, 0, 3540, 3541, 5, 4, 0, 0, 3541, 3542, 3, 302, 151, 0, 3542, 3550, 1, 0, 0, 0, 3543, 3544, 3, 302, 151, 0, 3544, 3545, 5, 4, 0, 0, 3545, 3546, 3, 302, 151, 0, 3546, 3547, 5, 4, 0, 0, 3547, 3548, 3, 302, 151, 0, 3548, 3550, 1, 0, 0, 0, 3549, 3538, 1, 0, 0, 0, 3549, 3539, 1, 0, 0, 0, 3549, 3543, 1, 0, 0, 0, 3550, 267, 1, 0, 0, 0, 3551, 3563, 3, 302, 151, 0, 3552, 3553, 3, 302, 151, 0, 3553, 3554, 5, 4, 0, 0, 3554, 3555, 3, 302, 151, 0, 3555, 3563, 1, 0, 0, 0, 3556, 3557, 3, 302, 151, 0, 3557, 3558, 5, 4, 0, 0, 3558, 3559, 3, 302, 151, 0, 3559, 3560, 5, 4, 0, 0, 3560, 3561, 3, 302, 151, 0, 3561, 3563, 1, 0, 0, 0, 3562, 3551, 1, 0, 0, 0, 3562, 3552, 1, 0, 0, 0, 3562, 3556, 1, 0, 0, 0, 3563, 269, 1, 0, 0, 0, 3564, 3570, 3, 302, 151, 0, 3565, 3566, 3, 302, 151, 0, 3566, 3567, 5, 4, 0, 0, 3567, 3568, 3, 302, 151, 0, 3568, 3570, 1, 0, 0, 0, 3569, 3564, 1, 0, 0, 0, 3569, 3565, 1, 0, 0, 0, 3570, 271, 1, 0, 0, 0, 3571, 3577, 3, 302, 151, 0, 3572, 3573, 3, 302, 151, 0, 3573, 3574, 5, 4, 0, 0, 3574, 3575, 3, 302, 151, 0, 3575, 3577, 1, 0, 0, 0, 3576, 3571, 1, 0, 0, 0, 3576, 3572, 1, 0, 0, 0, 3577, 273, 1, 0, 0, 0, 3578, 3579, 3, 302, 151, 0, 3579, 275, 1, 0, 0, 0, 3580, 3581, 3, 302, 151, 0, 3581, 277, 1, 0, 0, 0, 3582, 3583, 3, 288, 144, 0, 3583, 279, 1, 0, 0, 0, 3584, 3585, 3, 288, 144, 0, 3585, 281, 1, 0, 0, 0, 3586, 3589, 3, 288, 144, 0, 3587, 3589, 4, 141, 14, 0, 3588, 3586, 1, 0, 0, 0, 3588, 3587, 1, 0, 0, 0, 3589, 283, 1, 0, 0, 0, 3590, 3591, 3, 288, 144, 0, 3591, 285, 1, 0, 0, 0, 3592, 3593, 3, 302, 151, 0, 3593, 287, 1, 0, 0, 0, 3594, 3599, 3, 302, 151, 0, 3595, 3596, 5, 4, 0, 0, 3596, 3598, 3, 302, 151, 0, 3597, 3595, 1, 0, 0, 0, 3598, 3601, 1, 0, 0, 0, 3599, 3597, 1, 0, 0, 0, 3599, 3600, 1, 0, 0, 0, 3600, 289, 1, 0, 0, 0, 3601, 3599, 1, 0, 0, 0, 3602, 3603, 5, 103, 0, 0, 3603, 3604, 3, 292, 146, 0, 3604, 3605, 5, 28, 0, 0, 3605, 3606, 5, 187, 0, 0, 3606, 3607, 3, 148, 74, 0, 3607, 291, 1, 0, 0, 0, 3608, 3609, 7, 34, 0, 0, 3609, 293, 1, 0, 0, 0, 3610, 3614, 3, 296, 148, 0, 3611, 3614, 5, 64, 0, 0, 3612, 3614, 5, 60, 0, 0, 3613, 3610, 1, 0, 0, 0, 3613, 3611, 1, 0, 0, 0, 3613, 3612, 1, 0, 0, 0, 3614, 295, 1, 0, 0, 0, 3615, 3621, 3, 302, 151, 0, 3616, 3617, 5, 289, 0, 0, 3617, 3621, 3, 302, 151, 0, 3618, 3619, 5, 235, 0, 0, 3619, 3621, 3, 302, 151, 0, 3620, 3615, 1, 0, 0, 0, 3620, 3616, 1, 0, 0, 0, 3620, 3618, 1, 0, 0, 0, 3621, 297, 1, 0, 0, 0, 3622, 3627, 3, 302, 151, 0, 3623, 3624, 5, 3, 0, 0, 3624, 3626, 3, 302, 151, 0, 3625, 3623, 1, 0, 0, 0, 3626, 3629, 1, 0, 0, 0, 3627, 3625, 1, 0, 0, 0, 3627, 3628, 1, 0, 0, 0, 3628, 299, 1, 0, 0, 0, 3629, 3627, 1, 0, 0, 0, 3630, 3638, 5, 53, 0, 0, 3631, 3638, 5, 248, 0, 0, 3632, 3638, 5, 73, 0, 0, 3633, 3638, 5, 127, 0, 0, 3634, 3638, 5, 287, 0, 0, 3635, 3638, 5, 93, 0, 0, 3636, 3638, 3, 302, 151, 0, 3637, 3630, 1, 0, 0, 0, 3637, 3631, 1, 0, 0, 0, 3637, 3632, 1, 0, 0, 0, 3637, 3633, 1, 0, 0, 0, 3637, 3634, 1, 0, 0, 0, 3637, 3635, 1, 0, 0, 0, 3637, 3636, 1, 0, 0, 0, 3638, 301, 1, 0, 0, 0, 3639, 3645, 5, 332, 0, 0, 3640, 3645, 5, 334, 0, 0, 3641, 3645, 3, 308, 154, 0, 3642, 3645, 5, 335, 0, 0, 3643, 3645, 5, 333, 0, 0, 3644, 3639, 1, 0, 0, 0, 3644, 3640, 1, 0, 0, 0, 3644, 3641, 1, 0, 0, 0, 3644, 3642, 1, 0, 0, 0, 3644, 3643, 1, 0, 0, 0, 3645, 303, 1, 0, 0, 0, 3646, 3648, 5, 319, 0, 0, 3647, 3646, 1, 0, 0, 0, 3647, 3648, 1, 0, 0, 0, 3648, 3649, 1, 0, 0, 0, 3649, 3659, 5, 330, 0, 0, 3650, 3652, 5, 319, 0, 0, 3651, 3650, 1, 0, 0, 0, 3651, 3652, 1, 0, 0, 0, 3652, 3653, 1, 0, 0, 0, 3653, 3659, 5, 331, 0, 0, 3654, 3656, 5, 319, 0, 0, 3655, 3654, 1, 0, 0, 0, 3655, 3656, 1, 0, 0, 0, 3656, 3657, 1, 0, 0, 0, 3657, 3659, 5, 329, 0, 0, 3658, 3647, 1, 0, 0, 0, 3658, 3651, 1, 0, 0, 0, 3658, 3655, 1, 0, 0, 0, 3659, 305, 1, 0, 0, 0, 3660, 3663, 3, 302, 151, 0, 3661, 3663, 3, 174, 87, 0, 3662, 3660, 1, 0, 0, 0, 3662, 3661, 1, 0, 0, 0, 3663, 307, 1, 0, 0, 0, 3664, 3665, 7, 35, 0, 0, 3665, 309, 1, 0, 0, 0, 476, 313, 322, 326, 330, 334, 338, 351, 358, 362, 366, 372, 376, 383, 388, 392, 398, 402, 421, 427, 431, 435, 439, 447, 451, 454, 459, 465, 474, 480, 484, 490, 497, 505, 517, 526, 535, 541, 552, 560, 568, 575, 585, 592, 600, 615, 650, 653, 656, 659, 665, 670, 677, 683, 687, 691, 699, 705, 709, 713, 727, 735, 754, 779, 782, 789, 796, 805, 809, 816, 824, 833, 839, 844, 848, 856, 861, 870, 876, 883, 892, 898, 902, 908, 915, 920, 933, 938, 950, 954, 960, 969, 974, 980, 1008, 1014, 1016, 1022, 1028, 1030, 1038, 1040, 1050, 1052, 1067, 1072, 1079, 1089, 1095, 1097, 1105, 1107, 1132, 1135, 1139, 1143, 1161, 1164, 1175, 1178, 1194, 1204, 1208, 1214, 1217, 1226, 1238, 1241, 1251, 1255, 1261, 1268, 1273, 1279, 1283, 1287, 1293, 1304, 1313, 1323, 1326, 1331, 1333, 1340, 1346, 1348, 1352, 1362, 1368, 1371, 1373, 1385, 1392, 1396, 1399, 1403, 1407, 1414, 1423, 1426, 1429, 1434, 1437, 1445, 1448, 1457, 1464, 1472, 1483, 1486, 1496, 1499, 1510, 1515, 1523, 1526, 1530, 1534, 1543, 1548, 1557, 1560, 1563, 1567, 1578, 1581, 1584, 1591, 1594, 1613, 1617, 1621, 1625, 1629, 1633, 1635, 1646, 1651, 1660, 1669, 1672, 1678, 1686, 1695, 1698, 1706, 1709, 1712, 1717, 1720, 1732, 1735, 1743, 1748, 1752, 1754, 1756, 1771, 1773, 1784, 1805, 1815, 1826, 1830, 1832, 1840, 1851, 1862, 1869, 1882, 1888, 1914, 1929, 1934, 1938, 1948, 1954, 1960, 1968, 1973, 1980, 1982, 1988, 1994, 1998, 2003, 2012, 2017, 2031, 2041, 2044, 2053, 2058, 2063, 2065, 2074, 2077, 2085, 2088, 2095, 2100, 2107, 2111, 2113, 2121, 2131, 2137, 2139, 2146, 2150, 2152, 2159, 2163, 2165, 2167, 2176, 2187, 2191, 2201, 2211, 2215, 2223, 2225, 2238, 2246, 2255, 2261, 2269, 2275, 2279, 2284, 2289, 2295, 2309, 2311, 2341, 2352, 2360, 2365, 2370, 2383, 2389, 2392, 2399, 2404, 2407, 2410, 2415, 2422, 2425, 2434, 2437, 2441, 2444, 2447, 2462, 2465, 2484, 2488, 2496, 2500, 2525, 2528, 2537, 2543, 2549, 2555, 2564, 2567, 2570, 2589, 2598, 2620, 2623, 2633, 2642, 2648, 2654, 2665, 2667, 2672, 2679, 2681, 2687, 2693, 2704, 2713, 2718, 2723, 2725, 2727, 2733, 2735, 2745, 2754, 2756, 2762, 2764, 2767, 2777, 2779, 2787, 2795, 2798, 2803, 2808, 2820, 2824, 2828, 2831, 2833, 2841, 2844, 2854, 2862, 2868, 2870, 2878, 2888, 2894, 2908, 2917, 2924, 2929, 2936, 2941, 2964, 2969, 2971, 2978, 2982, 2989, 2993, 3009, 3024, 3031, 3040, 3050, 3055, 3064, 3069, 3077, 3085, 3088, 3094, 3097, 3104, 3112, 3115, 3123, 3126, 3152, 3163, 3168, 3175, 3177, 3190, 3205, 3209, 3213, 3217, 3223, 3227, 3231, 3235, 3237, 3247, 3254, 3263, 3270, 3277, 3284, 3293, 3305, 3308, 3319, 3322, 3327, 3337, 3353, 3367, 3370, 3379, 3382, 3394, 3398, 3413, 3417, 3423, 3433, 3445, 3454, 3475, 3481, 3488, 3496, 3501, 3504, 3510, 3523, 3536, 3549, 3562, 3569, 3576, 3588, 3599, 3613, 3620, 3627, 3637, 3644, 3647, 3651, 3655, 3658, 3662] \ No newline at end of file +[4, 1, 341, 3679, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 1, 0, 5, 0, 312, 8, 0, 10, 0, 12, 0, 315, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 323, 8, 2, 1, 3, 1, 3, 3, 3, 327, 8, 3, 1, 4, 1, 4, 3, 4, 331, 8, 4, 1, 5, 1, 5, 3, 5, 335, 8, 5, 1, 6, 1, 6, 3, 6, 339, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 352, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 359, 8, 8, 1, 8, 1, 8, 3, 8, 363, 8, 8, 1, 8, 1, 8, 3, 8, 367, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 373, 8, 8, 1, 8, 1, 8, 3, 8, 377, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 384, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 389, 8, 8, 1, 8, 1, 8, 3, 8, 393, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 399, 8, 8, 1, 8, 1, 8, 3, 8, 403, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 422, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 428, 8, 8, 1, 8, 1, 8, 3, 8, 432, 8, 8, 1, 8, 1, 8, 3, 8, 436, 8, 8, 1, 8, 1, 8, 3, 8, 440, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 448, 8, 8, 1, 8, 1, 8, 3, 8, 452, 8, 8, 1, 8, 3, 8, 455, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 460, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 466, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 473, 8, 8, 10, 8, 12, 8, 476, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 481, 8, 8, 1, 8, 1, 8, 3, 8, 485, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 491, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 498, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 506, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 518, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 527, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 536, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 542, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 553, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 561, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 569, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 576, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 586, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 593, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 601, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 616, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 649, 8, 8, 10, 8, 12, 8, 652, 9, 8, 3, 8, 654, 8, 8, 1, 8, 3, 8, 657, 8, 8, 1, 8, 3, 8, 660, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 666, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 671, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 678, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 684, 8, 8, 1, 8, 1, 8, 3, 8, 688, 8, 8, 1, 8, 1, 8, 3, 8, 692, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 700, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 706, 8, 8, 1, 8, 1, 8, 3, 8, 710, 8, 8, 1, 8, 1, 8, 3, 8, 714, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 728, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 736, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 755, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 778, 8, 8, 10, 8, 12, 8, 781, 9, 8, 3, 8, 783, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 790, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 797, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 806, 8, 8, 1, 8, 1, 8, 3, 8, 810, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 817, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 823, 8, 8, 10, 8, 12, 8, 826, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 832, 8, 8, 10, 8, 12, 8, 835, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 840, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 845, 8, 8, 1, 8, 1, 8, 3, 8, 849, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 855, 8, 8, 10, 8, 12, 8, 858, 9, 8, 1, 8, 1, 8, 3, 8, 862, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 871, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 877, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 882, 8, 8, 10, 8, 12, 8, 885, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 891, 8, 8, 10, 8, 12, 8, 894, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 899, 8, 8, 1, 8, 1, 8, 3, 8, 903, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 909, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 914, 8, 8, 10, 8, 12, 8, 917, 9, 8, 1, 8, 1, 8, 3, 8, 921, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 932, 8, 8, 10, 8, 12, 8, 935, 9, 8, 1, 8, 1, 8, 3, 8, 939, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 951, 8, 8, 1, 8, 1, 8, 3, 8, 955, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 961, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 968, 8, 8, 10, 8, 12, 8, 971, 9, 8, 1, 8, 1, 8, 3, 8, 975, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 981, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1009, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1015, 8, 8, 3, 8, 1017, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1023, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1029, 8, 8, 3, 8, 1031, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1039, 8, 8, 3, 8, 1041, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1051, 8, 8, 3, 8, 1053, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1068, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1073, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1080, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1090, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1096, 8, 8, 3, 8, 1098, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1106, 8, 8, 3, 8, 1108, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1131, 8, 8, 10, 8, 12, 8, 1134, 9, 8, 3, 8, 1136, 8, 8, 1, 8, 1, 8, 3, 8, 1140, 8, 8, 1, 8, 1, 8, 3, 8, 1144, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1160, 8, 8, 10, 8, 12, 8, 1163, 9, 8, 3, 8, 1165, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1174, 8, 8, 10, 8, 12, 8, 1177, 9, 8, 3, 8, 1179, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1195, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1203, 8, 8, 10, 8, 12, 8, 1206, 9, 8, 1, 8, 3, 8, 1209, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1215, 8, 8, 1, 8, 3, 8, 1218, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1225, 8, 8, 11, 8, 12, 8, 1226, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1239, 8, 8, 1, 9, 3, 9, 1242, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1250, 8, 10, 10, 10, 12, 10, 1253, 9, 10, 1, 11, 3, 11, 1256, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 1262, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 1267, 8, 12, 10, 12, 12, 12, 1270, 9, 12, 1, 13, 1, 13, 3, 13, 1274, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1280, 8, 14, 1, 14, 1, 14, 3, 14, 1284, 8, 14, 1, 14, 1, 14, 3, 14, 1288, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1294, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 1303, 8, 17, 10, 17, 12, 17, 1306, 9, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 1314, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 1322, 8, 20, 10, 20, 12, 20, 1325, 9, 20, 3, 20, 1327, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1332, 8, 20, 3, 20, 1334, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1341, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1347, 8, 20, 3, 20, 1349, 8, 20, 1, 21, 1, 21, 3, 21, 1353, 8, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1363, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1369, 8, 23, 1, 23, 5, 23, 1372, 8, 23, 10, 23, 12, 23, 1375, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1384, 8, 24, 10, 24, 12, 24, 1387, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1393, 8, 24, 1, 25, 1, 25, 3, 25, 1397, 8, 25, 1, 25, 3, 25, 1400, 8, 25, 1, 25, 1, 25, 3, 25, 1404, 8, 25, 1, 26, 1, 26, 3, 26, 1408, 8, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1413, 8, 26, 10, 26, 12, 26, 1416, 9, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1422, 8, 26, 10, 26, 12, 26, 1425, 9, 26, 3, 26, 1427, 8, 26, 1, 26, 3, 26, 1430, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1435, 8, 26, 1, 26, 3, 26, 1438, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1444, 8, 26, 10, 26, 12, 26, 1447, 9, 26, 3, 26, 1449, 8, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 3, 29, 1458, 8, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1463, 8, 29, 10, 29, 12, 29, 1466, 9, 29, 1, 30, 1, 30, 1, 30, 5, 30, 1471, 8, 30, 10, 30, 12, 30, 1474, 9, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 1482, 8, 31, 10, 31, 12, 31, 1485, 9, 31, 3, 31, 1487, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 1495, 8, 31, 10, 31, 12, 31, 1498, 9, 31, 3, 31, 1500, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 1509, 8, 31, 10, 31, 12, 31, 1512, 9, 31, 1, 31, 1, 31, 3, 31, 1516, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1522, 8, 32, 10, 32, 12, 32, 1525, 9, 32, 3, 32, 1527, 8, 32, 1, 32, 1, 32, 3, 32, 1531, 8, 32, 1, 33, 1, 33, 3, 33, 1535, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 3, 35, 1544, 8, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1549, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1556, 8, 35, 10, 35, 12, 35, 1559, 9, 35, 3, 35, 1561, 8, 35, 1, 35, 3, 35, 1564, 8, 35, 1, 36, 1, 36, 3, 36, 1568, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 1579, 8, 38, 1, 38, 3, 38, 1582, 8, 38, 1, 38, 3, 38, 1585, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1592, 8, 38, 1, 38, 3, 38, 1595, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1614, 8, 39, 5, 39, 1616, 8, 39, 10, 39, 12, 39, 1619, 9, 39, 1, 40, 3, 40, 1622, 8, 40, 1, 40, 1, 40, 3, 40, 1626, 8, 40, 1, 40, 1, 40, 3, 40, 1630, 8, 40, 1, 40, 1, 40, 3, 40, 1634, 8, 40, 3, 40, 1636, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 1645, 8, 41, 10, 41, 12, 41, 1648, 9, 41, 1, 41, 1, 41, 3, 41, 1652, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1661, 8, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 3, 45, 1670, 8, 45, 1, 45, 3, 45, 1673, 8, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1679, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1687, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1694, 8, 47, 10, 47, 12, 47, 1697, 9, 47, 3, 47, 1699, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1705, 8, 47, 10, 47, 12, 47, 1708, 9, 47, 3, 47, 1710, 8, 47, 1, 47, 3, 47, 1713, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1718, 8, 47, 1, 47, 3, 47, 1721, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1731, 8, 47, 10, 47, 12, 47, 1734, 9, 47, 3, 47, 1736, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1742, 8, 47, 10, 47, 12, 47, 1745, 9, 47, 1, 47, 1, 47, 3, 47, 1749, 8, 47, 1, 47, 1, 47, 3, 47, 1753, 8, 47, 3, 47, 1755, 8, 47, 3, 47, 1757, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1772, 8, 49, 3, 49, 1774, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1785, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1806, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1814, 8, 52, 10, 52, 12, 52, 1817, 9, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 1827, 8, 54, 1, 54, 1, 54, 3, 54, 1831, 8, 54, 3, 54, 1833, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1839, 8, 55, 10, 55, 12, 55, 1842, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1850, 8, 56, 10, 56, 12, 56, 1853, 9, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 1861, 8, 57, 10, 57, 12, 57, 1864, 9, 57, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1870, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1881, 8, 58, 10, 58, 12, 58, 1884, 9, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1889, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1913, 8, 58, 10, 58, 12, 58, 1916, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1930, 8, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1935, 8, 58, 1, 58, 1, 58, 3, 58, 1939, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1949, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1955, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1961, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1969, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1974, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1981, 8, 59, 3, 59, 1983, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1989, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1995, 8, 59, 1, 59, 1, 59, 3, 59, 1999, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2004, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 2011, 8, 59, 10, 59, 12, 59, 2014, 9, 59, 1, 59, 1, 59, 3, 59, 2018, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 2030, 8, 60, 10, 60, 12, 60, 2033, 9, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 2040, 8, 60, 10, 60, 12, 60, 2043, 9, 60, 3, 60, 2045, 8, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2054, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 2059, 8, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2064, 8, 63, 3, 63, 2066, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2073, 8, 64, 10, 64, 12, 64, 2076, 9, 64, 3, 64, 2078, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2084, 8, 64, 10, 64, 12, 64, 2087, 9, 64, 3, 64, 2089, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 3, 65, 2096, 8, 65, 1, 65, 1, 65, 1, 65, 3, 65, 2101, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2108, 8, 66, 1, 66, 1, 66, 3, 66, 2112, 8, 66, 3, 66, 2114, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2122, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 2130, 8, 66, 10, 66, 12, 66, 2133, 9, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2138, 8, 66, 3, 66, 2140, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 2147, 8, 67, 1, 67, 1, 67, 3, 67, 2151, 8, 67, 3, 67, 2153, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 2160, 8, 67, 1, 67, 1, 67, 3, 67, 2164, 8, 67, 3, 67, 2166, 8, 67, 3, 67, 2168, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 2175, 8, 68, 10, 68, 12, 68, 2178, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2188, 8, 68, 1, 69, 1, 69, 3, 69, 2192, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 2200, 8, 70, 10, 70, 12, 70, 2203, 9, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 3, 72, 2212, 8, 72, 1, 72, 1, 72, 3, 72, 2216, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2224, 8, 72, 10, 72, 12, 72, 2227, 9, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2239, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2247, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2254, 8, 73, 10, 73, 12, 73, 2257, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2262, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2270, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2276, 8, 73, 1, 73, 1, 73, 3, 73, 2280, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2285, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2290, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2296, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 2310, 8, 74, 10, 74, 12, 74, 2313, 9, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 4, 75, 2340, 8, 75, 11, 75, 12, 75, 2341, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2351, 8, 75, 10, 75, 12, 75, 2354, 9, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2361, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2366, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2371, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2382, 8, 75, 10, 75, 12, 75, 2385, 9, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2390, 8, 75, 1, 75, 3, 75, 2393, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2400, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2405, 8, 75, 1, 75, 3, 75, 2408, 8, 75, 1, 75, 3, 75, 2411, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2416, 8, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2421, 8, 75, 10, 75, 12, 75, 2424, 9, 75, 3, 75, 2426, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2433, 8, 75, 10, 75, 12, 75, 2436, 9, 75, 3, 75, 2438, 8, 75, 1, 75, 1, 75, 3, 75, 2442, 8, 75, 1, 75, 3, 75, 2445, 8, 75, 1, 75, 3, 75, 2448, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2461, 8, 75, 10, 75, 12, 75, 2464, 9, 75, 3, 75, 2466, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 4, 75, 2483, 8, 75, 11, 75, 12, 75, 2484, 1, 75, 1, 75, 3, 75, 2489, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 4, 75, 2495, 8, 75, 11, 75, 12, 75, 2496, 1, 75, 1, 75, 3, 75, 2501, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2524, 8, 75, 10, 75, 12, 75, 2527, 9, 75, 3, 75, 2529, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2538, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2544, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2550, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2556, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2565, 8, 75, 1, 75, 3, 75, 2568, 8, 75, 1, 75, 3, 75, 2571, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2590, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2599, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2615, 8, 75, 10, 75, 12, 75, 2618, 9, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2631, 8, 75, 10, 75, 12, 75, 2634, 9, 75, 3, 75, 2636, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2646, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2655, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2661, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2667, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2678, 8, 75, 3, 75, 2680, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2685, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2692, 8, 75, 3, 75, 2694, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2700, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2706, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2715, 8, 75, 10, 75, 12, 75, 2718, 9, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2726, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2731, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2736, 8, 75, 3, 75, 2738, 8, 75, 3, 75, 2740, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2746, 8, 75, 3, 75, 2748, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2756, 8, 75, 10, 75, 12, 75, 2759, 9, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2767, 8, 75, 3, 75, 2769, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2775, 8, 75, 3, 75, 2777, 8, 75, 1, 75, 3, 75, 2780, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 2790, 8, 75, 10, 75, 12, 75, 2793, 9, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 2800, 8, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 2806, 8, 76, 10, 76, 12, 76, 2809, 9, 76, 3, 76, 2811, 8, 76, 1, 77, 1, 77, 1, 77, 3, 77, 2816, 8, 77, 1, 78, 1, 78, 1, 78, 3, 78, 2821, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2833, 8, 81, 1, 82, 1, 82, 3, 82, 2837, 8, 82, 1, 82, 1, 82, 3, 82, 2841, 8, 82, 1, 82, 3, 82, 2844, 8, 82, 3, 82, 2846, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 2854, 8, 83, 1, 84, 3, 84, 2857, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2867, 8, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2875, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2881, 8, 87, 3, 87, 2883, 8, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 2891, 8, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 3, 92, 2901, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2907, 8, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 5, 95, 2919, 8, 95, 10, 95, 12, 95, 2922, 9, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2930, 8, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2937, 8, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2942, 8, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2949, 8, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2954, 8, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 5, 95, 2975, 8, 95, 10, 95, 12, 95, 2978, 9, 95, 1, 95, 1, 95, 3, 95, 2982, 8, 95, 3, 95, 2984, 8, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2991, 8, 95, 5, 95, 2993, 8, 95, 10, 95, 12, 95, 2996, 9, 95, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 3002, 8, 96, 1, 97, 1, 97, 3, 97, 3006, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 3022, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 5, 100, 3035, 8, 100, 10, 100, 12, 100, 3038, 9, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 3044, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 3053, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 5, 100, 3061, 8, 100, 10, 100, 12, 100, 3064, 9, 100, 1, 100, 1, 100, 3, 100, 3068, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 5, 100, 3075, 8, 100, 10, 100, 12, 100, 3078, 9, 100, 1, 100, 1, 100, 3, 100, 3082, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3090, 8, 101, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3096, 8, 102, 10, 102, 12, 102, 3099, 9, 102, 3, 102, 3101, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3107, 8, 102, 1, 102, 3, 102, 3110, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3117, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3123, 8, 102, 10, 102, 12, 102, 3126, 9, 102, 3, 102, 3128, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3134, 8, 102, 10, 102, 12, 102, 3137, 9, 102, 3, 102, 3139, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 3165, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3176, 8, 104, 1, 105, 1, 105, 1, 105, 3, 105, 3181, 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 3188, 8, 105, 10, 105, 12, 105, 3191, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 5, 106, 3201, 8, 106, 10, 106, 12, 106, 3204, 9, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 3218, 8, 106, 1, 107, 1, 107, 3, 107, 3222, 8, 107, 1, 107, 1, 107, 3, 107, 3226, 8, 107, 1, 107, 1, 107, 3, 107, 3230, 8, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3236, 8, 107, 1, 107, 1, 107, 3, 107, 3240, 8, 107, 1, 107, 1, 107, 3, 107, 3244, 8, 107, 1, 107, 1, 107, 3, 107, 3248, 8, 107, 3, 107, 3250, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3260, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 3267, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 3276, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 3283, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 3290, 8, 113, 1, 114, 1, 114, 1, 114, 5, 114, 3295, 8, 114, 10, 114, 12, 114, 3298, 9, 114, 1, 115, 1, 115, 1, 115, 1, 115, 5, 115, 3304, 8, 115, 10, 115, 12, 115, 3307, 9, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 3316, 8, 116, 10, 116, 12, 116, 3319, 9, 116, 3, 116, 3321, 8, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 5, 117, 3330, 8, 117, 10, 117, 12, 117, 3333, 9, 117, 3, 117, 3335, 8, 117, 1, 117, 1, 117, 1, 118, 3, 118, 3340, 8, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 3, 120, 3350, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3366, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 4, 121, 3378, 8, 121, 11, 121, 12, 121, 3379, 1, 121, 3, 121, 3383, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 4, 121, 3390, 8, 121, 11, 121, 12, 121, 3391, 1, 121, 3, 121, 3395, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 3405, 8, 121, 10, 121, 12, 121, 3408, 9, 121, 1, 121, 3, 121, 3411, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 3424, 8, 121, 10, 121, 12, 121, 3427, 9, 121, 1, 121, 3, 121, 3430, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3436, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3446, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3458, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3467, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 3486, 8, 125, 10, 125, 12, 125, 3489, 9, 125, 1, 125, 1, 125, 1, 125, 3, 125, 3494, 8, 125, 1, 126, 1, 126, 1, 126, 4, 126, 3499, 8, 126, 11, 126, 12, 126, 3500, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 3509, 8, 127, 1, 128, 1, 128, 1, 128, 3, 128, 3514, 8, 128, 1, 129, 3, 129, 3517, 8, 129, 1, 129, 1, 129, 1, 130, 1, 130, 3, 130, 3523, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3536, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3549, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3562, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 3575, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 3582, 8, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 3589, 8, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 140, 1, 140, 1, 141, 1, 141, 3, 141, 3601, 8, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 5, 144, 3610, 8, 144, 10, 144, 12, 144, 3613, 9, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 3, 147, 3626, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3633, 8, 148, 1, 149, 1, 149, 1, 149, 5, 149, 3638, 8, 149, 10, 149, 12, 149, 3641, 9, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 3650, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 3657, 8, 151, 1, 152, 3, 152, 3660, 8, 152, 1, 152, 1, 152, 3, 152, 3664, 8, 152, 1, 152, 1, 152, 3, 152, 3668, 8, 152, 1, 152, 3, 152, 3671, 8, 152, 1, 153, 1, 153, 3, 153, 3675, 8, 153, 1, 154, 1, 154, 1, 154, 0, 7, 46, 78, 144, 148, 150, 190, 210, 155, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 0, 36, 2, 0, 39, 39, 230, 230, 2, 0, 73, 73, 132, 132, 2, 0, 106, 106, 123, 123, 2, 0, 93, 93, 124, 124, 1, 0, 240, 241, 2, 0, 102, 102, 175, 175, 2, 0, 325, 325, 330, 330, 2, 0, 92, 92, 282, 282, 2, 0, 29, 29, 76, 76, 2, 0, 102, 102, 149, 149, 2, 0, 22, 22, 80, 80, 2, 0, 33, 33, 260, 260, 3, 0, 35, 35, 151, 151, 271, 271, 2, 0, 125, 125, 248, 248, 2, 0, 86, 86, 90, 90, 2, 0, 145, 145, 190, 190, 2, 0, 126, 126, 198, 198, 2, 0, 55, 55, 282, 282, 1, 0, 319, 320, 1, 0, 321, 323, 1, 0, 292, 294, 4, 0, 90, 90, 98, 98, 274, 274, 284, 284, 2, 0, 50, 50, 281, 281, 2, 0, 101, 101, 242, 242, 1, 0, 313, 318, 3, 0, 22, 22, 26, 26, 255, 255, 2, 0, 98, 98, 274, 274, 5, 0, 68, 68, 119, 119, 171, 172, 246, 246, 311, 311, 1, 0, 176, 179, 2, 0, 305, 305, 307, 307, 2, 0, 103, 103, 213, 213, 3, 0, 114, 114, 138, 138, 264, 264, 4, 0, 81, 81, 133, 133, 161, 161, 295, 295, 2, 0, 193, 193, 310, 310, 2, 0, 269, 269, 299, 299, 54, 0, 18, 22, 24, 24, 26, 27, 29, 33, 35, 35, 37, 39, 42, 50, 52, 53, 57, 57, 66, 68, 70, 73, 75, 76, 78, 79, 81, 83, 86, 88, 90, 90, 93, 93, 96, 96, 99, 103, 105, 105, 108, 114, 117, 117, 119, 122, 124, 125, 127, 127, 130, 130, 132, 133, 135, 136, 138, 138, 145, 152, 154, 154, 156, 156, 158, 158, 161, 172, 174, 181, 185, 190, 192, 194, 197, 197, 199, 214, 216, 221, 223, 234, 236, 238, 240, 248, 250, 260, 262, 265, 267, 272, 275, 277, 279, 281, 283, 285, 287, 290, 292, 296, 298, 300, 303, 304, 306, 312, 4226, 0, 313, 1, 0, 0, 0, 2, 318, 1, 0, 0, 0, 4, 320, 1, 0, 0, 0, 6, 324, 1, 0, 0, 0, 8, 328, 1, 0, 0, 0, 10, 332, 1, 0, 0, 0, 12, 336, 1, 0, 0, 0, 14, 340, 1, 0, 0, 0, 16, 1238, 1, 0, 0, 0, 18, 1241, 1, 0, 0, 0, 20, 1245, 1, 0, 0, 0, 22, 1255, 1, 0, 0, 0, 24, 1259, 1, 0, 0, 0, 26, 1273, 1, 0, 0, 0, 28, 1275, 1, 0, 0, 0, 30, 1289, 1, 0, 0, 0, 32, 1295, 1, 0, 0, 0, 34, 1299, 1, 0, 0, 0, 36, 1307, 1, 0, 0, 0, 38, 1313, 1, 0, 0, 0, 40, 1315, 1, 0, 0, 0, 42, 1352, 1, 0, 0, 0, 44, 1354, 1, 0, 0, 0, 46, 1356, 1, 0, 0, 0, 48, 1392, 1, 0, 0, 0, 50, 1396, 1, 0, 0, 0, 52, 1405, 1, 0, 0, 0, 54, 1450, 1, 0, 0, 0, 56, 1453, 1, 0, 0, 0, 58, 1457, 1, 0, 0, 0, 60, 1467, 1, 0, 0, 0, 62, 1515, 1, 0, 0, 0, 64, 1530, 1, 0, 0, 0, 66, 1534, 1, 0, 0, 0, 68, 1536, 1, 0, 0, 0, 70, 1543, 1, 0, 0, 0, 72, 1565, 1, 0, 0, 0, 74, 1574, 1, 0, 0, 0, 76, 1594, 1, 0, 0, 0, 78, 1596, 1, 0, 0, 0, 80, 1635, 1, 0, 0, 0, 82, 1651, 1, 0, 0, 0, 84, 1653, 1, 0, 0, 0, 86, 1662, 1, 0, 0, 0, 88, 1664, 1, 0, 0, 0, 90, 1672, 1, 0, 0, 0, 92, 1678, 1, 0, 0, 0, 94, 1680, 1, 0, 0, 0, 96, 1758, 1, 0, 0, 0, 98, 1773, 1, 0, 0, 0, 100, 1784, 1, 0, 0, 0, 102, 1805, 1, 0, 0, 0, 104, 1807, 1, 0, 0, 0, 106, 1820, 1, 0, 0, 0, 108, 1824, 1, 0, 0, 0, 110, 1834, 1, 0, 0, 0, 112, 1845, 1, 0, 0, 0, 114, 1856, 1, 0, 0, 0, 116, 1938, 1, 0, 0, 0, 118, 2017, 1, 0, 0, 0, 120, 2044, 1, 0, 0, 0, 122, 2046, 1, 0, 0, 0, 124, 2053, 1, 0, 0, 0, 126, 2065, 1, 0, 0, 0, 128, 2067, 1, 0, 0, 0, 130, 2095, 1, 0, 0, 0, 132, 2102, 1, 0, 0, 0, 134, 2167, 1, 0, 0, 0, 136, 2187, 1, 0, 0, 0, 138, 2189, 1, 0, 0, 0, 140, 2193, 1, 0, 0, 0, 142, 2206, 1, 0, 0, 0, 144, 2215, 1, 0, 0, 0, 146, 2289, 1, 0, 0, 0, 148, 2295, 1, 0, 0, 0, 150, 2779, 1, 0, 0, 0, 152, 2794, 1, 0, 0, 0, 154, 2812, 1, 0, 0, 0, 156, 2817, 1, 0, 0, 0, 158, 2822, 1, 0, 0, 0, 160, 2826, 1, 0, 0, 0, 162, 2832, 1, 0, 0, 0, 164, 2845, 1, 0, 0, 0, 166, 2853, 1, 0, 0, 0, 168, 2866, 1, 0, 0, 0, 170, 2868, 1, 0, 0, 0, 172, 2874, 1, 0, 0, 0, 174, 2882, 1, 0, 0, 0, 176, 2890, 1, 0, 0, 0, 178, 2892, 1, 0, 0, 0, 180, 2894, 1, 0, 0, 0, 182, 2896, 1, 0, 0, 0, 184, 2898, 1, 0, 0, 0, 186, 2908, 1, 0, 0, 0, 188, 2910, 1, 0, 0, 0, 190, 2983, 1, 0, 0, 0, 192, 3001, 1, 0, 0, 0, 194, 3005, 1, 0, 0, 0, 196, 3007, 1, 0, 0, 0, 198, 3012, 1, 0, 0, 0, 200, 3081, 1, 0, 0, 0, 202, 3083, 1, 0, 0, 0, 204, 3100, 1, 0, 0, 0, 206, 3164, 1, 0, 0, 0, 208, 3175, 1, 0, 0, 0, 210, 3177, 1, 0, 0, 0, 212, 3217, 1, 0, 0, 0, 214, 3249, 1, 0, 0, 0, 216, 3251, 1, 0, 0, 0, 218, 3259, 1, 0, 0, 0, 220, 3266, 1, 0, 0, 0, 222, 3275, 1, 0, 0, 0, 224, 3282, 1, 0, 0, 0, 226, 3289, 1, 0, 0, 0, 228, 3291, 1, 0, 0, 0, 230, 3299, 1, 0, 0, 0, 232, 3310, 1, 0, 0, 0, 234, 3324, 1, 0, 0, 0, 236, 3339, 1, 0, 0, 0, 238, 3343, 1, 0, 0, 0, 240, 3365, 1, 0, 0, 0, 242, 3466, 1, 0, 0, 0, 244, 3468, 1, 0, 0, 0, 246, 3473, 1, 0, 0, 0, 248, 3478, 1, 0, 0, 0, 250, 3481, 1, 0, 0, 0, 252, 3498, 1, 0, 0, 0, 254, 3508, 1, 0, 0, 0, 256, 3513, 1, 0, 0, 0, 258, 3516, 1, 0, 0, 0, 260, 3522, 1, 0, 0, 0, 262, 3535, 1, 0, 0, 0, 264, 3548, 1, 0, 0, 0, 266, 3561, 1, 0, 0, 0, 268, 3574, 1, 0, 0, 0, 270, 3581, 1, 0, 0, 0, 272, 3588, 1, 0, 0, 0, 274, 3590, 1, 0, 0, 0, 276, 3592, 1, 0, 0, 0, 278, 3594, 1, 0, 0, 0, 280, 3596, 1, 0, 0, 0, 282, 3600, 1, 0, 0, 0, 284, 3602, 1, 0, 0, 0, 286, 3604, 1, 0, 0, 0, 288, 3606, 1, 0, 0, 0, 290, 3614, 1, 0, 0, 0, 292, 3620, 1, 0, 0, 0, 294, 3625, 1, 0, 0, 0, 296, 3632, 1, 0, 0, 0, 298, 3634, 1, 0, 0, 0, 300, 3649, 1, 0, 0, 0, 302, 3656, 1, 0, 0, 0, 304, 3670, 1, 0, 0, 0, 306, 3674, 1, 0, 0, 0, 308, 3676, 1, 0, 0, 0, 310, 312, 3, 2, 1, 0, 311, 310, 1, 0, 0, 0, 312, 315, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 316, 317, 5, 0, 0, 1, 317, 1, 1, 0, 0, 0, 318, 319, 3, 4, 2, 0, 319, 3, 1, 0, 0, 0, 320, 322, 3, 16, 8, 0, 321, 323, 5, 326, 0, 0, 322, 321, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 5, 1, 0, 0, 0, 324, 326, 3, 142, 71, 0, 325, 327, 5, 326, 0, 0, 326, 325, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 7, 1, 0, 0, 0, 328, 330, 3, 228, 114, 0, 329, 331, 5, 326, 0, 0, 330, 329, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 9, 1, 0, 0, 0, 332, 334, 3, 190, 95, 0, 333, 335, 5, 326, 0, 0, 334, 333, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 11, 1, 0, 0, 0, 336, 338, 3, 210, 105, 0, 337, 339, 5, 326, 0, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 13, 1, 0, 0, 0, 340, 341, 3, 230, 115, 0, 341, 342, 5, 0, 0, 1, 342, 15, 1, 0, 0, 0, 343, 1239, 3, 18, 9, 0, 344, 345, 5, 289, 0, 0, 345, 1239, 3, 270, 135, 0, 346, 347, 5, 54, 0, 0, 347, 351, 5, 42, 0, 0, 348, 349, 5, 120, 0, 0, 349, 350, 5, 183, 0, 0, 350, 352, 5, 95, 0, 0, 351, 348, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 354, 3, 276, 138, 0, 354, 355, 5, 291, 0, 0, 355, 358, 3, 302, 151, 0, 356, 357, 5, 47, 0, 0, 357, 359, 3, 174, 87, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 361, 5, 31, 0, 0, 361, 363, 3, 296, 148, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 366, 1, 0, 0, 0, 364, 365, 5, 305, 0, 0, 365, 367, 3, 32, 16, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 1239, 1, 0, 0, 0, 368, 369, 5, 84, 0, 0, 369, 372, 5, 42, 0, 0, 370, 371, 5, 120, 0, 0, 371, 373, 5, 95, 0, 0, 372, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 376, 3, 274, 137, 0, 375, 377, 7, 0, 0, 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 1239, 1, 0, 0, 0, 378, 379, 5, 54, 0, 0, 379, 383, 5, 244, 0, 0, 380, 381, 5, 120, 0, 0, 381, 382, 5, 183, 0, 0, 382, 384, 5, 95, 0, 0, 383, 380, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 388, 3, 272, 136, 0, 386, 387, 5, 31, 0, 0, 387, 389, 3, 296, 148, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 391, 5, 305, 0, 0, 391, 393, 3, 32, 16, 0, 392, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 1239, 1, 0, 0, 0, 394, 395, 5, 84, 0, 0, 395, 398, 5, 244, 0, 0, 396, 397, 5, 120, 0, 0, 397, 399, 5, 95, 0, 0, 398, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 402, 3, 270, 135, 0, 401, 403, 7, 0, 0, 0, 402, 401, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 1239, 1, 0, 0, 0, 404, 405, 5, 23, 0, 0, 405, 406, 5, 244, 0, 0, 406, 407, 3, 270, 135, 0, 407, 408, 5, 224, 0, 0, 408, 409, 5, 270, 0, 0, 409, 410, 3, 272, 136, 0, 410, 1239, 1, 0, 0, 0, 411, 412, 5, 23, 0, 0, 412, 413, 5, 244, 0, 0, 413, 414, 3, 270, 135, 0, 414, 415, 5, 252, 0, 0, 415, 416, 5, 31, 0, 0, 416, 417, 3, 296, 148, 0, 417, 1239, 1, 0, 0, 0, 418, 421, 5, 54, 0, 0, 419, 420, 5, 195, 0, 0, 420, 422, 5, 227, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 427, 5, 261, 0, 0, 424, 425, 5, 120, 0, 0, 425, 426, 5, 183, 0, 0, 426, 428, 5, 95, 0, 0, 427, 424, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 431, 3, 264, 132, 0, 430, 432, 3, 110, 55, 0, 431, 430, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 435, 1, 0, 0, 0, 433, 434, 5, 47, 0, 0, 434, 436, 3, 174, 87, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 439, 1, 0, 0, 0, 437, 438, 5, 305, 0, 0, 438, 440, 3, 32, 16, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 447, 5, 28, 0, 0, 442, 448, 3, 18, 9, 0, 443, 444, 5, 1, 0, 0, 444, 445, 3, 18, 9, 0, 445, 446, 5, 2, 0, 0, 446, 448, 1, 0, 0, 0, 447, 442, 1, 0, 0, 0, 447, 443, 1, 0, 0, 0, 448, 454, 1, 0, 0, 0, 449, 451, 5, 305, 0, 0, 450, 452, 5, 180, 0, 0, 451, 450, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 455, 5, 66, 0, 0, 454, 449, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 1239, 1, 0, 0, 0, 456, 459, 5, 54, 0, 0, 457, 458, 5, 195, 0, 0, 458, 460, 5, 227, 0, 0, 459, 457, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 465, 5, 261, 0, 0, 462, 463, 5, 120, 0, 0, 463, 464, 5, 183, 0, 0, 464, 466, 5, 95, 0, 0, 465, 462, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 468, 3, 264, 132, 0, 468, 469, 5, 1, 0, 0, 469, 474, 3, 26, 13, 0, 470, 471, 5, 3, 0, 0, 471, 473, 3, 26, 13, 0, 472, 470, 1, 0, 0, 0, 473, 476, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 477, 1, 0, 0, 0, 476, 474, 1, 0, 0, 0, 477, 480, 5, 2, 0, 0, 478, 479, 5, 47, 0, 0, 479, 481, 3, 174, 87, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 484, 1, 0, 0, 0, 482, 483, 5, 305, 0, 0, 483, 485, 3, 32, 16, 0, 484, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 1239, 1, 0, 0, 0, 486, 487, 5, 84, 0, 0, 487, 490, 5, 261, 0, 0, 488, 489, 5, 120, 0, 0, 489, 491, 5, 95, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 1239, 3, 262, 131, 0, 493, 494, 5, 128, 0, 0, 494, 495, 5, 131, 0, 0, 495, 497, 3, 262, 131, 0, 496, 498, 3, 112, 56, 0, 497, 496, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 3, 18, 9, 0, 500, 1239, 1, 0, 0, 0, 501, 502, 5, 74, 0, 0, 502, 503, 5, 106, 0, 0, 503, 505, 3, 262, 131, 0, 504, 506, 3, 54, 27, 0, 505, 504, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 1239, 1, 0, 0, 0, 507, 508, 5, 275, 0, 0, 508, 509, 5, 261, 0, 0, 509, 1239, 3, 262, 131, 0, 510, 511, 5, 47, 0, 0, 511, 512, 5, 191, 0, 0, 512, 513, 5, 261, 0, 0, 513, 514, 3, 262, 131, 0, 514, 517, 5, 134, 0, 0, 515, 518, 3, 174, 87, 0, 516, 518, 5, 184, 0, 0, 517, 515, 1, 0, 0, 0, 517, 516, 1, 0, 0, 0, 518, 1239, 1, 0, 0, 0, 519, 520, 5, 47, 0, 0, 520, 521, 5, 191, 0, 0, 521, 522, 5, 300, 0, 0, 522, 523, 3, 266, 133, 0, 523, 526, 5, 134, 0, 0, 524, 527, 3, 174, 87, 0, 525, 527, 5, 184, 0, 0, 526, 524, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 1239, 1, 0, 0, 0, 528, 529, 5, 47, 0, 0, 529, 530, 5, 191, 0, 0, 530, 531, 5, 45, 0, 0, 531, 532, 3, 282, 141, 0, 532, 535, 5, 134, 0, 0, 533, 536, 3, 174, 87, 0, 534, 536, 5, 184, 0, 0, 535, 533, 1, 0, 0, 0, 535, 534, 1, 0, 0, 0, 536, 1239, 1, 0, 0, 0, 537, 538, 5, 23, 0, 0, 538, 541, 5, 261, 0, 0, 539, 540, 5, 120, 0, 0, 540, 542, 5, 95, 0, 0, 541, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 544, 3, 262, 131, 0, 544, 545, 5, 224, 0, 0, 545, 546, 5, 270, 0, 0, 546, 547, 3, 264, 132, 0, 547, 1239, 1, 0, 0, 0, 548, 549, 5, 23, 0, 0, 549, 552, 5, 261, 0, 0, 550, 551, 5, 120, 0, 0, 551, 553, 5, 95, 0, 0, 552, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 3, 262, 131, 0, 555, 556, 5, 19, 0, 0, 556, 560, 5, 45, 0, 0, 557, 558, 5, 120, 0, 0, 558, 559, 5, 183, 0, 0, 559, 561, 5, 95, 0, 0, 560, 557, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 28, 14, 0, 563, 1239, 1, 0, 0, 0, 564, 565, 5, 23, 0, 0, 565, 568, 5, 261, 0, 0, 566, 567, 5, 120, 0, 0, 567, 569, 5, 95, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 3, 262, 131, 0, 571, 572, 5, 224, 0, 0, 572, 575, 5, 45, 0, 0, 573, 574, 5, 120, 0, 0, 574, 576, 5, 95, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 3, 282, 141, 0, 578, 579, 5, 270, 0, 0, 579, 580, 3, 286, 143, 0, 580, 1239, 1, 0, 0, 0, 581, 582, 5, 23, 0, 0, 582, 585, 5, 261, 0, 0, 583, 584, 5, 120, 0, 0, 584, 586, 5, 95, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 3, 262, 131, 0, 588, 589, 5, 84, 0, 0, 589, 592, 5, 45, 0, 0, 590, 591, 5, 120, 0, 0, 591, 593, 5, 95, 0, 0, 592, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 3, 282, 141, 0, 595, 1239, 1, 0, 0, 0, 596, 597, 5, 23, 0, 0, 597, 600, 5, 261, 0, 0, 598, 599, 5, 120, 0, 0, 599, 601, 5, 95, 0, 0, 600, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 603, 3, 262, 131, 0, 603, 604, 5, 23, 0, 0, 604, 605, 5, 45, 0, 0, 605, 606, 3, 282, 141, 0, 606, 607, 5, 252, 0, 0, 607, 608, 5, 66, 0, 0, 608, 609, 5, 277, 0, 0, 609, 610, 3, 190, 95, 0, 610, 1239, 1, 0, 0, 0, 611, 612, 5, 23, 0, 0, 612, 615, 5, 261, 0, 0, 613, 614, 5, 120, 0, 0, 614, 616, 5, 95, 0, 0, 615, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 3, 262, 131, 0, 618, 619, 5, 23, 0, 0, 619, 620, 5, 45, 0, 0, 620, 621, 3, 282, 141, 0, 621, 622, 5, 84, 0, 0, 622, 623, 5, 183, 0, 0, 623, 624, 5, 184, 0, 0, 624, 1239, 1, 0, 0, 0, 625, 626, 5, 23, 0, 0, 626, 627, 5, 261, 0, 0, 627, 628, 3, 262, 131, 0, 628, 629, 5, 252, 0, 0, 629, 630, 5, 31, 0, 0, 630, 631, 3, 296, 148, 0, 631, 1239, 1, 0, 0, 0, 632, 633, 5, 23, 0, 0, 633, 634, 5, 261, 0, 0, 634, 635, 3, 262, 131, 0, 635, 636, 5, 252, 0, 0, 636, 637, 5, 217, 0, 0, 637, 638, 3, 34, 17, 0, 638, 1239, 1, 0, 0, 0, 639, 640, 5, 23, 0, 0, 640, 641, 5, 261, 0, 0, 641, 642, 3, 262, 131, 0, 642, 643, 5, 94, 0, 0, 643, 656, 3, 278, 139, 0, 644, 653, 5, 1, 0, 0, 645, 650, 3, 224, 112, 0, 646, 647, 5, 3, 0, 0, 647, 649, 3, 224, 112, 0, 648, 646, 1, 0, 0, 0, 649, 652, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 653, 645, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 657, 5, 2, 0, 0, 656, 644, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 659, 1, 0, 0, 0, 658, 660, 3, 54, 27, 0, 659, 658, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 1239, 1, 0, 0, 0, 661, 662, 5, 24, 0, 0, 662, 665, 3, 262, 131, 0, 663, 664, 5, 305, 0, 0, 664, 666, 3, 32, 16, 0, 665, 663, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 1239, 1, 0, 0, 0, 667, 670, 5, 54, 0, 0, 668, 669, 5, 195, 0, 0, 669, 671, 5, 227, 0, 0, 670, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 673, 5, 168, 0, 0, 673, 677, 5, 300, 0, 0, 674, 675, 5, 120, 0, 0, 675, 676, 5, 183, 0, 0, 676, 678, 5, 95, 0, 0, 677, 674, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 683, 3, 268, 134, 0, 680, 681, 5, 110, 0, 0, 681, 682, 5, 209, 0, 0, 682, 684, 3, 184, 92, 0, 683, 680, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 687, 1, 0, 0, 0, 685, 686, 5, 47, 0, 0, 686, 688, 3, 174, 87, 0, 687, 685, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 691, 1, 0, 0, 0, 689, 690, 5, 305, 0, 0, 690, 692, 3, 32, 16, 0, 691, 689, 1, 0, 0, 0, 691, 692, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 694, 5, 28, 0, 0, 694, 695, 3, 18, 9, 0, 695, 1239, 1, 0, 0, 0, 696, 699, 5, 54, 0, 0, 697, 698, 5, 195, 0, 0, 698, 700, 5, 227, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 702, 5, 300, 0, 0, 702, 705, 3, 268, 134, 0, 703, 704, 5, 47, 0, 0, 704, 706, 3, 174, 87, 0, 705, 703, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 709, 1, 0, 0, 0, 707, 708, 5, 247, 0, 0, 708, 710, 7, 1, 0, 0, 709, 707, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 712, 5, 305, 0, 0, 712, 714, 3, 32, 16, 0, 713, 711, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 5, 28, 0, 0, 716, 717, 3, 18, 9, 0, 717, 1239, 1, 0, 0, 0, 718, 719, 5, 223, 0, 0, 719, 720, 5, 168, 0, 0, 720, 721, 5, 300, 0, 0, 721, 1239, 3, 266, 133, 0, 722, 723, 5, 84, 0, 0, 723, 724, 5, 168, 0, 0, 724, 727, 5, 300, 0, 0, 725, 726, 5, 120, 0, 0, 726, 728, 5, 95, 0, 0, 727, 725, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 1239, 3, 266, 133, 0, 730, 731, 5, 23, 0, 0, 731, 732, 5, 168, 0, 0, 732, 735, 5, 300, 0, 0, 733, 734, 5, 120, 0, 0, 734, 736, 5, 95, 0, 0, 735, 733, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 738, 3, 266, 133, 0, 738, 739, 5, 224, 0, 0, 739, 740, 5, 270, 0, 0, 740, 741, 3, 268, 134, 0, 741, 1239, 1, 0, 0, 0, 742, 743, 5, 23, 0, 0, 743, 744, 5, 168, 0, 0, 744, 745, 5, 300, 0, 0, 745, 746, 3, 266, 133, 0, 746, 747, 5, 252, 0, 0, 747, 748, 5, 217, 0, 0, 748, 749, 3, 34, 17, 0, 749, 1239, 1, 0, 0, 0, 750, 751, 5, 84, 0, 0, 751, 754, 5, 300, 0, 0, 752, 753, 5, 120, 0, 0, 753, 755, 5, 95, 0, 0, 754, 752, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 1239, 3, 266, 133, 0, 757, 758, 5, 23, 0, 0, 758, 759, 5, 300, 0, 0, 759, 760, 3, 266, 133, 0, 760, 761, 5, 224, 0, 0, 761, 762, 5, 270, 0, 0, 762, 763, 3, 268, 134, 0, 763, 1239, 1, 0, 0, 0, 764, 765, 5, 23, 0, 0, 765, 766, 5, 300, 0, 0, 766, 767, 3, 266, 133, 0, 767, 768, 5, 252, 0, 0, 768, 769, 5, 31, 0, 0, 769, 770, 3, 296, 148, 0, 770, 1239, 1, 0, 0, 0, 771, 772, 5, 37, 0, 0, 772, 773, 3, 278, 139, 0, 773, 782, 5, 1, 0, 0, 774, 779, 3, 224, 112, 0, 775, 776, 5, 3, 0, 0, 776, 778, 3, 224, 112, 0, 777, 775, 1, 0, 0, 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 783, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 774, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 5, 2, 0, 0, 785, 1239, 1, 0, 0, 0, 786, 789, 5, 54, 0, 0, 787, 788, 5, 195, 0, 0, 788, 790, 5, 227, 0, 0, 789, 787, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 1239, 3, 230, 115, 0, 792, 793, 5, 84, 0, 0, 793, 796, 5, 108, 0, 0, 794, 795, 5, 120, 0, 0, 795, 797, 5, 95, 0, 0, 796, 794, 1, 0, 0, 0, 796, 797, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 1239, 3, 234, 117, 0, 799, 800, 5, 54, 0, 0, 800, 801, 5, 236, 0, 0, 801, 805, 3, 302, 151, 0, 802, 803, 5, 305, 0, 0, 803, 804, 5, 20, 0, 0, 804, 806, 3, 294, 147, 0, 805, 802, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 809, 1, 0, 0, 0, 807, 808, 5, 123, 0, 0, 808, 810, 3, 274, 137, 0, 809, 807, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 1239, 1, 0, 0, 0, 811, 812, 5, 84, 0, 0, 812, 813, 5, 236, 0, 0, 813, 816, 3, 302, 151, 0, 814, 815, 5, 123, 0, 0, 815, 817, 3, 274, 137, 0, 816, 814, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 1239, 1, 0, 0, 0, 818, 819, 5, 111, 0, 0, 819, 824, 3, 300, 150, 0, 820, 821, 5, 3, 0, 0, 821, 823, 3, 300, 150, 0, 822, 820, 1, 0, 0, 0, 823, 826, 1, 0, 0, 0, 824, 822, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, 1, 0, 0, 0, 826, 824, 1, 0, 0, 0, 827, 828, 5, 270, 0, 0, 828, 833, 3, 296, 148, 0, 829, 830, 5, 3, 0, 0, 830, 832, 3, 296, 148, 0, 831, 829, 1, 0, 0, 0, 832, 835, 1, 0, 0, 0, 833, 831, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 839, 1, 0, 0, 0, 835, 833, 1, 0, 0, 0, 836, 837, 5, 305, 0, 0, 837, 838, 5, 20, 0, 0, 838, 840, 5, 194, 0, 0, 839, 836, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 844, 1, 0, 0, 0, 841, 842, 5, 112, 0, 0, 842, 843, 5, 36, 0, 0, 843, 845, 3, 294, 147, 0, 844, 841, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 848, 1, 0, 0, 0, 846, 847, 5, 123, 0, 0, 847, 849, 3, 274, 137, 0, 848, 846, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 1239, 1, 0, 0, 0, 850, 861, 5, 111, 0, 0, 851, 856, 3, 300, 150, 0, 852, 853, 5, 3, 0, 0, 853, 855, 3, 300, 150, 0, 854, 852, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 862, 1, 0, 0, 0, 858, 856, 1, 0, 0, 0, 859, 860, 5, 22, 0, 0, 860, 862, 5, 216, 0, 0, 861, 851, 1, 0, 0, 0, 861, 859, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 864, 5, 191, 0, 0, 864, 865, 3, 258, 129, 0, 865, 866, 5, 270, 0, 0, 866, 870, 3, 296, 148, 0, 867, 868, 5, 305, 0, 0, 868, 869, 5, 111, 0, 0, 869, 871, 5, 194, 0, 0, 870, 867, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 1239, 1, 0, 0, 0, 872, 876, 5, 234, 0, 0, 873, 874, 5, 20, 0, 0, 874, 875, 5, 194, 0, 0, 875, 877, 5, 104, 0, 0, 876, 873, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 883, 3, 300, 150, 0, 879, 880, 5, 3, 0, 0, 880, 882, 3, 300, 150, 0, 881, 879, 1, 0, 0, 0, 882, 885, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 886, 1, 0, 0, 0, 885, 883, 1, 0, 0, 0, 886, 887, 5, 106, 0, 0, 887, 892, 3, 296, 148, 0, 888, 889, 5, 3, 0, 0, 889, 891, 3, 296, 148, 0, 890, 888, 1, 0, 0, 0, 891, 894, 1, 0, 0, 0, 892, 890, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 898, 1, 0, 0, 0, 894, 892, 1, 0, 0, 0, 895, 896, 5, 112, 0, 0, 896, 897, 5, 36, 0, 0, 897, 899, 3, 294, 147, 0, 898, 895, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 902, 1, 0, 0, 0, 900, 901, 5, 123, 0, 0, 901, 903, 3, 274, 137, 0, 902, 900, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 1239, 1, 0, 0, 0, 904, 908, 5, 234, 0, 0, 905, 906, 5, 111, 0, 0, 906, 907, 5, 194, 0, 0, 907, 909, 5, 104, 0, 0, 908, 905, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 920, 1, 0, 0, 0, 910, 915, 3, 300, 150, 0, 911, 912, 5, 3, 0, 0, 912, 914, 3, 300, 150, 0, 913, 911, 1, 0, 0, 0, 914, 917, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 921, 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 919, 5, 22, 0, 0, 919, 921, 5, 216, 0, 0, 920, 910, 1, 0, 0, 0, 920, 918, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 923, 5, 191, 0, 0, 923, 924, 3, 258, 129, 0, 924, 925, 5, 106, 0, 0, 925, 926, 3, 296, 148, 0, 926, 1239, 1, 0, 0, 0, 927, 938, 5, 75, 0, 0, 928, 933, 3, 254, 127, 0, 929, 930, 5, 3, 0, 0, 930, 932, 3, 254, 127, 0, 931, 929, 1, 0, 0, 0, 932, 935, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 939, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 936, 937, 5, 22, 0, 0, 937, 939, 5, 216, 0, 0, 938, 928, 1, 0, 0, 0, 938, 936, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 941, 5, 191, 0, 0, 941, 942, 3, 258, 129, 0, 942, 943, 5, 270, 0, 0, 943, 944, 3, 296, 148, 0, 944, 1239, 1, 0, 0, 0, 945, 946, 5, 252, 0, 0, 946, 950, 5, 236, 0, 0, 947, 951, 5, 22, 0, 0, 948, 951, 5, 181, 0, 0, 949, 951, 3, 302, 151, 0, 950, 947, 1, 0, 0, 0, 950, 948, 1, 0, 0, 0, 950, 949, 1, 0, 0, 0, 951, 954, 1, 0, 0, 0, 952, 953, 5, 123, 0, 0, 953, 955, 3, 274, 137, 0, 954, 952, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 1239, 1, 0, 0, 0, 956, 957, 5, 254, 0, 0, 957, 960, 5, 113, 0, 0, 958, 959, 5, 191, 0, 0, 959, 961, 3, 258, 129, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 1239, 1, 0, 0, 0, 962, 974, 5, 96, 0, 0, 963, 964, 5, 1, 0, 0, 964, 969, 3, 218, 109, 0, 965, 966, 5, 3, 0, 0, 966, 968, 3, 218, 109, 0, 967, 965, 1, 0, 0, 0, 968, 971, 1, 0, 0, 0, 969, 967, 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 972, 1, 0, 0, 0, 971, 969, 1, 0, 0, 0, 972, 973, 5, 2, 0, 0, 973, 975, 1, 0, 0, 0, 974, 963, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 1239, 3, 16, 8, 0, 977, 978, 5, 96, 0, 0, 978, 980, 5, 24, 0, 0, 979, 981, 5, 298, 0, 0, 980, 979, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 1239, 3, 16, 8, 0, 983, 984, 5, 254, 0, 0, 984, 985, 5, 54, 0, 0, 985, 986, 5, 261, 0, 0, 986, 1239, 3, 262, 131, 0, 987, 988, 5, 254, 0, 0, 988, 989, 5, 54, 0, 0, 989, 990, 5, 244, 0, 0, 990, 1239, 3, 270, 135, 0, 991, 992, 5, 254, 0, 0, 992, 993, 5, 54, 0, 0, 993, 994, 5, 300, 0, 0, 994, 1239, 3, 266, 133, 0, 995, 996, 5, 254, 0, 0, 996, 997, 5, 54, 0, 0, 997, 998, 5, 168, 0, 0, 998, 999, 5, 300, 0, 0, 999, 1239, 3, 266, 133, 0, 1000, 1001, 5, 254, 0, 0, 1001, 1002, 5, 54, 0, 0, 1002, 1003, 5, 108, 0, 0, 1003, 1239, 3, 278, 139, 0, 1004, 1005, 5, 254, 0, 0, 1005, 1008, 5, 262, 0, 0, 1006, 1007, 7, 2, 0, 0, 1007, 1009, 3, 270, 135, 0, 1008, 1006, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1016, 1, 0, 0, 0, 1010, 1011, 5, 155, 0, 0, 1011, 1014, 3, 174, 87, 0, 1012, 1013, 5, 91, 0, 0, 1013, 1015, 3, 174, 87, 0, 1014, 1012, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1017, 1, 0, 0, 0, 1016, 1010, 1, 0, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1239, 1, 0, 0, 0, 1018, 1019, 5, 254, 0, 0, 1019, 1022, 5, 245, 0, 0, 1020, 1021, 7, 2, 0, 0, 1021, 1023, 3, 274, 137, 0, 1022, 1020, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1030, 1, 0, 0, 0, 1024, 1025, 5, 155, 0, 0, 1025, 1028, 3, 174, 87, 0, 1026, 1027, 5, 91, 0, 0, 1027, 1029, 3, 174, 87, 0, 1028, 1026, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1031, 1, 0, 0, 0, 1030, 1024, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1239, 1, 0, 0, 0, 1032, 1033, 5, 254, 0, 0, 1033, 1040, 5, 43, 0, 0, 1034, 1035, 5, 155, 0, 0, 1035, 1038, 3, 174, 87, 0, 1036, 1037, 5, 91, 0, 0, 1037, 1039, 3, 174, 87, 0, 1038, 1036, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1041, 1, 0, 0, 0, 1040, 1034, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1239, 1, 0, 0, 0, 1042, 1043, 5, 254, 0, 0, 1043, 1044, 5, 46, 0, 0, 1044, 1045, 7, 2, 0, 0, 1045, 1052, 3, 260, 130, 0, 1046, 1047, 5, 155, 0, 0, 1047, 1050, 3, 174, 87, 0, 1048, 1049, 5, 91, 0, 0, 1049, 1051, 3, 174, 87, 0, 1050, 1048, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1053, 1, 0, 0, 0, 1052, 1046, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1239, 1, 0, 0, 0, 1054, 1055, 5, 254, 0, 0, 1055, 1056, 5, 257, 0, 0, 1056, 1057, 5, 104, 0, 0, 1057, 1239, 3, 260, 130, 0, 1058, 1059, 5, 254, 0, 0, 1059, 1060, 5, 257, 0, 0, 1060, 1061, 5, 104, 0, 0, 1061, 1062, 5, 1, 0, 0, 1062, 1063, 3, 18, 9, 0, 1063, 1064, 5, 2, 0, 0, 1064, 1239, 1, 0, 0, 0, 1065, 1067, 5, 254, 0, 0, 1066, 1068, 5, 57, 0, 0, 1067, 1066, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 1072, 5, 237, 0, 0, 1070, 1071, 7, 2, 0, 0, 1071, 1073, 3, 274, 137, 0, 1072, 1070, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1239, 1, 0, 0, 0, 1074, 1075, 5, 254, 0, 0, 1075, 1076, 5, 236, 0, 0, 1076, 1079, 5, 113, 0, 0, 1077, 1078, 7, 2, 0, 0, 1078, 1080, 3, 274, 137, 0, 1079, 1077, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1239, 1, 0, 0, 0, 1081, 1082, 5, 77, 0, 0, 1082, 1239, 3, 260, 130, 0, 1083, 1084, 5, 76, 0, 0, 1084, 1239, 3, 260, 130, 0, 1085, 1086, 5, 254, 0, 0, 1086, 1089, 5, 109, 0, 0, 1087, 1088, 7, 2, 0, 0, 1088, 1090, 3, 270, 135, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1097, 1, 0, 0, 0, 1091, 1092, 5, 155, 0, 0, 1092, 1095, 3, 174, 87, 0, 1093, 1094, 5, 91, 0, 0, 1094, 1096, 3, 174, 87, 0, 1095, 1093, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1098, 1, 0, 0, 0, 1097, 1091, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1239, 1, 0, 0, 0, 1099, 1100, 5, 254, 0, 0, 1100, 1107, 5, 251, 0, 0, 1101, 1102, 5, 155, 0, 0, 1102, 1105, 3, 174, 87, 0, 1103, 1104, 5, 91, 0, 0, 1104, 1106, 3, 174, 87, 0, 1105, 1103, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1108, 1, 0, 0, 0, 1107, 1101, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1239, 1, 0, 0, 0, 1109, 1110, 5, 252, 0, 0, 1110, 1111, 5, 251, 0, 0, 1111, 1112, 5, 31, 0, 0, 1112, 1239, 3, 306, 153, 0, 1113, 1114, 5, 228, 0, 0, 1114, 1115, 5, 251, 0, 0, 1115, 1239, 5, 31, 0, 0, 1116, 1117, 5, 252, 0, 0, 1117, 1118, 5, 251, 0, 0, 1118, 1119, 3, 288, 144, 0, 1119, 1120, 5, 313, 0, 0, 1120, 1121, 3, 142, 71, 0, 1121, 1239, 1, 0, 0, 0, 1122, 1123, 5, 228, 0, 0, 1123, 1124, 5, 251, 0, 0, 1124, 1239, 3, 288, 144, 0, 1125, 1126, 5, 256, 0, 0, 1126, 1135, 5, 272, 0, 0, 1127, 1132, 3, 220, 110, 0, 1128, 1129, 5, 3, 0, 0, 1129, 1131, 3, 220, 110, 0, 1130, 1128, 1, 0, 0, 0, 1131, 1134, 1, 0, 0, 0, 1132, 1130, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1136, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1135, 1127, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1239, 1, 0, 0, 0, 1137, 1139, 5, 48, 0, 0, 1138, 1140, 5, 308, 0, 0, 1139, 1138, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1239, 1, 0, 0, 0, 1141, 1143, 5, 238, 0, 0, 1142, 1144, 5, 308, 0, 0, 1143, 1142, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1239, 1, 0, 0, 0, 1145, 1146, 5, 215, 0, 0, 1146, 1147, 3, 302, 151, 0, 1147, 1148, 5, 106, 0, 0, 1148, 1149, 3, 16, 8, 0, 1149, 1239, 1, 0, 0, 0, 1150, 1151, 5, 69, 0, 0, 1151, 1152, 5, 215, 0, 0, 1152, 1239, 3, 302, 151, 0, 1153, 1154, 5, 94, 0, 0, 1154, 1164, 3, 302, 151, 0, 1155, 1156, 5, 291, 0, 0, 1156, 1161, 3, 142, 71, 0, 1157, 1158, 5, 3, 0, 0, 1158, 1160, 3, 142, 71, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1163, 1, 0, 0, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1165, 1, 0, 0, 0, 1163, 1161, 1, 0, 0, 0, 1164, 1155, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1239, 1, 0, 0, 0, 1166, 1167, 5, 94, 0, 0, 1167, 1168, 5, 122, 0, 0, 1168, 1178, 3, 174, 87, 0, 1169, 1170, 5, 291, 0, 0, 1170, 1175, 3, 142, 71, 0, 1171, 1172, 5, 3, 0, 0, 1172, 1174, 3, 142, 71, 0, 1173, 1171, 1, 0, 0, 0, 1174, 1177, 1, 0, 0, 0, 1175, 1173, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1178, 1169, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1239, 1, 0, 0, 0, 1180, 1181, 5, 77, 0, 0, 1181, 1182, 5, 127, 0, 0, 1182, 1239, 3, 302, 151, 0, 1183, 1184, 5, 77, 0, 0, 1184, 1185, 5, 199, 0, 0, 1185, 1239, 3, 302, 151, 0, 1186, 1187, 5, 252, 0, 0, 1187, 1188, 5, 206, 0, 0, 1188, 1239, 3, 228, 114, 0, 1189, 1190, 5, 252, 0, 0, 1190, 1191, 5, 268, 0, 0, 1191, 1194, 5, 312, 0, 0, 1192, 1195, 5, 158, 0, 0, 1193, 1195, 3, 142, 71, 0, 1194, 1192, 1, 0, 0, 0, 1194, 1193, 1, 0, 0, 0, 1195, 1239, 1, 0, 0, 0, 1196, 1197, 5, 288, 0, 0, 1197, 1198, 3, 262, 131, 0, 1198, 1199, 5, 252, 0, 0, 1199, 1204, 3, 216, 108, 0, 1200, 1201, 5, 3, 0, 0, 1201, 1203, 3, 216, 108, 0, 1202, 1200, 1, 0, 0, 0, 1203, 1206, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1208, 1, 0, 0, 0, 1206, 1204, 1, 0, 0, 0, 1207, 1209, 3, 54, 27, 0, 1208, 1207, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1239, 1, 0, 0, 0, 1210, 1211, 5, 170, 0, 0, 1211, 1212, 5, 131, 0, 0, 1212, 1217, 3, 262, 131, 0, 1213, 1215, 5, 28, 0, 0, 1214, 1213, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1218, 3, 302, 151, 0, 1217, 1214, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1220, 5, 291, 0, 0, 1220, 1221, 3, 78, 39, 0, 1221, 1222, 5, 191, 0, 0, 1222, 1224, 3, 142, 71, 0, 1223, 1225, 3, 200, 100, 0, 1224, 1223, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1224, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1239, 1, 0, 0, 0, 1228, 1229, 5, 254, 0, 0, 1229, 1230, 5, 47, 0, 0, 1230, 1231, 5, 191, 0, 0, 1231, 1232, 5, 261, 0, 0, 1232, 1239, 3, 262, 131, 0, 1233, 1234, 5, 254, 0, 0, 1234, 1235, 5, 47, 0, 0, 1235, 1236, 5, 191, 0, 0, 1236, 1237, 5, 45, 0, 0, 1237, 1239, 3, 282, 141, 0, 1238, 343, 1, 0, 0, 0, 1238, 344, 1, 0, 0, 0, 1238, 346, 1, 0, 0, 0, 1238, 368, 1, 0, 0, 0, 1238, 378, 1, 0, 0, 0, 1238, 394, 1, 0, 0, 0, 1238, 404, 1, 0, 0, 0, 1238, 411, 1, 0, 0, 0, 1238, 418, 1, 0, 0, 0, 1238, 456, 1, 0, 0, 0, 1238, 486, 1, 0, 0, 0, 1238, 493, 1, 0, 0, 0, 1238, 501, 1, 0, 0, 0, 1238, 507, 1, 0, 0, 0, 1238, 510, 1, 0, 0, 0, 1238, 519, 1, 0, 0, 0, 1238, 528, 1, 0, 0, 0, 1238, 537, 1, 0, 0, 0, 1238, 548, 1, 0, 0, 0, 1238, 564, 1, 0, 0, 0, 1238, 581, 1, 0, 0, 0, 1238, 596, 1, 0, 0, 0, 1238, 611, 1, 0, 0, 0, 1238, 625, 1, 0, 0, 0, 1238, 632, 1, 0, 0, 0, 1238, 639, 1, 0, 0, 0, 1238, 661, 1, 0, 0, 0, 1238, 667, 1, 0, 0, 0, 1238, 696, 1, 0, 0, 0, 1238, 718, 1, 0, 0, 0, 1238, 722, 1, 0, 0, 0, 1238, 730, 1, 0, 0, 0, 1238, 742, 1, 0, 0, 0, 1238, 750, 1, 0, 0, 0, 1238, 757, 1, 0, 0, 0, 1238, 764, 1, 0, 0, 0, 1238, 771, 1, 0, 0, 0, 1238, 786, 1, 0, 0, 0, 1238, 792, 1, 0, 0, 0, 1238, 799, 1, 0, 0, 0, 1238, 811, 1, 0, 0, 0, 1238, 818, 1, 0, 0, 0, 1238, 850, 1, 0, 0, 0, 1238, 872, 1, 0, 0, 0, 1238, 904, 1, 0, 0, 0, 1238, 927, 1, 0, 0, 0, 1238, 945, 1, 0, 0, 0, 1238, 956, 1, 0, 0, 0, 1238, 962, 1, 0, 0, 0, 1238, 977, 1, 0, 0, 0, 1238, 983, 1, 0, 0, 0, 1238, 987, 1, 0, 0, 0, 1238, 991, 1, 0, 0, 0, 1238, 995, 1, 0, 0, 0, 1238, 1000, 1, 0, 0, 0, 1238, 1004, 1, 0, 0, 0, 1238, 1018, 1, 0, 0, 0, 1238, 1032, 1, 0, 0, 0, 1238, 1042, 1, 0, 0, 0, 1238, 1054, 1, 0, 0, 0, 1238, 1058, 1, 0, 0, 0, 1238, 1065, 1, 0, 0, 0, 1238, 1074, 1, 0, 0, 0, 1238, 1081, 1, 0, 0, 0, 1238, 1083, 1, 0, 0, 0, 1238, 1085, 1, 0, 0, 0, 1238, 1099, 1, 0, 0, 0, 1238, 1109, 1, 0, 0, 0, 1238, 1113, 1, 0, 0, 0, 1238, 1116, 1, 0, 0, 0, 1238, 1122, 1, 0, 0, 0, 1238, 1125, 1, 0, 0, 0, 1238, 1137, 1, 0, 0, 0, 1238, 1141, 1, 0, 0, 0, 1238, 1145, 1, 0, 0, 0, 1238, 1150, 1, 0, 0, 0, 1238, 1153, 1, 0, 0, 0, 1238, 1166, 1, 0, 0, 0, 1238, 1180, 1, 0, 0, 0, 1238, 1183, 1, 0, 0, 0, 1238, 1186, 1, 0, 0, 0, 1238, 1189, 1, 0, 0, 0, 1238, 1196, 1, 0, 0, 0, 1238, 1210, 1, 0, 0, 0, 1238, 1228, 1, 0, 0, 0, 1238, 1233, 1, 0, 0, 0, 1239, 17, 1, 0, 0, 0, 1240, 1242, 3, 20, 10, 0, 1241, 1240, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, 1243, 1244, 3, 22, 11, 0, 1244, 19, 1, 0, 0, 0, 1245, 1246, 5, 305, 0, 0, 1246, 1251, 3, 230, 115, 0, 1247, 1248, 5, 3, 0, 0, 1248, 1250, 3, 230, 115, 0, 1249, 1247, 1, 0, 0, 0, 1250, 1253, 1, 0, 0, 0, 1251, 1249, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 21, 1, 0, 0, 0, 1253, 1251, 1, 0, 0, 0, 1254, 1256, 3, 24, 12, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 3, 40, 20, 0, 1258, 23, 1, 0, 0, 0, 1259, 1261, 5, 305, 0, 0, 1260, 1262, 5, 222, 0, 0, 1261, 1260, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1268, 3, 72, 36, 0, 1264, 1265, 5, 3, 0, 0, 1265, 1267, 3, 72, 36, 0, 1266, 1264, 1, 0, 0, 0, 1267, 1270, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 25, 1, 0, 0, 0, 1270, 1268, 1, 0, 0, 0, 1271, 1274, 3, 28, 14, 0, 1272, 1274, 3, 30, 15, 0, 1273, 1271, 1, 0, 0, 0, 1273, 1272, 1, 0, 0, 0, 1274, 27, 1, 0, 0, 0, 1275, 1276, 3, 286, 143, 0, 1276, 1279, 3, 190, 95, 0, 1277, 1278, 5, 183, 0, 0, 1278, 1280, 5, 184, 0, 0, 1279, 1277, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1283, 1, 0, 0, 0, 1281, 1282, 5, 47, 0, 0, 1282, 1284, 3, 174, 87, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1287, 1, 0, 0, 0, 1285, 1286, 5, 305, 0, 0, 1286, 1288, 3, 32, 16, 0, 1287, 1285, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 29, 1, 0, 0, 0, 1289, 1290, 5, 155, 0, 0, 1290, 1293, 3, 262, 131, 0, 1291, 1292, 7, 3, 0, 0, 1292, 1294, 5, 217, 0, 0, 1293, 1291, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 31, 1, 0, 0, 0, 1295, 1296, 5, 1, 0, 0, 1296, 1297, 3, 34, 17, 0, 1297, 1298, 5, 2, 0, 0, 1298, 33, 1, 0, 0, 0, 1299, 1304, 3, 36, 18, 0, 1300, 1301, 5, 3, 0, 0, 1301, 1303, 3, 36, 18, 0, 1302, 1300, 1, 0, 0, 0, 1303, 1306, 1, 0, 0, 0, 1304, 1302, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 35, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1307, 1308, 3, 302, 151, 0, 1308, 1309, 5, 313, 0, 0, 1309, 1310, 3, 38, 19, 0, 1310, 37, 1, 0, 0, 0, 1311, 1314, 5, 71, 0, 0, 1312, 1314, 3, 142, 71, 0, 1313, 1311, 1, 0, 0, 0, 1313, 1312, 1, 0, 0, 0, 1314, 39, 1, 0, 0, 0, 1315, 1326, 3, 46, 23, 0, 1316, 1317, 5, 196, 0, 0, 1317, 1318, 5, 36, 0, 0, 1318, 1323, 3, 50, 25, 0, 1319, 1320, 5, 3, 0, 0, 1320, 1322, 3, 50, 25, 0, 1321, 1319, 1, 0, 0, 0, 1322, 1325, 1, 0, 0, 0, 1323, 1321, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1327, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, 1326, 1316, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1333, 1, 0, 0, 0, 1328, 1329, 5, 189, 0, 0, 1329, 1331, 3, 44, 22, 0, 1330, 1332, 7, 4, 0, 0, 1331, 1330, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1334, 1, 0, 0, 0, 1333, 1328, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1348, 1, 0, 0, 0, 1335, 1336, 5, 156, 0, 0, 1336, 1349, 3, 42, 21, 0, 1337, 1338, 5, 99, 0, 0, 1338, 1340, 7, 5, 0, 0, 1339, 1341, 3, 44, 22, 0, 1340, 1339, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1346, 7, 4, 0, 0, 1343, 1347, 5, 193, 0, 0, 1344, 1345, 5, 305, 0, 0, 1345, 1347, 5, 267, 0, 0, 1346, 1343, 1, 0, 0, 0, 1346, 1344, 1, 0, 0, 0, 1347, 1349, 1, 0, 0, 0, 1348, 1335, 1, 0, 0, 0, 1348, 1337, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 41, 1, 0, 0, 0, 1350, 1353, 5, 22, 0, 0, 1351, 1353, 3, 44, 22, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1351, 1, 0, 0, 0, 1353, 43, 1, 0, 0, 0, 1354, 1355, 7, 6, 0, 0, 1355, 45, 1, 0, 0, 0, 1356, 1357, 6, 23, -1, 0, 1357, 1358, 3, 48, 24, 0, 1358, 1373, 1, 0, 0, 0, 1359, 1360, 10, 2, 0, 0, 1360, 1362, 5, 129, 0, 0, 1361, 1363, 3, 74, 37, 0, 1362, 1361, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1372, 3, 46, 23, 3, 1365, 1366, 10, 1, 0, 0, 1366, 1368, 7, 7, 0, 0, 1367, 1369, 3, 74, 37, 0, 1368, 1367, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1372, 3, 46, 23, 2, 1371, 1359, 1, 0, 0, 0, 1371, 1365, 1, 0, 0, 0, 1372, 1375, 1, 0, 0, 0, 1373, 1371, 1, 0, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 47, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1376, 1393, 3, 52, 26, 0, 1377, 1378, 5, 261, 0, 0, 1378, 1393, 3, 262, 131, 0, 1379, 1380, 5, 297, 0, 0, 1380, 1385, 3, 142, 71, 0, 1381, 1382, 5, 3, 0, 0, 1382, 1384, 3, 142, 71, 0, 1383, 1381, 1, 0, 0, 0, 1384, 1387, 1, 0, 0, 0, 1385, 1383, 1, 0, 0, 0, 1385, 1386, 1, 0, 0, 0, 1386, 1393, 1, 0, 0, 0, 1387, 1385, 1, 0, 0, 0, 1388, 1389, 5, 1, 0, 0, 1389, 1390, 3, 40, 20, 0, 1390, 1391, 5, 2, 0, 0, 1391, 1393, 1, 0, 0, 0, 1392, 1376, 1, 0, 0, 0, 1392, 1377, 1, 0, 0, 0, 1392, 1379, 1, 0, 0, 0, 1392, 1388, 1, 0, 0, 0, 1393, 49, 1, 0, 0, 0, 1394, 1397, 3, 282, 141, 0, 1395, 1397, 3, 142, 71, 0, 1396, 1394, 1, 0, 0, 0, 1396, 1395, 1, 0, 0, 0, 1397, 1399, 1, 0, 0, 0, 1398, 1400, 7, 8, 0, 0, 1399, 1398, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1403, 1, 0, 0, 0, 1401, 1402, 5, 186, 0, 0, 1402, 1404, 7, 9, 0, 0, 1403, 1401, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 51, 1, 0, 0, 0, 1405, 1407, 5, 249, 0, 0, 1406, 1408, 3, 74, 37, 0, 1407, 1406, 1, 0, 0, 0, 1407, 1408, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1414, 3, 76, 38, 0, 1410, 1411, 5, 3, 0, 0, 1411, 1413, 3, 76, 38, 0, 1412, 1410, 1, 0, 0, 0, 1413, 1416, 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1426, 1, 0, 0, 0, 1416, 1414, 1, 0, 0, 0, 1417, 1418, 5, 106, 0, 0, 1418, 1423, 3, 78, 39, 0, 1419, 1420, 5, 3, 0, 0, 1420, 1422, 3, 78, 39, 0, 1421, 1419, 1, 0, 0, 0, 1422, 1425, 1, 0, 0, 0, 1423, 1421, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1427, 1, 0, 0, 0, 1425, 1423, 1, 0, 0, 0, 1426, 1417, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1429, 1, 0, 0, 0, 1428, 1430, 3, 54, 27, 0, 1429, 1428, 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1434, 1, 0, 0, 0, 1431, 1432, 5, 115, 0, 0, 1432, 1433, 5, 36, 0, 0, 1433, 1435, 3, 58, 29, 0, 1434, 1431, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1437, 1, 0, 0, 0, 1436, 1438, 3, 56, 28, 0, 1437, 1436, 1, 0, 0, 0, 1437, 1438, 1, 0, 0, 0, 1438, 1448, 1, 0, 0, 0, 1439, 1440, 5, 304, 0, 0, 1440, 1445, 3, 68, 34, 0, 1441, 1442, 5, 3, 0, 0, 1442, 1444, 3, 68, 34, 0, 1443, 1441, 1, 0, 0, 0, 1444, 1447, 1, 0, 0, 0, 1445, 1443, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1449, 1, 0, 0, 0, 1447, 1445, 1, 0, 0, 0, 1448, 1439, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 53, 1, 0, 0, 0, 1450, 1451, 5, 302, 0, 0, 1451, 1452, 3, 144, 72, 0, 1452, 55, 1, 0, 0, 0, 1453, 1454, 5, 118, 0, 0, 1454, 1455, 3, 144, 72, 0, 1455, 57, 1, 0, 0, 0, 1456, 1458, 3, 74, 37, 0, 1457, 1456, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1464, 3, 62, 31, 0, 1460, 1461, 5, 3, 0, 0, 1461, 1463, 3, 62, 31, 0, 1462, 1460, 1, 0, 0, 0, 1463, 1466, 1, 0, 0, 0, 1464, 1462, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 59, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1467, 1472, 3, 142, 71, 0, 1468, 1469, 5, 3, 0, 0, 1469, 1471, 3, 142, 71, 0, 1470, 1468, 1, 0, 0, 0, 1471, 1474, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 61, 1, 0, 0, 0, 1474, 1472, 1, 0, 0, 0, 1475, 1516, 3, 64, 32, 0, 1476, 1477, 5, 239, 0, 0, 1477, 1486, 5, 1, 0, 0, 1478, 1483, 3, 64, 32, 0, 1479, 1480, 5, 3, 0, 0, 1480, 1482, 3, 64, 32, 0, 1481, 1479, 1, 0, 0, 0, 1482, 1485, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1487, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1486, 1478, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1516, 5, 2, 0, 0, 1489, 1490, 5, 56, 0, 0, 1490, 1499, 5, 1, 0, 0, 1491, 1496, 3, 64, 32, 0, 1492, 1493, 5, 3, 0, 0, 1493, 1495, 3, 64, 32, 0, 1494, 1492, 1, 0, 0, 0, 1495, 1498, 1, 0, 0, 0, 1496, 1494, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1500, 1, 0, 0, 0, 1498, 1496, 1, 0, 0, 0, 1499, 1491, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1516, 5, 2, 0, 0, 1502, 1503, 5, 116, 0, 0, 1503, 1504, 5, 253, 0, 0, 1504, 1505, 5, 1, 0, 0, 1505, 1510, 3, 64, 32, 0, 1506, 1507, 5, 3, 0, 0, 1507, 1509, 3, 64, 32, 0, 1508, 1506, 1, 0, 0, 0, 1509, 1512, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1513, 1, 0, 0, 0, 1512, 1510, 1, 0, 0, 0, 1513, 1514, 5, 2, 0, 0, 1514, 1516, 1, 0, 0, 0, 1515, 1475, 1, 0, 0, 0, 1515, 1476, 1, 0, 0, 0, 1515, 1489, 1, 0, 0, 0, 1515, 1502, 1, 0, 0, 0, 1516, 63, 1, 0, 0, 0, 1517, 1526, 5, 1, 0, 0, 1518, 1523, 3, 66, 33, 0, 1519, 1520, 5, 3, 0, 0, 1520, 1522, 3, 66, 33, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1525, 1, 0, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1527, 1, 0, 0, 0, 1525, 1523, 1, 0, 0, 0, 1526, 1518, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1528, 1, 0, 0, 0, 1528, 1531, 5, 2, 0, 0, 1529, 1531, 3, 66, 33, 0, 1530, 1517, 1, 0, 0, 0, 1530, 1529, 1, 0, 0, 0, 1531, 65, 1, 0, 0, 0, 1532, 1535, 3, 282, 141, 0, 1533, 1535, 3, 142, 71, 0, 1534, 1532, 1, 0, 0, 0, 1534, 1533, 1, 0, 0, 0, 1535, 67, 1, 0, 0, 0, 1536, 1537, 3, 302, 151, 0, 1537, 1538, 5, 28, 0, 0, 1538, 1539, 5, 1, 0, 0, 1539, 1540, 3, 70, 35, 0, 1540, 1541, 5, 2, 0, 0, 1541, 69, 1, 0, 0, 0, 1542, 1544, 3, 302, 151, 0, 1543, 1542, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1548, 1, 0, 0, 0, 1545, 1546, 5, 202, 0, 0, 1546, 1547, 5, 36, 0, 0, 1547, 1549, 3, 60, 30, 0, 1548, 1545, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1560, 1, 0, 0, 0, 1550, 1551, 5, 196, 0, 0, 1551, 1552, 5, 36, 0, 0, 1552, 1557, 3, 50, 25, 0, 1553, 1554, 5, 3, 0, 0, 1554, 1556, 3, 50, 25, 0, 1555, 1553, 1, 0, 0, 0, 1556, 1559, 1, 0, 0, 0, 1557, 1555, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1561, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1560, 1550, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1563, 1, 0, 0, 0, 1562, 1564, 3, 204, 102, 0, 1563, 1562, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 71, 1, 0, 0, 0, 1565, 1567, 3, 302, 151, 0, 1566, 1568, 3, 114, 57, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 1570, 5, 28, 0, 0, 1570, 1571, 5, 1, 0, 0, 1571, 1572, 3, 22, 11, 0, 1572, 1573, 5, 2, 0, 0, 1573, 73, 1, 0, 0, 0, 1574, 1575, 7, 10, 0, 0, 1575, 75, 1, 0, 0, 0, 1576, 1579, 3, 282, 141, 0, 1577, 1579, 3, 142, 71, 0, 1578, 1576, 1, 0, 0, 0, 1578, 1577, 1, 0, 0, 0, 1579, 1584, 1, 0, 0, 0, 1580, 1582, 5, 28, 0, 0, 1581, 1580, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1583, 1, 0, 0, 0, 1583, 1585, 3, 302, 151, 0, 1584, 1581, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1595, 1, 0, 0, 0, 1586, 1587, 3, 150, 75, 0, 1587, 1588, 5, 4, 0, 0, 1588, 1591, 5, 321, 0, 0, 1589, 1590, 5, 28, 0, 0, 1590, 1592, 3, 114, 57, 0, 1591, 1589, 1, 0, 0, 0, 1591, 1592, 1, 0, 0, 0, 1592, 1595, 1, 0, 0, 0, 1593, 1595, 5, 321, 0, 0, 1594, 1578, 1, 0, 0, 0, 1594, 1586, 1, 0, 0, 0, 1594, 1593, 1, 0, 0, 0, 1595, 77, 1, 0, 0, 0, 1596, 1597, 6, 39, -1, 0, 1597, 1598, 3, 84, 42, 0, 1598, 1617, 1, 0, 0, 0, 1599, 1613, 10, 2, 0, 0, 1600, 1601, 5, 55, 0, 0, 1601, 1602, 5, 137, 0, 0, 1602, 1614, 3, 84, 42, 0, 1603, 1604, 3, 80, 40, 0, 1604, 1605, 5, 137, 0, 0, 1605, 1606, 3, 78, 39, 0, 1606, 1607, 3, 82, 41, 0, 1607, 1614, 1, 0, 0, 0, 1608, 1609, 5, 173, 0, 0, 1609, 1610, 3, 80, 40, 0, 1610, 1611, 5, 137, 0, 0, 1611, 1612, 3, 84, 42, 0, 1612, 1614, 1, 0, 0, 0, 1613, 1600, 1, 0, 0, 0, 1613, 1603, 1, 0, 0, 0, 1613, 1608, 1, 0, 0, 0, 1614, 1616, 1, 0, 0, 0, 1615, 1599, 1, 0, 0, 0, 1616, 1619, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 79, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1622, 5, 126, 0, 0, 1621, 1620, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1636, 1, 0, 0, 0, 1623, 1625, 5, 153, 0, 0, 1624, 1626, 5, 198, 0, 0, 1625, 1624, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1636, 1, 0, 0, 0, 1627, 1629, 5, 235, 0, 0, 1628, 1630, 5, 198, 0, 0, 1629, 1628, 1, 0, 0, 0, 1629, 1630, 1, 0, 0, 0, 1630, 1636, 1, 0, 0, 0, 1631, 1633, 5, 107, 0, 0, 1632, 1634, 5, 198, 0, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1621, 1, 0, 0, 0, 1635, 1623, 1, 0, 0, 0, 1635, 1627, 1, 0, 0, 0, 1635, 1631, 1, 0, 0, 0, 1636, 81, 1, 0, 0, 0, 1637, 1638, 5, 191, 0, 0, 1638, 1652, 3, 144, 72, 0, 1639, 1640, 5, 291, 0, 0, 1640, 1641, 5, 1, 0, 0, 1641, 1646, 3, 302, 151, 0, 1642, 1643, 5, 3, 0, 0, 1643, 1645, 3, 302, 151, 0, 1644, 1642, 1, 0, 0, 0, 1645, 1648, 1, 0, 0, 0, 1646, 1644, 1, 0, 0, 0, 1646, 1647, 1, 0, 0, 0, 1647, 1649, 1, 0, 0, 0, 1648, 1646, 1, 0, 0, 0, 1649, 1650, 5, 2, 0, 0, 1650, 1652, 1, 0, 0, 0, 1651, 1637, 1, 0, 0, 0, 1651, 1639, 1, 0, 0, 0, 1652, 83, 1, 0, 0, 0, 1653, 1660, 3, 94, 47, 0, 1654, 1655, 5, 263, 0, 0, 1655, 1656, 3, 86, 43, 0, 1656, 1657, 5, 1, 0, 0, 1657, 1658, 3, 142, 71, 0, 1658, 1659, 5, 2, 0, 0, 1659, 1661, 1, 0, 0, 0, 1660, 1654, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 85, 1, 0, 0, 0, 1662, 1663, 7, 11, 0, 0, 1663, 87, 1, 0, 0, 0, 1664, 1665, 7, 12, 0, 0, 1665, 89, 1, 0, 0, 0, 1666, 1673, 5, 90, 0, 0, 1667, 1669, 5, 275, 0, 0, 1668, 1670, 3, 174, 87, 0, 1669, 1668, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 1671, 1, 0, 0, 0, 1671, 1673, 3, 92, 46, 0, 1672, 1666, 1, 0, 0, 0, 1672, 1667, 1, 0, 0, 0, 1673, 91, 1, 0, 0, 0, 1674, 1675, 5, 305, 0, 0, 1675, 1679, 5, 52, 0, 0, 1676, 1677, 5, 307, 0, 0, 1677, 1679, 5, 52, 0, 0, 1678, 1674, 1, 0, 0, 0, 1678, 1676, 1, 0, 0, 0, 1679, 93, 1, 0, 0, 0, 1680, 1756, 3, 108, 54, 0, 1681, 1682, 5, 167, 0, 0, 1682, 1686, 5, 1, 0, 0, 1683, 1684, 5, 202, 0, 0, 1684, 1685, 5, 36, 0, 0, 1685, 1687, 3, 60, 30, 0, 1686, 1683, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 1698, 1, 0, 0, 0, 1688, 1689, 5, 196, 0, 0, 1689, 1690, 5, 36, 0, 0, 1690, 1695, 3, 50, 25, 0, 1691, 1692, 5, 3, 0, 0, 1692, 1694, 3, 50, 25, 0, 1693, 1691, 1, 0, 0, 0, 1694, 1697, 1, 0, 0, 0, 1695, 1693, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1699, 1, 0, 0, 0, 1697, 1695, 1, 0, 0, 0, 1698, 1688, 1, 0, 0, 0, 1698, 1699, 1, 0, 0, 0, 1699, 1709, 1, 0, 0, 0, 1700, 1701, 5, 169, 0, 0, 1701, 1706, 3, 96, 48, 0, 1702, 1703, 5, 3, 0, 0, 1703, 1705, 3, 96, 48, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1710, 1, 0, 0, 0, 1708, 1706, 1, 0, 0, 0, 1709, 1700, 1, 0, 0, 0, 1709, 1710, 1, 0, 0, 0, 1710, 1712, 1, 0, 0, 0, 1711, 1713, 3, 98, 49, 0, 1712, 1711, 1, 0, 0, 0, 1712, 1713, 1, 0, 0, 0, 1713, 1717, 1, 0, 0, 0, 1714, 1715, 5, 21, 0, 0, 1715, 1716, 5, 164, 0, 0, 1716, 1718, 3, 102, 51, 0, 1717, 1714, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 1720, 1, 0, 0, 0, 1719, 1721, 7, 13, 0, 0, 1720, 1719, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1723, 5, 207, 0, 0, 1723, 1724, 5, 1, 0, 0, 1724, 1725, 3, 210, 105, 0, 1725, 1735, 5, 2, 0, 0, 1726, 1727, 5, 258, 0, 0, 1727, 1732, 3, 104, 52, 0, 1728, 1729, 5, 3, 0, 0, 1729, 1731, 3, 104, 52, 0, 1730, 1728, 1, 0, 0, 0, 1731, 1734, 1, 0, 0, 0, 1732, 1730, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, 1, 0, 0, 0, 1735, 1726, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1738, 5, 72, 0, 0, 1738, 1743, 3, 106, 53, 0, 1739, 1740, 5, 3, 0, 0, 1740, 1742, 3, 106, 53, 0, 1741, 1739, 1, 0, 0, 0, 1742, 1745, 1, 0, 0, 0, 1743, 1741, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1746, 1, 0, 0, 0, 1745, 1743, 1, 0, 0, 0, 1746, 1754, 5, 2, 0, 0, 1747, 1749, 5, 28, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1752, 3, 302, 151, 0, 1751, 1753, 3, 114, 57, 0, 1752, 1751, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1755, 1, 0, 0, 0, 1754, 1748, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1757, 1, 0, 0, 0, 1756, 1681, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 95, 1, 0, 0, 0, 1758, 1759, 3, 142, 71, 0, 1759, 1760, 5, 28, 0, 0, 1760, 1761, 3, 302, 151, 0, 1761, 97, 1, 0, 0, 0, 1762, 1763, 5, 192, 0, 0, 1763, 1764, 5, 240, 0, 0, 1764, 1765, 5, 208, 0, 0, 1765, 1774, 5, 164, 0, 0, 1766, 1767, 5, 22, 0, 0, 1767, 1768, 5, 241, 0, 0, 1768, 1769, 5, 208, 0, 0, 1769, 1771, 5, 164, 0, 0, 1770, 1772, 3, 100, 50, 0, 1771, 1770, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1774, 1, 0, 0, 0, 1773, 1762, 1, 0, 0, 0, 1773, 1766, 1, 0, 0, 0, 1774, 99, 1, 0, 0, 0, 1775, 1776, 5, 254, 0, 0, 1776, 1777, 5, 86, 0, 0, 1777, 1785, 5, 166, 0, 0, 1778, 1779, 5, 190, 0, 0, 1779, 1780, 5, 86, 0, 0, 1780, 1785, 5, 166, 0, 0, 1781, 1782, 5, 305, 0, 0, 1782, 1783, 5, 285, 0, 0, 1783, 1785, 5, 241, 0, 0, 1784, 1775, 1, 0, 0, 0, 1784, 1778, 1, 0, 0, 0, 1784, 1781, 1, 0, 0, 0, 1785, 101, 1, 0, 0, 0, 1786, 1787, 5, 5, 0, 0, 1787, 1788, 5, 270, 0, 0, 1788, 1789, 5, 175, 0, 0, 1789, 1806, 5, 240, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1792, 5, 205, 0, 0, 1792, 1793, 5, 149, 0, 0, 1793, 1806, 5, 240, 0, 0, 1794, 1795, 5, 5, 0, 0, 1795, 1796, 5, 270, 0, 0, 1796, 1797, 5, 102, 0, 0, 1797, 1806, 3, 302, 151, 0, 1798, 1799, 5, 5, 0, 0, 1799, 1800, 5, 270, 0, 0, 1800, 1801, 5, 149, 0, 0, 1801, 1806, 3, 302, 151, 0, 1802, 1803, 5, 5, 0, 0, 1803, 1804, 5, 270, 0, 0, 1804, 1806, 3, 302, 151, 0, 1805, 1786, 1, 0, 0, 0, 1805, 1790, 1, 0, 0, 0, 1805, 1794, 1, 0, 0, 0, 1805, 1798, 1, 0, 0, 0, 1805, 1802, 1, 0, 0, 0, 1806, 103, 1, 0, 0, 0, 1807, 1808, 3, 302, 151, 0, 1808, 1809, 5, 313, 0, 0, 1809, 1810, 5, 1, 0, 0, 1810, 1815, 3, 302, 151, 0, 1811, 1812, 5, 3, 0, 0, 1812, 1814, 3, 302, 151, 0, 1813, 1811, 1, 0, 0, 0, 1814, 1817, 1, 0, 0, 0, 1815, 1813, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1818, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1818, 1819, 5, 2, 0, 0, 1819, 105, 1, 0, 0, 0, 1820, 1821, 3, 302, 151, 0, 1821, 1822, 5, 28, 0, 0, 1822, 1823, 3, 142, 71, 0, 1823, 107, 1, 0, 0, 0, 1824, 1832, 3, 116, 58, 0, 1825, 1827, 5, 28, 0, 0, 1826, 1825, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1830, 3, 302, 151, 0, 1829, 1831, 3, 114, 57, 0, 1830, 1829, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1833, 1, 0, 0, 0, 1832, 1826, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 109, 1, 0, 0, 0, 1834, 1835, 5, 1, 0, 0, 1835, 1840, 3, 286, 143, 0, 1836, 1837, 5, 3, 0, 0, 1837, 1839, 3, 286, 143, 0, 1838, 1836, 1, 0, 0, 0, 1839, 1842, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1843, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1843, 1844, 5, 2, 0, 0, 1844, 111, 1, 0, 0, 0, 1845, 1846, 5, 1, 0, 0, 1846, 1851, 3, 282, 141, 0, 1847, 1848, 5, 3, 0, 0, 1848, 1850, 3, 282, 141, 0, 1849, 1847, 1, 0, 0, 0, 1850, 1853, 1, 0, 0, 0, 1851, 1849, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1854, 1, 0, 0, 0, 1853, 1851, 1, 0, 0, 0, 1854, 1855, 5, 2, 0, 0, 1855, 113, 1, 0, 0, 0, 1856, 1857, 5, 1, 0, 0, 1857, 1862, 3, 302, 151, 0, 1858, 1859, 5, 3, 0, 0, 1859, 1861, 3, 302, 151, 0, 1860, 1858, 1, 0, 0, 0, 1861, 1864, 1, 0, 0, 0, 1862, 1860, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 1865, 1, 0, 0, 0, 1864, 1862, 1, 0, 0, 0, 1865, 1866, 5, 2, 0, 0, 1866, 115, 1, 0, 0, 0, 1867, 1869, 3, 260, 130, 0, 1868, 1870, 3, 290, 145, 0, 1869, 1868, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1939, 1, 0, 0, 0, 1871, 1872, 5, 1, 0, 0, 1872, 1873, 3, 22, 11, 0, 1873, 1874, 5, 2, 0, 0, 1874, 1939, 1, 0, 0, 0, 1875, 1876, 5, 286, 0, 0, 1876, 1877, 5, 1, 0, 0, 1877, 1882, 3, 142, 71, 0, 1878, 1879, 5, 3, 0, 0, 1879, 1881, 3, 142, 71, 0, 1880, 1878, 1, 0, 0, 0, 1881, 1884, 1, 0, 0, 0, 1882, 1880, 1, 0, 0, 0, 1882, 1883, 1, 0, 0, 0, 1883, 1885, 1, 0, 0, 0, 1884, 1882, 1, 0, 0, 0, 1885, 1888, 5, 2, 0, 0, 1886, 1887, 5, 305, 0, 0, 1887, 1889, 5, 197, 0, 0, 1888, 1886, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 1939, 1, 0, 0, 0, 1890, 1891, 5, 150, 0, 0, 1891, 1892, 5, 1, 0, 0, 1892, 1893, 3, 22, 11, 0, 1893, 1894, 5, 2, 0, 0, 1894, 1939, 1, 0, 0, 0, 1895, 1896, 5, 261, 0, 0, 1896, 1897, 5, 1, 0, 0, 1897, 1898, 3, 128, 64, 0, 1898, 1899, 5, 2, 0, 0, 1899, 1939, 1, 0, 0, 0, 1900, 1901, 5, 1, 0, 0, 1901, 1902, 3, 78, 39, 0, 1902, 1903, 5, 2, 0, 0, 1903, 1939, 1, 0, 0, 0, 1904, 1905, 5, 143, 0, 0, 1905, 1906, 5, 1, 0, 0, 1906, 1907, 3, 152, 76, 0, 1907, 1908, 5, 46, 0, 0, 1908, 1909, 5, 1, 0, 0, 1909, 1914, 3, 118, 59, 0, 1910, 1911, 5, 3, 0, 0, 1911, 1913, 3, 118, 59, 0, 1912, 1910, 1, 0, 0, 0, 1913, 1916, 1, 0, 0, 0, 1914, 1912, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1917, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1917, 1929, 5, 2, 0, 0, 1918, 1919, 5, 211, 0, 0, 1919, 1920, 5, 1, 0, 0, 1920, 1921, 3, 120, 60, 0, 1921, 1922, 5, 2, 0, 0, 1922, 1930, 1, 0, 0, 0, 1923, 1924, 5, 211, 0, 0, 1924, 1925, 5, 71, 0, 0, 1925, 1926, 5, 1, 0, 0, 1926, 1927, 3, 126, 63, 0, 1927, 1928, 5, 2, 0, 0, 1928, 1930, 1, 0, 0, 0, 1929, 1918, 1, 0, 0, 0, 1929, 1923, 1, 0, 0, 0, 1929, 1930, 1, 0, 0, 0, 1930, 1934, 1, 0, 0, 0, 1931, 1932, 7, 14, 0, 0, 1932, 1933, 5, 191, 0, 0, 1933, 1935, 5, 90, 0, 0, 1934, 1931, 1, 0, 0, 0, 1934, 1935, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1937, 5, 2, 0, 0, 1937, 1939, 1, 0, 0, 0, 1938, 1867, 1, 0, 0, 0, 1938, 1871, 1, 0, 0, 0, 1938, 1875, 1, 0, 0, 0, 1938, 1890, 1, 0, 0, 0, 1938, 1895, 1, 0, 0, 0, 1938, 1900, 1, 0, 0, 0, 1938, 1904, 1, 0, 0, 0, 1939, 117, 1, 0, 0, 0, 1940, 1941, 3, 302, 151, 0, 1941, 1942, 5, 104, 0, 0, 1942, 1943, 5, 197, 0, 0, 1943, 2018, 1, 0, 0, 0, 1944, 1945, 3, 302, 151, 0, 1945, 1948, 3, 190, 95, 0, 1946, 1947, 5, 206, 0, 0, 1947, 1949, 3, 174, 87, 0, 1948, 1946, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 1954, 1, 0, 0, 0, 1950, 1951, 3, 162, 81, 0, 1951, 1952, 5, 191, 0, 0, 1952, 1953, 5, 86, 0, 0, 1953, 1955, 1, 0, 0, 0, 1954, 1950, 1, 0, 0, 0, 1954, 1955, 1, 0, 0, 0, 1955, 1960, 1, 0, 0, 0, 1956, 1957, 3, 162, 81, 0, 1957, 1958, 5, 191, 0, 0, 1958, 1959, 5, 90, 0, 0, 1959, 1961, 1, 0, 0, 0, 1960, 1956, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 2018, 1, 0, 0, 0, 1962, 1963, 3, 302, 151, 0, 1963, 1964, 3, 190, 95, 0, 1964, 1965, 5, 105, 0, 0, 1965, 1968, 3, 156, 78, 0, 1966, 1967, 5, 206, 0, 0, 1967, 1969, 3, 174, 87, 0, 1968, 1966, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 1973, 1, 0, 0, 0, 1970, 1971, 3, 164, 82, 0, 1971, 1972, 5, 309, 0, 0, 1972, 1974, 1, 0, 0, 0, 1973, 1970, 1, 0, 0, 0, 1973, 1974, 1, 0, 0, 0, 1974, 1982, 1, 0, 0, 0, 1975, 1976, 7, 15, 0, 0, 1976, 1980, 5, 219, 0, 0, 1977, 1978, 5, 191, 0, 0, 1978, 1979, 5, 243, 0, 0, 1979, 1981, 5, 265, 0, 0, 1980, 1977, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 1983, 1, 0, 0, 0, 1982, 1975, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 1988, 1, 0, 0, 0, 1984, 1985, 3, 166, 83, 0, 1985, 1986, 5, 191, 0, 0, 1986, 1987, 5, 86, 0, 0, 1987, 1989, 1, 0, 0, 0, 1988, 1984, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1994, 1, 0, 0, 0, 1990, 1991, 3, 166, 83, 0, 1991, 1992, 5, 191, 0, 0, 1992, 1993, 5, 90, 0, 0, 1993, 1995, 1, 0, 0, 0, 1994, 1990, 1, 0, 0, 0, 1994, 1995, 1, 0, 0, 0, 1995, 2018, 1, 0, 0, 0, 1996, 1998, 5, 174, 0, 0, 1997, 1999, 5, 206, 0, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2000, 1, 0, 0, 0, 2000, 2003, 3, 174, 87, 0, 2001, 2002, 5, 28, 0, 0, 2002, 2004, 3, 302, 151, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 2005, 1, 0, 0, 0, 2005, 2006, 5, 46, 0, 0, 2006, 2007, 5, 1, 0, 0, 2007, 2012, 3, 118, 59, 0, 2008, 2009, 5, 3, 0, 0, 2009, 2011, 3, 118, 59, 0, 2010, 2008, 1, 0, 0, 0, 2011, 2014, 1, 0, 0, 0, 2012, 2010, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2015, 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2015, 2016, 5, 2, 0, 0, 2016, 2018, 1, 0, 0, 0, 2017, 1940, 1, 0, 0, 0, 2017, 1944, 1, 0, 0, 0, 2017, 1962, 1, 0, 0, 0, 2017, 1996, 1, 0, 0, 0, 2018, 119, 1, 0, 0, 0, 2019, 2045, 3, 122, 61, 0, 2020, 2021, 3, 122, 61, 0, 2021, 2022, 7, 16, 0, 0, 2022, 2023, 3, 124, 62, 0, 2023, 2045, 1, 0, 0, 0, 2024, 2025, 3, 124, 62, 0, 2025, 2026, 5, 282, 0, 0, 2026, 2031, 3, 124, 62, 0, 2027, 2028, 5, 282, 0, 0, 2028, 2030, 3, 124, 62, 0, 2029, 2027, 1, 0, 0, 0, 2030, 2033, 1, 0, 0, 0, 2031, 2029, 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 2045, 1, 0, 0, 0, 2033, 2031, 1, 0, 0, 0, 2034, 2035, 3, 124, 62, 0, 2035, 2036, 5, 55, 0, 0, 2036, 2041, 3, 124, 62, 0, 2037, 2038, 5, 55, 0, 0, 2038, 2040, 3, 124, 62, 0, 2039, 2037, 1, 0, 0, 0, 2040, 2043, 1, 0, 0, 0, 2041, 2039, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2045, 1, 0, 0, 0, 2043, 2041, 1, 0, 0, 0, 2044, 2019, 1, 0, 0, 0, 2044, 2020, 1, 0, 0, 0, 2044, 2024, 1, 0, 0, 0, 2044, 2034, 1, 0, 0, 0, 2045, 121, 1, 0, 0, 0, 2046, 2047, 3, 302, 151, 0, 2047, 123, 1, 0, 0, 0, 2048, 2054, 3, 122, 61, 0, 2049, 2050, 5, 1, 0, 0, 2050, 2051, 3, 120, 60, 0, 2051, 2052, 5, 2, 0, 0, 2052, 2054, 1, 0, 0, 0, 2053, 2048, 1, 0, 0, 0, 2053, 2049, 1, 0, 0, 0, 2054, 125, 1, 0, 0, 0, 2055, 2058, 7, 16, 0, 0, 2056, 2057, 5, 3, 0, 0, 2057, 2059, 7, 17, 0, 0, 2058, 2056, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 2066, 1, 0, 0, 0, 2060, 2063, 7, 17, 0, 0, 2061, 2062, 5, 3, 0, 0, 2062, 2064, 7, 16, 0, 0, 2063, 2061, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2066, 1, 0, 0, 0, 2065, 2055, 1, 0, 0, 0, 2065, 2060, 1, 0, 0, 0, 2066, 127, 1, 0, 0, 0, 2067, 2068, 3, 278, 139, 0, 2068, 2077, 5, 1, 0, 0, 2069, 2074, 3, 130, 65, 0, 2070, 2071, 5, 3, 0, 0, 2071, 2073, 3, 130, 65, 0, 2072, 2070, 1, 0, 0, 0, 2073, 2076, 1, 0, 0, 0, 2074, 2072, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2078, 1, 0, 0, 0, 2076, 2074, 1, 0, 0, 0, 2077, 2069, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2088, 1, 0, 0, 0, 2079, 2080, 5, 53, 0, 0, 2080, 2085, 3, 140, 70, 0, 2081, 2082, 5, 3, 0, 0, 2082, 2084, 3, 140, 70, 0, 2083, 2081, 1, 0, 0, 0, 2084, 2087, 1, 0, 0, 0, 2085, 2083, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2089, 1, 0, 0, 0, 2087, 2085, 1, 0, 0, 0, 2088, 2079, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2090, 1, 0, 0, 0, 2090, 2091, 5, 2, 0, 0, 2091, 129, 1, 0, 0, 0, 2092, 2093, 3, 302, 151, 0, 2093, 2094, 5, 6, 0, 0, 2094, 2096, 1, 0, 0, 0, 2095, 2092, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 2100, 1, 0, 0, 0, 2097, 2101, 3, 132, 66, 0, 2098, 2101, 3, 136, 68, 0, 2099, 2101, 3, 142, 71, 0, 2100, 2097, 1, 0, 0, 0, 2100, 2098, 1, 0, 0, 0, 2100, 2099, 1, 0, 0, 0, 2101, 131, 1, 0, 0, 0, 2102, 2113, 3, 134, 67, 0, 2103, 2104, 5, 202, 0, 0, 2104, 2111, 5, 36, 0, 0, 2105, 2107, 5, 1, 0, 0, 2106, 2108, 3, 60, 30, 0, 2107, 2106, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2112, 5, 2, 0, 0, 2110, 2112, 3, 142, 71, 0, 2111, 2105, 1, 0, 0, 0, 2111, 2110, 1, 0, 0, 0, 2112, 2114, 1, 0, 0, 0, 2113, 2103, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2121, 1, 0, 0, 0, 2115, 2116, 5, 218, 0, 0, 2116, 2117, 5, 301, 0, 0, 2117, 2122, 5, 86, 0, 0, 2118, 2119, 5, 145, 0, 0, 2119, 2120, 5, 301, 0, 0, 2120, 2122, 5, 86, 0, 0, 2121, 2115, 1, 0, 0, 0, 2121, 2118, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2139, 1, 0, 0, 0, 2123, 2124, 5, 196, 0, 0, 2124, 2137, 5, 36, 0, 0, 2125, 2126, 5, 1, 0, 0, 2126, 2131, 3, 50, 25, 0, 2127, 2128, 5, 3, 0, 0, 2128, 2130, 3, 50, 25, 0, 2129, 2127, 1, 0, 0, 0, 2130, 2133, 1, 0, 0, 0, 2131, 2129, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2134, 1, 0, 0, 0, 2133, 2131, 1, 0, 0, 0, 2134, 2135, 5, 2, 0, 0, 2135, 2138, 1, 0, 0, 0, 2136, 2138, 3, 50, 25, 0, 2137, 2125, 1, 0, 0, 0, 2137, 2136, 1, 0, 0, 0, 2138, 2140, 1, 0, 0, 0, 2139, 2123, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 133, 1, 0, 0, 0, 2141, 2142, 5, 261, 0, 0, 2142, 2143, 5, 1, 0, 0, 2143, 2144, 3, 262, 131, 0, 2144, 2152, 5, 2, 0, 0, 2145, 2147, 5, 28, 0, 0, 2146, 2145, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2150, 3, 302, 151, 0, 2149, 2151, 3, 114, 57, 0, 2150, 2149, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2153, 1, 0, 0, 0, 2152, 2146, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2168, 1, 0, 0, 0, 2154, 2155, 5, 261, 0, 0, 2155, 2156, 5, 1, 0, 0, 2156, 2157, 3, 22, 11, 0, 2157, 2165, 5, 2, 0, 0, 2158, 2160, 5, 28, 0, 0, 2159, 2158, 1, 0, 0, 0, 2159, 2160, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2163, 3, 302, 151, 0, 2162, 2164, 3, 114, 57, 0, 2163, 2162, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2166, 1, 0, 0, 0, 2165, 2159, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2168, 1, 0, 0, 0, 2167, 2141, 1, 0, 0, 0, 2167, 2154, 1, 0, 0, 0, 2168, 135, 1, 0, 0, 0, 2169, 2170, 5, 78, 0, 0, 2170, 2171, 5, 1, 0, 0, 2171, 2176, 3, 138, 69, 0, 2172, 2173, 5, 3, 0, 0, 2173, 2175, 3, 138, 69, 0, 2174, 2172, 1, 0, 0, 0, 2175, 2178, 1, 0, 0, 0, 2176, 2174, 1, 0, 0, 0, 2176, 2177, 1, 0, 0, 0, 2177, 2179, 1, 0, 0, 0, 2178, 2176, 1, 0, 0, 0, 2179, 2180, 5, 2, 0, 0, 2180, 2188, 1, 0, 0, 0, 2181, 2182, 5, 41, 0, 0, 2182, 2183, 5, 1, 0, 0, 2183, 2184, 5, 184, 0, 0, 2184, 2185, 5, 28, 0, 0, 2185, 2186, 5, 78, 0, 0, 2186, 2188, 5, 2, 0, 0, 2187, 2169, 1, 0, 0, 0, 2187, 2181, 1, 0, 0, 0, 2188, 137, 1, 0, 0, 0, 2189, 2191, 3, 302, 151, 0, 2190, 2192, 3, 190, 95, 0, 2191, 2190, 1, 0, 0, 0, 2191, 2192, 1, 0, 0, 0, 2192, 139, 1, 0, 0, 0, 2193, 2194, 5, 1, 0, 0, 2194, 2195, 3, 288, 144, 0, 2195, 2196, 5, 3, 0, 0, 2196, 2201, 3, 288, 144, 0, 2197, 2198, 5, 3, 0, 0, 2198, 2200, 3, 288, 144, 0, 2199, 2197, 1, 0, 0, 0, 2200, 2203, 1, 0, 0, 0, 2201, 2199, 1, 0, 0, 0, 2201, 2202, 1, 0, 0, 0, 2202, 2204, 1, 0, 0, 0, 2203, 2201, 1, 0, 0, 0, 2204, 2205, 5, 2, 0, 0, 2205, 141, 1, 0, 0, 0, 2206, 2207, 3, 144, 72, 0, 2207, 143, 1, 0, 0, 0, 2208, 2209, 6, 72, -1, 0, 2209, 2211, 3, 148, 74, 0, 2210, 2212, 3, 146, 73, 0, 2211, 2210, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, 2216, 1, 0, 0, 0, 2213, 2214, 5, 183, 0, 0, 2214, 2216, 3, 144, 72, 3, 2215, 2208, 1, 0, 0, 0, 2215, 2213, 1, 0, 0, 0, 2216, 2225, 1, 0, 0, 0, 2217, 2218, 10, 2, 0, 0, 2218, 2219, 5, 25, 0, 0, 2219, 2224, 3, 144, 72, 3, 2220, 2221, 10, 1, 0, 0, 2221, 2222, 5, 195, 0, 0, 2222, 2224, 3, 144, 72, 2, 2223, 2217, 1, 0, 0, 0, 2223, 2220, 1, 0, 0, 0, 2224, 2227, 1, 0, 0, 0, 2225, 2223, 1, 0, 0, 0, 2225, 2226, 1, 0, 0, 0, 2226, 145, 1, 0, 0, 0, 2227, 2225, 1, 0, 0, 0, 2228, 2229, 3, 178, 89, 0, 2229, 2230, 3, 148, 74, 0, 2230, 2290, 1, 0, 0, 0, 2231, 2232, 3, 178, 89, 0, 2232, 2233, 3, 180, 90, 0, 2233, 2234, 5, 1, 0, 0, 2234, 2235, 3, 22, 11, 0, 2235, 2236, 5, 2, 0, 0, 2236, 2290, 1, 0, 0, 0, 2237, 2239, 5, 183, 0, 0, 2238, 2237, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 2240, 1, 0, 0, 0, 2240, 2241, 5, 34, 0, 0, 2241, 2242, 3, 148, 74, 0, 2242, 2243, 5, 25, 0, 0, 2243, 2244, 3, 148, 74, 0, 2244, 2290, 1, 0, 0, 0, 2245, 2247, 5, 183, 0, 0, 2246, 2245, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2249, 5, 123, 0, 0, 2249, 2250, 5, 1, 0, 0, 2250, 2255, 3, 142, 71, 0, 2251, 2252, 5, 3, 0, 0, 2252, 2254, 3, 142, 71, 0, 2253, 2251, 1, 0, 0, 0, 2254, 2257, 1, 0, 0, 0, 2255, 2253, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2258, 1, 0, 0, 0, 2257, 2255, 1, 0, 0, 0, 2258, 2259, 5, 2, 0, 0, 2259, 2290, 1, 0, 0, 0, 2260, 2262, 5, 183, 0, 0, 2261, 2260, 1, 0, 0, 0, 2261, 2262, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 2264, 5, 123, 0, 0, 2264, 2265, 5, 1, 0, 0, 2265, 2266, 3, 22, 11, 0, 2266, 2267, 5, 2, 0, 0, 2267, 2290, 1, 0, 0, 0, 2268, 2270, 5, 183, 0, 0, 2269, 2268, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2271, 1, 0, 0, 0, 2271, 2272, 5, 155, 0, 0, 2272, 2275, 3, 148, 74, 0, 2273, 2274, 5, 91, 0, 0, 2274, 2276, 3, 148, 74, 0, 2275, 2273, 1, 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2290, 1, 0, 0, 0, 2277, 2279, 5, 134, 0, 0, 2278, 2280, 5, 183, 0, 0, 2279, 2278, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2281, 1, 0, 0, 0, 2281, 2290, 5, 184, 0, 0, 2282, 2284, 5, 134, 0, 0, 2283, 2285, 5, 183, 0, 0, 2284, 2283, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2286, 1, 0, 0, 0, 2286, 2287, 5, 80, 0, 0, 2287, 2288, 5, 106, 0, 0, 2288, 2290, 3, 148, 74, 0, 2289, 2228, 1, 0, 0, 0, 2289, 2231, 1, 0, 0, 0, 2289, 2238, 1, 0, 0, 0, 2289, 2246, 1, 0, 0, 0, 2289, 2261, 1, 0, 0, 0, 2289, 2269, 1, 0, 0, 0, 2289, 2277, 1, 0, 0, 0, 2289, 2282, 1, 0, 0, 0, 2290, 147, 1, 0, 0, 0, 2291, 2292, 6, 74, -1, 0, 2292, 2296, 3, 150, 75, 0, 2293, 2294, 7, 18, 0, 0, 2294, 2296, 3, 148, 74, 4, 2295, 2291, 1, 0, 0, 0, 2295, 2293, 1, 0, 0, 0, 2296, 2311, 1, 0, 0, 0, 2297, 2298, 10, 3, 0, 0, 2298, 2299, 7, 19, 0, 0, 2299, 2310, 3, 148, 74, 4, 2300, 2301, 10, 2, 0, 0, 2301, 2302, 7, 18, 0, 0, 2302, 2310, 3, 148, 74, 3, 2303, 2304, 10, 1, 0, 0, 2304, 2305, 5, 324, 0, 0, 2305, 2310, 3, 148, 74, 2, 2306, 2307, 10, 5, 0, 0, 2307, 2308, 5, 30, 0, 0, 2308, 2310, 3, 176, 88, 0, 2309, 2297, 1, 0, 0, 0, 2309, 2300, 1, 0, 0, 0, 2309, 2303, 1, 0, 0, 0, 2309, 2306, 1, 0, 0, 0, 2310, 2313, 1, 0, 0, 0, 2311, 2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 149, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2314, 2315, 6, 75, -1, 0, 2315, 2780, 5, 184, 0, 0, 2316, 2780, 3, 184, 92, 0, 2317, 2318, 3, 302, 151, 0, 2318, 2319, 3, 174, 87, 0, 2319, 2780, 1, 0, 0, 0, 2320, 2321, 5, 83, 0, 0, 2321, 2322, 5, 214, 0, 0, 2322, 2780, 3, 174, 87, 0, 2323, 2780, 3, 304, 152, 0, 2324, 2780, 3, 182, 91, 0, 2325, 2780, 3, 174, 87, 0, 2326, 2780, 5, 329, 0, 0, 2327, 2780, 5, 325, 0, 0, 2328, 2329, 5, 212, 0, 0, 2329, 2330, 5, 1, 0, 0, 2330, 2331, 3, 148, 74, 0, 2331, 2332, 5, 123, 0, 0, 2332, 2333, 3, 148, 74, 0, 2333, 2334, 5, 2, 0, 0, 2334, 2780, 1, 0, 0, 0, 2335, 2336, 5, 1, 0, 0, 2336, 2339, 3, 142, 71, 0, 2337, 2338, 5, 3, 0, 0, 2338, 2340, 3, 142, 71, 0, 2339, 2337, 1, 0, 0, 0, 2340, 2341, 1, 0, 0, 0, 2341, 2339, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2344, 5, 2, 0, 0, 2344, 2780, 1, 0, 0, 0, 2345, 2346, 5, 240, 0, 0, 2346, 2347, 5, 1, 0, 0, 2347, 2352, 3, 142, 71, 0, 2348, 2349, 5, 3, 0, 0, 2349, 2351, 3, 142, 71, 0, 2350, 2348, 1, 0, 0, 0, 2351, 2354, 1, 0, 0, 0, 2352, 2350, 1, 0, 0, 0, 2352, 2353, 1, 0, 0, 0, 2353, 2355, 1, 0, 0, 0, 2354, 2352, 1, 0, 0, 0, 2355, 2356, 5, 2, 0, 0, 2356, 2780, 1, 0, 0, 0, 2357, 2358, 5, 157, 0, 0, 2358, 2360, 5, 1, 0, 0, 2359, 2361, 3, 74, 37, 0, 2360, 2359, 1, 0, 0, 0, 2360, 2361, 1, 0, 0, 0, 2361, 2362, 1, 0, 0, 0, 2362, 2365, 3, 142, 71, 0, 2363, 2364, 5, 3, 0, 0, 2364, 2366, 3, 174, 87, 0, 2365, 2363, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2370, 1, 0, 0, 0, 2367, 2368, 5, 191, 0, 0, 2368, 2369, 5, 201, 0, 0, 2369, 2371, 3, 90, 45, 0, 2370, 2367, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2373, 5, 2, 0, 0, 2373, 2374, 5, 306, 0, 0, 2374, 2375, 5, 115, 0, 0, 2375, 2376, 5, 1, 0, 0, 2376, 2377, 5, 196, 0, 0, 2377, 2378, 5, 36, 0, 0, 2378, 2383, 3, 50, 25, 0, 2379, 2380, 5, 3, 0, 0, 2380, 2382, 3, 50, 25, 0, 2381, 2379, 1, 0, 0, 0, 2382, 2385, 1, 0, 0, 0, 2383, 2381, 1, 0, 0, 0, 2383, 2384, 1, 0, 0, 0, 2384, 2386, 1, 0, 0, 0, 2385, 2383, 1, 0, 0, 0, 2386, 2387, 5, 2, 0, 0, 2387, 2389, 1, 0, 0, 0, 2388, 2390, 3, 198, 99, 0, 2389, 2388, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 2780, 1, 0, 0, 0, 2391, 2393, 3, 170, 85, 0, 2392, 2391, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2395, 3, 278, 139, 0, 2395, 2399, 5, 1, 0, 0, 2396, 2397, 3, 302, 151, 0, 2397, 2398, 5, 4, 0, 0, 2398, 2400, 1, 0, 0, 0, 2399, 2396, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2401, 1, 0, 0, 0, 2401, 2402, 5, 321, 0, 0, 2402, 2404, 5, 2, 0, 0, 2403, 2405, 3, 198, 99, 0, 2404, 2403, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2407, 1, 0, 0, 0, 2406, 2408, 3, 202, 101, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2780, 1, 0, 0, 0, 2409, 2411, 3, 170, 85, 0, 2410, 2409, 1, 0, 0, 0, 2410, 2411, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2413, 3, 278, 139, 0, 2413, 2425, 5, 1, 0, 0, 2414, 2416, 3, 74, 37, 0, 2415, 2414, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2422, 3, 142, 71, 0, 2418, 2419, 5, 3, 0, 0, 2419, 2421, 3, 142, 71, 0, 2420, 2418, 1, 0, 0, 0, 2421, 2424, 1, 0, 0, 0, 2422, 2420, 1, 0, 0, 0, 2422, 2423, 1, 0, 0, 0, 2423, 2426, 1, 0, 0, 0, 2424, 2422, 1, 0, 0, 0, 2425, 2415, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2437, 1, 0, 0, 0, 2427, 2428, 5, 196, 0, 0, 2428, 2429, 5, 36, 0, 0, 2429, 2434, 3, 50, 25, 0, 2430, 2431, 5, 3, 0, 0, 2431, 2433, 3, 50, 25, 0, 2432, 2430, 1, 0, 0, 0, 2433, 2436, 1, 0, 0, 0, 2434, 2432, 1, 0, 0, 0, 2434, 2435, 1, 0, 0, 0, 2435, 2438, 1, 0, 0, 0, 2436, 2434, 1, 0, 0, 0, 2437, 2427, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2439, 1, 0, 0, 0, 2439, 2441, 5, 2, 0, 0, 2440, 2442, 3, 198, 99, 0, 2441, 2440, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2447, 1, 0, 0, 0, 2443, 2445, 3, 172, 86, 0, 2444, 2443, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2448, 3, 202, 101, 0, 2447, 2444, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2780, 1, 0, 0, 0, 2449, 2450, 3, 302, 151, 0, 2450, 2451, 3, 202, 101, 0, 2451, 2780, 1, 0, 0, 0, 2452, 2453, 3, 302, 151, 0, 2453, 2454, 5, 7, 0, 0, 2454, 2455, 3, 142, 71, 0, 2455, 2780, 1, 0, 0, 0, 2456, 2465, 5, 1, 0, 0, 2457, 2462, 3, 302, 151, 0, 2458, 2459, 5, 3, 0, 0, 2459, 2461, 3, 302, 151, 0, 2460, 2458, 1, 0, 0, 0, 2461, 2464, 1, 0, 0, 0, 2462, 2460, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2466, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2465, 2457, 1, 0, 0, 0, 2465, 2466, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2468, 5, 2, 0, 0, 2468, 2469, 5, 7, 0, 0, 2469, 2780, 3, 142, 71, 0, 2470, 2471, 5, 1, 0, 0, 2471, 2472, 3, 22, 11, 0, 2472, 2473, 5, 2, 0, 0, 2473, 2780, 1, 0, 0, 0, 2474, 2475, 5, 95, 0, 0, 2475, 2476, 5, 1, 0, 0, 2476, 2477, 3, 22, 11, 0, 2477, 2478, 5, 2, 0, 0, 2478, 2780, 1, 0, 0, 0, 2479, 2480, 5, 40, 0, 0, 2480, 2482, 3, 142, 71, 0, 2481, 2483, 3, 196, 98, 0, 2482, 2481, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2482, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2488, 1, 0, 0, 0, 2486, 2487, 5, 85, 0, 0, 2487, 2489, 3, 142, 71, 0, 2488, 2486, 1, 0, 0, 0, 2488, 2489, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 2491, 5, 89, 0, 0, 2491, 2780, 1, 0, 0, 0, 2492, 2494, 5, 40, 0, 0, 2493, 2495, 3, 196, 98, 0, 2494, 2493, 1, 0, 0, 0, 2495, 2496, 1, 0, 0, 0, 2496, 2494, 1, 0, 0, 0, 2496, 2497, 1, 0, 0, 0, 2497, 2500, 1, 0, 0, 0, 2498, 2499, 5, 85, 0, 0, 2499, 2501, 3, 142, 71, 0, 2500, 2498, 1, 0, 0, 0, 2500, 2501, 1, 0, 0, 0, 2501, 2502, 1, 0, 0, 0, 2502, 2503, 5, 89, 0, 0, 2503, 2780, 1, 0, 0, 0, 2504, 2505, 5, 41, 0, 0, 2505, 2506, 5, 1, 0, 0, 2506, 2507, 3, 142, 71, 0, 2507, 2508, 5, 28, 0, 0, 2508, 2509, 3, 190, 95, 0, 2509, 2510, 5, 2, 0, 0, 2510, 2780, 1, 0, 0, 0, 2511, 2512, 5, 276, 0, 0, 2512, 2513, 5, 1, 0, 0, 2513, 2514, 3, 142, 71, 0, 2514, 2515, 5, 28, 0, 0, 2515, 2516, 3, 190, 95, 0, 2516, 2517, 5, 2, 0, 0, 2517, 2780, 1, 0, 0, 0, 2518, 2519, 5, 27, 0, 0, 2519, 2528, 5, 8, 0, 0, 2520, 2525, 3, 142, 71, 0, 2521, 2522, 5, 3, 0, 0, 2522, 2524, 3, 142, 71, 0, 2523, 2521, 1, 0, 0, 0, 2524, 2527, 1, 0, 0, 0, 2525, 2523, 1, 0, 0, 0, 2525, 2526, 1, 0, 0, 0, 2526, 2529, 1, 0, 0, 0, 2527, 2525, 1, 0, 0, 0, 2528, 2520, 1, 0, 0, 0, 2528, 2529, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2780, 5, 9, 0, 0, 2531, 2780, 3, 284, 142, 0, 2532, 2780, 5, 59, 0, 0, 2533, 2537, 5, 63, 0, 0, 2534, 2535, 5, 1, 0, 0, 2535, 2536, 5, 330, 0, 0, 2536, 2538, 5, 2, 0, 0, 2537, 2534, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2780, 1, 0, 0, 0, 2539, 2543, 5, 64, 0, 0, 2540, 2541, 5, 1, 0, 0, 2541, 2542, 5, 330, 0, 0, 2542, 2544, 5, 2, 0, 0, 2543, 2540, 1, 0, 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2780, 1, 0, 0, 0, 2545, 2549, 5, 159, 0, 0, 2546, 2547, 5, 1, 0, 0, 2547, 2548, 5, 330, 0, 0, 2548, 2550, 5, 2, 0, 0, 2549, 2546, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2780, 1, 0, 0, 0, 2551, 2555, 5, 160, 0, 0, 2552, 2553, 5, 1, 0, 0, 2553, 2554, 5, 330, 0, 0, 2554, 2556, 5, 2, 0, 0, 2555, 2552, 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 2780, 1, 0, 0, 0, 2557, 2780, 5, 65, 0, 0, 2558, 2780, 5, 58, 0, 0, 2559, 2780, 5, 62, 0, 0, 2560, 2780, 5, 60, 0, 0, 2561, 2562, 5, 273, 0, 0, 2562, 2570, 5, 1, 0, 0, 2563, 2565, 3, 88, 44, 0, 2564, 2563, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, 1, 0, 0, 0, 2566, 2568, 3, 148, 74, 0, 2567, 2566, 1, 0, 0, 0, 2567, 2568, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2571, 5, 106, 0, 0, 2570, 2564, 1, 0, 0, 0, 2570, 2571, 1, 0, 0, 0, 2571, 2572, 1, 0, 0, 0, 2572, 2573, 3, 148, 74, 0, 2573, 2574, 5, 2, 0, 0, 2574, 2780, 1, 0, 0, 0, 2575, 2576, 5, 273, 0, 0, 2576, 2577, 5, 1, 0, 0, 2577, 2578, 3, 148, 74, 0, 2578, 2579, 5, 3, 0, 0, 2579, 2580, 3, 148, 74, 0, 2580, 2581, 5, 2, 0, 0, 2581, 2780, 1, 0, 0, 0, 2582, 2583, 5, 259, 0, 0, 2583, 2584, 5, 1, 0, 0, 2584, 2585, 3, 148, 74, 0, 2585, 2586, 5, 106, 0, 0, 2586, 2589, 3, 148, 74, 0, 2587, 2588, 5, 104, 0, 0, 2588, 2590, 3, 148, 74, 0, 2589, 2587, 1, 0, 0, 0, 2589, 2590, 1, 0, 0, 0, 2590, 2591, 1, 0, 0, 0, 2591, 2592, 5, 2, 0, 0, 2592, 2780, 1, 0, 0, 0, 2593, 2594, 5, 182, 0, 0, 2594, 2595, 5, 1, 0, 0, 2595, 2598, 3, 148, 74, 0, 2596, 2597, 5, 3, 0, 0, 2597, 2599, 3, 188, 94, 0, 2598, 2596, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2601, 5, 2, 0, 0, 2601, 2780, 1, 0, 0, 0, 2602, 2603, 5, 97, 0, 0, 2603, 2604, 5, 1, 0, 0, 2604, 2605, 3, 302, 151, 0, 2605, 2606, 5, 106, 0, 0, 2606, 2607, 3, 148, 74, 0, 2607, 2608, 5, 2, 0, 0, 2608, 2780, 1, 0, 0, 0, 2609, 2610, 5, 44, 0, 0, 2610, 2611, 5, 1, 0, 0, 2611, 2616, 3, 142, 71, 0, 2612, 2613, 5, 3, 0, 0, 2613, 2615, 3, 142, 71, 0, 2614, 2612, 1, 0, 0, 0, 2615, 2618, 1, 0, 0, 0, 2616, 2614, 1, 0, 0, 0, 2616, 2617, 1, 0, 0, 0, 2617, 2619, 1, 0, 0, 0, 2618, 2616, 1, 0, 0, 0, 2619, 2620, 5, 2, 0, 0, 2620, 2780, 1, 0, 0, 0, 2621, 2622, 5, 1, 0, 0, 2622, 2623, 3, 142, 71, 0, 2623, 2624, 5, 2, 0, 0, 2624, 2780, 1, 0, 0, 0, 2625, 2626, 5, 116, 0, 0, 2626, 2635, 5, 1, 0, 0, 2627, 2632, 3, 288, 144, 0, 2628, 2629, 5, 3, 0, 0, 2629, 2631, 3, 288, 144, 0, 2630, 2628, 1, 0, 0, 0, 2631, 2634, 1, 0, 0, 0, 2632, 2630, 1, 0, 0, 0, 2632, 2633, 1, 0, 0, 0, 2633, 2636, 1, 0, 0, 0, 2634, 2632, 1, 0, 0, 0, 2635, 2627, 1, 0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2780, 5, 2, 0, 0, 2638, 2639, 5, 140, 0, 0, 2639, 2640, 5, 1, 0, 0, 2640, 2645, 3, 152, 76, 0, 2641, 2642, 3, 160, 80, 0, 2642, 2643, 5, 191, 0, 0, 2643, 2644, 5, 90, 0, 0, 2644, 2646, 1, 0, 0, 0, 2645, 2641, 1, 0, 0, 0, 2645, 2646, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2648, 5, 2, 0, 0, 2648, 2780, 1, 0, 0, 0, 2649, 2650, 5, 144, 0, 0, 2650, 2651, 5, 1, 0, 0, 2651, 2654, 3, 152, 76, 0, 2652, 2653, 5, 232, 0, 0, 2653, 2655, 3, 190, 95, 0, 2654, 2652, 1, 0, 0, 0, 2654, 2655, 1, 0, 0, 0, 2655, 2660, 1, 0, 0, 0, 2656, 2657, 3, 162, 81, 0, 2657, 2658, 5, 191, 0, 0, 2658, 2659, 5, 86, 0, 0, 2659, 2661, 1, 0, 0, 0, 2660, 2656, 1, 0, 0, 0, 2660, 2661, 1, 0, 0, 0, 2661, 2666, 1, 0, 0, 0, 2662, 2663, 3, 162, 81, 0, 2663, 2664, 5, 191, 0, 0, 2664, 2665, 5, 90, 0, 0, 2665, 2667, 1, 0, 0, 0, 2666, 2662, 1, 0, 0, 0, 2666, 2667, 1, 0, 0, 0, 2667, 2668, 1, 0, 0, 0, 2668, 2669, 5, 2, 0, 0, 2669, 2780, 1, 0, 0, 0, 2670, 2671, 5, 142, 0, 0, 2671, 2672, 5, 1, 0, 0, 2672, 2679, 3, 152, 76, 0, 2673, 2674, 5, 232, 0, 0, 2674, 2677, 3, 190, 95, 0, 2675, 2676, 5, 105, 0, 0, 2676, 2678, 3, 156, 78, 0, 2677, 2675, 1, 0, 0, 0, 2677, 2678, 1, 0, 0, 0, 2678, 2680, 1, 0, 0, 0, 2679, 2673, 1, 0, 0, 0, 2679, 2680, 1, 0, 0, 0, 2680, 2684, 1, 0, 0, 0, 2681, 2682, 3, 164, 82, 0, 2682, 2683, 5, 309, 0, 0, 2683, 2685, 1, 0, 0, 0, 2684, 2681, 1, 0, 0, 0, 2684, 2685, 1, 0, 0, 0, 2685, 2693, 1, 0, 0, 0, 2686, 2687, 7, 15, 0, 0, 2687, 2691, 5, 219, 0, 0, 2688, 2689, 5, 191, 0, 0, 2689, 2690, 5, 243, 0, 0, 2690, 2692, 5, 265, 0, 0, 2691, 2688, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2694, 1, 0, 0, 0, 2693, 2686, 1, 0, 0, 0, 2693, 2694, 1, 0, 0, 0, 2694, 2699, 1, 0, 0, 0, 2695, 2696, 3, 166, 83, 0, 2696, 2697, 5, 191, 0, 0, 2697, 2698, 5, 86, 0, 0, 2698, 2700, 1, 0, 0, 0, 2699, 2695, 1, 0, 0, 0, 2699, 2700, 1, 0, 0, 0, 2700, 2705, 1, 0, 0, 0, 2701, 2702, 3, 166, 83, 0, 2702, 2703, 5, 191, 0, 0, 2703, 2704, 5, 90, 0, 0, 2704, 2706, 1, 0, 0, 0, 2705, 2701, 1, 0, 0, 0, 2705, 2706, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 2708, 5, 2, 0, 0, 2708, 2780, 1, 0, 0, 0, 2709, 2710, 5, 141, 0, 0, 2710, 2739, 5, 1, 0, 0, 2711, 2716, 3, 168, 84, 0, 2712, 2713, 5, 3, 0, 0, 2713, 2715, 3, 168, 84, 0, 2714, 2712, 1, 0, 0, 0, 2715, 2718, 1, 0, 0, 0, 2716, 2714, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2725, 1, 0, 0, 0, 2718, 2716, 1, 0, 0, 0, 2719, 2720, 5, 184, 0, 0, 2720, 2721, 5, 191, 0, 0, 2721, 2726, 5, 184, 0, 0, 2722, 2723, 5, 18, 0, 0, 2723, 2724, 5, 191, 0, 0, 2724, 2726, 5, 184, 0, 0, 2725, 2719, 1, 0, 0, 0, 2725, 2722, 1, 0, 0, 0, 2725, 2726, 1, 0, 0, 0, 2726, 2737, 1, 0, 0, 0, 2727, 2728, 5, 305, 0, 0, 2728, 2730, 5, 283, 0, 0, 2729, 2731, 5, 147, 0, 0, 2730, 2729, 1, 0, 0, 0, 2730, 2731, 1, 0, 0, 0, 2731, 2738, 1, 0, 0, 0, 2732, 2733, 5, 307, 0, 0, 2733, 2735, 5, 283, 0, 0, 2734, 2736, 5, 147, 0, 0, 2735, 2734, 1, 0, 0, 0, 2735, 2736, 1, 0, 0, 0, 2736, 2738, 1, 0, 0, 0, 2737, 2727, 1, 0, 0, 0, 2737, 2732, 1, 0, 0, 0, 2737, 2738, 1, 0, 0, 0, 2738, 2740, 1, 0, 0, 0, 2739, 2711, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, 2747, 1, 0, 0, 0, 2741, 2742, 5, 232, 0, 0, 2742, 2745, 3, 190, 95, 0, 2743, 2744, 5, 105, 0, 0, 2744, 2746, 3, 156, 78, 0, 2745, 2743, 1, 0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 2748, 1, 0, 0, 0, 2747, 2741, 1, 0, 0, 0, 2747, 2748, 1, 0, 0, 0, 2748, 2749, 1, 0, 0, 0, 2749, 2780, 5, 2, 0, 0, 2750, 2751, 5, 139, 0, 0, 2751, 2768, 5, 1, 0, 0, 2752, 2757, 3, 154, 77, 0, 2753, 2754, 5, 3, 0, 0, 2754, 2756, 3, 154, 77, 0, 2755, 2753, 1, 0, 0, 0, 2756, 2759, 1, 0, 0, 0, 2757, 2755, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2766, 1, 0, 0, 0, 2759, 2757, 1, 0, 0, 0, 2760, 2761, 5, 184, 0, 0, 2761, 2762, 5, 191, 0, 0, 2762, 2767, 5, 184, 0, 0, 2763, 2764, 5, 18, 0, 0, 2764, 2765, 5, 191, 0, 0, 2765, 2767, 5, 184, 0, 0, 2766, 2760, 1, 0, 0, 0, 2766, 2763, 1, 0, 0, 0, 2766, 2767, 1, 0, 0, 0, 2767, 2769, 1, 0, 0, 0, 2768, 2752, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2776, 1, 0, 0, 0, 2770, 2771, 5, 232, 0, 0, 2771, 2774, 3, 190, 95, 0, 2772, 2773, 5, 105, 0, 0, 2773, 2775, 3, 156, 78, 0, 2774, 2772, 1, 0, 0, 0, 2774, 2775, 1, 0, 0, 0, 2775, 2777, 1, 0, 0, 0, 2776, 2770, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2778, 1, 0, 0, 0, 2778, 2780, 5, 2, 0, 0, 2779, 2314, 1, 0, 0, 0, 2779, 2316, 1, 0, 0, 0, 2779, 2317, 1, 0, 0, 0, 2779, 2320, 1, 0, 0, 0, 2779, 2323, 1, 0, 0, 0, 2779, 2324, 1, 0, 0, 0, 2779, 2325, 1, 0, 0, 0, 2779, 2326, 1, 0, 0, 0, 2779, 2327, 1, 0, 0, 0, 2779, 2328, 1, 0, 0, 0, 2779, 2335, 1, 0, 0, 0, 2779, 2345, 1, 0, 0, 0, 2779, 2357, 1, 0, 0, 0, 2779, 2392, 1, 0, 0, 0, 2779, 2410, 1, 0, 0, 0, 2779, 2449, 1, 0, 0, 0, 2779, 2452, 1, 0, 0, 0, 2779, 2456, 1, 0, 0, 0, 2779, 2470, 1, 0, 0, 0, 2779, 2474, 1, 0, 0, 0, 2779, 2479, 1, 0, 0, 0, 2779, 2492, 1, 0, 0, 0, 2779, 2504, 1, 0, 0, 0, 2779, 2511, 1, 0, 0, 0, 2779, 2518, 1, 0, 0, 0, 2779, 2531, 1, 0, 0, 0, 2779, 2532, 1, 0, 0, 0, 2779, 2533, 1, 0, 0, 0, 2779, 2539, 1, 0, 0, 0, 2779, 2545, 1, 0, 0, 0, 2779, 2551, 1, 0, 0, 0, 2779, 2557, 1, 0, 0, 0, 2779, 2558, 1, 0, 0, 0, 2779, 2559, 1, 0, 0, 0, 2779, 2560, 1, 0, 0, 0, 2779, 2561, 1, 0, 0, 0, 2779, 2575, 1, 0, 0, 0, 2779, 2582, 1, 0, 0, 0, 2779, 2593, 1, 0, 0, 0, 2779, 2602, 1, 0, 0, 0, 2779, 2609, 1, 0, 0, 0, 2779, 2621, 1, 0, 0, 0, 2779, 2625, 1, 0, 0, 0, 2779, 2638, 1, 0, 0, 0, 2779, 2649, 1, 0, 0, 0, 2779, 2670, 1, 0, 0, 0, 2779, 2709, 1, 0, 0, 0, 2779, 2750, 1, 0, 0, 0, 2780, 2791, 1, 0, 0, 0, 2781, 2782, 10, 25, 0, 0, 2782, 2783, 5, 8, 0, 0, 2783, 2784, 3, 148, 74, 0, 2784, 2785, 5, 9, 0, 0, 2785, 2790, 1, 0, 0, 0, 2786, 2787, 10, 23, 0, 0, 2787, 2788, 5, 4, 0, 0, 2788, 2790, 3, 302, 151, 0, 2789, 2781, 1, 0, 0, 0, 2789, 2786, 1, 0, 0, 0, 2790, 2793, 1, 0, 0, 0, 2791, 2789, 1, 0, 0, 0, 2791, 2792, 1, 0, 0, 0, 2792, 151, 1, 0, 0, 0, 2793, 2791, 1, 0, 0, 0, 2794, 2795, 3, 154, 77, 0, 2795, 2796, 5, 3, 0, 0, 2796, 2799, 3, 174, 87, 0, 2797, 2798, 5, 28, 0, 0, 2798, 2800, 3, 302, 151, 0, 2799, 2797, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2810, 1, 0, 0, 0, 2801, 2802, 5, 204, 0, 0, 2802, 2807, 3, 158, 79, 0, 2803, 2804, 5, 3, 0, 0, 2804, 2806, 3, 158, 79, 0, 2805, 2803, 1, 0, 0, 0, 2806, 2809, 1, 0, 0, 0, 2807, 2805, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2811, 1, 0, 0, 0, 2809, 2807, 1, 0, 0, 0, 2810, 2801, 1, 0, 0, 0, 2810, 2811, 1, 0, 0, 0, 2811, 153, 1, 0, 0, 0, 2812, 2815, 3, 142, 71, 0, 2813, 2814, 5, 105, 0, 0, 2814, 2816, 3, 156, 78, 0, 2815, 2813, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 155, 1, 0, 0, 0, 2817, 2820, 5, 138, 0, 0, 2818, 2819, 5, 88, 0, 0, 2819, 2821, 7, 20, 0, 0, 2820, 2818, 1, 0, 0, 0, 2820, 2821, 1, 0, 0, 0, 2821, 157, 1, 0, 0, 0, 2822, 2823, 3, 154, 77, 0, 2823, 2824, 5, 28, 0, 0, 2824, 2825, 3, 302, 151, 0, 2825, 159, 1, 0, 0, 0, 2826, 2827, 7, 21, 0, 0, 2827, 161, 1, 0, 0, 0, 2828, 2833, 5, 90, 0, 0, 2829, 2833, 5, 184, 0, 0, 2830, 2831, 5, 71, 0, 0, 2831, 2833, 3, 142, 71, 0, 2832, 2828, 1, 0, 0, 0, 2832, 2829, 1, 0, 0, 0, 2832, 2830, 1, 0, 0, 0, 2833, 163, 1, 0, 0, 0, 2834, 2836, 5, 307, 0, 0, 2835, 2837, 5, 27, 0, 0, 2836, 2835, 1, 0, 0, 0, 2836, 2837, 1, 0, 0, 0, 2837, 2846, 1, 0, 0, 0, 2838, 2840, 5, 305, 0, 0, 2839, 2841, 7, 22, 0, 0, 2840, 2839, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 2843, 1, 0, 0, 0, 2842, 2844, 5, 27, 0, 0, 2843, 2842, 1, 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 2846, 1, 0, 0, 0, 2845, 2834, 1, 0, 0, 0, 2845, 2838, 1, 0, 0, 0, 2846, 165, 1, 0, 0, 0, 2847, 2854, 5, 90, 0, 0, 2848, 2854, 5, 184, 0, 0, 2849, 2850, 5, 86, 0, 0, 2850, 2854, 5, 27, 0, 0, 2851, 2852, 5, 86, 0, 0, 2852, 2854, 5, 187, 0, 0, 2853, 2847, 1, 0, 0, 0, 2853, 2848, 1, 0, 0, 0, 2853, 2849, 1, 0, 0, 0, 2853, 2851, 1, 0, 0, 0, 2854, 167, 1, 0, 0, 0, 2855, 2857, 5, 146, 0, 0, 2856, 2855, 1, 0, 0, 0, 2856, 2857, 1, 0, 0, 0, 2857, 2858, 1, 0, 0, 0, 2858, 2859, 3, 142, 71, 0, 2859, 2860, 5, 296, 0, 0, 2860, 2861, 3, 154, 77, 0, 2861, 2867, 1, 0, 0, 0, 2862, 2863, 3, 142, 71, 0, 2863, 2864, 5, 10, 0, 0, 2864, 2865, 3, 154, 77, 0, 2865, 2867, 1, 0, 0, 0, 2866, 2856, 1, 0, 0, 0, 2866, 2862, 1, 0, 0, 0, 2867, 169, 1, 0, 0, 0, 2868, 2869, 7, 23, 0, 0, 2869, 171, 1, 0, 0, 0, 2870, 2871, 5, 121, 0, 0, 2871, 2875, 5, 186, 0, 0, 2872, 2873, 5, 229, 0, 0, 2873, 2875, 5, 186, 0, 0, 2874, 2870, 1, 0, 0, 0, 2874, 2872, 1, 0, 0, 0, 2875, 173, 1, 0, 0, 0, 2876, 2883, 5, 327, 0, 0, 2877, 2880, 5, 328, 0, 0, 2878, 2879, 5, 278, 0, 0, 2879, 2881, 5, 327, 0, 0, 2880, 2878, 1, 0, 0, 0, 2880, 2881, 1, 0, 0, 0, 2881, 2883, 1, 0, 0, 0, 2882, 2876, 1, 0, 0, 0, 2882, 2877, 1, 0, 0, 0, 2883, 175, 1, 0, 0, 0, 2884, 2885, 5, 268, 0, 0, 2885, 2886, 5, 312, 0, 0, 2886, 2891, 3, 184, 92, 0, 2887, 2888, 5, 268, 0, 0, 2888, 2889, 5, 312, 0, 0, 2889, 2891, 3, 174, 87, 0, 2890, 2884, 1, 0, 0, 0, 2890, 2887, 1, 0, 0, 0, 2891, 177, 1, 0, 0, 0, 2892, 2893, 7, 24, 0, 0, 2893, 179, 1, 0, 0, 0, 2894, 2895, 7, 25, 0, 0, 2895, 181, 1, 0, 0, 0, 2896, 2897, 7, 26, 0, 0, 2897, 183, 1, 0, 0, 0, 2898, 2900, 5, 130, 0, 0, 2899, 2901, 7, 18, 0, 0, 2900, 2899, 1, 0, 0, 0, 2900, 2901, 1, 0, 0, 0, 2901, 2902, 1, 0, 0, 0, 2902, 2903, 3, 174, 87, 0, 2903, 2906, 3, 186, 93, 0, 2904, 2905, 5, 270, 0, 0, 2905, 2907, 3, 186, 93, 0, 2906, 2904, 1, 0, 0, 0, 2906, 2907, 1, 0, 0, 0, 2907, 185, 1, 0, 0, 0, 2908, 2909, 7, 27, 0, 0, 2909, 187, 1, 0, 0, 0, 2910, 2911, 7, 28, 0, 0, 2911, 189, 1, 0, 0, 0, 2912, 2913, 6, 95, -1, 0, 2913, 2914, 5, 240, 0, 0, 2914, 2915, 5, 1, 0, 0, 2915, 2920, 3, 192, 96, 0, 2916, 2917, 5, 3, 0, 0, 2917, 2919, 3, 192, 96, 0, 2918, 2916, 1, 0, 0, 0, 2919, 2922, 1, 0, 0, 0, 2920, 2918, 1, 0, 0, 0, 2920, 2921, 1, 0, 0, 0, 2921, 2923, 1, 0, 0, 0, 2922, 2920, 1, 0, 0, 0, 2923, 2924, 5, 2, 0, 0, 2924, 2984, 1, 0, 0, 0, 2925, 2926, 5, 130, 0, 0, 2926, 2929, 3, 186, 93, 0, 2927, 2928, 5, 270, 0, 0, 2928, 2930, 3, 186, 93, 0, 2929, 2927, 1, 0, 0, 0, 2929, 2930, 1, 0, 0, 0, 2930, 2984, 1, 0, 0, 0, 2931, 2936, 5, 269, 0, 0, 2932, 2933, 5, 1, 0, 0, 2933, 2934, 3, 194, 97, 0, 2934, 2935, 5, 2, 0, 0, 2935, 2937, 1, 0, 0, 0, 2936, 2932, 1, 0, 0, 0, 2936, 2937, 1, 0, 0, 0, 2937, 2941, 1, 0, 0, 0, 2938, 2939, 7, 29, 0, 0, 2939, 2940, 5, 268, 0, 0, 2940, 2942, 5, 312, 0, 0, 2941, 2938, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2984, 1, 0, 0, 0, 2943, 2948, 5, 268, 0, 0, 2944, 2945, 5, 1, 0, 0, 2945, 2946, 3, 194, 97, 0, 2946, 2947, 5, 2, 0, 0, 2947, 2949, 1, 0, 0, 0, 2948, 2944, 1, 0, 0, 0, 2948, 2949, 1, 0, 0, 0, 2949, 2953, 1, 0, 0, 0, 2950, 2951, 7, 29, 0, 0, 2951, 2952, 5, 268, 0, 0, 2952, 2954, 5, 312, 0, 0, 2953, 2950, 1, 0, 0, 0, 2953, 2954, 1, 0, 0, 0, 2954, 2984, 1, 0, 0, 0, 2955, 2956, 5, 83, 0, 0, 2956, 2984, 5, 214, 0, 0, 2957, 2958, 5, 27, 0, 0, 2958, 2959, 5, 315, 0, 0, 2959, 2960, 3, 190, 95, 0, 2960, 2961, 5, 317, 0, 0, 2961, 2984, 1, 0, 0, 0, 2962, 2963, 5, 163, 0, 0, 2963, 2964, 5, 315, 0, 0, 2964, 2965, 3, 190, 95, 0, 2965, 2966, 5, 3, 0, 0, 2966, 2967, 3, 190, 95, 0, 2967, 2968, 5, 317, 0, 0, 2968, 2984, 1, 0, 0, 0, 2969, 2981, 3, 302, 151, 0, 2970, 2971, 5, 1, 0, 0, 2971, 2976, 3, 194, 97, 0, 2972, 2973, 5, 3, 0, 0, 2973, 2975, 3, 194, 97, 0, 2974, 2972, 1, 0, 0, 0, 2975, 2978, 1, 0, 0, 0, 2976, 2974, 1, 0, 0, 0, 2976, 2977, 1, 0, 0, 0, 2977, 2979, 1, 0, 0, 0, 2978, 2976, 1, 0, 0, 0, 2979, 2980, 5, 2, 0, 0, 2980, 2982, 1, 0, 0, 0, 2981, 2970, 1, 0, 0, 0, 2981, 2982, 1, 0, 0, 0, 2982, 2984, 1, 0, 0, 0, 2983, 2912, 1, 0, 0, 0, 2983, 2925, 1, 0, 0, 0, 2983, 2931, 1, 0, 0, 0, 2983, 2943, 1, 0, 0, 0, 2983, 2955, 1, 0, 0, 0, 2983, 2957, 1, 0, 0, 0, 2983, 2962, 1, 0, 0, 0, 2983, 2969, 1, 0, 0, 0, 2984, 2994, 1, 0, 0, 0, 2985, 2986, 10, 2, 0, 0, 2986, 2990, 5, 27, 0, 0, 2987, 2988, 5, 8, 0, 0, 2988, 2989, 5, 330, 0, 0, 2989, 2991, 5, 9, 0, 0, 2990, 2987, 1, 0, 0, 0, 2990, 2991, 1, 0, 0, 0, 2991, 2993, 1, 0, 0, 0, 2992, 2985, 1, 0, 0, 0, 2993, 2996, 1, 0, 0, 0, 2994, 2992, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 191, 1, 0, 0, 0, 2996, 2994, 1, 0, 0, 0, 2997, 3002, 3, 190, 95, 0, 2998, 2999, 3, 302, 151, 0, 2999, 3000, 3, 190, 95, 0, 3000, 3002, 1, 0, 0, 0, 3001, 2997, 1, 0, 0, 0, 3001, 2998, 1, 0, 0, 0, 3002, 193, 1, 0, 0, 0, 3003, 3006, 5, 330, 0, 0, 3004, 3006, 3, 190, 95, 0, 3005, 3003, 1, 0, 0, 0, 3005, 3004, 1, 0, 0, 0, 3006, 195, 1, 0, 0, 0, 3007, 3008, 5, 301, 0, 0, 3008, 3009, 3, 142, 71, 0, 3009, 3010, 5, 266, 0, 0, 3010, 3011, 3, 142, 71, 0, 3011, 197, 1, 0, 0, 0, 3012, 3013, 5, 100, 0, 0, 3013, 3014, 5, 1, 0, 0, 3014, 3015, 3, 54, 27, 0, 3015, 3016, 5, 2, 0, 0, 3016, 199, 1, 0, 0, 0, 3017, 3018, 5, 301, 0, 0, 3018, 3021, 5, 165, 0, 0, 3019, 3020, 5, 25, 0, 0, 3020, 3022, 3, 142, 71, 0, 3021, 3019, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3023, 1, 0, 0, 0, 3023, 3024, 5, 266, 0, 0, 3024, 3025, 5, 288, 0, 0, 3025, 3026, 5, 252, 0, 0, 3026, 3027, 3, 302, 151, 0, 3027, 3028, 5, 313, 0, 0, 3028, 3036, 3, 142, 71, 0, 3029, 3030, 5, 3, 0, 0, 3030, 3031, 3, 302, 151, 0, 3031, 3032, 5, 313, 0, 0, 3032, 3033, 3, 142, 71, 0, 3033, 3035, 1, 0, 0, 0, 3034, 3029, 1, 0, 0, 0, 3035, 3038, 1, 0, 0, 0, 3036, 3034, 1, 0, 0, 0, 3036, 3037, 1, 0, 0, 0, 3037, 3082, 1, 0, 0, 0, 3038, 3036, 1, 0, 0, 0, 3039, 3040, 5, 301, 0, 0, 3040, 3043, 5, 165, 0, 0, 3041, 3042, 5, 25, 0, 0, 3042, 3044, 3, 142, 71, 0, 3043, 3041, 1, 0, 0, 0, 3043, 3044, 1, 0, 0, 0, 3044, 3045, 1, 0, 0, 0, 3045, 3046, 5, 266, 0, 0, 3046, 3082, 5, 74, 0, 0, 3047, 3048, 5, 301, 0, 0, 3048, 3049, 5, 183, 0, 0, 3049, 3052, 5, 165, 0, 0, 3050, 3051, 5, 25, 0, 0, 3051, 3053, 3, 142, 71, 0, 3052, 3050, 1, 0, 0, 0, 3052, 3053, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, 3054, 3055, 5, 266, 0, 0, 3055, 3067, 5, 128, 0, 0, 3056, 3057, 5, 1, 0, 0, 3057, 3062, 3, 302, 151, 0, 3058, 3059, 5, 3, 0, 0, 3059, 3061, 3, 302, 151, 0, 3060, 3058, 1, 0, 0, 0, 3061, 3064, 1, 0, 0, 0, 3062, 3060, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 3065, 1, 0, 0, 0, 3064, 3062, 1, 0, 0, 0, 3065, 3066, 5, 2, 0, 0, 3066, 3068, 1, 0, 0, 0, 3067, 3056, 1, 0, 0, 0, 3067, 3068, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3070, 5, 297, 0, 0, 3070, 3071, 5, 1, 0, 0, 3071, 3076, 3, 142, 71, 0, 3072, 3073, 5, 3, 0, 0, 3073, 3075, 3, 142, 71, 0, 3074, 3072, 1, 0, 0, 0, 3075, 3078, 1, 0, 0, 0, 3076, 3074, 1, 0, 0, 0, 3076, 3077, 1, 0, 0, 0, 3077, 3079, 1, 0, 0, 0, 3078, 3076, 1, 0, 0, 0, 3079, 3080, 5, 2, 0, 0, 3080, 3082, 1, 0, 0, 0, 3081, 3017, 1, 0, 0, 0, 3081, 3039, 1, 0, 0, 0, 3081, 3047, 1, 0, 0, 0, 3082, 201, 1, 0, 0, 0, 3083, 3089, 5, 200, 0, 0, 3084, 3090, 3, 302, 151, 0, 3085, 3086, 5, 1, 0, 0, 3086, 3087, 3, 70, 35, 0, 3087, 3088, 5, 2, 0, 0, 3088, 3090, 1, 0, 0, 0, 3089, 3084, 1, 0, 0, 0, 3089, 3085, 1, 0, 0, 0, 3090, 203, 1, 0, 0, 0, 3091, 3092, 5, 169, 0, 0, 3092, 3097, 3, 96, 48, 0, 3093, 3094, 5, 3, 0, 0, 3094, 3096, 3, 96, 48, 0, 3095, 3093, 1, 0, 0, 0, 3096, 3099, 1, 0, 0, 0, 3097, 3095, 1, 0, 0, 0, 3097, 3098, 1, 0, 0, 0, 3098, 3101, 1, 0, 0, 0, 3099, 3097, 1, 0, 0, 0, 3100, 3091, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3106, 3, 206, 103, 0, 3103, 3104, 5, 21, 0, 0, 3104, 3105, 5, 164, 0, 0, 3105, 3107, 3, 102, 51, 0, 3106, 3103, 1, 0, 0, 0, 3106, 3107, 1, 0, 0, 0, 3107, 3109, 1, 0, 0, 0, 3108, 3110, 7, 13, 0, 0, 3109, 3108, 1, 0, 0, 0, 3109, 3110, 1, 0, 0, 0, 3110, 3116, 1, 0, 0, 0, 3111, 3112, 5, 207, 0, 0, 3112, 3113, 5, 1, 0, 0, 3113, 3114, 3, 210, 105, 0, 3114, 3115, 5, 2, 0, 0, 3115, 3117, 1, 0, 0, 0, 3116, 3111, 1, 0, 0, 0, 3116, 3117, 1, 0, 0, 0, 3117, 3127, 1, 0, 0, 0, 3118, 3119, 5, 258, 0, 0, 3119, 3124, 3, 104, 52, 0, 3120, 3121, 5, 3, 0, 0, 3121, 3123, 3, 104, 52, 0, 3122, 3120, 1, 0, 0, 0, 3123, 3126, 1, 0, 0, 0, 3124, 3122, 1, 0, 0, 0, 3124, 3125, 1, 0, 0, 0, 3125, 3128, 1, 0, 0, 0, 3126, 3124, 1, 0, 0, 0, 3127, 3118, 1, 0, 0, 0, 3127, 3128, 1, 0, 0, 0, 3128, 3138, 1, 0, 0, 0, 3129, 3130, 5, 72, 0, 0, 3130, 3135, 3, 106, 53, 0, 3131, 3132, 5, 3, 0, 0, 3132, 3134, 3, 106, 53, 0, 3133, 3131, 1, 0, 0, 0, 3134, 3137, 1, 0, 0, 0, 3135, 3133, 1, 0, 0, 0, 3135, 3136, 1, 0, 0, 0, 3136, 3139, 1, 0, 0, 0, 3137, 3135, 1, 0, 0, 0, 3138, 3129, 1, 0, 0, 0, 3138, 3139, 1, 0, 0, 0, 3139, 205, 1, 0, 0, 0, 3140, 3141, 5, 220, 0, 0, 3141, 3165, 3, 208, 104, 0, 3142, 3143, 5, 241, 0, 0, 3143, 3165, 3, 208, 104, 0, 3144, 3145, 5, 117, 0, 0, 3145, 3165, 3, 208, 104, 0, 3146, 3147, 5, 220, 0, 0, 3147, 3148, 5, 34, 0, 0, 3148, 3149, 3, 208, 104, 0, 3149, 3150, 5, 25, 0, 0, 3150, 3151, 3, 208, 104, 0, 3151, 3165, 1, 0, 0, 0, 3152, 3153, 5, 241, 0, 0, 3153, 3154, 5, 34, 0, 0, 3154, 3155, 3, 208, 104, 0, 3155, 3156, 5, 25, 0, 0, 3156, 3157, 3, 208, 104, 0, 3157, 3165, 1, 0, 0, 0, 3158, 3159, 5, 117, 0, 0, 3159, 3160, 5, 34, 0, 0, 3160, 3161, 3, 208, 104, 0, 3161, 3162, 5, 25, 0, 0, 3162, 3163, 3, 208, 104, 0, 3163, 3165, 1, 0, 0, 0, 3164, 3140, 1, 0, 0, 0, 3164, 3142, 1, 0, 0, 0, 3164, 3144, 1, 0, 0, 0, 3164, 3146, 1, 0, 0, 0, 3164, 3152, 1, 0, 0, 0, 3164, 3158, 1, 0, 0, 0, 3165, 207, 1, 0, 0, 0, 3166, 3167, 5, 279, 0, 0, 3167, 3176, 5, 213, 0, 0, 3168, 3169, 5, 279, 0, 0, 3169, 3176, 5, 103, 0, 0, 3170, 3171, 5, 57, 0, 0, 3171, 3176, 5, 240, 0, 0, 3172, 3173, 3, 142, 71, 0, 3173, 3174, 7, 30, 0, 0, 3174, 3176, 1, 0, 0, 0, 3175, 3166, 1, 0, 0, 0, 3175, 3168, 1, 0, 0, 0, 3175, 3170, 1, 0, 0, 0, 3175, 3172, 1, 0, 0, 0, 3176, 209, 1, 0, 0, 0, 3177, 3178, 6, 105, -1, 0, 3178, 3180, 3, 212, 106, 0, 3179, 3181, 3, 214, 107, 0, 3180, 3179, 1, 0, 0, 0, 3180, 3181, 1, 0, 0, 0, 3181, 3189, 1, 0, 0, 0, 3182, 3183, 10, 2, 0, 0, 3183, 3188, 3, 210, 105, 3, 3184, 3185, 10, 1, 0, 0, 3185, 3186, 5, 11, 0, 0, 3186, 3188, 3, 210, 105, 2, 3187, 3182, 1, 0, 0, 0, 3187, 3184, 1, 0, 0, 0, 3188, 3191, 1, 0, 0, 0, 3189, 3187, 1, 0, 0, 0, 3189, 3190, 1, 0, 0, 0, 3190, 211, 1, 0, 0, 0, 3191, 3189, 1, 0, 0, 0, 3192, 3218, 3, 302, 151, 0, 3193, 3194, 5, 1, 0, 0, 3194, 3218, 5, 2, 0, 0, 3195, 3196, 5, 210, 0, 0, 3196, 3197, 5, 1, 0, 0, 3197, 3202, 3, 210, 105, 0, 3198, 3199, 5, 3, 0, 0, 3199, 3201, 3, 210, 105, 0, 3200, 3198, 1, 0, 0, 0, 3201, 3204, 1, 0, 0, 0, 3202, 3200, 1, 0, 0, 0, 3202, 3203, 1, 0, 0, 0, 3203, 3205, 1, 0, 0, 0, 3204, 3202, 1, 0, 0, 0, 3205, 3206, 5, 2, 0, 0, 3206, 3218, 1, 0, 0, 0, 3207, 3208, 5, 1, 0, 0, 3208, 3209, 3, 210, 105, 0, 3209, 3210, 5, 2, 0, 0, 3210, 3218, 1, 0, 0, 0, 3211, 3218, 5, 12, 0, 0, 3212, 3218, 5, 13, 0, 0, 3213, 3214, 5, 14, 0, 0, 3214, 3215, 3, 210, 105, 0, 3215, 3216, 5, 15, 0, 0, 3216, 3218, 1, 0, 0, 0, 3217, 3192, 1, 0, 0, 0, 3217, 3193, 1, 0, 0, 0, 3217, 3195, 1, 0, 0, 0, 3217, 3207, 1, 0, 0, 0, 3217, 3211, 1, 0, 0, 0, 3217, 3212, 1, 0, 0, 0, 3217, 3213, 1, 0, 0, 0, 3218, 213, 1, 0, 0, 0, 3219, 3221, 5, 321, 0, 0, 3220, 3222, 5, 325, 0, 0, 3221, 3220, 1, 0, 0, 0, 3221, 3222, 1, 0, 0, 0, 3222, 3250, 1, 0, 0, 0, 3223, 3225, 5, 319, 0, 0, 3224, 3226, 5, 325, 0, 0, 3225, 3224, 1, 0, 0, 0, 3225, 3226, 1, 0, 0, 0, 3226, 3250, 1, 0, 0, 0, 3227, 3229, 5, 325, 0, 0, 3228, 3230, 5, 325, 0, 0, 3229, 3228, 1, 0, 0, 0, 3229, 3230, 1, 0, 0, 0, 3230, 3250, 1, 0, 0, 0, 3231, 3232, 5, 16, 0, 0, 3232, 3233, 5, 330, 0, 0, 3233, 3235, 5, 17, 0, 0, 3234, 3236, 5, 325, 0, 0, 3235, 3234, 1, 0, 0, 0, 3235, 3236, 1, 0, 0, 0, 3236, 3250, 1, 0, 0, 0, 3237, 3239, 5, 16, 0, 0, 3238, 3240, 5, 330, 0, 0, 3239, 3238, 1, 0, 0, 0, 3239, 3240, 1, 0, 0, 0, 3240, 3241, 1, 0, 0, 0, 3241, 3243, 5, 3, 0, 0, 3242, 3244, 5, 330, 0, 0, 3243, 3242, 1, 0, 0, 0, 3243, 3244, 1, 0, 0, 0, 3244, 3245, 1, 0, 0, 0, 3245, 3247, 5, 17, 0, 0, 3246, 3248, 5, 325, 0, 0, 3247, 3246, 1, 0, 0, 0, 3247, 3248, 1, 0, 0, 0, 3248, 3250, 1, 0, 0, 0, 3249, 3219, 1, 0, 0, 0, 3249, 3223, 1, 0, 0, 0, 3249, 3227, 1, 0, 0, 0, 3249, 3231, 1, 0, 0, 0, 3249, 3237, 1, 0, 0, 0, 3250, 215, 1, 0, 0, 0, 3251, 3252, 3, 302, 151, 0, 3252, 3253, 5, 313, 0, 0, 3253, 3254, 3, 142, 71, 0, 3254, 217, 1, 0, 0, 0, 3255, 3256, 5, 105, 0, 0, 3256, 3260, 7, 31, 0, 0, 3257, 3258, 5, 277, 0, 0, 3258, 3260, 7, 32, 0, 0, 3259, 3255, 1, 0, 0, 0, 3259, 3257, 1, 0, 0, 0, 3260, 219, 1, 0, 0, 0, 3261, 3262, 5, 135, 0, 0, 3262, 3263, 5, 154, 0, 0, 3263, 3267, 3, 222, 111, 0, 3264, 3265, 5, 221, 0, 0, 3265, 3267, 7, 33, 0, 0, 3266, 3261, 1, 0, 0, 0, 3266, 3264, 1, 0, 0, 0, 3267, 221, 1, 0, 0, 0, 3268, 3269, 5, 221, 0, 0, 3269, 3276, 5, 280, 0, 0, 3270, 3271, 5, 221, 0, 0, 3271, 3276, 5, 49, 0, 0, 3272, 3273, 5, 226, 0, 0, 3273, 3276, 5, 221, 0, 0, 3274, 3276, 5, 250, 0, 0, 3275, 3268, 1, 0, 0, 0, 3275, 3270, 1, 0, 0, 0, 3275, 3272, 1, 0, 0, 0, 3275, 3274, 1, 0, 0, 0, 3276, 223, 1, 0, 0, 0, 3277, 3283, 3, 142, 71, 0, 3278, 3279, 3, 302, 151, 0, 3279, 3280, 5, 6, 0, 0, 3280, 3281, 3, 142, 71, 0, 3281, 3283, 1, 0, 0, 0, 3282, 3277, 1, 0, 0, 0, 3282, 3278, 1, 0, 0, 0, 3283, 225, 1, 0, 0, 0, 3284, 3285, 3, 302, 151, 0, 3285, 3286, 5, 4, 0, 0, 3286, 3287, 3, 302, 151, 0, 3287, 3290, 1, 0, 0, 0, 3288, 3290, 3, 302, 151, 0, 3289, 3284, 1, 0, 0, 0, 3289, 3288, 1, 0, 0, 0, 3290, 227, 1, 0, 0, 0, 3291, 3296, 3, 226, 113, 0, 3292, 3293, 5, 3, 0, 0, 3293, 3295, 3, 226, 113, 0, 3294, 3292, 1, 0, 0, 0, 3295, 3298, 1, 0, 0, 0, 3296, 3294, 1, 0, 0, 0, 3296, 3297, 1, 0, 0, 0, 3297, 229, 1, 0, 0, 0, 3298, 3296, 1, 0, 0, 0, 3299, 3300, 5, 108, 0, 0, 3300, 3301, 3, 232, 116, 0, 3301, 3305, 3, 238, 119, 0, 3302, 3304, 3, 240, 120, 0, 3303, 3302, 1, 0, 0, 0, 3304, 3307, 1, 0, 0, 0, 3305, 3303, 1, 0, 0, 0, 3305, 3306, 1, 0, 0, 0, 3306, 3308, 1, 0, 0, 0, 3307, 3305, 1, 0, 0, 0, 3308, 3309, 3, 242, 121, 0, 3309, 231, 1, 0, 0, 0, 3310, 3311, 3, 280, 140, 0, 3311, 3320, 5, 1, 0, 0, 3312, 3317, 3, 236, 118, 0, 3313, 3314, 5, 3, 0, 0, 3314, 3316, 3, 236, 118, 0, 3315, 3313, 1, 0, 0, 0, 3316, 3319, 1, 0, 0, 0, 3317, 3315, 1, 0, 0, 0, 3317, 3318, 1, 0, 0, 0, 3318, 3321, 1, 0, 0, 0, 3319, 3317, 1, 0, 0, 0, 3320, 3312, 1, 0, 0, 0, 3320, 3321, 1, 0, 0, 0, 3321, 3322, 1, 0, 0, 0, 3322, 3323, 5, 2, 0, 0, 3323, 233, 1, 0, 0, 0, 3324, 3325, 3, 278, 139, 0, 3325, 3334, 5, 1, 0, 0, 3326, 3331, 3, 236, 118, 0, 3327, 3328, 5, 3, 0, 0, 3328, 3330, 3, 236, 118, 0, 3329, 3327, 1, 0, 0, 0, 3330, 3333, 1, 0, 0, 0, 3331, 3329, 1, 0, 0, 0, 3331, 3332, 1, 0, 0, 0, 3332, 3335, 1, 0, 0, 0, 3333, 3331, 1, 0, 0, 0, 3334, 3326, 1, 0, 0, 0, 3334, 3335, 1, 0, 0, 0, 3335, 3336, 1, 0, 0, 0, 3336, 3337, 5, 2, 0, 0, 3337, 235, 1, 0, 0, 0, 3338, 3340, 3, 302, 151, 0, 3339, 3338, 1, 0, 0, 0, 3339, 3340, 1, 0, 0, 0, 3340, 3341, 1, 0, 0, 0, 3341, 3342, 3, 190, 95, 0, 3342, 237, 1, 0, 0, 0, 3343, 3344, 5, 233, 0, 0, 3344, 3345, 3, 190, 95, 0, 3345, 239, 1, 0, 0, 0, 3346, 3347, 5, 148, 0, 0, 3347, 3366, 3, 302, 151, 0, 3348, 3350, 5, 183, 0, 0, 3349, 3348, 1, 0, 0, 0, 3349, 3350, 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, 3366, 5, 79, 0, 0, 3352, 3353, 5, 233, 0, 0, 3353, 3354, 5, 184, 0, 0, 3354, 3355, 5, 191, 0, 0, 3355, 3356, 5, 184, 0, 0, 3356, 3366, 5, 127, 0, 0, 3357, 3358, 5, 38, 0, 0, 3358, 3359, 5, 191, 0, 0, 3359, 3360, 5, 184, 0, 0, 3360, 3366, 5, 127, 0, 0, 3361, 3362, 5, 247, 0, 0, 3362, 3366, 7, 1, 0, 0, 3363, 3364, 5, 47, 0, 0, 3364, 3366, 3, 174, 87, 0, 3365, 3346, 1, 0, 0, 0, 3365, 3349, 1, 0, 0, 0, 3365, 3352, 1, 0, 0, 0, 3365, 3357, 1, 0, 0, 0, 3365, 3361, 1, 0, 0, 0, 3365, 3363, 1, 0, 0, 0, 3366, 241, 1, 0, 0, 0, 3367, 3368, 5, 231, 0, 0, 3368, 3467, 3, 148, 74, 0, 3369, 3370, 5, 252, 0, 0, 3370, 3371, 3, 302, 151, 0, 3371, 3372, 5, 313, 0, 0, 3372, 3373, 3, 142, 71, 0, 3373, 3467, 1, 0, 0, 0, 3374, 3375, 5, 40, 0, 0, 3375, 3377, 3, 142, 71, 0, 3376, 3378, 3, 244, 122, 0, 3377, 3376, 1, 0, 0, 0, 3378, 3379, 1, 0, 0, 0, 3379, 3377, 1, 0, 0, 0, 3379, 3380, 1, 0, 0, 0, 3380, 3382, 1, 0, 0, 0, 3381, 3383, 3, 248, 124, 0, 3382, 3381, 1, 0, 0, 0, 3382, 3383, 1, 0, 0, 0, 3383, 3384, 1, 0, 0, 0, 3384, 3385, 5, 89, 0, 0, 3385, 3386, 5, 40, 0, 0, 3386, 3467, 1, 0, 0, 0, 3387, 3389, 5, 40, 0, 0, 3388, 3390, 3, 244, 122, 0, 3389, 3388, 1, 0, 0, 0, 3390, 3391, 1, 0, 0, 0, 3391, 3389, 1, 0, 0, 0, 3391, 3392, 1, 0, 0, 0, 3392, 3394, 1, 0, 0, 0, 3393, 3395, 3, 248, 124, 0, 3394, 3393, 1, 0, 0, 0, 3394, 3395, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 3397, 5, 89, 0, 0, 3397, 3398, 5, 40, 0, 0, 3398, 3467, 1, 0, 0, 0, 3399, 3400, 5, 120, 0, 0, 3400, 3401, 3, 142, 71, 0, 3401, 3402, 5, 266, 0, 0, 3402, 3406, 3, 252, 126, 0, 3403, 3405, 3, 246, 123, 0, 3404, 3403, 1, 0, 0, 0, 3405, 3408, 1, 0, 0, 0, 3406, 3404, 1, 0, 0, 0, 3406, 3407, 1, 0, 0, 0, 3407, 3410, 1, 0, 0, 0, 3408, 3406, 1, 0, 0, 0, 3409, 3411, 3, 248, 124, 0, 3410, 3409, 1, 0, 0, 0, 3410, 3411, 1, 0, 0, 0, 3411, 3412, 1, 0, 0, 0, 3412, 3413, 5, 89, 0, 0, 3413, 3414, 5, 120, 0, 0, 3414, 3467, 1, 0, 0, 0, 3415, 3416, 5, 136, 0, 0, 3416, 3467, 3, 302, 151, 0, 3417, 3418, 5, 152, 0, 0, 3418, 3467, 3, 302, 151, 0, 3419, 3425, 5, 32, 0, 0, 3420, 3421, 3, 250, 125, 0, 3421, 3422, 5, 326, 0, 0, 3422, 3424, 1, 0, 0, 0, 3423, 3420, 1, 0, 0, 0, 3424, 3427, 1, 0, 0, 0, 3425, 3423, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3429, 1, 0, 0, 0, 3427, 3425, 1, 0, 0, 0, 3428, 3430, 3, 252, 126, 0, 3429, 3428, 1, 0, 0, 0, 3429, 3430, 1, 0, 0, 0, 3430, 3431, 1, 0, 0, 0, 3431, 3467, 5, 89, 0, 0, 3432, 3433, 3, 302, 151, 0, 3433, 3434, 5, 10, 0, 0, 3434, 3436, 1, 0, 0, 0, 3435, 3432, 1, 0, 0, 0, 3435, 3436, 1, 0, 0, 0, 3436, 3437, 1, 0, 0, 0, 3437, 3438, 5, 162, 0, 0, 3438, 3439, 3, 252, 126, 0, 3439, 3440, 5, 89, 0, 0, 3440, 3441, 5, 162, 0, 0, 3441, 3467, 1, 0, 0, 0, 3442, 3443, 3, 302, 151, 0, 3443, 3444, 5, 10, 0, 0, 3444, 3446, 1, 0, 0, 0, 3445, 3442, 1, 0, 0, 0, 3445, 3446, 1, 0, 0, 0, 3446, 3447, 1, 0, 0, 0, 3447, 3448, 5, 303, 0, 0, 3448, 3449, 3, 142, 71, 0, 3449, 3450, 5, 82, 0, 0, 3450, 3451, 3, 252, 126, 0, 3451, 3452, 5, 89, 0, 0, 3452, 3453, 5, 303, 0, 0, 3453, 3467, 1, 0, 0, 0, 3454, 3455, 3, 302, 151, 0, 3455, 3456, 5, 10, 0, 0, 3456, 3458, 1, 0, 0, 0, 3457, 3454, 1, 0, 0, 0, 3457, 3458, 1, 0, 0, 0, 3458, 3459, 1, 0, 0, 0, 3459, 3460, 5, 225, 0, 0, 3460, 3461, 3, 252, 126, 0, 3461, 3462, 5, 287, 0, 0, 3462, 3463, 3, 142, 71, 0, 3463, 3464, 5, 89, 0, 0, 3464, 3465, 5, 225, 0, 0, 3465, 3467, 1, 0, 0, 0, 3466, 3367, 1, 0, 0, 0, 3466, 3369, 1, 0, 0, 0, 3466, 3374, 1, 0, 0, 0, 3466, 3387, 1, 0, 0, 0, 3466, 3399, 1, 0, 0, 0, 3466, 3415, 1, 0, 0, 0, 3466, 3417, 1, 0, 0, 0, 3466, 3419, 1, 0, 0, 0, 3466, 3435, 1, 0, 0, 0, 3466, 3445, 1, 0, 0, 0, 3466, 3457, 1, 0, 0, 0, 3467, 243, 1, 0, 0, 0, 3468, 3469, 5, 301, 0, 0, 3469, 3470, 3, 142, 71, 0, 3470, 3471, 5, 266, 0, 0, 3471, 3472, 3, 252, 126, 0, 3472, 245, 1, 0, 0, 0, 3473, 3474, 5, 87, 0, 0, 3474, 3475, 3, 142, 71, 0, 3475, 3476, 5, 266, 0, 0, 3476, 3477, 3, 252, 126, 0, 3477, 247, 1, 0, 0, 0, 3478, 3479, 5, 85, 0, 0, 3479, 3480, 3, 252, 126, 0, 3480, 249, 1, 0, 0, 0, 3481, 3482, 5, 70, 0, 0, 3482, 3487, 3, 302, 151, 0, 3483, 3484, 5, 3, 0, 0, 3484, 3486, 3, 302, 151, 0, 3485, 3483, 1, 0, 0, 0, 3486, 3489, 1, 0, 0, 0, 3487, 3485, 1, 0, 0, 0, 3487, 3488, 1, 0, 0, 0, 3488, 3490, 1, 0, 0, 0, 3489, 3487, 1, 0, 0, 0, 3490, 3493, 3, 190, 95, 0, 3491, 3492, 5, 71, 0, 0, 3492, 3494, 3, 148, 74, 0, 3493, 3491, 1, 0, 0, 0, 3493, 3494, 1, 0, 0, 0, 3494, 251, 1, 0, 0, 0, 3495, 3496, 3, 242, 121, 0, 3496, 3497, 5, 326, 0, 0, 3497, 3499, 1, 0, 0, 0, 3498, 3495, 1, 0, 0, 0, 3499, 3500, 1, 0, 0, 0, 3500, 3498, 1, 0, 0, 0, 3500, 3501, 1, 0, 0, 0, 3501, 253, 1, 0, 0, 0, 3502, 3509, 5, 54, 0, 0, 3503, 3509, 5, 249, 0, 0, 3504, 3509, 5, 74, 0, 0, 3505, 3509, 5, 128, 0, 0, 3506, 3509, 5, 288, 0, 0, 3507, 3509, 3, 302, 151, 0, 3508, 3502, 1, 0, 0, 0, 3508, 3503, 1, 0, 0, 0, 3508, 3504, 1, 0, 0, 0, 3508, 3505, 1, 0, 0, 0, 3508, 3506, 1, 0, 0, 0, 3508, 3507, 1, 0, 0, 0, 3509, 255, 1, 0, 0, 0, 3510, 3514, 5, 261, 0, 0, 3511, 3514, 5, 244, 0, 0, 3512, 3514, 3, 302, 151, 0, 3513, 3510, 1, 0, 0, 0, 3513, 3511, 1, 0, 0, 0, 3513, 3512, 1, 0, 0, 0, 3514, 257, 1, 0, 0, 0, 3515, 3517, 3, 256, 128, 0, 3516, 3515, 1, 0, 0, 0, 3516, 3517, 1, 0, 0, 0, 3517, 3518, 1, 0, 0, 0, 3518, 3519, 3, 288, 144, 0, 3519, 259, 1, 0, 0, 0, 3520, 3523, 3, 262, 131, 0, 3521, 3523, 3, 266, 133, 0, 3522, 3520, 1, 0, 0, 0, 3522, 3521, 1, 0, 0, 0, 3523, 261, 1, 0, 0, 0, 3524, 3536, 3, 302, 151, 0, 3525, 3526, 3, 302, 151, 0, 3526, 3527, 5, 4, 0, 0, 3527, 3528, 3, 302, 151, 0, 3528, 3536, 1, 0, 0, 0, 3529, 3530, 3, 302, 151, 0, 3530, 3531, 5, 4, 0, 0, 3531, 3532, 3, 302, 151, 0, 3532, 3533, 5, 4, 0, 0, 3533, 3534, 3, 302, 151, 0, 3534, 3536, 1, 0, 0, 0, 3535, 3524, 1, 0, 0, 0, 3535, 3525, 1, 0, 0, 0, 3535, 3529, 1, 0, 0, 0, 3536, 263, 1, 0, 0, 0, 3537, 3549, 3, 302, 151, 0, 3538, 3539, 3, 302, 151, 0, 3539, 3540, 5, 4, 0, 0, 3540, 3541, 3, 302, 151, 0, 3541, 3549, 1, 0, 0, 0, 3542, 3543, 3, 302, 151, 0, 3543, 3544, 5, 4, 0, 0, 3544, 3545, 3, 302, 151, 0, 3545, 3546, 5, 4, 0, 0, 3546, 3547, 3, 302, 151, 0, 3547, 3549, 1, 0, 0, 0, 3548, 3537, 1, 0, 0, 0, 3548, 3538, 1, 0, 0, 0, 3548, 3542, 1, 0, 0, 0, 3549, 265, 1, 0, 0, 0, 3550, 3562, 3, 302, 151, 0, 3551, 3552, 3, 302, 151, 0, 3552, 3553, 5, 4, 0, 0, 3553, 3554, 3, 302, 151, 0, 3554, 3562, 1, 0, 0, 0, 3555, 3556, 3, 302, 151, 0, 3556, 3557, 5, 4, 0, 0, 3557, 3558, 3, 302, 151, 0, 3558, 3559, 5, 4, 0, 0, 3559, 3560, 3, 302, 151, 0, 3560, 3562, 1, 0, 0, 0, 3561, 3550, 1, 0, 0, 0, 3561, 3551, 1, 0, 0, 0, 3561, 3555, 1, 0, 0, 0, 3562, 267, 1, 0, 0, 0, 3563, 3575, 3, 302, 151, 0, 3564, 3565, 3, 302, 151, 0, 3565, 3566, 5, 4, 0, 0, 3566, 3567, 3, 302, 151, 0, 3567, 3575, 1, 0, 0, 0, 3568, 3569, 3, 302, 151, 0, 3569, 3570, 5, 4, 0, 0, 3570, 3571, 3, 302, 151, 0, 3571, 3572, 5, 4, 0, 0, 3572, 3573, 3, 302, 151, 0, 3573, 3575, 1, 0, 0, 0, 3574, 3563, 1, 0, 0, 0, 3574, 3564, 1, 0, 0, 0, 3574, 3568, 1, 0, 0, 0, 3575, 269, 1, 0, 0, 0, 3576, 3582, 3, 302, 151, 0, 3577, 3578, 3, 302, 151, 0, 3578, 3579, 5, 4, 0, 0, 3579, 3580, 3, 302, 151, 0, 3580, 3582, 1, 0, 0, 0, 3581, 3576, 1, 0, 0, 0, 3581, 3577, 1, 0, 0, 0, 3582, 271, 1, 0, 0, 0, 3583, 3589, 3, 302, 151, 0, 3584, 3585, 3, 302, 151, 0, 3585, 3586, 5, 4, 0, 0, 3586, 3587, 3, 302, 151, 0, 3587, 3589, 1, 0, 0, 0, 3588, 3583, 1, 0, 0, 0, 3588, 3584, 1, 0, 0, 0, 3589, 273, 1, 0, 0, 0, 3590, 3591, 3, 302, 151, 0, 3591, 275, 1, 0, 0, 0, 3592, 3593, 3, 302, 151, 0, 3593, 277, 1, 0, 0, 0, 3594, 3595, 3, 288, 144, 0, 3595, 279, 1, 0, 0, 0, 3596, 3597, 3, 288, 144, 0, 3597, 281, 1, 0, 0, 0, 3598, 3601, 3, 288, 144, 0, 3599, 3601, 4, 141, 14, 0, 3600, 3598, 1, 0, 0, 0, 3600, 3599, 1, 0, 0, 0, 3601, 283, 1, 0, 0, 0, 3602, 3603, 3, 288, 144, 0, 3603, 285, 1, 0, 0, 0, 3604, 3605, 3, 302, 151, 0, 3605, 287, 1, 0, 0, 0, 3606, 3611, 3, 302, 151, 0, 3607, 3608, 5, 4, 0, 0, 3608, 3610, 3, 302, 151, 0, 3609, 3607, 1, 0, 0, 0, 3610, 3613, 1, 0, 0, 0, 3611, 3609, 1, 0, 0, 0, 3611, 3612, 1, 0, 0, 0, 3612, 289, 1, 0, 0, 0, 3613, 3611, 1, 0, 0, 0, 3614, 3615, 5, 104, 0, 0, 3615, 3616, 3, 292, 146, 0, 3616, 3617, 5, 28, 0, 0, 3617, 3618, 5, 188, 0, 0, 3618, 3619, 3, 148, 74, 0, 3619, 291, 1, 0, 0, 0, 3620, 3621, 7, 34, 0, 0, 3621, 293, 1, 0, 0, 0, 3622, 3626, 3, 296, 148, 0, 3623, 3626, 5, 65, 0, 0, 3624, 3626, 5, 61, 0, 0, 3625, 3622, 1, 0, 0, 0, 3625, 3623, 1, 0, 0, 0, 3625, 3624, 1, 0, 0, 0, 3626, 295, 1, 0, 0, 0, 3627, 3633, 3, 302, 151, 0, 3628, 3629, 5, 290, 0, 0, 3629, 3633, 3, 302, 151, 0, 3630, 3631, 5, 236, 0, 0, 3631, 3633, 3, 302, 151, 0, 3632, 3627, 1, 0, 0, 0, 3632, 3628, 1, 0, 0, 0, 3632, 3630, 1, 0, 0, 0, 3633, 297, 1, 0, 0, 0, 3634, 3639, 3, 302, 151, 0, 3635, 3636, 5, 3, 0, 0, 3636, 3638, 3, 302, 151, 0, 3637, 3635, 1, 0, 0, 0, 3638, 3641, 1, 0, 0, 0, 3639, 3637, 1, 0, 0, 0, 3639, 3640, 1, 0, 0, 0, 3640, 299, 1, 0, 0, 0, 3641, 3639, 1, 0, 0, 0, 3642, 3650, 5, 54, 0, 0, 3643, 3650, 5, 249, 0, 0, 3644, 3650, 5, 74, 0, 0, 3645, 3650, 5, 128, 0, 0, 3646, 3650, 5, 288, 0, 0, 3647, 3650, 5, 94, 0, 0, 3648, 3650, 3, 302, 151, 0, 3649, 3642, 1, 0, 0, 0, 3649, 3643, 1, 0, 0, 0, 3649, 3644, 1, 0, 0, 0, 3649, 3645, 1, 0, 0, 0, 3649, 3646, 1, 0, 0, 0, 3649, 3647, 1, 0, 0, 0, 3649, 3648, 1, 0, 0, 0, 3650, 301, 1, 0, 0, 0, 3651, 3657, 5, 333, 0, 0, 3652, 3657, 5, 335, 0, 0, 3653, 3657, 3, 308, 154, 0, 3654, 3657, 5, 336, 0, 0, 3655, 3657, 5, 334, 0, 0, 3656, 3651, 1, 0, 0, 0, 3656, 3652, 1, 0, 0, 0, 3656, 3653, 1, 0, 0, 0, 3656, 3654, 1, 0, 0, 0, 3656, 3655, 1, 0, 0, 0, 3657, 303, 1, 0, 0, 0, 3658, 3660, 5, 320, 0, 0, 3659, 3658, 1, 0, 0, 0, 3659, 3660, 1, 0, 0, 0, 3660, 3661, 1, 0, 0, 0, 3661, 3671, 5, 331, 0, 0, 3662, 3664, 5, 320, 0, 0, 3663, 3662, 1, 0, 0, 0, 3663, 3664, 1, 0, 0, 0, 3664, 3665, 1, 0, 0, 0, 3665, 3671, 5, 332, 0, 0, 3666, 3668, 5, 320, 0, 0, 3667, 3666, 1, 0, 0, 0, 3667, 3668, 1, 0, 0, 0, 3668, 3669, 1, 0, 0, 0, 3669, 3671, 5, 330, 0, 0, 3670, 3659, 1, 0, 0, 0, 3670, 3663, 1, 0, 0, 0, 3670, 3667, 1, 0, 0, 0, 3671, 305, 1, 0, 0, 0, 3672, 3675, 3, 302, 151, 0, 3673, 3675, 3, 174, 87, 0, 3674, 3672, 1, 0, 0, 0, 3674, 3673, 1, 0, 0, 0, 3675, 307, 1, 0, 0, 0, 3676, 3677, 7, 35, 0, 0, 3677, 309, 1, 0, 0, 0, 477, 313, 322, 326, 330, 334, 338, 351, 358, 362, 366, 372, 376, 383, 388, 392, 398, 402, 421, 427, 431, 435, 439, 447, 451, 454, 459, 465, 474, 480, 484, 490, 497, 505, 517, 526, 535, 541, 552, 560, 568, 575, 585, 592, 600, 615, 650, 653, 656, 659, 665, 670, 677, 683, 687, 691, 699, 705, 709, 713, 727, 735, 754, 779, 782, 789, 796, 805, 809, 816, 824, 833, 839, 844, 848, 856, 861, 870, 876, 883, 892, 898, 902, 908, 915, 920, 933, 938, 950, 954, 960, 969, 974, 980, 1008, 1014, 1016, 1022, 1028, 1030, 1038, 1040, 1050, 1052, 1067, 1072, 1079, 1089, 1095, 1097, 1105, 1107, 1132, 1135, 1139, 1143, 1161, 1164, 1175, 1178, 1194, 1204, 1208, 1214, 1217, 1226, 1238, 1241, 1251, 1255, 1261, 1268, 1273, 1279, 1283, 1287, 1293, 1304, 1313, 1323, 1326, 1331, 1333, 1340, 1346, 1348, 1352, 1362, 1368, 1371, 1373, 1385, 1392, 1396, 1399, 1403, 1407, 1414, 1423, 1426, 1429, 1434, 1437, 1445, 1448, 1457, 1464, 1472, 1483, 1486, 1496, 1499, 1510, 1515, 1523, 1526, 1530, 1534, 1543, 1548, 1557, 1560, 1563, 1567, 1578, 1581, 1584, 1591, 1594, 1613, 1617, 1621, 1625, 1629, 1633, 1635, 1646, 1651, 1660, 1669, 1672, 1678, 1686, 1695, 1698, 1706, 1709, 1712, 1717, 1720, 1732, 1735, 1743, 1748, 1752, 1754, 1756, 1771, 1773, 1784, 1805, 1815, 1826, 1830, 1832, 1840, 1851, 1862, 1869, 1882, 1888, 1914, 1929, 1934, 1938, 1948, 1954, 1960, 1968, 1973, 1980, 1982, 1988, 1994, 1998, 2003, 2012, 2017, 2031, 2041, 2044, 2053, 2058, 2063, 2065, 2074, 2077, 2085, 2088, 2095, 2100, 2107, 2111, 2113, 2121, 2131, 2137, 2139, 2146, 2150, 2152, 2159, 2163, 2165, 2167, 2176, 2187, 2191, 2201, 2211, 2215, 2223, 2225, 2238, 2246, 2255, 2261, 2269, 2275, 2279, 2284, 2289, 2295, 2309, 2311, 2341, 2352, 2360, 2365, 2370, 2383, 2389, 2392, 2399, 2404, 2407, 2410, 2415, 2422, 2425, 2434, 2437, 2441, 2444, 2447, 2462, 2465, 2484, 2488, 2496, 2500, 2525, 2528, 2537, 2543, 2549, 2555, 2564, 2567, 2570, 2589, 2598, 2616, 2632, 2635, 2645, 2654, 2660, 2666, 2677, 2679, 2684, 2691, 2693, 2699, 2705, 2716, 2725, 2730, 2735, 2737, 2739, 2745, 2747, 2757, 2766, 2768, 2774, 2776, 2779, 2789, 2791, 2799, 2807, 2810, 2815, 2820, 2832, 2836, 2840, 2843, 2845, 2853, 2856, 2866, 2874, 2880, 2882, 2890, 2900, 2906, 2920, 2929, 2936, 2941, 2948, 2953, 2976, 2981, 2983, 2990, 2994, 3001, 3005, 3021, 3036, 3043, 3052, 3062, 3067, 3076, 3081, 3089, 3097, 3100, 3106, 3109, 3116, 3124, 3127, 3135, 3138, 3164, 3175, 3180, 3187, 3189, 3202, 3217, 3221, 3225, 3229, 3235, 3239, 3243, 3247, 3249, 3259, 3266, 3275, 3282, 3289, 3296, 3305, 3317, 3320, 3331, 3334, 3339, 3349, 3365, 3379, 3382, 3391, 3394, 3406, 3410, 3425, 3429, 3435, 3445, 3457, 3466, 3487, 3493, 3500, 3508, 3513, 3516, 3522, 3535, 3548, 3561, 3574, 3581, 3588, 3600, 3611, 3625, 3632, 3639, 3649, 3656, 3659, 3663, 3667, 3670, 3674] \ No newline at end of file diff --git a/src/lib/trino/TrinoSql.tokens b/src/lib/trino/TrinoSql.tokens index 36a6a6b1..f97376ce 100644 --- a/src/lib/trino/TrinoSql.tokens +++ b/src/lib/trino/TrinoSql.tokens @@ -41,303 +41,304 @@ KW_CASE=40 KW_CAST=41 KW_CATALOG=42 KW_CATALOGS=43 -KW_COLUMN=44 -KW_COLUMNS=45 -KW_COMMENT=46 -KW_COMMIT=47 -KW_COMMITTED=48 -KW_CONDITIONAL=49 -KW_CONSTRAINT=50 -KW_COUNT=51 -KW_COPARTITION=52 -KW_CREATE=53 -KW_CROSS=54 -KW_CUBE=55 -KW_CURRENT=56 -KW_CURRENT_CATALOG=57 -KW_CURRENT_DATE=58 -KW_CURRENT_PATH=59 -KW_CURRENT_ROLE=60 -KW_CURRENT_SCHEMA=61 -KW_CURRENT_TIME=62 -KW_CURRENT_TIMESTAMP=63 -KW_CURRENT_USER=64 -KW_DATA=65 -KW_DATE=66 -KW_DAY=67 -KW_DEALLOCATE=68 -KW_DECLARE=69 -KW_DEFAULT=70 -KW_DEFINE=71 -KW_DEFINER=72 -KW_DELETE=73 -KW_DENY=74 -KW_DESC=75 -KW_DESCRIBE=76 -KW_DESCRIPTOR=77 -KW_DETERMINISTIC=78 -KW_DISTINCT=79 -KW_DISTRIBUTED=80 -KW_DO=81 -KW_DOUBLE=82 -KW_DROP=83 -KW_ELSE=84 -KW_EMPTY=85 -KW_ELSEIF=86 -KW_ENCODING=87 -KW_END=88 -KW_ERROR=89 -KW_ESCAPE=90 -KW_EXCEPT=91 -KW_EXCLUDING=92 -KW_EXECUTE=93 -KW_EXISTS=94 -KW_EXPLAIN=95 -KW_EXTRACT=96 -KW_FALSE=97 -KW_FETCH=98 -KW_FILTER=99 -KW_FINAL=100 -KW_FIRST=101 -KW_FOLLOWING=102 -KW_FOR=103 -KW_FORMAT=104 -KW_FROM=105 -KW_FULL=106 -KW_FUNCTION=107 -KW_FUNCTIONS=108 -KW_GRACE=109 -KW_GRANT=110 -KW_GRANTED=111 -KW_GRANTS=112 -KW_GRAPHVIZ=113 -KW_GROUP=114 -KW_GROUPING=115 -KW_GROUPS=116 -KW_HAVING=117 -KW_HOUR=118 -KW_IF=119 -KW_IGNORE=120 -KW_IMMEDIATE=121 -KW_IN=122 -KW_INCLUDING=123 -KW_INITIAL=124 -KW_INNER=125 -KW_INPUT=126 -KW_INSERT=127 -KW_INTERSECT=128 -KW_INTERVAL=129 -KW_INTO=130 -KW_INVOKER=131 -KW_IO=132 -KW_IS=133 -KW_ISOLATION=134 -KW_ITERATE=135 -KW_JOIN=136 -KW_JSON=137 -KW_JSON_ARRAY=138 -KW_JSON_EXISTS=139 -KW_JSON_OBJECT=140 -KW_JSON_QUERY=141 -KW_JSON_TABLE=142 -KW_JSON_VALUE=143 -KW_KEEP=144 -KW_KEY=145 -KW_KEYS=146 -KW_LANGUAGE=147 -KW_LAST=148 -KW_LATERAL=149 -KW_LEADING=150 -KW_LEAVE=151 -KW_LEFT=152 -KW_LEVEL=153 -KW_LIKE=154 -KW_LIMIT=155 -KW_LISTAGG=156 -KW_LOCAL=157 -KW_LOCALTIME=158 -KW_LOCALTIMESTAMP=159 -KW_LOGICAL=160 -KW_LOOP=161 -KW_MAP=162 -KW_MATCH=163 -KW_MATCHED=164 -KW_MATCHES=165 -KW_MATCH_RECOGNIZE=166 -KW_MATERIALIZED=167 -KW_MEASURES=168 -KW_MERGE=169 -KW_MINUTE=170 -KW_MONTH=171 -KW_NATURAL=172 -KW_NESTED=173 -KW_NEXT=174 -KW_NFC=175 -KW_NFD=176 -KW_NFKC=177 -KW_NFKD=178 -KW_NO=179 -KW_NONE=180 -KW_NORMALIZE=181 -KW_NOT=182 -KW_NULL=183 -KW_NULLIF=184 -KW_NULLS=185 -KW_OBJECT=186 -KW_OF=187 -KW_OFFSET=188 -KW_OMIT=189 -KW_ON=190 -KW_ONE=191 -KW_ONLY=192 -KW_OPTION=193 -KW_OR=194 -KW_ORDER=195 -KW_ORDINALITY=196 -KW_OUTER=197 -KW_OUTPUT=198 -KW_OVER=199 -KW_OVERFLOW=200 -KW_PARTITION=201 -KW_PARTITIONS=202 -KW_PASSING=203 -KW_PAST=204 -KW_PATH=205 -KW_PATTERN=206 -KW_PER=207 -KW_PERIOD=208 -KW_PERMUTE=209 -KW_PLAN=210 -KW_POSITION=211 -KW_PRECEDING=212 -KW_PRECISION=213 -KW_PREPARE=214 -KW_PRIVILEGES=215 -KW_PROPERTIES=216 -KW_PRUNE=217 -KW_QUOTES=218 -KW_RANGE=219 -KW_READ=220 -KW_RECURSIVE=221 -KW_REFRESH=222 -KW_RENAME=223 -KW_REPEAT=224 -KW_REPEATABLE=225 -KW_REPLACE=226 -KW_RESET=227 -KW_RESPECT=228 -KW_RESTRICT=229 -KW_RETURN=230 -KW_RETURNING=231 -KW_RETURNS=232 -KW_REVOKE=233 -KW_RIGHT=234 -KW_ROLE=235 -KW_ROLES=236 -KW_ROLLBACK=237 -KW_ROLLUP=238 -KW_ROW=239 -KW_ROWS=240 -KW_RUNNING=241 -KW_SCALAR=242 -KW_SCHEMA=243 -KW_SCHEMAS=244 -KW_SECOND=245 -KW_SECURITY=246 -KW_SEEK=247 -KW_SELECT=248 -KW_SERIALIZABLE=249 -KW_SESSION=250 -KW_SET=251 -KW_SETS=252 -KW_SHOW=253 -KW_SOME=254 -KW_START=255 -KW_STATS=256 -KW_SUBSET=257 -KW_SUBSTRING=258 -KW_SYSTEM=259 -KW_TABLE=260 -KW_TABLES=261 -KW_TABLESAMPLE=262 -KW_TEXT=263 -KW_TEXT_STRING=264 -KW_THEN=265 -KW_TIES=266 -KW_TIME=267 -KW_TIMESTAMP=268 -KW_TO=269 -KW_TRAILING=270 -KW_TRANSACTION=271 -KW_TRIM=272 -KW_TRUE=273 -KW_TRUNCATE=274 -KW_TRY_CAST=275 -KW_TYPE=276 -KW_UESCAPE=277 -KW_UNBOUNDED=278 -KW_UNCOMMITTED=279 -KW_UNCONDITIONAL=280 -KW_UNION=281 -KW_UNIQUE=282 -KW_UNKNOWN=283 -KW_UNMATCHED=284 -KW_UNNEST=285 -KW_UNTIL=286 -KW_UPDATE=287 -KW_USE=288 -KW_USER=289 -KW_USING=290 -KW_UTF16=291 -KW_UTF32=292 -KW_UTF8=293 -KW_VALIDATE=294 -KW_VALUE=295 -KW_VALUES=296 -KW_VERBOSE=297 -KW_VERSION=298 -KW_VIEW=299 -KW_WHEN=300 -KW_WHERE=301 -KW_WHILE=302 -KW_WINDOW=303 -KW_WITH=304 -KW_WITHIN=305 -KW_WITHOUT=306 -KW_WORK=307 -KW_WRAPPER=308 -KW_WRITE=309 -KW_YEAR=310 -KW_ZONE=311 -EQ=312 -NEQ=313 -LT=314 -LTE=315 -GT=316 -GTE=317 -PLUS=318 -MINUS=319 -ASTERISK=320 -SLASH=321 -PERCENT=322 -CONCAT=323 -QUESTION_MARK=324 -SEMICOLON=325 -STRING=326 -UNICODE_STRING=327 -BINARY_LITERAL=328 -INTEGER_VALUE=329 -DECIMAL_VALUE=330 -DOUBLE_VALUE=331 -IDENTIFIER=332 -DIGIT_IDENTIFIER=333 -QUOTED_IDENTIFIER=334 -BACKQUOTED_IDENTIFIER=335 -LINE_COMMENT=336 -BRACKETED_COMMENT=337 -WHITE_SPACE=338 -UNRECOGNIZED=339 -DELIMITER=340 +KW_COALESCE=44 +KW_COLUMN=45 +KW_COLUMNS=46 +KW_COMMENT=47 +KW_COMMIT=48 +KW_COMMITTED=49 +KW_CONDITIONAL=50 +KW_CONSTRAINT=51 +KW_COUNT=52 +KW_COPARTITION=53 +KW_CREATE=54 +KW_CROSS=55 +KW_CUBE=56 +KW_CURRENT=57 +KW_CURRENT_CATALOG=58 +KW_CURRENT_DATE=59 +KW_CURRENT_PATH=60 +KW_CURRENT_ROLE=61 +KW_CURRENT_SCHEMA=62 +KW_CURRENT_TIME=63 +KW_CURRENT_TIMESTAMP=64 +KW_CURRENT_USER=65 +KW_DATA=66 +KW_DATE=67 +KW_DAY=68 +KW_DEALLOCATE=69 +KW_DECLARE=70 +KW_DEFAULT=71 +KW_DEFINE=72 +KW_DEFINER=73 +KW_DELETE=74 +KW_DENY=75 +KW_DESC=76 +KW_DESCRIBE=77 +KW_DESCRIPTOR=78 +KW_DETERMINISTIC=79 +KW_DISTINCT=80 +KW_DISTRIBUTED=81 +KW_DO=82 +KW_DOUBLE=83 +KW_DROP=84 +KW_ELSE=85 +KW_EMPTY=86 +KW_ELSEIF=87 +KW_ENCODING=88 +KW_END=89 +KW_ERROR=90 +KW_ESCAPE=91 +KW_EXCEPT=92 +KW_EXCLUDING=93 +KW_EXECUTE=94 +KW_EXISTS=95 +KW_EXPLAIN=96 +KW_EXTRACT=97 +KW_FALSE=98 +KW_FETCH=99 +KW_FILTER=100 +KW_FINAL=101 +KW_FIRST=102 +KW_FOLLOWING=103 +KW_FOR=104 +KW_FORMAT=105 +KW_FROM=106 +KW_FULL=107 +KW_FUNCTION=108 +KW_FUNCTIONS=109 +KW_GRACE=110 +KW_GRANT=111 +KW_GRANTED=112 +KW_GRANTS=113 +KW_GRAPHVIZ=114 +KW_GROUP=115 +KW_GROUPING=116 +KW_GROUPS=117 +KW_HAVING=118 +KW_HOUR=119 +KW_IF=120 +KW_IGNORE=121 +KW_IMMEDIATE=122 +KW_IN=123 +KW_INCLUDING=124 +KW_INITIAL=125 +KW_INNER=126 +KW_INPUT=127 +KW_INSERT=128 +KW_INTERSECT=129 +KW_INTERVAL=130 +KW_INTO=131 +KW_INVOKER=132 +KW_IO=133 +KW_IS=134 +KW_ISOLATION=135 +KW_ITERATE=136 +KW_JOIN=137 +KW_JSON=138 +KW_JSON_ARRAY=139 +KW_JSON_EXISTS=140 +KW_JSON_OBJECT=141 +KW_JSON_QUERY=142 +KW_JSON_TABLE=143 +KW_JSON_VALUE=144 +KW_KEEP=145 +KW_KEY=146 +KW_KEYS=147 +KW_LANGUAGE=148 +KW_LAST=149 +KW_LATERAL=150 +KW_LEADING=151 +KW_LEAVE=152 +KW_LEFT=153 +KW_LEVEL=154 +KW_LIKE=155 +KW_LIMIT=156 +KW_LISTAGG=157 +KW_LOCAL=158 +KW_LOCALTIME=159 +KW_LOCALTIMESTAMP=160 +KW_LOGICAL=161 +KW_LOOP=162 +KW_MAP=163 +KW_MATCH=164 +KW_MATCHED=165 +KW_MATCHES=166 +KW_MATCH_RECOGNIZE=167 +KW_MATERIALIZED=168 +KW_MEASURES=169 +KW_MERGE=170 +KW_MINUTE=171 +KW_MONTH=172 +KW_NATURAL=173 +KW_NESTED=174 +KW_NEXT=175 +KW_NFC=176 +KW_NFD=177 +KW_NFKC=178 +KW_NFKD=179 +KW_NO=180 +KW_NONE=181 +KW_NORMALIZE=182 +KW_NOT=183 +KW_NULL=184 +KW_NULLIF=185 +KW_NULLS=186 +KW_OBJECT=187 +KW_OF=188 +KW_OFFSET=189 +KW_OMIT=190 +KW_ON=191 +KW_ONE=192 +KW_ONLY=193 +KW_OPTION=194 +KW_OR=195 +KW_ORDER=196 +KW_ORDINALITY=197 +KW_OUTER=198 +KW_OUTPUT=199 +KW_OVER=200 +KW_OVERFLOW=201 +KW_PARTITION=202 +KW_PARTITIONS=203 +KW_PASSING=204 +KW_PAST=205 +KW_PATH=206 +KW_PATTERN=207 +KW_PER=208 +KW_PERIOD=209 +KW_PERMUTE=210 +KW_PLAN=211 +KW_POSITION=212 +KW_PRECEDING=213 +KW_PRECISION=214 +KW_PREPARE=215 +KW_PRIVILEGES=216 +KW_PROPERTIES=217 +KW_PRUNE=218 +KW_QUOTES=219 +KW_RANGE=220 +KW_READ=221 +KW_RECURSIVE=222 +KW_REFRESH=223 +KW_RENAME=224 +KW_REPEAT=225 +KW_REPEATABLE=226 +KW_REPLACE=227 +KW_RESET=228 +KW_RESPECT=229 +KW_RESTRICT=230 +KW_RETURN=231 +KW_RETURNING=232 +KW_RETURNS=233 +KW_REVOKE=234 +KW_RIGHT=235 +KW_ROLE=236 +KW_ROLES=237 +KW_ROLLBACK=238 +KW_ROLLUP=239 +KW_ROW=240 +KW_ROWS=241 +KW_RUNNING=242 +KW_SCALAR=243 +KW_SCHEMA=244 +KW_SCHEMAS=245 +KW_SECOND=246 +KW_SECURITY=247 +KW_SEEK=248 +KW_SELECT=249 +KW_SERIALIZABLE=250 +KW_SESSION=251 +KW_SET=252 +KW_SETS=253 +KW_SHOW=254 +KW_SOME=255 +KW_START=256 +KW_STATS=257 +KW_SUBSET=258 +KW_SUBSTRING=259 +KW_SYSTEM=260 +KW_TABLE=261 +KW_TABLES=262 +KW_TABLESAMPLE=263 +KW_TEXT=264 +KW_TEXT_STRING=265 +KW_THEN=266 +KW_TIES=267 +KW_TIME=268 +KW_TIMESTAMP=269 +KW_TO=270 +KW_TRAILING=271 +KW_TRANSACTION=272 +KW_TRIM=273 +KW_TRUE=274 +KW_TRUNCATE=275 +KW_TRY_CAST=276 +KW_TYPE=277 +KW_UESCAPE=278 +KW_UNBOUNDED=279 +KW_UNCOMMITTED=280 +KW_UNCONDITIONAL=281 +KW_UNION=282 +KW_UNIQUE=283 +KW_UNKNOWN=284 +KW_UNMATCHED=285 +KW_UNNEST=286 +KW_UNTIL=287 +KW_UPDATE=288 +KW_USE=289 +KW_USER=290 +KW_USING=291 +KW_UTF16=292 +KW_UTF32=293 +KW_UTF8=294 +KW_VALIDATE=295 +KW_VALUE=296 +KW_VALUES=297 +KW_VERBOSE=298 +KW_VERSION=299 +KW_VIEW=300 +KW_WHEN=301 +KW_WHERE=302 +KW_WHILE=303 +KW_WINDOW=304 +KW_WITH=305 +KW_WITHIN=306 +KW_WITHOUT=307 +KW_WORK=308 +KW_WRAPPER=309 +KW_WRITE=310 +KW_YEAR=311 +KW_ZONE=312 +EQ=313 +NEQ=314 +LT=315 +LTE=316 +GT=317 +GTE=318 +PLUS=319 +MINUS=320 +ASTERISK=321 +SLASH=322 +PERCENT=323 +CONCAT=324 +QUESTION_MARK=325 +SEMICOLON=326 +STRING=327 +UNICODE_STRING=328 +BINARY_LITERAL=329 +INTEGER_VALUE=330 +DECIMAL_VALUE=331 +DOUBLE_VALUE=332 +IDENTIFIER=333 +DIGIT_IDENTIFIER=334 +QUOTED_IDENTIFIER=335 +BACKQUOTED_IDENTIFIER=336 +LINE_COMMENT=337 +BRACKETED_COMMENT=338 +WHITE_SPACE=339 +UNRECOGNIZED=340 +DELIMITER=341 '('=1 ')'=2 ','=3 @@ -381,284 +382,285 @@ DELIMITER=340 'CAST'=41 'CATALOG'=42 'CATALOGS'=43 -'COLUMN'=44 -'COLUMNS'=45 -'COMMENT'=46 -'COMMIT'=47 -'COMMITTED'=48 -'CONDITIONAL'=49 -'CONSTRAINT'=50 -'COUNT'=51 -'COPARTITION'=52 -'CREATE'=53 -'CROSS'=54 -'CUBE'=55 -'CURRENT'=56 -'CURRENT_CATALOG'=57 -'CURRENT_DATE'=58 -'CURRENT_PATH'=59 -'CURRENT_ROLE'=60 -'CURRENT_SCHEMA'=61 -'CURRENT_TIME'=62 -'CURRENT_TIMESTAMP'=63 -'CURRENT_USER'=64 -'DATA'=65 -'DATE'=66 -'DAY'=67 -'DEALLOCATE'=68 -'DECLARE'=69 -'DEFAULT'=70 -'DEFINE'=71 -'DEFINER'=72 -'DELETE'=73 -'DENY'=74 -'DESC'=75 -'DESCRIBE'=76 -'DESCRIPTOR'=77 -'DETERMINISTIC'=78 -'DISTINCT'=79 -'DISTRIBUTED'=80 -'DO'=81 -'DOUBLE'=82 -'DROP'=83 -'ELSE'=84 -'EMPTY'=85 -'ELSEIF'=86 -'ENCODING'=87 -'END'=88 -'ERROR'=89 -'ESCAPE'=90 -'EXCEPT'=91 -'EXCLUDING'=92 -'EXECUTE'=93 -'EXISTS'=94 -'EXPLAIN'=95 -'EXTRACT'=96 -'FALSE'=97 -'FETCH'=98 -'FILTER'=99 -'FINAL'=100 -'FIRST'=101 -'FOLLOWING'=102 -'FOR'=103 -'FORMAT'=104 -'FROM'=105 -'FULL'=106 -'FUNCTION'=107 -'FUNCTIONS'=108 -'GRACE'=109 -'GRANT'=110 -'GRANTED'=111 -'GRANTS'=112 -'GRAPHVIZ'=113 -'GROUP'=114 -'GROUPING'=115 -'GROUPS'=116 -'HAVING'=117 -'HOUR'=118 -'IF'=119 -'IGNORE'=120 -'IMMEDIATE'=121 -'IN'=122 -'INCLUDING'=123 -'INITIAL'=124 -'INNER'=125 -'INPUT'=126 -'INSERT'=127 -'INTERSECT'=128 -'INTERVAL'=129 -'INTO'=130 -'INVOKER'=131 -'IO'=132 -'IS'=133 -'ISOLATION'=134 -'ITERATE'=135 -'JOIN'=136 -'JSON'=137 -'JSON_ARRAY'=138 -'JSON_EXISTS'=139 -'JSON_OBJECT'=140 -'JSON_QUERY'=141 -'JSON_TABLE'=142 -'JSON_VALUE'=143 -'KEEP'=144 -'KEY'=145 -'KEYS'=146 -'LANGUAGE'=147 -'LAST'=148 -'LATERAL'=149 -'LEADING'=150 -'LEAVE'=151 -'LEFT'=152 -'LEVEL'=153 -'LIKE'=154 -'LIMIT'=155 -'LISTAGG'=156 -'LOCAL'=157 -'LOCALTIME'=158 -'LOCALTIMESTAMP'=159 -'LOGICAL'=160 -'LOOP'=161 -'MAP'=162 -'MATCH'=163 -'MATCHED'=164 -'MATCHES'=165 -'MATCH_RECOGNIZE'=166 -'MATERIALIZED'=167 -'MEASURES'=168 -'MERGE'=169 -'MINUTE'=170 -'MONTH'=171 -'NATURAL'=172 -'NESTED'=173 -'NEXT'=174 -'NFC'=175 -'NFD'=176 -'NFKC'=177 -'NFKD'=178 -'NO'=179 -'NONE'=180 -'NORMALIZE'=181 -'NOT'=182 -'NULL'=183 -'NULLIF'=184 -'NULLS'=185 -'OBJECT'=186 -'OF'=187 -'OFFSET'=188 -'OMIT'=189 -'ON'=190 -'ONE'=191 -'ONLY'=192 -'OPTION'=193 -'OR'=194 -'ORDER'=195 -'ORDINALITY'=196 -'OUTER'=197 -'OUTPUT'=198 -'OVER'=199 -'OVERFLOW'=200 -'PARTITION'=201 -'PARTITIONS'=202 -'PASSING'=203 -'PAST'=204 -'PATH'=205 -'PATTERN'=206 -'PER'=207 -'PERIOD'=208 -'PERMUTE'=209 -'PLAN'=210 -'POSITION'=211 -'PRECEDING'=212 -'PRECISION'=213 -'PREPARE'=214 -'PRIVILEGES'=215 -'PROPERTIES'=216 -'PRUNE'=217 -'QUOTES'=218 -'RANGE'=219 -'READ'=220 -'RECURSIVE'=221 -'REFRESH'=222 -'RENAME'=223 -'REPEAT'=224 -'REPEATABLE'=225 -'REPLACE'=226 -'RESET'=227 -'RESPECT'=228 -'RESTRICT'=229 -'RETURN'=230 -'RETURNING'=231 -'RETURNS'=232 -'REVOKE'=233 -'RIGHT'=234 -'ROLE'=235 -'ROLES'=236 -'ROLLBACK'=237 -'ROLLUP'=238 -'ROW'=239 -'ROWS'=240 -'RUNNING'=241 -'SCALAR'=242 -'SCHEMA'=243 -'SCHEMAS'=244 -'SECOND'=245 -'SECURITY'=246 -'SEEK'=247 -'SELECT'=248 -'SERIALIZABLE'=249 -'SESSION'=250 -'SET'=251 -'SETS'=252 -'SHOW'=253 -'SOME'=254 -'START'=255 -'STATS'=256 -'SUBSET'=257 -'SUBSTRING'=258 -'SYSTEM'=259 -'TABLE'=260 -'TABLES'=261 -'TABLESAMPLE'=262 -'TEXT'=263 -'STRING'=264 -'THEN'=265 -'TIES'=266 -'TIME'=267 -'TIMESTAMP'=268 -'TO'=269 -'TRAILING'=270 -'TRANSACTION'=271 -'TRIM'=272 -'TRUE'=273 -'TRUNCATE'=274 -'TRY_CAST'=275 -'TYPE'=276 -'UESCAPE'=277 -'UNBOUNDED'=278 -'UNCOMMITTED'=279 -'UNCONDITIONAL'=280 -'UNION'=281 -'UNIQUE'=282 -'UNKNOWN'=283 -'UNMATCHED'=284 -'UNNEST'=285 -'UNTIL'=286 -'UPDATE'=287 -'USE'=288 -'USER'=289 -'USING'=290 -'UTF16'=291 -'UTF32'=292 -'UTF8'=293 -'VALIDATE'=294 -'VALUE'=295 -'VALUES'=296 -'VERBOSE'=297 -'VERSION'=298 -'VIEW'=299 -'WHEN'=300 -'WHERE'=301 -'WHILE'=302 -'WINDOW'=303 -'WITH'=304 -'WITHIN'=305 -'WITHOUT'=306 -'WORK'=307 -'WRAPPER'=308 -'WRITE'=309 -'YEAR'=310 -'ZONE'=311 -'='=312 -'<'=314 -'<='=315 -'>'=316 -'>='=317 -'+'=318 -'-'=319 -'*'=320 -'/'=321 -'%'=322 -'||'=323 -'?'=324 -';'=325 +'COALESCE'=44 +'COLUMN'=45 +'COLUMNS'=46 +'COMMENT'=47 +'COMMIT'=48 +'COMMITTED'=49 +'CONDITIONAL'=50 +'CONSTRAINT'=51 +'COUNT'=52 +'COPARTITION'=53 +'CREATE'=54 +'CROSS'=55 +'CUBE'=56 +'CURRENT'=57 +'CURRENT_CATALOG'=58 +'CURRENT_DATE'=59 +'CURRENT_PATH'=60 +'CURRENT_ROLE'=61 +'CURRENT_SCHEMA'=62 +'CURRENT_TIME'=63 +'CURRENT_TIMESTAMP'=64 +'CURRENT_USER'=65 +'DATA'=66 +'DATE'=67 +'DAY'=68 +'DEALLOCATE'=69 +'DECLARE'=70 +'DEFAULT'=71 +'DEFINE'=72 +'DEFINER'=73 +'DELETE'=74 +'DENY'=75 +'DESC'=76 +'DESCRIBE'=77 +'DESCRIPTOR'=78 +'DETERMINISTIC'=79 +'DISTINCT'=80 +'DISTRIBUTED'=81 +'DO'=82 +'DOUBLE'=83 +'DROP'=84 +'ELSE'=85 +'EMPTY'=86 +'ELSEIF'=87 +'ENCODING'=88 +'END'=89 +'ERROR'=90 +'ESCAPE'=91 +'EXCEPT'=92 +'EXCLUDING'=93 +'EXECUTE'=94 +'EXISTS'=95 +'EXPLAIN'=96 +'EXTRACT'=97 +'FALSE'=98 +'FETCH'=99 +'FILTER'=100 +'FINAL'=101 +'FIRST'=102 +'FOLLOWING'=103 +'FOR'=104 +'FORMAT'=105 +'FROM'=106 +'FULL'=107 +'FUNCTION'=108 +'FUNCTIONS'=109 +'GRACE'=110 +'GRANT'=111 +'GRANTED'=112 +'GRANTS'=113 +'GRAPHVIZ'=114 +'GROUP'=115 +'GROUPING'=116 +'GROUPS'=117 +'HAVING'=118 +'HOUR'=119 +'IF'=120 +'IGNORE'=121 +'IMMEDIATE'=122 +'IN'=123 +'INCLUDING'=124 +'INITIAL'=125 +'INNER'=126 +'INPUT'=127 +'INSERT'=128 +'INTERSECT'=129 +'INTERVAL'=130 +'INTO'=131 +'INVOKER'=132 +'IO'=133 +'IS'=134 +'ISOLATION'=135 +'ITERATE'=136 +'JOIN'=137 +'JSON'=138 +'JSON_ARRAY'=139 +'JSON_EXISTS'=140 +'JSON_OBJECT'=141 +'JSON_QUERY'=142 +'JSON_TABLE'=143 +'JSON_VALUE'=144 +'KEEP'=145 +'KEY'=146 +'KEYS'=147 +'LANGUAGE'=148 +'LAST'=149 +'LATERAL'=150 +'LEADING'=151 +'LEAVE'=152 +'LEFT'=153 +'LEVEL'=154 +'LIKE'=155 +'LIMIT'=156 +'LISTAGG'=157 +'LOCAL'=158 +'LOCALTIME'=159 +'LOCALTIMESTAMP'=160 +'LOGICAL'=161 +'LOOP'=162 +'MAP'=163 +'MATCH'=164 +'MATCHED'=165 +'MATCHES'=166 +'MATCH_RECOGNIZE'=167 +'MATERIALIZED'=168 +'MEASURES'=169 +'MERGE'=170 +'MINUTE'=171 +'MONTH'=172 +'NATURAL'=173 +'NESTED'=174 +'NEXT'=175 +'NFC'=176 +'NFD'=177 +'NFKC'=178 +'NFKD'=179 +'NO'=180 +'NONE'=181 +'NORMALIZE'=182 +'NOT'=183 +'NULL'=184 +'NULLIF'=185 +'NULLS'=186 +'OBJECT'=187 +'OF'=188 +'OFFSET'=189 +'OMIT'=190 +'ON'=191 +'ONE'=192 +'ONLY'=193 +'OPTION'=194 +'OR'=195 +'ORDER'=196 +'ORDINALITY'=197 +'OUTER'=198 +'OUTPUT'=199 +'OVER'=200 +'OVERFLOW'=201 +'PARTITION'=202 +'PARTITIONS'=203 +'PASSING'=204 +'PAST'=205 +'PATH'=206 +'PATTERN'=207 +'PER'=208 +'PERIOD'=209 +'PERMUTE'=210 +'PLAN'=211 +'POSITION'=212 +'PRECEDING'=213 +'PRECISION'=214 +'PREPARE'=215 +'PRIVILEGES'=216 +'PROPERTIES'=217 +'PRUNE'=218 +'QUOTES'=219 +'RANGE'=220 +'READ'=221 +'RECURSIVE'=222 +'REFRESH'=223 +'RENAME'=224 +'REPEAT'=225 +'REPEATABLE'=226 +'REPLACE'=227 +'RESET'=228 +'RESPECT'=229 +'RESTRICT'=230 +'RETURN'=231 +'RETURNING'=232 +'RETURNS'=233 +'REVOKE'=234 +'RIGHT'=235 +'ROLE'=236 +'ROLES'=237 +'ROLLBACK'=238 +'ROLLUP'=239 +'ROW'=240 +'ROWS'=241 +'RUNNING'=242 +'SCALAR'=243 +'SCHEMA'=244 +'SCHEMAS'=245 +'SECOND'=246 +'SECURITY'=247 +'SEEK'=248 +'SELECT'=249 +'SERIALIZABLE'=250 +'SESSION'=251 +'SET'=252 +'SETS'=253 +'SHOW'=254 +'SOME'=255 +'START'=256 +'STATS'=257 +'SUBSET'=258 +'SUBSTRING'=259 +'SYSTEM'=260 +'TABLE'=261 +'TABLES'=262 +'TABLESAMPLE'=263 +'TEXT'=264 +'STRING'=265 +'THEN'=266 +'TIES'=267 +'TIME'=268 +'TIMESTAMP'=269 +'TO'=270 +'TRAILING'=271 +'TRANSACTION'=272 +'TRIM'=273 +'TRUE'=274 +'TRUNCATE'=275 +'TRY_CAST'=276 +'TYPE'=277 +'UESCAPE'=278 +'UNBOUNDED'=279 +'UNCOMMITTED'=280 +'UNCONDITIONAL'=281 +'UNION'=282 +'UNIQUE'=283 +'UNKNOWN'=284 +'UNMATCHED'=285 +'UNNEST'=286 +'UNTIL'=287 +'UPDATE'=288 +'USE'=289 +'USER'=290 +'USING'=291 +'UTF16'=292 +'UTF32'=293 +'UTF8'=294 +'VALIDATE'=295 +'VALUE'=296 +'VALUES'=297 +'VERBOSE'=298 +'VERSION'=299 +'VIEW'=300 +'WHEN'=301 +'WHERE'=302 +'WHILE'=303 +'WINDOW'=304 +'WITH'=305 +'WITHIN'=306 +'WITHOUT'=307 +'WORK'=308 +'WRAPPER'=309 +'WRITE'=310 +'YEAR'=311 +'ZONE'=312 +'='=313 +'<'=315 +'<='=316 +'>'=317 +'>='=318 +'+'=319 +'-'=320 +'*'=321 +'/'=322 +'%'=323 +'||'=324 +'?'=325 +';'=326 diff --git a/src/lib/trino/TrinoSqlLexer.interp b/src/lib/trino/TrinoSqlLexer.interp index d0ec6752..21d3cb2a 100644 --- a/src/lib/trino/TrinoSqlLexer.interp +++ b/src/lib/trino/TrinoSqlLexer.interp @@ -43,6 +43,7 @@ null 'CAST' 'CATALOG' 'CATALOGS' +'COALESCE' 'COLUMN' 'COLUMNS' 'COMMENT' @@ -385,6 +386,7 @@ KW_CASE KW_CAST KW_CATALOG KW_CATALOGS +KW_COALESCE KW_COLUMN KW_COLUMNS KW_COMMENT @@ -726,6 +728,7 @@ KW_CASE KW_CAST KW_CATALOG KW_CATALOGS +KW_COALESCE KW_COLUMN KW_COLUMNS KW_COMMENT @@ -1038,4 +1041,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 339, 3114, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 2871, 8, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 5, 325, 2904, 8, 325, 10, 325, 12, 325, 2907, 9, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 5, 326, 2918, 8, 326, 10, 326, 12, 326, 2921, 9, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 2929, 8, 327, 10, 327, 12, 327, 2932, 9, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 2940, 8, 328, 1, 329, 1, 329, 1, 329, 3, 329, 2945, 8, 329, 1, 329, 1, 329, 3, 329, 2949, 8, 329, 1, 330, 4, 330, 2952, 8, 330, 11, 330, 12, 330, 2953, 1, 330, 1, 330, 5, 330, 2958, 8, 330, 10, 330, 12, 330, 2961, 9, 330, 3, 330, 2963, 8, 330, 1, 330, 1, 330, 1, 330, 1, 330, 4, 330, 2969, 8, 330, 11, 330, 12, 330, 2970, 1, 330, 1, 330, 3, 330, 2975, 8, 330, 1, 331, 1, 331, 3, 331, 2979, 8, 331, 1, 331, 1, 331, 1, 331, 5, 331, 2984, 8, 331, 10, 331, 12, 331, 2987, 9, 331, 1, 332, 1, 332, 1, 332, 1, 332, 4, 332, 2993, 8, 332, 11, 332, 12, 332, 2994, 1, 333, 1, 333, 1, 333, 1, 333, 5, 333, 3001, 8, 333, 10, 333, 12, 333, 3004, 9, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 5, 334, 3012, 8, 334, 10, 334, 12, 334, 3015, 9, 334, 1, 334, 1, 334, 1, 335, 1, 335, 3, 335, 3021, 8, 335, 1, 335, 5, 335, 3024, 8, 335, 10, 335, 12, 335, 3027, 9, 335, 1, 336, 1, 336, 1, 336, 1, 336, 3, 336, 3033, 8, 336, 1, 336, 1, 336, 3, 336, 3037, 8, 336, 4, 336, 3039, 8, 336, 11, 336, 12, 336, 3040, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3047, 8, 337, 1, 337, 4, 337, 3050, 8, 337, 11, 337, 12, 337, 3051, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 3058, 8, 338, 1, 338, 4, 338, 3061, 8, 338, 11, 338, 12, 338, 3062, 1, 339, 1, 339, 3, 339, 3067, 8, 339, 1, 339, 4, 339, 3070, 8, 339, 11, 339, 12, 339, 3071, 1, 340, 1, 340, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 5, 342, 3082, 8, 342, 10, 342, 12, 342, 3085, 9, 342, 1, 342, 3, 342, 3088, 8, 342, 1, 342, 3, 342, 3091, 8, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 5, 343, 3099, 8, 343, 10, 343, 12, 343, 3102, 9, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 3100, 0, 346, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, 671, 0, 673, 0, 675, 0, 677, 0, 679, 0, 681, 0, 683, 0, 685, 336, 687, 337, 689, 338, 691, 339, 1, 0, 37, 2, 0, 83, 83, 115, 115, 2, 0, 75, 75, 107, 107, 2, 0, 73, 73, 105, 105, 2, 0, 80, 80, 112, 112, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 84, 84, 116, 116, 2, 0, 68, 68, 100, 100, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 82, 82, 114, 114, 2, 0, 76, 76, 108, 108, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 67, 67, 99, 99, 2, 0, 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 79, 79, 111, 111, 2, 0, 71, 71, 103, 103, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, 106, 2, 0, 81, 81, 113, 113, 1, 0, 39, 39, 1, 0, 34, 34, 1, 0, 96, 96, 2, 0, 65, 70, 97, 102, 1, 0, 48, 55, 1, 0, 48, 49, 2, 0, 43, 43, 45, 45, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 3148, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 1, 693, 1, 0, 0, 0, 3, 695, 1, 0, 0, 0, 5, 697, 1, 0, 0, 0, 7, 699, 1, 0, 0, 0, 9, 701, 1, 0, 0, 0, 11, 706, 1, 0, 0, 0, 13, 709, 1, 0, 0, 0, 15, 712, 1, 0, 0, 0, 17, 714, 1, 0, 0, 0, 19, 716, 1, 0, 0, 0, 21, 718, 1, 0, 0, 0, 23, 720, 1, 0, 0, 0, 25, 722, 1, 0, 0, 0, 27, 724, 1, 0, 0, 0, 29, 727, 1, 0, 0, 0, 31, 730, 1, 0, 0, 0, 33, 732, 1, 0, 0, 0, 35, 734, 1, 0, 0, 0, 37, 741, 1, 0, 0, 0, 39, 745, 1, 0, 0, 0, 41, 751, 1, 0, 0, 0, 43, 757, 1, 0, 0, 0, 45, 761, 1, 0, 0, 0, 47, 767, 1, 0, 0, 0, 49, 775, 1, 0, 0, 0, 51, 779, 1, 0, 0, 0, 53, 783, 1, 0, 0, 0, 55, 789, 1, 0, 0, 0, 57, 792, 1, 0, 0, 0, 59, 796, 1, 0, 0, 0, 61, 799, 1, 0, 0, 0, 63, 813, 1, 0, 0, 0, 65, 819, 1, 0, 0, 0, 67, 829, 1, 0, 0, 0, 69, 837, 1, 0, 0, 0, 71, 842, 1, 0, 0, 0, 73, 845, 1, 0, 0, 0, 75, 850, 1, 0, 0, 0, 77, 857, 1, 0, 0, 0, 79, 865, 1, 0, 0, 0, 81, 870, 1, 0, 0, 0, 83, 875, 1, 0, 0, 0, 85, 883, 1, 0, 0, 0, 87, 892, 1, 0, 0, 0, 89, 899, 1, 0, 0, 0, 91, 907, 1, 0, 0, 0, 93, 915, 1, 0, 0, 0, 95, 922, 1, 0, 0, 0, 97, 932, 1, 0, 0, 0, 99, 944, 1, 0, 0, 0, 101, 955, 1, 0, 0, 0, 103, 961, 1, 0, 0, 0, 105, 973, 1, 0, 0, 0, 107, 980, 1, 0, 0, 0, 109, 986, 1, 0, 0, 0, 111, 991, 1, 0, 0, 0, 113, 999, 1, 0, 0, 0, 115, 1015, 1, 0, 0, 0, 117, 1028, 1, 0, 0, 0, 119, 1041, 1, 0, 0, 0, 121, 1054, 1, 0, 0, 0, 123, 1069, 1, 0, 0, 0, 125, 1082, 1, 0, 0, 0, 127, 1100, 1, 0, 0, 0, 129, 1113, 1, 0, 0, 0, 131, 1118, 1, 0, 0, 0, 133, 1123, 1, 0, 0, 0, 135, 1127, 1, 0, 0, 0, 137, 1138, 1, 0, 0, 0, 139, 1146, 1, 0, 0, 0, 141, 1154, 1, 0, 0, 0, 143, 1161, 1, 0, 0, 0, 145, 1169, 1, 0, 0, 0, 147, 1176, 1, 0, 0, 0, 149, 1181, 1, 0, 0, 0, 151, 1186, 1, 0, 0, 0, 153, 1195, 1, 0, 0, 0, 155, 1206, 1, 0, 0, 0, 157, 1220, 1, 0, 0, 0, 159, 1229, 1, 0, 0, 0, 161, 1241, 1, 0, 0, 0, 163, 1244, 1, 0, 0, 0, 165, 1251, 1, 0, 0, 0, 167, 1256, 1, 0, 0, 0, 169, 1261, 1, 0, 0, 0, 171, 1267, 1, 0, 0, 0, 173, 1274, 1, 0, 0, 0, 175, 1283, 1, 0, 0, 0, 177, 1287, 1, 0, 0, 0, 179, 1293, 1, 0, 0, 0, 181, 1300, 1, 0, 0, 0, 183, 1307, 1, 0, 0, 0, 185, 1317, 1, 0, 0, 0, 187, 1325, 1, 0, 0, 0, 189, 1332, 1, 0, 0, 0, 191, 1340, 1, 0, 0, 0, 193, 1348, 1, 0, 0, 0, 195, 1354, 1, 0, 0, 0, 197, 1360, 1, 0, 0, 0, 199, 1367, 1, 0, 0, 0, 201, 1373, 1, 0, 0, 0, 203, 1379, 1, 0, 0, 0, 205, 1389, 1, 0, 0, 0, 207, 1393, 1, 0, 0, 0, 209, 1400, 1, 0, 0, 0, 211, 1405, 1, 0, 0, 0, 213, 1410, 1, 0, 0, 0, 215, 1419, 1, 0, 0, 0, 217, 1429, 1, 0, 0, 0, 219, 1435, 1, 0, 0, 0, 221, 1441, 1, 0, 0, 0, 223, 1449, 1, 0, 0, 0, 225, 1456, 1, 0, 0, 0, 227, 1465, 1, 0, 0, 0, 229, 1471, 1, 0, 0, 0, 231, 1480, 1, 0, 0, 0, 233, 1487, 1, 0, 0, 0, 235, 1494, 1, 0, 0, 0, 237, 1499, 1, 0, 0, 0, 239, 1502, 1, 0, 0, 0, 241, 1509, 1, 0, 0, 0, 243, 1519, 1, 0, 0, 0, 245, 1522, 1, 0, 0, 0, 247, 1532, 1, 0, 0, 0, 249, 1540, 1, 0, 0, 0, 251, 1546, 1, 0, 0, 0, 253, 1552, 1, 0, 0, 0, 255, 1559, 1, 0, 0, 0, 257, 1569, 1, 0, 0, 0, 259, 1578, 1, 0, 0, 0, 261, 1583, 1, 0, 0, 0, 263, 1591, 1, 0, 0, 0, 265, 1594, 1, 0, 0, 0, 267, 1597, 1, 0, 0, 0, 269, 1607, 1, 0, 0, 0, 271, 1615, 1, 0, 0, 0, 273, 1620, 1, 0, 0, 0, 275, 1625, 1, 0, 0, 0, 277, 1636, 1, 0, 0, 0, 279, 1648, 1, 0, 0, 0, 281, 1660, 1, 0, 0, 0, 283, 1671, 1, 0, 0, 0, 285, 1682, 1, 0, 0, 0, 287, 1693, 1, 0, 0, 0, 289, 1698, 1, 0, 0, 0, 291, 1702, 1, 0, 0, 0, 293, 1707, 1, 0, 0, 0, 295, 1716, 1, 0, 0, 0, 297, 1721, 1, 0, 0, 0, 299, 1729, 1, 0, 0, 0, 301, 1737, 1, 0, 0, 0, 303, 1743, 1, 0, 0, 0, 305, 1748, 1, 0, 0, 0, 307, 1754, 1, 0, 0, 0, 309, 1759, 1, 0, 0, 0, 311, 1765, 1, 0, 0, 0, 313, 1773, 1, 0, 0, 0, 315, 1779, 1, 0, 0, 0, 317, 1789, 1, 0, 0, 0, 319, 1804, 1, 0, 0, 0, 321, 1812, 1, 0, 0, 0, 323, 1817, 1, 0, 0, 0, 325, 1821, 1, 0, 0, 0, 327, 1827, 1, 0, 0, 0, 329, 1835, 1, 0, 0, 0, 331, 1843, 1, 0, 0, 0, 333, 1859, 1, 0, 0, 0, 335, 1872, 1, 0, 0, 0, 337, 1881, 1, 0, 0, 0, 339, 1887, 1, 0, 0, 0, 341, 1894, 1, 0, 0, 0, 343, 1900, 1, 0, 0, 0, 345, 1908, 1, 0, 0, 0, 347, 1915, 1, 0, 0, 0, 349, 1920, 1, 0, 0, 0, 351, 1924, 1, 0, 0, 0, 353, 1928, 1, 0, 0, 0, 355, 1933, 1, 0, 0, 0, 357, 1938, 1, 0, 0, 0, 359, 1941, 1, 0, 0, 0, 361, 1946, 1, 0, 0, 0, 363, 1956, 1, 0, 0, 0, 365, 1960, 1, 0, 0, 0, 367, 1965, 1, 0, 0, 0, 369, 1972, 1, 0, 0, 0, 371, 1978, 1, 0, 0, 0, 373, 1985, 1, 0, 0, 0, 375, 1988, 1, 0, 0, 0, 377, 1995, 1, 0, 0, 0, 379, 2000, 1, 0, 0, 0, 381, 2003, 1, 0, 0, 0, 383, 2007, 1, 0, 0, 0, 385, 2012, 1, 0, 0, 0, 387, 2019, 1, 0, 0, 0, 389, 2022, 1, 0, 0, 0, 391, 2028, 1, 0, 0, 0, 393, 2039, 1, 0, 0, 0, 395, 2045, 1, 0, 0, 0, 397, 2052, 1, 0, 0, 0, 399, 2057, 1, 0, 0, 0, 401, 2066, 1, 0, 0, 0, 403, 2076, 1, 0, 0, 0, 405, 2087, 1, 0, 0, 0, 407, 2095, 1, 0, 0, 0, 409, 2100, 1, 0, 0, 0, 411, 2105, 1, 0, 0, 0, 413, 2113, 1, 0, 0, 0, 415, 2117, 1, 0, 0, 0, 417, 2124, 1, 0, 0, 0, 419, 2132, 1, 0, 0, 0, 421, 2137, 1, 0, 0, 0, 423, 2146, 1, 0, 0, 0, 425, 2156, 1, 0, 0, 0, 427, 2166, 1, 0, 0, 0, 429, 2174, 1, 0, 0, 0, 431, 2185, 1, 0, 0, 0, 433, 2196, 1, 0, 0, 0, 435, 2202, 1, 0, 0, 0, 437, 2209, 1, 0, 0, 0, 439, 2215, 1, 0, 0, 0, 441, 2220, 1, 0, 0, 0, 443, 2230, 1, 0, 0, 0, 445, 2238, 1, 0, 0, 0, 447, 2245, 1, 0, 0, 0, 449, 2252, 1, 0, 0, 0, 451, 2263, 1, 0, 0, 0, 453, 2271, 1, 0, 0, 0, 455, 2277, 1, 0, 0, 0, 457, 2285, 1, 0, 0, 0, 459, 2294, 1, 0, 0, 0, 461, 2301, 1, 0, 0, 0, 463, 2311, 1, 0, 0, 0, 465, 2319, 1, 0, 0, 0, 467, 2326, 1, 0, 0, 0, 469, 2332, 1, 0, 0, 0, 471, 2337, 1, 0, 0, 0, 473, 2343, 1, 0, 0, 0, 475, 2352, 1, 0, 0, 0, 477, 2359, 1, 0, 0, 0, 479, 2363, 1, 0, 0, 0, 481, 2368, 1, 0, 0, 0, 483, 2376, 1, 0, 0, 0, 485, 2383, 1, 0, 0, 0, 487, 2390, 1, 0, 0, 0, 489, 2398, 1, 0, 0, 0, 491, 2405, 1, 0, 0, 0, 493, 2414, 1, 0, 0, 0, 495, 2419, 1, 0, 0, 0, 497, 2426, 1, 0, 0, 0, 499, 2439, 1, 0, 0, 0, 501, 2447, 1, 0, 0, 0, 503, 2451, 1, 0, 0, 0, 505, 2456, 1, 0, 0, 0, 507, 2461, 1, 0, 0, 0, 509, 2466, 1, 0, 0, 0, 511, 2472, 1, 0, 0, 0, 513, 2478, 1, 0, 0, 0, 515, 2485, 1, 0, 0, 0, 517, 2495, 1, 0, 0, 0, 519, 2502, 1, 0, 0, 0, 521, 2508, 1, 0, 0, 0, 523, 2515, 1, 0, 0, 0, 525, 2527, 1, 0, 0, 0, 527, 2532, 1, 0, 0, 0, 529, 2539, 1, 0, 0, 0, 531, 2544, 1, 0, 0, 0, 533, 2549, 1, 0, 0, 0, 535, 2554, 1, 0, 0, 0, 537, 2564, 1, 0, 0, 0, 539, 2567, 1, 0, 0, 0, 541, 2576, 1, 0, 0, 0, 543, 2588, 1, 0, 0, 0, 545, 2593, 1, 0, 0, 0, 547, 2598, 1, 0, 0, 0, 549, 2607, 1, 0, 0, 0, 551, 2616, 1, 0, 0, 0, 553, 2621, 1, 0, 0, 0, 555, 2629, 1, 0, 0, 0, 557, 2639, 1, 0, 0, 0, 559, 2651, 1, 0, 0, 0, 561, 2665, 1, 0, 0, 0, 563, 2671, 1, 0, 0, 0, 565, 2678, 1, 0, 0, 0, 567, 2686, 1, 0, 0, 0, 569, 2696, 1, 0, 0, 0, 571, 2703, 1, 0, 0, 0, 573, 2709, 1, 0, 0, 0, 575, 2716, 1, 0, 0, 0, 577, 2720, 1, 0, 0, 0, 579, 2725, 1, 0, 0, 0, 581, 2731, 1, 0, 0, 0, 583, 2737, 1, 0, 0, 0, 585, 2743, 1, 0, 0, 0, 587, 2748, 1, 0, 0, 0, 589, 2757, 1, 0, 0, 0, 591, 2763, 1, 0, 0, 0, 593, 2770, 1, 0, 0, 0, 595, 2778, 1, 0, 0, 0, 597, 2786, 1, 0, 0, 0, 599, 2791, 1, 0, 0, 0, 601, 2796, 1, 0, 0, 0, 603, 2802, 1, 0, 0, 0, 605, 2808, 1, 0, 0, 0, 607, 2815, 1, 0, 0, 0, 609, 2820, 1, 0, 0, 0, 611, 2827, 1, 0, 0, 0, 613, 2835, 1, 0, 0, 0, 615, 2840, 1, 0, 0, 0, 617, 2848, 1, 0, 0, 0, 619, 2854, 1, 0, 0, 0, 621, 2859, 1, 0, 0, 0, 623, 2864, 1, 0, 0, 0, 625, 2870, 1, 0, 0, 0, 627, 2872, 1, 0, 0, 0, 629, 2874, 1, 0, 0, 0, 631, 2877, 1, 0, 0, 0, 633, 2879, 1, 0, 0, 0, 635, 2882, 1, 0, 0, 0, 637, 2884, 1, 0, 0, 0, 639, 2886, 1, 0, 0, 0, 641, 2888, 1, 0, 0, 0, 643, 2890, 1, 0, 0, 0, 645, 2892, 1, 0, 0, 0, 647, 2895, 1, 0, 0, 0, 649, 2897, 1, 0, 0, 0, 651, 2899, 1, 0, 0, 0, 653, 2910, 1, 0, 0, 0, 655, 2924, 1, 0, 0, 0, 657, 2939, 1, 0, 0, 0, 659, 2948, 1, 0, 0, 0, 661, 2974, 1, 0, 0, 0, 663, 2978, 1, 0, 0, 0, 665, 2988, 1, 0, 0, 0, 667, 2996, 1, 0, 0, 0, 669, 3007, 1, 0, 0, 0, 671, 3018, 1, 0, 0, 0, 673, 3028, 1, 0, 0, 0, 675, 3042, 1, 0, 0, 0, 677, 3053, 1, 0, 0, 0, 679, 3064, 1, 0, 0, 0, 681, 3073, 1, 0, 0, 0, 683, 3075, 1, 0, 0, 0, 685, 3077, 1, 0, 0, 0, 687, 3094, 1, 0, 0, 0, 689, 3108, 1, 0, 0, 0, 691, 3112, 1, 0, 0, 0, 693, 694, 5, 40, 0, 0, 694, 2, 1, 0, 0, 0, 695, 696, 5, 41, 0, 0, 696, 4, 1, 0, 0, 0, 697, 698, 5, 44, 0, 0, 698, 6, 1, 0, 0, 0, 699, 700, 5, 46, 0, 0, 700, 8, 1, 0, 0, 0, 701, 702, 7, 0, 0, 0, 702, 703, 7, 1, 0, 0, 703, 704, 7, 2, 0, 0, 704, 705, 7, 3, 0, 0, 705, 10, 1, 0, 0, 0, 706, 707, 5, 61, 0, 0, 707, 708, 5, 62, 0, 0, 708, 12, 1, 0, 0, 0, 709, 710, 5, 45, 0, 0, 710, 711, 5, 62, 0, 0, 711, 14, 1, 0, 0, 0, 712, 713, 5, 91, 0, 0, 713, 16, 1, 0, 0, 0, 714, 715, 5, 93, 0, 0, 715, 18, 1, 0, 0, 0, 716, 717, 5, 58, 0, 0, 717, 20, 1, 0, 0, 0, 718, 719, 5, 124, 0, 0, 719, 22, 1, 0, 0, 0, 720, 721, 5, 94, 0, 0, 721, 24, 1, 0, 0, 0, 722, 723, 5, 36, 0, 0, 723, 26, 1, 0, 0, 0, 724, 725, 5, 123, 0, 0, 725, 726, 5, 45, 0, 0, 726, 28, 1, 0, 0, 0, 727, 728, 5, 45, 0, 0, 728, 729, 5, 125, 0, 0, 729, 30, 1, 0, 0, 0, 730, 731, 5, 123, 0, 0, 731, 32, 1, 0, 0, 0, 732, 733, 5, 125, 0, 0, 733, 34, 1, 0, 0, 0, 734, 735, 7, 4, 0, 0, 735, 736, 7, 5, 0, 0, 736, 737, 7, 0, 0, 0, 737, 738, 7, 6, 0, 0, 738, 739, 7, 7, 0, 0, 739, 740, 7, 8, 0, 0, 740, 36, 1, 0, 0, 0, 741, 742, 7, 4, 0, 0, 742, 743, 7, 9, 0, 0, 743, 744, 7, 9, 0, 0, 744, 38, 1, 0, 0, 0, 745, 746, 7, 4, 0, 0, 746, 747, 7, 9, 0, 0, 747, 748, 7, 10, 0, 0, 748, 749, 7, 2, 0, 0, 749, 750, 7, 7, 0, 0, 750, 40, 1, 0, 0, 0, 751, 752, 7, 4, 0, 0, 752, 753, 7, 11, 0, 0, 753, 754, 7, 8, 0, 0, 754, 755, 7, 6, 0, 0, 755, 756, 7, 12, 0, 0, 756, 42, 1, 0, 0, 0, 757, 758, 7, 4, 0, 0, 758, 759, 7, 13, 0, 0, 759, 760, 7, 13, 0, 0, 760, 44, 1, 0, 0, 0, 761, 762, 7, 4, 0, 0, 762, 763, 7, 13, 0, 0, 763, 764, 7, 8, 0, 0, 764, 765, 7, 6, 0, 0, 765, 766, 7, 12, 0, 0, 766, 46, 1, 0, 0, 0, 767, 768, 7, 4, 0, 0, 768, 769, 7, 7, 0, 0, 769, 770, 7, 4, 0, 0, 770, 771, 7, 13, 0, 0, 771, 772, 7, 14, 0, 0, 772, 773, 7, 15, 0, 0, 773, 774, 7, 6, 0, 0, 774, 48, 1, 0, 0, 0, 775, 776, 7, 4, 0, 0, 776, 777, 7, 7, 0, 0, 777, 778, 7, 9, 0, 0, 778, 50, 1, 0, 0, 0, 779, 780, 7, 4, 0, 0, 780, 781, 7, 7, 0, 0, 781, 782, 7, 14, 0, 0, 782, 52, 1, 0, 0, 0, 783, 784, 7, 4, 0, 0, 784, 785, 7, 12, 0, 0, 785, 786, 7, 12, 0, 0, 786, 787, 7, 4, 0, 0, 787, 788, 7, 14, 0, 0, 788, 54, 1, 0, 0, 0, 789, 790, 7, 4, 0, 0, 790, 791, 7, 0, 0, 0, 791, 56, 1, 0, 0, 0, 792, 793, 7, 4, 0, 0, 793, 794, 7, 0, 0, 0, 794, 795, 7, 16, 0, 0, 795, 58, 1, 0, 0, 0, 796, 797, 7, 4, 0, 0, 797, 798, 7, 8, 0, 0, 798, 60, 1, 0, 0, 0, 799, 800, 7, 4, 0, 0, 800, 801, 7, 17, 0, 0, 801, 802, 7, 8, 0, 0, 802, 803, 7, 18, 0, 0, 803, 804, 7, 19, 0, 0, 804, 805, 7, 12, 0, 0, 805, 806, 7, 2, 0, 0, 806, 807, 7, 15, 0, 0, 807, 808, 7, 4, 0, 0, 808, 809, 7, 8, 0, 0, 809, 810, 7, 2, 0, 0, 810, 811, 7, 19, 0, 0, 811, 812, 7, 7, 0, 0, 812, 62, 1, 0, 0, 0, 813, 814, 7, 5, 0, 0, 814, 815, 7, 6, 0, 0, 815, 816, 7, 20, 0, 0, 816, 817, 7, 2, 0, 0, 817, 818, 7, 7, 0, 0, 818, 64, 1, 0, 0, 0, 819, 820, 7, 5, 0, 0, 820, 821, 7, 6, 0, 0, 821, 822, 7, 12, 0, 0, 822, 823, 7, 7, 0, 0, 823, 824, 7, 19, 0, 0, 824, 825, 7, 17, 0, 0, 825, 826, 7, 13, 0, 0, 826, 827, 7, 13, 0, 0, 827, 828, 7, 2, 0, 0, 828, 66, 1, 0, 0, 0, 829, 830, 7, 5, 0, 0, 830, 831, 7, 6, 0, 0, 831, 832, 7, 8, 0, 0, 832, 833, 7, 21, 0, 0, 833, 834, 7, 6, 0, 0, 834, 835, 7, 6, 0, 0, 835, 836, 7, 7, 0, 0, 836, 68, 1, 0, 0, 0, 837, 838, 7, 5, 0, 0, 838, 839, 7, 19, 0, 0, 839, 840, 7, 8, 0, 0, 840, 841, 7, 18, 0, 0, 841, 70, 1, 0, 0, 0, 842, 843, 7, 5, 0, 0, 843, 844, 7, 14, 0, 0, 844, 72, 1, 0, 0, 0, 845, 846, 7, 16, 0, 0, 846, 847, 7, 4, 0, 0, 847, 848, 7, 13, 0, 0, 848, 849, 7, 13, 0, 0, 849, 74, 1, 0, 0, 0, 850, 851, 7, 16, 0, 0, 851, 852, 7, 4, 0, 0, 852, 853, 7, 13, 0, 0, 853, 854, 7, 13, 0, 0, 854, 855, 7, 6, 0, 0, 855, 856, 7, 9, 0, 0, 856, 76, 1, 0, 0, 0, 857, 858, 7, 16, 0, 0, 858, 859, 7, 4, 0, 0, 859, 860, 7, 0, 0, 0, 860, 861, 7, 16, 0, 0, 861, 862, 7, 4, 0, 0, 862, 863, 7, 9, 0, 0, 863, 864, 7, 6, 0, 0, 864, 78, 1, 0, 0, 0, 865, 866, 7, 16, 0, 0, 866, 867, 7, 4, 0, 0, 867, 868, 7, 0, 0, 0, 868, 869, 7, 6, 0, 0, 869, 80, 1, 0, 0, 0, 870, 871, 7, 16, 0, 0, 871, 872, 7, 4, 0, 0, 872, 873, 7, 0, 0, 0, 873, 874, 7, 8, 0, 0, 874, 82, 1, 0, 0, 0, 875, 876, 7, 16, 0, 0, 876, 877, 7, 4, 0, 0, 877, 878, 7, 8, 0, 0, 878, 879, 7, 4, 0, 0, 879, 880, 7, 13, 0, 0, 880, 881, 7, 19, 0, 0, 881, 882, 7, 20, 0, 0, 882, 84, 1, 0, 0, 0, 883, 884, 7, 16, 0, 0, 884, 885, 7, 4, 0, 0, 885, 886, 7, 8, 0, 0, 886, 887, 7, 4, 0, 0, 887, 888, 7, 13, 0, 0, 888, 889, 7, 19, 0, 0, 889, 890, 7, 20, 0, 0, 890, 891, 7, 0, 0, 0, 891, 86, 1, 0, 0, 0, 892, 893, 7, 16, 0, 0, 893, 894, 7, 19, 0, 0, 894, 895, 7, 13, 0, 0, 895, 896, 7, 17, 0, 0, 896, 897, 7, 10, 0, 0, 897, 898, 7, 7, 0, 0, 898, 88, 1, 0, 0, 0, 899, 900, 7, 16, 0, 0, 900, 901, 7, 19, 0, 0, 901, 902, 7, 13, 0, 0, 902, 903, 7, 17, 0, 0, 903, 904, 7, 10, 0, 0, 904, 905, 7, 7, 0, 0, 905, 906, 7, 0, 0, 0, 906, 90, 1, 0, 0, 0, 907, 908, 7, 16, 0, 0, 908, 909, 7, 19, 0, 0, 909, 910, 7, 10, 0, 0, 910, 911, 7, 10, 0, 0, 911, 912, 7, 6, 0, 0, 912, 913, 7, 7, 0, 0, 913, 914, 7, 8, 0, 0, 914, 92, 1, 0, 0, 0, 915, 916, 7, 16, 0, 0, 916, 917, 7, 19, 0, 0, 917, 918, 7, 10, 0, 0, 918, 919, 7, 10, 0, 0, 919, 920, 7, 2, 0, 0, 920, 921, 7, 8, 0, 0, 921, 94, 1, 0, 0, 0, 922, 923, 7, 16, 0, 0, 923, 924, 7, 19, 0, 0, 924, 925, 7, 10, 0, 0, 925, 926, 7, 10, 0, 0, 926, 927, 7, 2, 0, 0, 927, 928, 7, 8, 0, 0, 928, 929, 7, 8, 0, 0, 929, 930, 7, 6, 0, 0, 930, 931, 7, 9, 0, 0, 931, 96, 1, 0, 0, 0, 932, 933, 7, 16, 0, 0, 933, 934, 7, 19, 0, 0, 934, 935, 7, 7, 0, 0, 935, 936, 7, 9, 0, 0, 936, 937, 7, 2, 0, 0, 937, 938, 7, 8, 0, 0, 938, 939, 7, 2, 0, 0, 939, 940, 7, 19, 0, 0, 940, 941, 7, 7, 0, 0, 941, 942, 7, 4, 0, 0, 942, 943, 7, 13, 0, 0, 943, 98, 1, 0, 0, 0, 944, 945, 7, 16, 0, 0, 945, 946, 7, 19, 0, 0, 946, 947, 7, 7, 0, 0, 947, 948, 7, 0, 0, 0, 948, 949, 7, 8, 0, 0, 949, 950, 7, 12, 0, 0, 950, 951, 7, 4, 0, 0, 951, 952, 7, 2, 0, 0, 952, 953, 7, 7, 0, 0, 953, 954, 7, 8, 0, 0, 954, 100, 1, 0, 0, 0, 955, 956, 7, 16, 0, 0, 956, 957, 7, 19, 0, 0, 957, 958, 7, 17, 0, 0, 958, 959, 7, 7, 0, 0, 959, 960, 7, 8, 0, 0, 960, 102, 1, 0, 0, 0, 961, 962, 7, 16, 0, 0, 962, 963, 7, 19, 0, 0, 963, 964, 7, 3, 0, 0, 964, 965, 7, 4, 0, 0, 965, 966, 7, 12, 0, 0, 966, 967, 7, 8, 0, 0, 967, 968, 7, 2, 0, 0, 968, 969, 7, 8, 0, 0, 969, 970, 7, 2, 0, 0, 970, 971, 7, 19, 0, 0, 971, 972, 7, 7, 0, 0, 972, 104, 1, 0, 0, 0, 973, 974, 7, 16, 0, 0, 974, 975, 7, 12, 0, 0, 975, 976, 7, 6, 0, 0, 976, 977, 7, 4, 0, 0, 977, 978, 7, 8, 0, 0, 978, 979, 7, 6, 0, 0, 979, 106, 1, 0, 0, 0, 980, 981, 7, 16, 0, 0, 981, 982, 7, 12, 0, 0, 982, 983, 7, 19, 0, 0, 983, 984, 7, 0, 0, 0, 984, 985, 7, 0, 0, 0, 985, 108, 1, 0, 0, 0, 986, 987, 7, 16, 0, 0, 987, 988, 7, 17, 0, 0, 988, 989, 7, 5, 0, 0, 989, 990, 7, 6, 0, 0, 990, 110, 1, 0, 0, 0, 991, 992, 7, 16, 0, 0, 992, 993, 7, 17, 0, 0, 993, 994, 7, 12, 0, 0, 994, 995, 7, 12, 0, 0, 995, 996, 7, 6, 0, 0, 996, 997, 7, 7, 0, 0, 997, 998, 7, 8, 0, 0, 998, 112, 1, 0, 0, 0, 999, 1000, 7, 16, 0, 0, 1000, 1001, 7, 17, 0, 0, 1001, 1002, 7, 12, 0, 0, 1002, 1003, 7, 12, 0, 0, 1003, 1004, 7, 6, 0, 0, 1004, 1005, 7, 7, 0, 0, 1005, 1006, 7, 8, 0, 0, 1006, 1007, 5, 95, 0, 0, 1007, 1008, 7, 16, 0, 0, 1008, 1009, 7, 4, 0, 0, 1009, 1010, 7, 8, 0, 0, 1010, 1011, 7, 4, 0, 0, 1011, 1012, 7, 13, 0, 0, 1012, 1013, 7, 19, 0, 0, 1013, 1014, 7, 20, 0, 0, 1014, 114, 1, 0, 0, 0, 1015, 1016, 7, 16, 0, 0, 1016, 1017, 7, 17, 0, 0, 1017, 1018, 7, 12, 0, 0, 1018, 1019, 7, 12, 0, 0, 1019, 1020, 7, 6, 0, 0, 1020, 1021, 7, 7, 0, 0, 1021, 1022, 7, 8, 0, 0, 1022, 1023, 5, 95, 0, 0, 1023, 1024, 7, 9, 0, 0, 1024, 1025, 7, 4, 0, 0, 1025, 1026, 7, 8, 0, 0, 1026, 1027, 7, 6, 0, 0, 1027, 116, 1, 0, 0, 0, 1028, 1029, 7, 16, 0, 0, 1029, 1030, 7, 17, 0, 0, 1030, 1031, 7, 12, 0, 0, 1031, 1032, 7, 12, 0, 0, 1032, 1033, 7, 6, 0, 0, 1033, 1034, 7, 7, 0, 0, 1034, 1035, 7, 8, 0, 0, 1035, 1036, 5, 95, 0, 0, 1036, 1037, 7, 3, 0, 0, 1037, 1038, 7, 4, 0, 0, 1038, 1039, 7, 8, 0, 0, 1039, 1040, 7, 18, 0, 0, 1040, 118, 1, 0, 0, 0, 1041, 1042, 7, 16, 0, 0, 1042, 1043, 7, 17, 0, 0, 1043, 1044, 7, 12, 0, 0, 1044, 1045, 7, 12, 0, 0, 1045, 1046, 7, 6, 0, 0, 1046, 1047, 7, 7, 0, 0, 1047, 1048, 7, 8, 0, 0, 1048, 1049, 5, 95, 0, 0, 1049, 1050, 7, 12, 0, 0, 1050, 1051, 7, 19, 0, 0, 1051, 1052, 7, 13, 0, 0, 1052, 1053, 7, 6, 0, 0, 1053, 120, 1, 0, 0, 0, 1054, 1055, 7, 16, 0, 0, 1055, 1056, 7, 17, 0, 0, 1056, 1057, 7, 12, 0, 0, 1057, 1058, 7, 12, 0, 0, 1058, 1059, 7, 6, 0, 0, 1059, 1060, 7, 7, 0, 0, 1060, 1061, 7, 8, 0, 0, 1061, 1062, 5, 95, 0, 0, 1062, 1063, 7, 0, 0, 0, 1063, 1064, 7, 16, 0, 0, 1064, 1065, 7, 18, 0, 0, 1065, 1066, 7, 6, 0, 0, 1066, 1067, 7, 10, 0, 0, 1067, 1068, 7, 4, 0, 0, 1068, 122, 1, 0, 0, 0, 1069, 1070, 7, 16, 0, 0, 1070, 1071, 7, 17, 0, 0, 1071, 1072, 7, 12, 0, 0, 1072, 1073, 7, 12, 0, 0, 1073, 1074, 7, 6, 0, 0, 1074, 1075, 7, 7, 0, 0, 1075, 1076, 7, 8, 0, 0, 1076, 1077, 5, 95, 0, 0, 1077, 1078, 7, 8, 0, 0, 1078, 1079, 7, 2, 0, 0, 1079, 1080, 7, 10, 0, 0, 1080, 1081, 7, 6, 0, 0, 1081, 124, 1, 0, 0, 0, 1082, 1083, 7, 16, 0, 0, 1083, 1084, 7, 17, 0, 0, 1084, 1085, 7, 12, 0, 0, 1085, 1086, 7, 12, 0, 0, 1086, 1087, 7, 6, 0, 0, 1087, 1088, 7, 7, 0, 0, 1088, 1089, 7, 8, 0, 0, 1089, 1090, 5, 95, 0, 0, 1090, 1091, 7, 8, 0, 0, 1091, 1092, 7, 2, 0, 0, 1092, 1093, 7, 10, 0, 0, 1093, 1094, 7, 6, 0, 0, 1094, 1095, 7, 0, 0, 0, 1095, 1096, 7, 8, 0, 0, 1096, 1097, 7, 4, 0, 0, 1097, 1098, 7, 10, 0, 0, 1098, 1099, 7, 3, 0, 0, 1099, 126, 1, 0, 0, 0, 1100, 1101, 7, 16, 0, 0, 1101, 1102, 7, 17, 0, 0, 1102, 1103, 7, 12, 0, 0, 1103, 1104, 7, 12, 0, 0, 1104, 1105, 7, 6, 0, 0, 1105, 1106, 7, 7, 0, 0, 1106, 1107, 7, 8, 0, 0, 1107, 1108, 5, 95, 0, 0, 1108, 1109, 7, 17, 0, 0, 1109, 1110, 7, 0, 0, 0, 1110, 1111, 7, 6, 0, 0, 1111, 1112, 7, 12, 0, 0, 1112, 128, 1, 0, 0, 0, 1113, 1114, 7, 9, 0, 0, 1114, 1115, 7, 4, 0, 0, 1115, 1116, 7, 8, 0, 0, 1116, 1117, 7, 4, 0, 0, 1117, 130, 1, 0, 0, 0, 1118, 1119, 7, 9, 0, 0, 1119, 1120, 7, 4, 0, 0, 1120, 1121, 7, 8, 0, 0, 1121, 1122, 7, 6, 0, 0, 1122, 132, 1, 0, 0, 0, 1123, 1124, 7, 9, 0, 0, 1124, 1125, 7, 4, 0, 0, 1125, 1126, 7, 14, 0, 0, 1126, 134, 1, 0, 0, 0, 1127, 1128, 7, 9, 0, 0, 1128, 1129, 7, 6, 0, 0, 1129, 1130, 7, 4, 0, 0, 1130, 1131, 7, 13, 0, 0, 1131, 1132, 7, 13, 0, 0, 1132, 1133, 7, 19, 0, 0, 1133, 1134, 7, 16, 0, 0, 1134, 1135, 7, 4, 0, 0, 1135, 1136, 7, 8, 0, 0, 1136, 1137, 7, 6, 0, 0, 1137, 136, 1, 0, 0, 0, 1138, 1139, 7, 9, 0, 0, 1139, 1140, 7, 6, 0, 0, 1140, 1141, 7, 16, 0, 0, 1141, 1142, 7, 13, 0, 0, 1142, 1143, 7, 4, 0, 0, 1143, 1144, 7, 12, 0, 0, 1144, 1145, 7, 6, 0, 0, 1145, 138, 1, 0, 0, 0, 1146, 1147, 7, 9, 0, 0, 1147, 1148, 7, 6, 0, 0, 1148, 1149, 7, 11, 0, 0, 1149, 1150, 7, 4, 0, 0, 1150, 1151, 7, 17, 0, 0, 1151, 1152, 7, 13, 0, 0, 1152, 1153, 7, 8, 0, 0, 1153, 140, 1, 0, 0, 0, 1154, 1155, 7, 9, 0, 0, 1155, 1156, 7, 6, 0, 0, 1156, 1157, 7, 11, 0, 0, 1157, 1158, 7, 2, 0, 0, 1158, 1159, 7, 7, 0, 0, 1159, 1160, 7, 6, 0, 0, 1160, 142, 1, 0, 0, 0, 1161, 1162, 7, 9, 0, 0, 1162, 1163, 7, 6, 0, 0, 1163, 1164, 7, 11, 0, 0, 1164, 1165, 7, 2, 0, 0, 1165, 1166, 7, 7, 0, 0, 1166, 1167, 7, 6, 0, 0, 1167, 1168, 7, 12, 0, 0, 1168, 144, 1, 0, 0, 0, 1169, 1170, 7, 9, 0, 0, 1170, 1171, 7, 6, 0, 0, 1171, 1172, 7, 13, 0, 0, 1172, 1173, 7, 6, 0, 0, 1173, 1174, 7, 8, 0, 0, 1174, 1175, 7, 6, 0, 0, 1175, 146, 1, 0, 0, 0, 1176, 1177, 7, 9, 0, 0, 1177, 1178, 7, 6, 0, 0, 1178, 1179, 7, 7, 0, 0, 1179, 1180, 7, 14, 0, 0, 1180, 148, 1, 0, 0, 0, 1181, 1182, 7, 9, 0, 0, 1182, 1183, 7, 6, 0, 0, 1183, 1184, 7, 0, 0, 0, 1184, 1185, 7, 16, 0, 0, 1185, 150, 1, 0, 0, 0, 1186, 1187, 7, 9, 0, 0, 1187, 1188, 7, 6, 0, 0, 1188, 1189, 7, 0, 0, 0, 1189, 1190, 7, 16, 0, 0, 1190, 1191, 7, 12, 0, 0, 1191, 1192, 7, 2, 0, 0, 1192, 1193, 7, 5, 0, 0, 1193, 1194, 7, 6, 0, 0, 1194, 152, 1, 0, 0, 0, 1195, 1196, 7, 9, 0, 0, 1196, 1197, 7, 6, 0, 0, 1197, 1198, 7, 0, 0, 0, 1198, 1199, 7, 16, 0, 0, 1199, 1200, 7, 12, 0, 0, 1200, 1201, 7, 2, 0, 0, 1201, 1202, 7, 3, 0, 0, 1202, 1203, 7, 8, 0, 0, 1203, 1204, 7, 19, 0, 0, 1204, 1205, 7, 12, 0, 0, 1205, 154, 1, 0, 0, 0, 1206, 1207, 7, 9, 0, 0, 1207, 1208, 7, 6, 0, 0, 1208, 1209, 7, 8, 0, 0, 1209, 1210, 7, 6, 0, 0, 1210, 1211, 7, 12, 0, 0, 1211, 1212, 7, 10, 0, 0, 1212, 1213, 7, 2, 0, 0, 1213, 1214, 7, 7, 0, 0, 1214, 1215, 7, 2, 0, 0, 1215, 1216, 7, 0, 0, 0, 1216, 1217, 7, 8, 0, 0, 1217, 1218, 7, 2, 0, 0, 1218, 1219, 7, 16, 0, 0, 1219, 156, 1, 0, 0, 0, 1220, 1221, 7, 9, 0, 0, 1221, 1222, 7, 2, 0, 0, 1222, 1223, 7, 0, 0, 0, 1223, 1224, 7, 8, 0, 0, 1224, 1225, 7, 2, 0, 0, 1225, 1226, 7, 7, 0, 0, 1226, 1227, 7, 16, 0, 0, 1227, 1228, 7, 8, 0, 0, 1228, 158, 1, 0, 0, 0, 1229, 1230, 7, 9, 0, 0, 1230, 1231, 7, 2, 0, 0, 1231, 1232, 7, 0, 0, 0, 1232, 1233, 7, 8, 0, 0, 1233, 1234, 7, 12, 0, 0, 1234, 1235, 7, 2, 0, 0, 1235, 1236, 7, 5, 0, 0, 1236, 1237, 7, 17, 0, 0, 1237, 1238, 7, 8, 0, 0, 1238, 1239, 7, 6, 0, 0, 1239, 1240, 7, 9, 0, 0, 1240, 160, 1, 0, 0, 0, 1241, 1242, 7, 9, 0, 0, 1242, 1243, 7, 19, 0, 0, 1243, 162, 1, 0, 0, 0, 1244, 1245, 7, 9, 0, 0, 1245, 1246, 7, 19, 0, 0, 1246, 1247, 7, 17, 0, 0, 1247, 1248, 7, 5, 0, 0, 1248, 1249, 7, 13, 0, 0, 1249, 1250, 7, 6, 0, 0, 1250, 164, 1, 0, 0, 0, 1251, 1252, 7, 9, 0, 0, 1252, 1253, 7, 12, 0, 0, 1253, 1254, 7, 19, 0, 0, 1254, 1255, 7, 3, 0, 0, 1255, 166, 1, 0, 0, 0, 1256, 1257, 7, 6, 0, 0, 1257, 1258, 7, 13, 0, 0, 1258, 1259, 7, 0, 0, 0, 1259, 1260, 7, 6, 0, 0, 1260, 168, 1, 0, 0, 0, 1261, 1262, 7, 6, 0, 0, 1262, 1263, 7, 10, 0, 0, 1263, 1264, 7, 3, 0, 0, 1264, 1265, 7, 8, 0, 0, 1265, 1266, 7, 14, 0, 0, 1266, 170, 1, 0, 0, 0, 1267, 1268, 7, 6, 0, 0, 1268, 1269, 7, 13, 0, 0, 1269, 1270, 7, 0, 0, 0, 1270, 1271, 7, 6, 0, 0, 1271, 1272, 7, 2, 0, 0, 1272, 1273, 7, 11, 0, 0, 1273, 172, 1, 0, 0, 0, 1274, 1275, 7, 6, 0, 0, 1275, 1276, 7, 7, 0, 0, 1276, 1277, 7, 16, 0, 0, 1277, 1278, 7, 19, 0, 0, 1278, 1279, 7, 9, 0, 0, 1279, 1280, 7, 2, 0, 0, 1280, 1281, 7, 7, 0, 0, 1281, 1282, 7, 20, 0, 0, 1282, 174, 1, 0, 0, 0, 1283, 1284, 7, 6, 0, 0, 1284, 1285, 7, 7, 0, 0, 1285, 1286, 7, 9, 0, 0, 1286, 176, 1, 0, 0, 0, 1287, 1288, 7, 6, 0, 0, 1288, 1289, 7, 12, 0, 0, 1289, 1290, 7, 12, 0, 0, 1290, 1291, 7, 19, 0, 0, 1291, 1292, 7, 12, 0, 0, 1292, 178, 1, 0, 0, 0, 1293, 1294, 7, 6, 0, 0, 1294, 1295, 7, 0, 0, 0, 1295, 1296, 7, 16, 0, 0, 1296, 1297, 7, 4, 0, 0, 1297, 1298, 7, 3, 0, 0, 1298, 1299, 7, 6, 0, 0, 1299, 180, 1, 0, 0, 0, 1300, 1301, 7, 6, 0, 0, 1301, 1302, 7, 22, 0, 0, 1302, 1303, 7, 16, 0, 0, 1303, 1304, 7, 6, 0, 0, 1304, 1305, 7, 3, 0, 0, 1305, 1306, 7, 8, 0, 0, 1306, 182, 1, 0, 0, 0, 1307, 1308, 7, 6, 0, 0, 1308, 1309, 7, 22, 0, 0, 1309, 1310, 7, 16, 0, 0, 1310, 1311, 7, 13, 0, 0, 1311, 1312, 7, 17, 0, 0, 1312, 1313, 7, 9, 0, 0, 1313, 1314, 7, 2, 0, 0, 1314, 1315, 7, 7, 0, 0, 1315, 1316, 7, 20, 0, 0, 1316, 184, 1, 0, 0, 0, 1317, 1318, 7, 6, 0, 0, 1318, 1319, 7, 22, 0, 0, 1319, 1320, 7, 6, 0, 0, 1320, 1321, 7, 16, 0, 0, 1321, 1322, 7, 17, 0, 0, 1322, 1323, 7, 8, 0, 0, 1323, 1324, 7, 6, 0, 0, 1324, 186, 1, 0, 0, 0, 1325, 1326, 7, 6, 0, 0, 1326, 1327, 7, 22, 0, 0, 1327, 1328, 7, 2, 0, 0, 1328, 1329, 7, 0, 0, 0, 1329, 1330, 7, 8, 0, 0, 1330, 1331, 7, 0, 0, 0, 1331, 188, 1, 0, 0, 0, 1332, 1333, 7, 6, 0, 0, 1333, 1334, 7, 22, 0, 0, 1334, 1335, 7, 3, 0, 0, 1335, 1336, 7, 13, 0, 0, 1336, 1337, 7, 4, 0, 0, 1337, 1338, 7, 2, 0, 0, 1338, 1339, 7, 7, 0, 0, 1339, 190, 1, 0, 0, 0, 1340, 1341, 7, 6, 0, 0, 1341, 1342, 7, 22, 0, 0, 1342, 1343, 7, 8, 0, 0, 1343, 1344, 7, 12, 0, 0, 1344, 1345, 7, 4, 0, 0, 1345, 1346, 7, 16, 0, 0, 1346, 1347, 7, 8, 0, 0, 1347, 192, 1, 0, 0, 0, 1348, 1349, 7, 11, 0, 0, 1349, 1350, 7, 4, 0, 0, 1350, 1351, 7, 13, 0, 0, 1351, 1352, 7, 0, 0, 0, 1352, 1353, 7, 6, 0, 0, 1353, 194, 1, 0, 0, 0, 1354, 1355, 7, 11, 0, 0, 1355, 1356, 7, 6, 0, 0, 1356, 1357, 7, 8, 0, 0, 1357, 1358, 7, 16, 0, 0, 1358, 1359, 7, 18, 0, 0, 1359, 196, 1, 0, 0, 0, 1360, 1361, 7, 11, 0, 0, 1361, 1362, 7, 2, 0, 0, 1362, 1363, 7, 13, 0, 0, 1363, 1364, 7, 8, 0, 0, 1364, 1365, 7, 6, 0, 0, 1365, 1366, 7, 12, 0, 0, 1366, 198, 1, 0, 0, 0, 1367, 1368, 7, 11, 0, 0, 1368, 1369, 7, 2, 0, 0, 1369, 1370, 7, 7, 0, 0, 1370, 1371, 7, 4, 0, 0, 1371, 1372, 7, 13, 0, 0, 1372, 200, 1, 0, 0, 0, 1373, 1374, 7, 11, 0, 0, 1374, 1375, 7, 2, 0, 0, 1375, 1376, 7, 12, 0, 0, 1376, 1377, 7, 0, 0, 0, 1377, 1378, 7, 8, 0, 0, 1378, 202, 1, 0, 0, 0, 1379, 1380, 7, 11, 0, 0, 1380, 1381, 7, 19, 0, 0, 1381, 1382, 7, 13, 0, 0, 1382, 1383, 7, 13, 0, 0, 1383, 1384, 7, 19, 0, 0, 1384, 1385, 7, 21, 0, 0, 1385, 1386, 7, 2, 0, 0, 1386, 1387, 7, 7, 0, 0, 1387, 1388, 7, 20, 0, 0, 1388, 204, 1, 0, 0, 0, 1389, 1390, 7, 11, 0, 0, 1390, 1391, 7, 19, 0, 0, 1391, 1392, 7, 12, 0, 0, 1392, 206, 1, 0, 0, 0, 1393, 1394, 7, 11, 0, 0, 1394, 1395, 7, 19, 0, 0, 1395, 1396, 7, 12, 0, 0, 1396, 1397, 7, 10, 0, 0, 1397, 1398, 7, 4, 0, 0, 1398, 1399, 7, 8, 0, 0, 1399, 208, 1, 0, 0, 0, 1400, 1401, 7, 11, 0, 0, 1401, 1402, 7, 12, 0, 0, 1402, 1403, 7, 19, 0, 0, 1403, 1404, 7, 10, 0, 0, 1404, 210, 1, 0, 0, 0, 1405, 1406, 7, 11, 0, 0, 1406, 1407, 7, 17, 0, 0, 1407, 1408, 7, 13, 0, 0, 1408, 1409, 7, 13, 0, 0, 1409, 212, 1, 0, 0, 0, 1410, 1411, 7, 11, 0, 0, 1411, 1412, 7, 17, 0, 0, 1412, 1413, 7, 7, 0, 0, 1413, 1414, 7, 16, 0, 0, 1414, 1415, 7, 8, 0, 0, 1415, 1416, 7, 2, 0, 0, 1416, 1417, 7, 19, 0, 0, 1417, 1418, 7, 7, 0, 0, 1418, 214, 1, 0, 0, 0, 1419, 1420, 7, 11, 0, 0, 1420, 1421, 7, 17, 0, 0, 1421, 1422, 7, 7, 0, 0, 1422, 1423, 7, 16, 0, 0, 1423, 1424, 7, 8, 0, 0, 1424, 1425, 7, 2, 0, 0, 1425, 1426, 7, 19, 0, 0, 1426, 1427, 7, 7, 0, 0, 1427, 1428, 7, 0, 0, 0, 1428, 216, 1, 0, 0, 0, 1429, 1430, 7, 20, 0, 0, 1430, 1431, 7, 12, 0, 0, 1431, 1432, 7, 4, 0, 0, 1432, 1433, 7, 16, 0, 0, 1433, 1434, 7, 6, 0, 0, 1434, 218, 1, 0, 0, 0, 1435, 1436, 7, 20, 0, 0, 1436, 1437, 7, 12, 0, 0, 1437, 1438, 7, 4, 0, 0, 1438, 1439, 7, 7, 0, 0, 1439, 1440, 7, 8, 0, 0, 1440, 220, 1, 0, 0, 0, 1441, 1442, 7, 20, 0, 0, 1442, 1443, 7, 12, 0, 0, 1443, 1444, 7, 4, 0, 0, 1444, 1445, 7, 7, 0, 0, 1445, 1446, 7, 8, 0, 0, 1446, 1447, 7, 6, 0, 0, 1447, 1448, 7, 9, 0, 0, 1448, 222, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 1451, 7, 12, 0, 0, 1451, 1452, 7, 4, 0, 0, 1452, 1453, 7, 7, 0, 0, 1453, 1454, 7, 8, 0, 0, 1454, 1455, 7, 0, 0, 0, 1455, 224, 1, 0, 0, 0, 1456, 1457, 7, 20, 0, 0, 1457, 1458, 7, 12, 0, 0, 1458, 1459, 7, 4, 0, 0, 1459, 1460, 7, 3, 0, 0, 1460, 1461, 7, 18, 0, 0, 1461, 1462, 7, 23, 0, 0, 1462, 1463, 7, 2, 0, 0, 1463, 1464, 7, 15, 0, 0, 1464, 226, 1, 0, 0, 0, 1465, 1466, 7, 20, 0, 0, 1466, 1467, 7, 12, 0, 0, 1467, 1468, 7, 19, 0, 0, 1468, 1469, 7, 17, 0, 0, 1469, 1470, 7, 3, 0, 0, 1470, 228, 1, 0, 0, 0, 1471, 1472, 7, 20, 0, 0, 1472, 1473, 7, 12, 0, 0, 1473, 1474, 7, 19, 0, 0, 1474, 1475, 7, 17, 0, 0, 1475, 1476, 7, 3, 0, 0, 1476, 1477, 7, 2, 0, 0, 1477, 1478, 7, 7, 0, 0, 1478, 1479, 7, 20, 0, 0, 1479, 230, 1, 0, 0, 0, 1480, 1481, 7, 20, 0, 0, 1481, 1482, 7, 12, 0, 0, 1482, 1483, 7, 19, 0, 0, 1483, 1484, 7, 17, 0, 0, 1484, 1485, 7, 3, 0, 0, 1485, 1486, 7, 0, 0, 0, 1486, 232, 1, 0, 0, 0, 1487, 1488, 7, 18, 0, 0, 1488, 1489, 7, 4, 0, 0, 1489, 1490, 7, 23, 0, 0, 1490, 1491, 7, 2, 0, 0, 1491, 1492, 7, 7, 0, 0, 1492, 1493, 7, 20, 0, 0, 1493, 234, 1, 0, 0, 0, 1494, 1495, 7, 18, 0, 0, 1495, 1496, 7, 19, 0, 0, 1496, 1497, 7, 17, 0, 0, 1497, 1498, 7, 12, 0, 0, 1498, 236, 1, 0, 0, 0, 1499, 1500, 7, 2, 0, 0, 1500, 1501, 7, 11, 0, 0, 1501, 238, 1, 0, 0, 0, 1502, 1503, 7, 2, 0, 0, 1503, 1504, 7, 20, 0, 0, 1504, 1505, 7, 7, 0, 0, 1505, 1506, 7, 19, 0, 0, 1506, 1507, 7, 12, 0, 0, 1507, 1508, 7, 6, 0, 0, 1508, 240, 1, 0, 0, 0, 1509, 1510, 7, 2, 0, 0, 1510, 1511, 7, 10, 0, 0, 1511, 1512, 7, 10, 0, 0, 1512, 1513, 7, 6, 0, 0, 1513, 1514, 7, 9, 0, 0, 1514, 1515, 7, 2, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 1517, 7, 8, 0, 0, 1517, 1518, 7, 6, 0, 0, 1518, 242, 1, 0, 0, 0, 1519, 1520, 7, 2, 0, 0, 1520, 1521, 7, 7, 0, 0, 1521, 244, 1, 0, 0, 0, 1522, 1523, 7, 2, 0, 0, 1523, 1524, 7, 7, 0, 0, 1524, 1525, 7, 16, 0, 0, 1525, 1526, 7, 13, 0, 0, 1526, 1527, 7, 17, 0, 0, 1527, 1528, 7, 9, 0, 0, 1528, 1529, 7, 2, 0, 0, 1529, 1530, 7, 7, 0, 0, 1530, 1531, 7, 20, 0, 0, 1531, 246, 1, 0, 0, 0, 1532, 1533, 7, 2, 0, 0, 1533, 1534, 7, 7, 0, 0, 1534, 1535, 7, 2, 0, 0, 1535, 1536, 7, 8, 0, 0, 1536, 1537, 7, 2, 0, 0, 1537, 1538, 7, 4, 0, 0, 1538, 1539, 7, 13, 0, 0, 1539, 248, 1, 0, 0, 0, 1540, 1541, 7, 2, 0, 0, 1541, 1542, 7, 7, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 6, 0, 0, 1544, 1545, 7, 12, 0, 0, 1545, 250, 1, 0, 0, 0, 1546, 1547, 7, 2, 0, 0, 1547, 1548, 7, 7, 0, 0, 1548, 1549, 7, 3, 0, 0, 1549, 1550, 7, 17, 0, 0, 1550, 1551, 7, 8, 0, 0, 1551, 252, 1, 0, 0, 0, 1552, 1553, 7, 2, 0, 0, 1553, 1554, 7, 7, 0, 0, 1554, 1555, 7, 0, 0, 0, 1555, 1556, 7, 6, 0, 0, 1556, 1557, 7, 12, 0, 0, 1557, 1558, 7, 8, 0, 0, 1558, 254, 1, 0, 0, 0, 1559, 1560, 7, 2, 0, 0, 1560, 1561, 7, 7, 0, 0, 1561, 1562, 7, 8, 0, 0, 1562, 1563, 7, 6, 0, 0, 1563, 1564, 7, 12, 0, 0, 1564, 1565, 7, 0, 0, 0, 1565, 1566, 7, 6, 0, 0, 1566, 1567, 7, 16, 0, 0, 1567, 1568, 7, 8, 0, 0, 1568, 256, 1, 0, 0, 0, 1569, 1570, 7, 2, 0, 0, 1570, 1571, 7, 7, 0, 0, 1571, 1572, 7, 8, 0, 0, 1572, 1573, 7, 6, 0, 0, 1573, 1574, 7, 12, 0, 0, 1574, 1575, 7, 23, 0, 0, 1575, 1576, 7, 4, 0, 0, 1576, 1577, 7, 13, 0, 0, 1577, 258, 1, 0, 0, 0, 1578, 1579, 7, 2, 0, 0, 1579, 1580, 7, 7, 0, 0, 1580, 1581, 7, 8, 0, 0, 1581, 1582, 7, 19, 0, 0, 1582, 260, 1, 0, 0, 0, 1583, 1584, 7, 2, 0, 0, 1584, 1585, 7, 7, 0, 0, 1585, 1586, 7, 23, 0, 0, 1586, 1587, 7, 19, 0, 0, 1587, 1588, 7, 1, 0, 0, 1588, 1589, 7, 6, 0, 0, 1589, 1590, 7, 12, 0, 0, 1590, 262, 1, 0, 0, 0, 1591, 1592, 7, 2, 0, 0, 1592, 1593, 7, 19, 0, 0, 1593, 264, 1, 0, 0, 0, 1594, 1595, 7, 2, 0, 0, 1595, 1596, 7, 0, 0, 0, 1596, 266, 1, 0, 0, 0, 1597, 1598, 7, 2, 0, 0, 1598, 1599, 7, 0, 0, 0, 1599, 1600, 7, 19, 0, 0, 1600, 1601, 7, 13, 0, 0, 1601, 1602, 7, 4, 0, 0, 1602, 1603, 7, 8, 0, 0, 1603, 1604, 7, 2, 0, 0, 1604, 1605, 7, 19, 0, 0, 1605, 1606, 7, 7, 0, 0, 1606, 268, 1, 0, 0, 0, 1607, 1608, 7, 2, 0, 0, 1608, 1609, 7, 8, 0, 0, 1609, 1610, 7, 6, 0, 0, 1610, 1611, 7, 12, 0, 0, 1611, 1612, 7, 4, 0, 0, 1612, 1613, 7, 8, 0, 0, 1613, 1614, 7, 6, 0, 0, 1614, 270, 1, 0, 0, 0, 1615, 1616, 7, 24, 0, 0, 1616, 1617, 7, 19, 0, 0, 1617, 1618, 7, 2, 0, 0, 1618, 1619, 7, 7, 0, 0, 1619, 272, 1, 0, 0, 0, 1620, 1621, 7, 24, 0, 0, 1621, 1622, 7, 0, 0, 0, 1622, 1623, 7, 19, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 274, 1, 0, 0, 0, 1625, 1626, 7, 24, 0, 0, 1626, 1627, 7, 0, 0, 0, 1627, 1628, 7, 19, 0, 0, 1628, 1629, 7, 7, 0, 0, 1629, 1630, 5, 95, 0, 0, 1630, 1631, 7, 4, 0, 0, 1631, 1632, 7, 12, 0, 0, 1632, 1633, 7, 12, 0, 0, 1633, 1634, 7, 4, 0, 0, 1634, 1635, 7, 14, 0, 0, 1635, 276, 1, 0, 0, 0, 1636, 1637, 7, 24, 0, 0, 1637, 1638, 7, 0, 0, 0, 1638, 1639, 7, 19, 0, 0, 1639, 1640, 7, 7, 0, 0, 1640, 1641, 5, 95, 0, 0, 1641, 1642, 7, 6, 0, 0, 1642, 1643, 7, 22, 0, 0, 1643, 1644, 7, 2, 0, 0, 1644, 1645, 7, 0, 0, 0, 1645, 1646, 7, 8, 0, 0, 1646, 1647, 7, 0, 0, 0, 1647, 278, 1, 0, 0, 0, 1648, 1649, 7, 24, 0, 0, 1649, 1650, 7, 0, 0, 0, 1650, 1651, 7, 19, 0, 0, 1651, 1652, 7, 7, 0, 0, 1652, 1653, 5, 95, 0, 0, 1653, 1654, 7, 19, 0, 0, 1654, 1655, 7, 5, 0, 0, 1655, 1656, 7, 24, 0, 0, 1656, 1657, 7, 6, 0, 0, 1657, 1658, 7, 16, 0, 0, 1658, 1659, 7, 8, 0, 0, 1659, 280, 1, 0, 0, 0, 1660, 1661, 7, 24, 0, 0, 1661, 1662, 7, 0, 0, 0, 1662, 1663, 7, 19, 0, 0, 1663, 1664, 7, 7, 0, 0, 1664, 1665, 5, 95, 0, 0, 1665, 1666, 7, 25, 0, 0, 1666, 1667, 7, 17, 0, 0, 1667, 1668, 7, 6, 0, 0, 1668, 1669, 7, 12, 0, 0, 1669, 1670, 7, 14, 0, 0, 1670, 282, 1, 0, 0, 0, 1671, 1672, 7, 24, 0, 0, 1672, 1673, 7, 0, 0, 0, 1673, 1674, 7, 19, 0, 0, 1674, 1675, 7, 7, 0, 0, 1675, 1676, 5, 95, 0, 0, 1676, 1677, 7, 8, 0, 0, 1677, 1678, 7, 4, 0, 0, 1678, 1679, 7, 5, 0, 0, 1679, 1680, 7, 13, 0, 0, 1680, 1681, 7, 6, 0, 0, 1681, 284, 1, 0, 0, 0, 1682, 1683, 7, 24, 0, 0, 1683, 1684, 7, 0, 0, 0, 1684, 1685, 7, 19, 0, 0, 1685, 1686, 7, 7, 0, 0, 1686, 1687, 5, 95, 0, 0, 1687, 1688, 7, 23, 0, 0, 1688, 1689, 7, 4, 0, 0, 1689, 1690, 7, 13, 0, 0, 1690, 1691, 7, 17, 0, 0, 1691, 1692, 7, 6, 0, 0, 1692, 286, 1, 0, 0, 0, 1693, 1694, 7, 1, 0, 0, 1694, 1695, 7, 6, 0, 0, 1695, 1696, 7, 6, 0, 0, 1696, 1697, 7, 3, 0, 0, 1697, 288, 1, 0, 0, 0, 1698, 1699, 7, 1, 0, 0, 1699, 1700, 7, 6, 0, 0, 1700, 1701, 7, 14, 0, 0, 1701, 290, 1, 0, 0, 0, 1702, 1703, 7, 1, 0, 0, 1703, 1704, 7, 6, 0, 0, 1704, 1705, 7, 14, 0, 0, 1705, 1706, 7, 0, 0, 0, 1706, 292, 1, 0, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 1709, 7, 4, 0, 0, 1709, 1710, 7, 7, 0, 0, 1710, 1711, 7, 20, 0, 0, 1711, 1712, 7, 17, 0, 0, 1712, 1713, 7, 4, 0, 0, 1713, 1714, 7, 20, 0, 0, 1714, 1715, 7, 6, 0, 0, 1715, 294, 1, 0, 0, 0, 1716, 1717, 7, 13, 0, 0, 1717, 1718, 7, 4, 0, 0, 1718, 1719, 7, 0, 0, 0, 1719, 1720, 7, 8, 0, 0, 1720, 296, 1, 0, 0, 0, 1721, 1722, 7, 13, 0, 0, 1722, 1723, 7, 4, 0, 0, 1723, 1724, 7, 8, 0, 0, 1724, 1725, 7, 6, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 4, 0, 0, 1727, 1728, 7, 13, 0, 0, 1728, 298, 1, 0, 0, 0, 1729, 1730, 7, 13, 0, 0, 1730, 1731, 7, 6, 0, 0, 1731, 1732, 7, 4, 0, 0, 1732, 1733, 7, 9, 0, 0, 1733, 1734, 7, 2, 0, 0, 1734, 1735, 7, 7, 0, 0, 1735, 1736, 7, 20, 0, 0, 1736, 300, 1, 0, 0, 0, 1737, 1738, 7, 13, 0, 0, 1738, 1739, 7, 6, 0, 0, 1739, 1740, 7, 4, 0, 0, 1740, 1741, 7, 23, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 302, 1, 0, 0, 0, 1743, 1744, 7, 13, 0, 0, 1744, 1745, 7, 6, 0, 0, 1745, 1746, 7, 11, 0, 0, 1746, 1747, 7, 8, 0, 0, 1747, 304, 1, 0, 0, 0, 1748, 1749, 7, 13, 0, 0, 1749, 1750, 7, 6, 0, 0, 1750, 1751, 7, 23, 0, 0, 1751, 1752, 7, 6, 0, 0, 1752, 1753, 7, 13, 0, 0, 1753, 306, 1, 0, 0, 0, 1754, 1755, 7, 13, 0, 0, 1755, 1756, 7, 2, 0, 0, 1756, 1757, 7, 1, 0, 0, 1757, 1758, 7, 6, 0, 0, 1758, 308, 1, 0, 0, 0, 1759, 1760, 7, 13, 0, 0, 1760, 1761, 7, 2, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 2, 0, 0, 1763, 1764, 7, 8, 0, 0, 1764, 310, 1, 0, 0, 0, 1765, 1766, 7, 13, 0, 0, 1766, 1767, 7, 2, 0, 0, 1767, 1768, 7, 0, 0, 0, 1768, 1769, 7, 8, 0, 0, 1769, 1770, 7, 4, 0, 0, 1770, 1771, 7, 20, 0, 0, 1771, 1772, 7, 20, 0, 0, 1772, 312, 1, 0, 0, 0, 1773, 1774, 7, 13, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 16, 0, 0, 1776, 1777, 7, 4, 0, 0, 1777, 1778, 7, 13, 0, 0, 1778, 314, 1, 0, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 1781, 7, 19, 0, 0, 1781, 1782, 7, 16, 0, 0, 1782, 1783, 7, 4, 0, 0, 1783, 1784, 7, 13, 0, 0, 1784, 1785, 7, 8, 0, 0, 1785, 1786, 7, 2, 0, 0, 1786, 1787, 7, 10, 0, 0, 1787, 1788, 7, 6, 0, 0, 1788, 316, 1, 0, 0, 0, 1789, 1790, 7, 13, 0, 0, 1790, 1791, 7, 19, 0, 0, 1791, 1792, 7, 16, 0, 0, 1792, 1793, 7, 4, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 8, 0, 0, 1795, 1796, 7, 2, 0, 0, 1796, 1797, 7, 10, 0, 0, 1797, 1798, 7, 6, 0, 0, 1798, 1799, 7, 0, 0, 0, 1799, 1800, 7, 8, 0, 0, 1800, 1801, 7, 4, 0, 0, 1801, 1802, 7, 10, 0, 0, 1802, 1803, 7, 3, 0, 0, 1803, 318, 1, 0, 0, 0, 1804, 1805, 7, 13, 0, 0, 1805, 1806, 7, 19, 0, 0, 1806, 1807, 7, 20, 0, 0, 1807, 1808, 7, 2, 0, 0, 1808, 1809, 7, 16, 0, 0, 1809, 1810, 7, 4, 0, 0, 1810, 1811, 7, 13, 0, 0, 1811, 320, 1, 0, 0, 0, 1812, 1813, 7, 13, 0, 0, 1813, 1814, 7, 19, 0, 0, 1814, 1815, 7, 19, 0, 0, 1815, 1816, 7, 3, 0, 0, 1816, 322, 1, 0, 0, 0, 1817, 1818, 7, 10, 0, 0, 1818, 1819, 7, 4, 0, 0, 1819, 1820, 7, 3, 0, 0, 1820, 324, 1, 0, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 4, 0, 0, 1823, 1824, 7, 8, 0, 0, 1824, 1825, 7, 16, 0, 0, 1825, 1826, 7, 18, 0, 0, 1826, 326, 1, 0, 0, 0, 1827, 1828, 7, 10, 0, 0, 1828, 1829, 7, 4, 0, 0, 1829, 1830, 7, 8, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 1832, 7, 18, 0, 0, 1832, 1833, 7, 6, 0, 0, 1833, 1834, 7, 9, 0, 0, 1834, 328, 1, 0, 0, 0, 1835, 1836, 7, 10, 0, 0, 1836, 1837, 7, 4, 0, 0, 1837, 1838, 7, 8, 0, 0, 1838, 1839, 7, 16, 0, 0, 1839, 1840, 7, 18, 0, 0, 1840, 1841, 7, 6, 0, 0, 1841, 1842, 7, 0, 0, 0, 1842, 330, 1, 0, 0, 0, 1843, 1844, 7, 10, 0, 0, 1844, 1845, 7, 4, 0, 0, 1845, 1846, 7, 8, 0, 0, 1846, 1847, 7, 16, 0, 0, 1847, 1848, 7, 18, 0, 0, 1848, 1849, 5, 95, 0, 0, 1849, 1850, 7, 12, 0, 0, 1850, 1851, 7, 6, 0, 0, 1851, 1852, 7, 16, 0, 0, 1852, 1853, 7, 19, 0, 0, 1853, 1854, 7, 20, 0, 0, 1854, 1855, 7, 7, 0, 0, 1855, 1856, 7, 2, 0, 0, 1856, 1857, 7, 15, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 332, 1, 0, 0, 0, 1859, 1860, 7, 10, 0, 0, 1860, 1861, 7, 4, 0, 0, 1861, 1862, 7, 8, 0, 0, 1862, 1863, 7, 6, 0, 0, 1863, 1864, 7, 12, 0, 0, 1864, 1865, 7, 2, 0, 0, 1865, 1866, 7, 4, 0, 0, 1866, 1867, 7, 13, 0, 0, 1867, 1868, 7, 2, 0, 0, 1868, 1869, 7, 15, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 9, 0, 0, 1871, 334, 1, 0, 0, 0, 1872, 1873, 7, 10, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 4, 0, 0, 1875, 1876, 7, 0, 0, 0, 1876, 1877, 7, 17, 0, 0, 1877, 1878, 7, 12, 0, 0, 1878, 1879, 7, 6, 0, 0, 1879, 1880, 7, 0, 0, 0, 1880, 336, 1, 0, 0, 0, 1881, 1882, 7, 10, 0, 0, 1882, 1883, 7, 6, 0, 0, 1883, 1884, 7, 12, 0, 0, 1884, 1885, 7, 20, 0, 0, 1885, 1886, 7, 6, 0, 0, 1886, 338, 1, 0, 0, 0, 1887, 1888, 7, 10, 0, 0, 1888, 1889, 7, 2, 0, 0, 1889, 1890, 7, 7, 0, 0, 1890, 1891, 7, 17, 0, 0, 1891, 1892, 7, 8, 0, 0, 1892, 1893, 7, 6, 0, 0, 1893, 340, 1, 0, 0, 0, 1894, 1895, 7, 10, 0, 0, 1895, 1896, 7, 19, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 8, 0, 0, 1898, 1899, 7, 18, 0, 0, 1899, 342, 1, 0, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 4, 0, 0, 1902, 1903, 7, 8, 0, 0, 1903, 1904, 7, 17, 0, 0, 1904, 1905, 7, 12, 0, 0, 1905, 1906, 7, 4, 0, 0, 1906, 1907, 7, 13, 0, 0, 1907, 344, 1, 0, 0, 0, 1908, 1909, 7, 7, 0, 0, 1909, 1910, 7, 6, 0, 0, 1910, 1911, 7, 0, 0, 0, 1911, 1912, 7, 8, 0, 0, 1912, 1913, 7, 6, 0, 0, 1913, 1914, 7, 9, 0, 0, 1914, 346, 1, 0, 0, 0, 1915, 1916, 7, 7, 0, 0, 1916, 1917, 7, 6, 0, 0, 1917, 1918, 7, 22, 0, 0, 1918, 1919, 7, 8, 0, 0, 1919, 348, 1, 0, 0, 0, 1920, 1921, 7, 7, 0, 0, 1921, 1922, 7, 11, 0, 0, 1922, 1923, 7, 16, 0, 0, 1923, 350, 1, 0, 0, 0, 1924, 1925, 7, 7, 0, 0, 1925, 1926, 7, 11, 0, 0, 1926, 1927, 7, 9, 0, 0, 1927, 352, 1, 0, 0, 0, 1928, 1929, 7, 7, 0, 0, 1929, 1930, 7, 11, 0, 0, 1930, 1931, 7, 1, 0, 0, 1931, 1932, 7, 16, 0, 0, 1932, 354, 1, 0, 0, 0, 1933, 1934, 7, 7, 0, 0, 1934, 1935, 7, 11, 0, 0, 1935, 1936, 7, 1, 0, 0, 1936, 1937, 7, 9, 0, 0, 1937, 356, 1, 0, 0, 0, 1938, 1939, 7, 7, 0, 0, 1939, 1940, 7, 19, 0, 0, 1940, 358, 1, 0, 0, 0, 1941, 1942, 7, 7, 0, 0, 1942, 1943, 7, 19, 0, 0, 1943, 1944, 7, 7, 0, 0, 1944, 1945, 7, 6, 0, 0, 1945, 360, 1, 0, 0, 0, 1946, 1947, 7, 7, 0, 0, 1947, 1948, 7, 19, 0, 0, 1948, 1949, 7, 12, 0, 0, 1949, 1950, 7, 10, 0, 0, 1950, 1951, 7, 4, 0, 0, 1951, 1952, 7, 13, 0, 0, 1952, 1953, 7, 2, 0, 0, 1953, 1954, 7, 15, 0, 0, 1954, 1955, 7, 6, 0, 0, 1955, 362, 1, 0, 0, 0, 1956, 1957, 7, 7, 0, 0, 1957, 1958, 7, 19, 0, 0, 1958, 1959, 7, 8, 0, 0, 1959, 364, 1, 0, 0, 0, 1960, 1961, 7, 7, 0, 0, 1961, 1962, 7, 17, 0, 0, 1962, 1963, 7, 13, 0, 0, 1963, 1964, 7, 13, 0, 0, 1964, 366, 1, 0, 0, 0, 1965, 1966, 7, 7, 0, 0, 1966, 1967, 7, 17, 0, 0, 1967, 1968, 7, 13, 0, 0, 1968, 1969, 7, 13, 0, 0, 1969, 1970, 7, 2, 0, 0, 1970, 1971, 7, 11, 0, 0, 1971, 368, 1, 0, 0, 0, 1972, 1973, 7, 7, 0, 0, 1973, 1974, 7, 17, 0, 0, 1974, 1975, 7, 13, 0, 0, 1975, 1976, 7, 13, 0, 0, 1976, 1977, 7, 0, 0, 0, 1977, 370, 1, 0, 0, 0, 1978, 1979, 7, 19, 0, 0, 1979, 1980, 7, 5, 0, 0, 1980, 1981, 7, 24, 0, 0, 1981, 1982, 7, 6, 0, 0, 1982, 1983, 7, 16, 0, 0, 1983, 1984, 7, 8, 0, 0, 1984, 372, 1, 0, 0, 0, 1985, 1986, 7, 19, 0, 0, 1986, 1987, 7, 11, 0, 0, 1987, 374, 1, 0, 0, 0, 1988, 1989, 7, 19, 0, 0, 1989, 1990, 7, 11, 0, 0, 1990, 1991, 7, 11, 0, 0, 1991, 1992, 7, 0, 0, 0, 1992, 1993, 7, 6, 0, 0, 1993, 1994, 7, 8, 0, 0, 1994, 376, 1, 0, 0, 0, 1995, 1996, 7, 19, 0, 0, 1996, 1997, 7, 10, 0, 0, 1997, 1998, 7, 2, 0, 0, 1998, 1999, 7, 8, 0, 0, 1999, 378, 1, 0, 0, 0, 2000, 2001, 7, 19, 0, 0, 2001, 2002, 7, 7, 0, 0, 2002, 380, 1, 0, 0, 0, 2003, 2004, 7, 19, 0, 0, 2004, 2005, 7, 7, 0, 0, 2005, 2006, 7, 6, 0, 0, 2006, 382, 1, 0, 0, 0, 2007, 2008, 7, 19, 0, 0, 2008, 2009, 7, 7, 0, 0, 2009, 2010, 7, 13, 0, 0, 2010, 2011, 7, 14, 0, 0, 2011, 384, 1, 0, 0, 0, 2012, 2013, 7, 19, 0, 0, 2013, 2014, 7, 3, 0, 0, 2014, 2015, 7, 8, 0, 0, 2015, 2016, 7, 2, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 386, 1, 0, 0, 0, 2019, 2020, 7, 19, 0, 0, 2020, 2021, 7, 12, 0, 0, 2021, 388, 1, 0, 0, 0, 2022, 2023, 7, 19, 0, 0, 2023, 2024, 7, 12, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 2026, 7, 6, 0, 0, 2026, 2027, 7, 12, 0, 0, 2027, 390, 1, 0, 0, 0, 2028, 2029, 7, 19, 0, 0, 2029, 2030, 7, 12, 0, 0, 2030, 2031, 7, 9, 0, 0, 2031, 2032, 7, 2, 0, 0, 2032, 2033, 7, 7, 0, 0, 2033, 2034, 7, 4, 0, 0, 2034, 2035, 7, 13, 0, 0, 2035, 2036, 7, 2, 0, 0, 2036, 2037, 7, 8, 0, 0, 2037, 2038, 7, 14, 0, 0, 2038, 392, 1, 0, 0, 0, 2039, 2040, 7, 19, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 8, 0, 0, 2042, 2043, 7, 6, 0, 0, 2043, 2044, 7, 12, 0, 0, 2044, 394, 1, 0, 0, 0, 2045, 2046, 7, 19, 0, 0, 2046, 2047, 7, 17, 0, 0, 2047, 2048, 7, 8, 0, 0, 2048, 2049, 7, 3, 0, 0, 2049, 2050, 7, 17, 0, 0, 2050, 2051, 7, 8, 0, 0, 2051, 396, 1, 0, 0, 0, 2052, 2053, 7, 19, 0, 0, 2053, 2054, 7, 23, 0, 0, 2054, 2055, 7, 6, 0, 0, 2055, 2056, 7, 12, 0, 0, 2056, 398, 1, 0, 0, 0, 2057, 2058, 7, 19, 0, 0, 2058, 2059, 7, 23, 0, 0, 2059, 2060, 7, 6, 0, 0, 2060, 2061, 7, 12, 0, 0, 2061, 2062, 7, 11, 0, 0, 2062, 2063, 7, 13, 0, 0, 2063, 2064, 7, 19, 0, 0, 2064, 2065, 7, 21, 0, 0, 2065, 400, 1, 0, 0, 0, 2066, 2067, 7, 3, 0, 0, 2067, 2068, 7, 4, 0, 0, 2068, 2069, 7, 12, 0, 0, 2069, 2070, 7, 8, 0, 0, 2070, 2071, 7, 2, 0, 0, 2071, 2072, 7, 8, 0, 0, 2072, 2073, 7, 2, 0, 0, 2073, 2074, 7, 19, 0, 0, 2074, 2075, 7, 7, 0, 0, 2075, 402, 1, 0, 0, 0, 2076, 2077, 7, 3, 0, 0, 2077, 2078, 7, 4, 0, 0, 2078, 2079, 7, 12, 0, 0, 2079, 2080, 7, 8, 0, 0, 2080, 2081, 7, 2, 0, 0, 2081, 2082, 7, 8, 0, 0, 2082, 2083, 7, 2, 0, 0, 2083, 2084, 7, 19, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 2086, 7, 0, 0, 0, 2086, 404, 1, 0, 0, 0, 2087, 2088, 7, 3, 0, 0, 2088, 2089, 7, 4, 0, 0, 2089, 2090, 7, 0, 0, 0, 2090, 2091, 7, 0, 0, 0, 2091, 2092, 7, 2, 0, 0, 2092, 2093, 7, 7, 0, 0, 2093, 2094, 7, 20, 0, 0, 2094, 406, 1, 0, 0, 0, 2095, 2096, 7, 3, 0, 0, 2096, 2097, 7, 4, 0, 0, 2097, 2098, 7, 0, 0, 0, 2098, 2099, 7, 8, 0, 0, 2099, 408, 1, 0, 0, 0, 2100, 2101, 7, 3, 0, 0, 2101, 2102, 7, 4, 0, 0, 2102, 2103, 7, 8, 0, 0, 2103, 2104, 7, 18, 0, 0, 2104, 410, 1, 0, 0, 0, 2105, 2106, 7, 3, 0, 0, 2106, 2107, 7, 4, 0, 0, 2107, 2108, 7, 8, 0, 0, 2108, 2109, 7, 8, 0, 0, 2109, 2110, 7, 6, 0, 0, 2110, 2111, 7, 12, 0, 0, 2111, 2112, 7, 7, 0, 0, 2112, 412, 1, 0, 0, 0, 2113, 2114, 7, 3, 0, 0, 2114, 2115, 7, 6, 0, 0, 2115, 2116, 7, 12, 0, 0, 2116, 414, 1, 0, 0, 0, 2117, 2118, 7, 3, 0, 0, 2118, 2119, 7, 6, 0, 0, 2119, 2120, 7, 12, 0, 0, 2120, 2121, 7, 2, 0, 0, 2121, 2122, 7, 19, 0, 0, 2122, 2123, 7, 9, 0, 0, 2123, 416, 1, 0, 0, 0, 2124, 2125, 7, 3, 0, 0, 2125, 2126, 7, 6, 0, 0, 2126, 2127, 7, 12, 0, 0, 2127, 2128, 7, 10, 0, 0, 2128, 2129, 7, 17, 0, 0, 2129, 2130, 7, 8, 0, 0, 2130, 2131, 7, 6, 0, 0, 2131, 418, 1, 0, 0, 0, 2132, 2133, 7, 3, 0, 0, 2133, 2134, 7, 13, 0, 0, 2134, 2135, 7, 4, 0, 0, 2135, 2136, 7, 7, 0, 0, 2136, 420, 1, 0, 0, 0, 2137, 2138, 7, 3, 0, 0, 2138, 2139, 7, 19, 0, 0, 2139, 2140, 7, 0, 0, 0, 2140, 2141, 7, 2, 0, 0, 2141, 2142, 7, 8, 0, 0, 2142, 2143, 7, 2, 0, 0, 2143, 2144, 7, 19, 0, 0, 2144, 2145, 7, 7, 0, 0, 2145, 422, 1, 0, 0, 0, 2146, 2147, 7, 3, 0, 0, 2147, 2148, 7, 12, 0, 0, 2148, 2149, 7, 6, 0, 0, 2149, 2150, 7, 16, 0, 0, 2150, 2151, 7, 6, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 2, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 20, 0, 0, 2155, 424, 1, 0, 0, 0, 2156, 2157, 7, 3, 0, 0, 2157, 2158, 7, 12, 0, 0, 2158, 2159, 7, 6, 0, 0, 2159, 2160, 7, 16, 0, 0, 2160, 2161, 7, 2, 0, 0, 2161, 2162, 7, 0, 0, 0, 2162, 2163, 7, 2, 0, 0, 2163, 2164, 7, 19, 0, 0, 2164, 2165, 7, 7, 0, 0, 2165, 426, 1, 0, 0, 0, 2166, 2167, 7, 3, 0, 0, 2167, 2168, 7, 12, 0, 0, 2168, 2169, 7, 6, 0, 0, 2169, 2170, 7, 3, 0, 0, 2170, 2171, 7, 4, 0, 0, 2171, 2172, 7, 12, 0, 0, 2172, 2173, 7, 6, 0, 0, 2173, 428, 1, 0, 0, 0, 2174, 2175, 7, 3, 0, 0, 2175, 2176, 7, 12, 0, 0, 2176, 2177, 7, 2, 0, 0, 2177, 2178, 7, 23, 0, 0, 2178, 2179, 7, 2, 0, 0, 2179, 2180, 7, 13, 0, 0, 2180, 2181, 7, 6, 0, 0, 2181, 2182, 7, 20, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 0, 0, 0, 2184, 430, 1, 0, 0, 0, 2185, 2186, 7, 3, 0, 0, 2186, 2187, 7, 12, 0, 0, 2187, 2188, 7, 19, 0, 0, 2188, 2189, 7, 3, 0, 0, 2189, 2190, 7, 6, 0, 0, 2190, 2191, 7, 12, 0, 0, 2191, 2192, 7, 8, 0, 0, 2192, 2193, 7, 2, 0, 0, 2193, 2194, 7, 6, 0, 0, 2194, 2195, 7, 0, 0, 0, 2195, 432, 1, 0, 0, 0, 2196, 2197, 7, 3, 0, 0, 2197, 2198, 7, 12, 0, 0, 2198, 2199, 7, 17, 0, 0, 2199, 2200, 7, 7, 0, 0, 2200, 2201, 7, 6, 0, 0, 2201, 434, 1, 0, 0, 0, 2202, 2203, 7, 25, 0, 0, 2203, 2204, 7, 17, 0, 0, 2204, 2205, 7, 19, 0, 0, 2205, 2206, 7, 8, 0, 0, 2206, 2207, 7, 6, 0, 0, 2207, 2208, 7, 0, 0, 0, 2208, 436, 1, 0, 0, 0, 2209, 2210, 7, 12, 0, 0, 2210, 2211, 7, 4, 0, 0, 2211, 2212, 7, 7, 0, 0, 2212, 2213, 7, 20, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 438, 1, 0, 0, 0, 2215, 2216, 7, 12, 0, 0, 2216, 2217, 7, 6, 0, 0, 2217, 2218, 7, 4, 0, 0, 2218, 2219, 7, 9, 0, 0, 2219, 440, 1, 0, 0, 0, 2220, 2221, 7, 12, 0, 0, 2221, 2222, 7, 6, 0, 0, 2222, 2223, 7, 16, 0, 0, 2223, 2224, 7, 17, 0, 0, 2224, 2225, 7, 12, 0, 0, 2225, 2226, 7, 0, 0, 0, 2226, 2227, 7, 2, 0, 0, 2227, 2228, 7, 23, 0, 0, 2228, 2229, 7, 6, 0, 0, 2229, 442, 1, 0, 0, 0, 2230, 2231, 7, 12, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 11, 0, 0, 2233, 2234, 7, 12, 0, 0, 2234, 2235, 7, 6, 0, 0, 2235, 2236, 7, 0, 0, 0, 2236, 2237, 7, 18, 0, 0, 2237, 444, 1, 0, 0, 0, 2238, 2239, 7, 12, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 2241, 7, 7, 0, 0, 2241, 2242, 7, 4, 0, 0, 2242, 2243, 7, 10, 0, 0, 2243, 2244, 7, 6, 0, 0, 2244, 446, 1, 0, 0, 0, 2245, 2246, 7, 12, 0, 0, 2246, 2247, 7, 6, 0, 0, 2247, 2248, 7, 3, 0, 0, 2248, 2249, 7, 6, 0, 0, 2249, 2250, 7, 4, 0, 0, 2250, 2251, 7, 8, 0, 0, 2251, 448, 1, 0, 0, 0, 2252, 2253, 7, 12, 0, 0, 2253, 2254, 7, 6, 0, 0, 2254, 2255, 7, 3, 0, 0, 2255, 2256, 7, 6, 0, 0, 2256, 2257, 7, 4, 0, 0, 2257, 2258, 7, 8, 0, 0, 2258, 2259, 7, 4, 0, 0, 2259, 2260, 7, 5, 0, 0, 2260, 2261, 7, 13, 0, 0, 2261, 2262, 7, 6, 0, 0, 2262, 450, 1, 0, 0, 0, 2263, 2264, 7, 12, 0, 0, 2264, 2265, 7, 6, 0, 0, 2265, 2266, 7, 3, 0, 0, 2266, 2267, 7, 13, 0, 0, 2267, 2268, 7, 4, 0, 0, 2268, 2269, 7, 16, 0, 0, 2269, 2270, 7, 6, 0, 0, 2270, 452, 1, 0, 0, 0, 2271, 2272, 7, 12, 0, 0, 2272, 2273, 7, 6, 0, 0, 2273, 2274, 7, 0, 0, 0, 2274, 2275, 7, 6, 0, 0, 2275, 2276, 7, 8, 0, 0, 2276, 454, 1, 0, 0, 0, 2277, 2278, 7, 12, 0, 0, 2278, 2279, 7, 6, 0, 0, 2279, 2280, 7, 0, 0, 0, 2280, 2281, 7, 3, 0, 0, 2281, 2282, 7, 6, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 8, 0, 0, 2284, 456, 1, 0, 0, 0, 2285, 2286, 7, 12, 0, 0, 2286, 2287, 7, 6, 0, 0, 2287, 2288, 7, 0, 0, 0, 2288, 2289, 7, 8, 0, 0, 2289, 2290, 7, 12, 0, 0, 2290, 2291, 7, 2, 0, 0, 2291, 2292, 7, 16, 0, 0, 2292, 2293, 7, 8, 0, 0, 2293, 458, 1, 0, 0, 0, 2294, 2295, 7, 12, 0, 0, 2295, 2296, 7, 6, 0, 0, 2296, 2297, 7, 8, 0, 0, 2297, 2298, 7, 17, 0, 0, 2298, 2299, 7, 12, 0, 0, 2299, 2300, 7, 7, 0, 0, 2300, 460, 1, 0, 0, 0, 2301, 2302, 7, 12, 0, 0, 2302, 2303, 7, 6, 0, 0, 2303, 2304, 7, 8, 0, 0, 2304, 2305, 7, 17, 0, 0, 2305, 2306, 7, 12, 0, 0, 2306, 2307, 7, 7, 0, 0, 2307, 2308, 7, 2, 0, 0, 2308, 2309, 7, 7, 0, 0, 2309, 2310, 7, 20, 0, 0, 2310, 462, 1, 0, 0, 0, 2311, 2312, 7, 12, 0, 0, 2312, 2313, 7, 6, 0, 0, 2313, 2314, 7, 8, 0, 0, 2314, 2315, 7, 17, 0, 0, 2315, 2316, 7, 12, 0, 0, 2316, 2317, 7, 7, 0, 0, 2317, 2318, 7, 0, 0, 0, 2318, 464, 1, 0, 0, 0, 2319, 2320, 7, 12, 0, 0, 2320, 2321, 7, 6, 0, 0, 2321, 2322, 7, 23, 0, 0, 2322, 2323, 7, 19, 0, 0, 2323, 2324, 7, 1, 0, 0, 2324, 2325, 7, 6, 0, 0, 2325, 466, 1, 0, 0, 0, 2326, 2327, 7, 12, 0, 0, 2327, 2328, 7, 2, 0, 0, 2328, 2329, 7, 20, 0, 0, 2329, 2330, 7, 18, 0, 0, 2330, 2331, 7, 8, 0, 0, 2331, 468, 1, 0, 0, 0, 2332, 2333, 7, 12, 0, 0, 2333, 2334, 7, 19, 0, 0, 2334, 2335, 7, 13, 0, 0, 2335, 2336, 7, 6, 0, 0, 2336, 470, 1, 0, 0, 0, 2337, 2338, 7, 12, 0, 0, 2338, 2339, 7, 19, 0, 0, 2339, 2340, 7, 13, 0, 0, 2340, 2341, 7, 6, 0, 0, 2341, 2342, 7, 0, 0, 0, 2342, 472, 1, 0, 0, 0, 2343, 2344, 7, 12, 0, 0, 2344, 2345, 7, 19, 0, 0, 2345, 2346, 7, 13, 0, 0, 2346, 2347, 7, 13, 0, 0, 2347, 2348, 7, 5, 0, 0, 2348, 2349, 7, 4, 0, 0, 2349, 2350, 7, 16, 0, 0, 2350, 2351, 7, 1, 0, 0, 2351, 474, 1, 0, 0, 0, 2352, 2353, 7, 12, 0, 0, 2353, 2354, 7, 19, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 13, 0, 0, 2356, 2357, 7, 17, 0, 0, 2357, 2358, 7, 3, 0, 0, 2358, 476, 1, 0, 0, 0, 2359, 2360, 7, 12, 0, 0, 2360, 2361, 7, 19, 0, 0, 2361, 2362, 7, 21, 0, 0, 2362, 478, 1, 0, 0, 0, 2363, 2364, 7, 12, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 2366, 7, 21, 0, 0, 2366, 2367, 7, 0, 0, 0, 2367, 480, 1, 0, 0, 0, 2368, 2369, 7, 12, 0, 0, 2369, 2370, 7, 17, 0, 0, 2370, 2371, 7, 7, 0, 0, 2371, 2372, 7, 7, 0, 0, 2372, 2373, 7, 2, 0, 0, 2373, 2374, 7, 7, 0, 0, 2374, 2375, 7, 20, 0, 0, 2375, 482, 1, 0, 0, 0, 2376, 2377, 7, 0, 0, 0, 2377, 2378, 7, 16, 0, 0, 2378, 2379, 7, 4, 0, 0, 2379, 2380, 7, 13, 0, 0, 2380, 2381, 7, 4, 0, 0, 2381, 2382, 7, 12, 0, 0, 2382, 484, 1, 0, 0, 0, 2383, 2384, 7, 0, 0, 0, 2384, 2385, 7, 16, 0, 0, 2385, 2386, 7, 18, 0, 0, 2386, 2387, 7, 6, 0, 0, 2387, 2388, 7, 10, 0, 0, 2388, 2389, 7, 4, 0, 0, 2389, 486, 1, 0, 0, 0, 2390, 2391, 7, 0, 0, 0, 2391, 2392, 7, 16, 0, 0, 2392, 2393, 7, 18, 0, 0, 2393, 2394, 7, 6, 0, 0, 2394, 2395, 7, 10, 0, 0, 2395, 2396, 7, 4, 0, 0, 2396, 2397, 7, 0, 0, 0, 2397, 488, 1, 0, 0, 0, 2398, 2399, 7, 0, 0, 0, 2399, 2400, 7, 6, 0, 0, 2400, 2401, 7, 16, 0, 0, 2401, 2402, 7, 19, 0, 0, 2402, 2403, 7, 7, 0, 0, 2403, 2404, 7, 9, 0, 0, 2404, 490, 1, 0, 0, 0, 2405, 2406, 7, 0, 0, 0, 2406, 2407, 7, 6, 0, 0, 2407, 2408, 7, 16, 0, 0, 2408, 2409, 7, 17, 0, 0, 2409, 2410, 7, 12, 0, 0, 2410, 2411, 7, 2, 0, 0, 2411, 2412, 7, 8, 0, 0, 2412, 2413, 7, 14, 0, 0, 2413, 492, 1, 0, 0, 0, 2414, 2415, 7, 0, 0, 0, 2415, 2416, 7, 6, 0, 0, 2416, 2417, 7, 6, 0, 0, 2417, 2418, 7, 1, 0, 0, 2418, 494, 1, 0, 0, 0, 2419, 2420, 7, 0, 0, 0, 2420, 2421, 7, 6, 0, 0, 2421, 2422, 7, 13, 0, 0, 2422, 2423, 7, 6, 0, 0, 2423, 2424, 7, 16, 0, 0, 2424, 2425, 7, 8, 0, 0, 2425, 496, 1, 0, 0, 0, 2426, 2427, 7, 0, 0, 0, 2427, 2428, 7, 6, 0, 0, 2428, 2429, 7, 12, 0, 0, 2429, 2430, 7, 2, 0, 0, 2430, 2431, 7, 4, 0, 0, 2431, 2432, 7, 13, 0, 0, 2432, 2433, 7, 2, 0, 0, 2433, 2434, 7, 15, 0, 0, 2434, 2435, 7, 4, 0, 0, 2435, 2436, 7, 5, 0, 0, 2436, 2437, 7, 13, 0, 0, 2437, 2438, 7, 6, 0, 0, 2438, 498, 1, 0, 0, 0, 2439, 2440, 7, 0, 0, 0, 2440, 2441, 7, 6, 0, 0, 2441, 2442, 7, 0, 0, 0, 2442, 2443, 7, 0, 0, 0, 2443, 2444, 7, 2, 0, 0, 2444, 2445, 7, 19, 0, 0, 2445, 2446, 7, 7, 0, 0, 2446, 500, 1, 0, 0, 0, 2447, 2448, 7, 0, 0, 0, 2448, 2449, 7, 6, 0, 0, 2449, 2450, 7, 8, 0, 0, 2450, 502, 1, 0, 0, 0, 2451, 2452, 7, 0, 0, 0, 2452, 2453, 7, 6, 0, 0, 2453, 2454, 7, 8, 0, 0, 2454, 2455, 7, 0, 0, 0, 2455, 504, 1, 0, 0, 0, 2456, 2457, 7, 0, 0, 0, 2457, 2458, 7, 18, 0, 0, 2458, 2459, 7, 19, 0, 0, 2459, 2460, 7, 21, 0, 0, 2460, 506, 1, 0, 0, 0, 2461, 2462, 7, 0, 0, 0, 2462, 2463, 7, 19, 0, 0, 2463, 2464, 7, 10, 0, 0, 2464, 2465, 7, 6, 0, 0, 2465, 508, 1, 0, 0, 0, 2466, 2467, 7, 0, 0, 0, 2467, 2468, 7, 8, 0, 0, 2468, 2469, 7, 4, 0, 0, 2469, 2470, 7, 12, 0, 0, 2470, 2471, 7, 8, 0, 0, 2471, 510, 1, 0, 0, 0, 2472, 2473, 7, 0, 0, 0, 2473, 2474, 7, 8, 0, 0, 2474, 2475, 7, 4, 0, 0, 2475, 2476, 7, 8, 0, 0, 2476, 2477, 7, 0, 0, 0, 2477, 512, 1, 0, 0, 0, 2478, 2479, 7, 0, 0, 0, 2479, 2480, 7, 17, 0, 0, 2480, 2481, 7, 5, 0, 0, 2481, 2482, 7, 0, 0, 0, 2482, 2483, 7, 6, 0, 0, 2483, 2484, 7, 8, 0, 0, 2484, 514, 1, 0, 0, 0, 2485, 2486, 7, 0, 0, 0, 2486, 2487, 7, 17, 0, 0, 2487, 2488, 7, 5, 0, 0, 2488, 2489, 7, 0, 0, 0, 2489, 2490, 7, 8, 0, 0, 2490, 2491, 7, 12, 0, 0, 2491, 2492, 7, 2, 0, 0, 2492, 2493, 7, 7, 0, 0, 2493, 2494, 7, 20, 0, 0, 2494, 516, 1, 0, 0, 0, 2495, 2496, 7, 0, 0, 0, 2496, 2497, 7, 14, 0, 0, 2497, 2498, 7, 0, 0, 0, 2498, 2499, 7, 8, 0, 0, 2499, 2500, 7, 6, 0, 0, 2500, 2501, 7, 10, 0, 0, 2501, 518, 1, 0, 0, 0, 2502, 2503, 7, 8, 0, 0, 2503, 2504, 7, 4, 0, 0, 2504, 2505, 7, 5, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 2507, 7, 6, 0, 0, 2507, 520, 1, 0, 0, 0, 2508, 2509, 7, 8, 0, 0, 2509, 2510, 7, 4, 0, 0, 2510, 2511, 7, 5, 0, 0, 2511, 2512, 7, 13, 0, 0, 2512, 2513, 7, 6, 0, 0, 2513, 2514, 7, 0, 0, 0, 2514, 522, 1, 0, 0, 0, 2515, 2516, 7, 8, 0, 0, 2516, 2517, 7, 4, 0, 0, 2517, 2518, 7, 5, 0, 0, 2518, 2519, 7, 13, 0, 0, 2519, 2520, 7, 6, 0, 0, 2520, 2521, 7, 0, 0, 0, 2521, 2522, 7, 4, 0, 0, 2522, 2523, 7, 10, 0, 0, 2523, 2524, 7, 3, 0, 0, 2524, 2525, 7, 13, 0, 0, 2525, 2526, 7, 6, 0, 0, 2526, 524, 1, 0, 0, 0, 2527, 2528, 7, 8, 0, 0, 2528, 2529, 7, 6, 0, 0, 2529, 2530, 7, 22, 0, 0, 2530, 2531, 7, 8, 0, 0, 2531, 526, 1, 0, 0, 0, 2532, 2533, 7, 0, 0, 0, 2533, 2534, 7, 8, 0, 0, 2534, 2535, 7, 12, 0, 0, 2535, 2536, 7, 2, 0, 0, 2536, 2537, 7, 7, 0, 0, 2537, 2538, 7, 20, 0, 0, 2538, 528, 1, 0, 0, 0, 2539, 2540, 7, 8, 0, 0, 2540, 2541, 7, 18, 0, 0, 2541, 2542, 7, 6, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 530, 1, 0, 0, 0, 2544, 2545, 7, 8, 0, 0, 2545, 2546, 7, 2, 0, 0, 2546, 2547, 7, 6, 0, 0, 2547, 2548, 7, 0, 0, 0, 2548, 532, 1, 0, 0, 0, 2549, 2550, 7, 8, 0, 0, 2550, 2551, 7, 2, 0, 0, 2551, 2552, 7, 10, 0, 0, 2552, 2553, 7, 6, 0, 0, 2553, 534, 1, 0, 0, 0, 2554, 2555, 7, 8, 0, 0, 2555, 2556, 7, 2, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 6, 0, 0, 2558, 2559, 7, 0, 0, 0, 2559, 2560, 7, 8, 0, 0, 2560, 2561, 7, 4, 0, 0, 2561, 2562, 7, 10, 0, 0, 2562, 2563, 7, 3, 0, 0, 2563, 536, 1, 0, 0, 0, 2564, 2565, 7, 8, 0, 0, 2565, 2566, 7, 19, 0, 0, 2566, 538, 1, 0, 0, 0, 2567, 2568, 7, 8, 0, 0, 2568, 2569, 7, 12, 0, 0, 2569, 2570, 7, 4, 0, 0, 2570, 2571, 7, 2, 0, 0, 2571, 2572, 7, 13, 0, 0, 2572, 2573, 7, 2, 0, 0, 2573, 2574, 7, 7, 0, 0, 2574, 2575, 7, 20, 0, 0, 2575, 540, 1, 0, 0, 0, 2576, 2577, 7, 8, 0, 0, 2577, 2578, 7, 12, 0, 0, 2578, 2579, 7, 4, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 0, 0, 0, 2581, 2582, 7, 4, 0, 0, 2582, 2583, 7, 16, 0, 0, 2583, 2584, 7, 8, 0, 0, 2584, 2585, 7, 2, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 542, 1, 0, 0, 0, 2588, 2589, 7, 8, 0, 0, 2589, 2590, 7, 12, 0, 0, 2590, 2591, 7, 2, 0, 0, 2591, 2592, 7, 10, 0, 0, 2592, 544, 1, 0, 0, 0, 2593, 2594, 7, 8, 0, 0, 2594, 2595, 7, 12, 0, 0, 2595, 2596, 7, 17, 0, 0, 2596, 2597, 7, 6, 0, 0, 2597, 546, 1, 0, 0, 0, 2598, 2599, 7, 8, 0, 0, 2599, 2600, 7, 12, 0, 0, 2600, 2601, 7, 17, 0, 0, 2601, 2602, 7, 7, 0, 0, 2602, 2603, 7, 16, 0, 0, 2603, 2604, 7, 4, 0, 0, 2604, 2605, 7, 8, 0, 0, 2605, 2606, 7, 6, 0, 0, 2606, 548, 1, 0, 0, 0, 2607, 2608, 7, 8, 0, 0, 2608, 2609, 7, 12, 0, 0, 2609, 2610, 7, 14, 0, 0, 2610, 2611, 5, 95, 0, 0, 2611, 2612, 7, 16, 0, 0, 2612, 2613, 7, 4, 0, 0, 2613, 2614, 7, 0, 0, 0, 2614, 2615, 7, 8, 0, 0, 2615, 550, 1, 0, 0, 0, 2616, 2617, 7, 8, 0, 0, 2617, 2618, 7, 14, 0, 0, 2618, 2619, 7, 3, 0, 0, 2619, 2620, 7, 6, 0, 0, 2620, 552, 1, 0, 0, 0, 2621, 2622, 7, 17, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 0, 0, 0, 2624, 2625, 7, 16, 0, 0, 2625, 2626, 7, 4, 0, 0, 2626, 2627, 7, 3, 0, 0, 2627, 2628, 7, 6, 0, 0, 2628, 554, 1, 0, 0, 0, 2629, 2630, 7, 17, 0, 0, 2630, 2631, 7, 7, 0, 0, 2631, 2632, 7, 5, 0, 0, 2632, 2633, 7, 19, 0, 0, 2633, 2634, 7, 17, 0, 0, 2634, 2635, 7, 7, 0, 0, 2635, 2636, 7, 9, 0, 0, 2636, 2637, 7, 6, 0, 0, 2637, 2638, 7, 9, 0, 0, 2638, 556, 1, 0, 0, 0, 2639, 2640, 7, 17, 0, 0, 2640, 2641, 7, 7, 0, 0, 2641, 2642, 7, 16, 0, 0, 2642, 2643, 7, 19, 0, 0, 2643, 2644, 7, 10, 0, 0, 2644, 2645, 7, 10, 0, 0, 2645, 2646, 7, 2, 0, 0, 2646, 2647, 7, 8, 0, 0, 2647, 2648, 7, 8, 0, 0, 2648, 2649, 7, 6, 0, 0, 2649, 2650, 7, 9, 0, 0, 2650, 558, 1, 0, 0, 0, 2651, 2652, 7, 17, 0, 0, 2652, 2653, 7, 7, 0, 0, 2653, 2654, 7, 16, 0, 0, 2654, 2655, 7, 19, 0, 0, 2655, 2656, 7, 7, 0, 0, 2656, 2657, 7, 9, 0, 0, 2657, 2658, 7, 2, 0, 0, 2658, 2659, 7, 8, 0, 0, 2659, 2660, 7, 2, 0, 0, 2660, 2661, 7, 19, 0, 0, 2661, 2662, 7, 7, 0, 0, 2662, 2663, 7, 4, 0, 0, 2663, 2664, 7, 13, 0, 0, 2664, 560, 1, 0, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 7, 0, 0, 2667, 2668, 7, 2, 0, 0, 2668, 2669, 7, 19, 0, 0, 2669, 2670, 7, 7, 0, 0, 2670, 562, 1, 0, 0, 0, 2671, 2672, 7, 17, 0, 0, 2672, 2673, 7, 7, 0, 0, 2673, 2674, 7, 2, 0, 0, 2674, 2675, 7, 25, 0, 0, 2675, 2676, 7, 17, 0, 0, 2676, 2677, 7, 6, 0, 0, 2677, 564, 1, 0, 0, 0, 2678, 2679, 7, 17, 0, 0, 2679, 2680, 7, 7, 0, 0, 2680, 2681, 7, 1, 0, 0, 2681, 2682, 7, 7, 0, 0, 2682, 2683, 7, 19, 0, 0, 2683, 2684, 7, 21, 0, 0, 2684, 2685, 7, 7, 0, 0, 2685, 566, 1, 0, 0, 0, 2686, 2687, 7, 17, 0, 0, 2687, 2688, 7, 7, 0, 0, 2688, 2689, 7, 10, 0, 0, 2689, 2690, 7, 4, 0, 0, 2690, 2691, 7, 8, 0, 0, 2691, 2692, 7, 16, 0, 0, 2692, 2693, 7, 18, 0, 0, 2693, 2694, 7, 6, 0, 0, 2694, 2695, 7, 9, 0, 0, 2695, 568, 1, 0, 0, 0, 2696, 2697, 7, 17, 0, 0, 2697, 2698, 7, 7, 0, 0, 2698, 2699, 7, 7, 0, 0, 2699, 2700, 7, 6, 0, 0, 2700, 2701, 7, 0, 0, 0, 2701, 2702, 7, 8, 0, 0, 2702, 570, 1, 0, 0, 0, 2703, 2704, 7, 17, 0, 0, 2704, 2705, 7, 7, 0, 0, 2705, 2706, 7, 8, 0, 0, 2706, 2707, 7, 2, 0, 0, 2707, 2708, 7, 13, 0, 0, 2708, 572, 1, 0, 0, 0, 2709, 2710, 7, 17, 0, 0, 2710, 2711, 7, 3, 0, 0, 2711, 2712, 7, 9, 0, 0, 2712, 2713, 7, 4, 0, 0, 2713, 2714, 7, 8, 0, 0, 2714, 2715, 7, 6, 0, 0, 2715, 574, 1, 0, 0, 0, 2716, 2717, 7, 17, 0, 0, 2717, 2718, 7, 0, 0, 0, 2718, 2719, 7, 6, 0, 0, 2719, 576, 1, 0, 0, 0, 2720, 2721, 7, 17, 0, 0, 2721, 2722, 7, 0, 0, 0, 2722, 2723, 7, 6, 0, 0, 2723, 2724, 7, 12, 0, 0, 2724, 578, 1, 0, 0, 0, 2725, 2726, 7, 17, 0, 0, 2726, 2727, 7, 0, 0, 0, 2727, 2728, 7, 2, 0, 0, 2728, 2729, 7, 7, 0, 0, 2729, 2730, 7, 20, 0, 0, 2730, 580, 1, 0, 0, 0, 2731, 2732, 7, 17, 0, 0, 2732, 2733, 7, 8, 0, 0, 2733, 2734, 7, 11, 0, 0, 2734, 2735, 5, 49, 0, 0, 2735, 2736, 5, 54, 0, 0, 2736, 582, 1, 0, 0, 0, 2737, 2738, 7, 17, 0, 0, 2738, 2739, 7, 8, 0, 0, 2739, 2740, 7, 11, 0, 0, 2740, 2741, 5, 51, 0, 0, 2741, 2742, 5, 50, 0, 0, 2742, 584, 1, 0, 0, 0, 2743, 2744, 7, 17, 0, 0, 2744, 2745, 7, 8, 0, 0, 2745, 2746, 7, 11, 0, 0, 2746, 2747, 5, 56, 0, 0, 2747, 586, 1, 0, 0, 0, 2748, 2749, 7, 23, 0, 0, 2749, 2750, 7, 4, 0, 0, 2750, 2751, 7, 13, 0, 0, 2751, 2752, 7, 2, 0, 0, 2752, 2753, 7, 9, 0, 0, 2753, 2754, 7, 4, 0, 0, 2754, 2755, 7, 8, 0, 0, 2755, 2756, 7, 6, 0, 0, 2756, 588, 1, 0, 0, 0, 2757, 2758, 7, 23, 0, 0, 2758, 2759, 7, 4, 0, 0, 2759, 2760, 7, 13, 0, 0, 2760, 2761, 7, 17, 0, 0, 2761, 2762, 7, 6, 0, 0, 2762, 590, 1, 0, 0, 0, 2763, 2764, 7, 23, 0, 0, 2764, 2765, 7, 4, 0, 0, 2765, 2766, 7, 13, 0, 0, 2766, 2767, 7, 17, 0, 0, 2767, 2768, 7, 6, 0, 0, 2768, 2769, 7, 0, 0, 0, 2769, 592, 1, 0, 0, 0, 2770, 2771, 7, 23, 0, 0, 2771, 2772, 7, 6, 0, 0, 2772, 2773, 7, 12, 0, 0, 2773, 2774, 7, 5, 0, 0, 2774, 2775, 7, 19, 0, 0, 2775, 2776, 7, 0, 0, 0, 2776, 2777, 7, 6, 0, 0, 2777, 594, 1, 0, 0, 0, 2778, 2779, 7, 23, 0, 0, 2779, 2780, 7, 6, 0, 0, 2780, 2781, 7, 12, 0, 0, 2781, 2782, 7, 0, 0, 0, 2782, 2783, 7, 2, 0, 0, 2783, 2784, 7, 19, 0, 0, 2784, 2785, 7, 7, 0, 0, 2785, 596, 1, 0, 0, 0, 2786, 2787, 7, 23, 0, 0, 2787, 2788, 7, 2, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 21, 0, 0, 2790, 598, 1, 0, 0, 0, 2791, 2792, 7, 21, 0, 0, 2792, 2793, 7, 18, 0, 0, 2793, 2794, 7, 6, 0, 0, 2794, 2795, 7, 7, 0, 0, 2795, 600, 1, 0, 0, 0, 2796, 2797, 7, 21, 0, 0, 2797, 2798, 7, 18, 0, 0, 2798, 2799, 7, 6, 0, 0, 2799, 2800, 7, 12, 0, 0, 2800, 2801, 7, 6, 0, 0, 2801, 602, 1, 0, 0, 0, 2802, 2803, 7, 21, 0, 0, 2803, 2804, 7, 18, 0, 0, 2804, 2805, 7, 2, 0, 0, 2805, 2806, 7, 13, 0, 0, 2806, 2807, 7, 6, 0, 0, 2807, 604, 1, 0, 0, 0, 2808, 2809, 7, 21, 0, 0, 2809, 2810, 7, 2, 0, 0, 2810, 2811, 7, 7, 0, 0, 2811, 2812, 7, 9, 0, 0, 2812, 2813, 7, 19, 0, 0, 2813, 2814, 7, 21, 0, 0, 2814, 606, 1, 0, 0, 0, 2815, 2816, 7, 21, 0, 0, 2816, 2817, 7, 2, 0, 0, 2817, 2818, 7, 8, 0, 0, 2818, 2819, 7, 18, 0, 0, 2819, 608, 1, 0, 0, 0, 2820, 2821, 7, 21, 0, 0, 2821, 2822, 7, 2, 0, 0, 2822, 2823, 7, 8, 0, 0, 2823, 2824, 7, 18, 0, 0, 2824, 2825, 7, 2, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 610, 1, 0, 0, 0, 2827, 2828, 7, 21, 0, 0, 2828, 2829, 7, 2, 0, 0, 2829, 2830, 7, 8, 0, 0, 2830, 2831, 7, 18, 0, 0, 2831, 2832, 7, 19, 0, 0, 2832, 2833, 7, 17, 0, 0, 2833, 2834, 7, 8, 0, 0, 2834, 612, 1, 0, 0, 0, 2835, 2836, 7, 21, 0, 0, 2836, 2837, 7, 19, 0, 0, 2837, 2838, 7, 12, 0, 0, 2838, 2839, 7, 1, 0, 0, 2839, 614, 1, 0, 0, 0, 2840, 2841, 7, 21, 0, 0, 2841, 2842, 7, 12, 0, 0, 2842, 2843, 7, 4, 0, 0, 2843, 2844, 7, 3, 0, 0, 2844, 2845, 7, 3, 0, 0, 2845, 2846, 7, 6, 0, 0, 2846, 2847, 7, 12, 0, 0, 2847, 616, 1, 0, 0, 0, 2848, 2849, 7, 21, 0, 0, 2849, 2850, 7, 12, 0, 0, 2850, 2851, 7, 2, 0, 0, 2851, 2852, 7, 8, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 618, 1, 0, 0, 0, 2854, 2855, 7, 14, 0, 0, 2855, 2856, 7, 6, 0, 0, 2856, 2857, 7, 4, 0, 0, 2857, 2858, 7, 12, 0, 0, 2858, 620, 1, 0, 0, 0, 2859, 2860, 7, 15, 0, 0, 2860, 2861, 7, 19, 0, 0, 2861, 2862, 7, 7, 0, 0, 2862, 2863, 7, 6, 0, 0, 2863, 622, 1, 0, 0, 0, 2864, 2865, 5, 61, 0, 0, 2865, 624, 1, 0, 0, 0, 2866, 2867, 5, 60, 0, 0, 2867, 2871, 5, 62, 0, 0, 2868, 2869, 5, 33, 0, 0, 2869, 2871, 5, 61, 0, 0, 2870, 2866, 1, 0, 0, 0, 2870, 2868, 1, 0, 0, 0, 2871, 626, 1, 0, 0, 0, 2872, 2873, 5, 60, 0, 0, 2873, 628, 1, 0, 0, 0, 2874, 2875, 5, 60, 0, 0, 2875, 2876, 5, 61, 0, 0, 2876, 630, 1, 0, 0, 0, 2877, 2878, 5, 62, 0, 0, 2878, 632, 1, 0, 0, 0, 2879, 2880, 5, 62, 0, 0, 2880, 2881, 5, 61, 0, 0, 2881, 634, 1, 0, 0, 0, 2882, 2883, 5, 43, 0, 0, 2883, 636, 1, 0, 0, 0, 2884, 2885, 5, 45, 0, 0, 2885, 638, 1, 0, 0, 0, 2886, 2887, 5, 42, 0, 0, 2887, 640, 1, 0, 0, 0, 2888, 2889, 5, 47, 0, 0, 2889, 642, 1, 0, 0, 0, 2890, 2891, 5, 37, 0, 0, 2891, 644, 1, 0, 0, 0, 2892, 2893, 5, 124, 0, 0, 2893, 2894, 5, 124, 0, 0, 2894, 646, 1, 0, 0, 0, 2895, 2896, 5, 63, 0, 0, 2896, 648, 1, 0, 0, 0, 2897, 2898, 5, 59, 0, 0, 2898, 650, 1, 0, 0, 0, 2899, 2905, 5, 39, 0, 0, 2900, 2904, 8, 26, 0, 0, 2901, 2902, 5, 39, 0, 0, 2902, 2904, 5, 39, 0, 0, 2903, 2900, 1, 0, 0, 0, 2903, 2901, 1, 0, 0, 0, 2904, 2907, 1, 0, 0, 0, 2905, 2903, 1, 0, 0, 0, 2905, 2906, 1, 0, 0, 0, 2906, 2908, 1, 0, 0, 0, 2907, 2905, 1, 0, 0, 0, 2908, 2909, 5, 39, 0, 0, 2909, 652, 1, 0, 0, 0, 2910, 2911, 7, 17, 0, 0, 2911, 2912, 5, 38, 0, 0, 2912, 2913, 5, 39, 0, 0, 2913, 2919, 1, 0, 0, 0, 2914, 2918, 8, 26, 0, 0, 2915, 2916, 5, 39, 0, 0, 2916, 2918, 5, 39, 0, 0, 2917, 2914, 1, 0, 0, 0, 2917, 2915, 1, 0, 0, 0, 2918, 2921, 1, 0, 0, 0, 2919, 2917, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2922, 1, 0, 0, 0, 2921, 2919, 1, 0, 0, 0, 2922, 2923, 5, 39, 0, 0, 2923, 654, 1, 0, 0, 0, 2924, 2925, 7, 22, 0, 0, 2925, 2926, 5, 39, 0, 0, 2926, 2930, 1, 0, 0, 0, 2927, 2929, 8, 26, 0, 0, 2928, 2927, 1, 0, 0, 0, 2929, 2932, 1, 0, 0, 0, 2930, 2928, 1, 0, 0, 0, 2930, 2931, 1, 0, 0, 0, 2931, 2933, 1, 0, 0, 0, 2932, 2930, 1, 0, 0, 0, 2933, 2934, 5, 39, 0, 0, 2934, 656, 1, 0, 0, 0, 2935, 2940, 3, 671, 335, 0, 2936, 2940, 3, 673, 336, 0, 2937, 2940, 3, 675, 337, 0, 2938, 2940, 3, 677, 338, 0, 2939, 2935, 1, 0, 0, 0, 2939, 2936, 1, 0, 0, 0, 2939, 2937, 1, 0, 0, 0, 2939, 2938, 1, 0, 0, 0, 2940, 658, 1, 0, 0, 0, 2941, 2942, 3, 671, 335, 0, 2942, 2944, 5, 46, 0, 0, 2943, 2945, 3, 671, 335, 0, 2944, 2943, 1, 0, 0, 0, 2944, 2945, 1, 0, 0, 0, 2945, 2949, 1, 0, 0, 0, 2946, 2947, 5, 46, 0, 0, 2947, 2949, 3, 671, 335, 0, 2948, 2941, 1, 0, 0, 0, 2948, 2946, 1, 0, 0, 0, 2949, 660, 1, 0, 0, 0, 2950, 2952, 3, 681, 340, 0, 2951, 2950, 1, 0, 0, 0, 2952, 2953, 1, 0, 0, 0, 2953, 2951, 1, 0, 0, 0, 2953, 2954, 1, 0, 0, 0, 2954, 2962, 1, 0, 0, 0, 2955, 2959, 5, 46, 0, 0, 2956, 2958, 3, 681, 340, 0, 2957, 2956, 1, 0, 0, 0, 2958, 2961, 1, 0, 0, 0, 2959, 2957, 1, 0, 0, 0, 2959, 2960, 1, 0, 0, 0, 2960, 2963, 1, 0, 0, 0, 2961, 2959, 1, 0, 0, 0, 2962, 2955, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2964, 1, 0, 0, 0, 2964, 2965, 3, 679, 339, 0, 2965, 2975, 1, 0, 0, 0, 2966, 2968, 5, 46, 0, 0, 2967, 2969, 3, 681, 340, 0, 2968, 2967, 1, 0, 0, 0, 2969, 2970, 1, 0, 0, 0, 2970, 2968, 1, 0, 0, 0, 2970, 2971, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 2973, 3, 679, 339, 0, 2973, 2975, 1, 0, 0, 0, 2974, 2951, 1, 0, 0, 0, 2974, 2966, 1, 0, 0, 0, 2975, 662, 1, 0, 0, 0, 2976, 2979, 3, 683, 341, 0, 2977, 2979, 5, 95, 0, 0, 2978, 2976, 1, 0, 0, 0, 2978, 2977, 1, 0, 0, 0, 2979, 2985, 1, 0, 0, 0, 2980, 2984, 3, 683, 341, 0, 2981, 2984, 3, 681, 340, 0, 2982, 2984, 5, 95, 0, 0, 2983, 2980, 1, 0, 0, 0, 2983, 2981, 1, 0, 0, 0, 2983, 2982, 1, 0, 0, 0, 2984, 2987, 1, 0, 0, 0, 2985, 2983, 1, 0, 0, 0, 2985, 2986, 1, 0, 0, 0, 2986, 664, 1, 0, 0, 0, 2987, 2985, 1, 0, 0, 0, 2988, 2992, 3, 681, 340, 0, 2989, 2993, 3, 683, 341, 0, 2990, 2993, 3, 681, 340, 0, 2991, 2993, 5, 95, 0, 0, 2992, 2989, 1, 0, 0, 0, 2992, 2990, 1, 0, 0, 0, 2992, 2991, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2992, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 666, 1, 0, 0, 0, 2996, 3002, 5, 34, 0, 0, 2997, 3001, 8, 27, 0, 0, 2998, 2999, 5, 34, 0, 0, 2999, 3001, 5, 34, 0, 0, 3000, 2997, 1, 0, 0, 0, 3000, 2998, 1, 0, 0, 0, 3001, 3004, 1, 0, 0, 0, 3002, 3000, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3005, 1, 0, 0, 0, 3004, 3002, 1, 0, 0, 0, 3005, 3006, 5, 34, 0, 0, 3006, 668, 1, 0, 0, 0, 3007, 3013, 5, 96, 0, 0, 3008, 3012, 8, 28, 0, 0, 3009, 3010, 5, 96, 0, 0, 3010, 3012, 5, 96, 0, 0, 3011, 3008, 1, 0, 0, 0, 3011, 3009, 1, 0, 0, 0, 3012, 3015, 1, 0, 0, 0, 3013, 3011, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3016, 1, 0, 0, 0, 3015, 3013, 1, 0, 0, 0, 3016, 3017, 5, 96, 0, 0, 3017, 670, 1, 0, 0, 0, 3018, 3025, 3, 681, 340, 0, 3019, 3021, 5, 95, 0, 0, 3020, 3019, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3024, 3, 681, 340, 0, 3023, 3020, 1, 0, 0, 0, 3024, 3027, 1, 0, 0, 0, 3025, 3023, 1, 0, 0, 0, 3025, 3026, 1, 0, 0, 0, 3026, 672, 1, 0, 0, 0, 3027, 3025, 1, 0, 0, 0, 3028, 3029, 5, 48, 0, 0, 3029, 3030, 7, 22, 0, 0, 3030, 3038, 1, 0, 0, 0, 3031, 3033, 5, 95, 0, 0, 3032, 3031, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3036, 1, 0, 0, 0, 3034, 3037, 3, 681, 340, 0, 3035, 3037, 7, 29, 0, 0, 3036, 3034, 1, 0, 0, 0, 3036, 3035, 1, 0, 0, 0, 3037, 3039, 1, 0, 0, 0, 3038, 3032, 1, 0, 0, 0, 3039, 3040, 1, 0, 0, 0, 3040, 3038, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 674, 1, 0, 0, 0, 3042, 3043, 5, 48, 0, 0, 3043, 3044, 7, 19, 0, 0, 3044, 3049, 1, 0, 0, 0, 3045, 3047, 5, 95, 0, 0, 3046, 3045, 1, 0, 0, 0, 3046, 3047, 1, 0, 0, 0, 3047, 3048, 1, 0, 0, 0, 3048, 3050, 7, 30, 0, 0, 3049, 3046, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3049, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 676, 1, 0, 0, 0, 3053, 3054, 5, 48, 0, 0, 3054, 3055, 7, 5, 0, 0, 3055, 3060, 1, 0, 0, 0, 3056, 3058, 5, 95, 0, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3061, 7, 31, 0, 0, 3060, 3057, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3060, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 678, 1, 0, 0, 0, 3064, 3066, 7, 6, 0, 0, 3065, 3067, 7, 32, 0, 0, 3066, 3065, 1, 0, 0, 0, 3066, 3067, 1, 0, 0, 0, 3067, 3069, 1, 0, 0, 0, 3068, 3070, 3, 681, 340, 0, 3069, 3068, 1, 0, 0, 0, 3070, 3071, 1, 0, 0, 0, 3071, 3069, 1, 0, 0, 0, 3071, 3072, 1, 0, 0, 0, 3072, 680, 1, 0, 0, 0, 3073, 3074, 7, 33, 0, 0, 3074, 682, 1, 0, 0, 0, 3075, 3076, 7, 34, 0, 0, 3076, 684, 1, 0, 0, 0, 3077, 3078, 5, 45, 0, 0, 3078, 3079, 5, 45, 0, 0, 3079, 3083, 1, 0, 0, 0, 3080, 3082, 8, 35, 0, 0, 3081, 3080, 1, 0, 0, 0, 3082, 3085, 1, 0, 0, 0, 3083, 3081, 1, 0, 0, 0, 3083, 3084, 1, 0, 0, 0, 3084, 3087, 1, 0, 0, 0, 3085, 3083, 1, 0, 0, 0, 3086, 3088, 5, 13, 0, 0, 3087, 3086, 1, 0, 0, 0, 3087, 3088, 1, 0, 0, 0, 3088, 3090, 1, 0, 0, 0, 3089, 3091, 5, 10, 0, 0, 3090, 3089, 1, 0, 0, 0, 3090, 3091, 1, 0, 0, 0, 3091, 3092, 1, 0, 0, 0, 3092, 3093, 6, 342, 0, 0, 3093, 686, 1, 0, 0, 0, 3094, 3095, 5, 47, 0, 0, 3095, 3096, 5, 42, 0, 0, 3096, 3100, 1, 0, 0, 0, 3097, 3099, 9, 0, 0, 0, 3098, 3097, 1, 0, 0, 0, 3099, 3102, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3100, 3098, 1, 0, 0, 0, 3101, 3103, 1, 0, 0, 0, 3102, 3100, 1, 0, 0, 0, 3103, 3104, 5, 42, 0, 0, 3104, 3105, 5, 47, 0, 0, 3105, 3106, 1, 0, 0, 0, 3106, 3107, 6, 343, 0, 0, 3107, 688, 1, 0, 0, 0, 3108, 3109, 7, 36, 0, 0, 3109, 3110, 1, 0, 0, 0, 3110, 3111, 6, 344, 0, 0, 3111, 690, 1, 0, 0, 0, 3112, 3113, 9, 0, 0, 0, 3113, 692, 1, 0, 0, 0, 39, 0, 2870, 2903, 2905, 2917, 2919, 2930, 2939, 2944, 2948, 2953, 2959, 2962, 2970, 2974, 2978, 2983, 2985, 2992, 2994, 3000, 3002, 3011, 3013, 3020, 3025, 3032, 3036, 3040, 3046, 3051, 3057, 3062, 3066, 3071, 3083, 3087, 3090, 3100, 1, 0, 1, 0] \ No newline at end of file +[4, 0, 340, 3125, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 2882, 8, 313, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 5, 326, 2915, 8, 326, 10, 326, 12, 326, 2918, 9, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 2929, 8, 327, 10, 327, 12, 327, 2932, 9, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 5, 328, 2940, 8, 328, 10, 328, 12, 328, 2943, 9, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 2951, 8, 329, 1, 330, 1, 330, 1, 330, 3, 330, 2956, 8, 330, 1, 330, 1, 330, 3, 330, 2960, 8, 330, 1, 331, 4, 331, 2963, 8, 331, 11, 331, 12, 331, 2964, 1, 331, 1, 331, 5, 331, 2969, 8, 331, 10, 331, 12, 331, 2972, 9, 331, 3, 331, 2974, 8, 331, 1, 331, 1, 331, 1, 331, 1, 331, 4, 331, 2980, 8, 331, 11, 331, 12, 331, 2981, 1, 331, 1, 331, 3, 331, 2986, 8, 331, 1, 332, 1, 332, 3, 332, 2990, 8, 332, 1, 332, 1, 332, 1, 332, 5, 332, 2995, 8, 332, 10, 332, 12, 332, 2998, 9, 332, 1, 333, 1, 333, 1, 333, 1, 333, 4, 333, 3004, 8, 333, 11, 333, 12, 333, 3005, 1, 334, 1, 334, 1, 334, 1, 334, 5, 334, 3012, 8, 334, 10, 334, 12, 334, 3015, 9, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 5, 335, 3023, 8, 335, 10, 335, 12, 335, 3026, 9, 335, 1, 335, 1, 335, 1, 336, 1, 336, 3, 336, 3032, 8, 336, 1, 336, 5, 336, 3035, 8, 336, 10, 336, 12, 336, 3038, 9, 336, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3044, 8, 337, 1, 337, 1, 337, 3, 337, 3048, 8, 337, 4, 337, 3050, 8, 337, 11, 337, 12, 337, 3051, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 3058, 8, 338, 1, 338, 4, 338, 3061, 8, 338, 11, 338, 12, 338, 3062, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 3069, 8, 339, 1, 339, 4, 339, 3072, 8, 339, 11, 339, 12, 339, 3073, 1, 340, 1, 340, 3, 340, 3078, 8, 340, 1, 340, 4, 340, 3081, 8, 340, 11, 340, 12, 340, 3082, 1, 341, 1, 341, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 5, 343, 3093, 8, 343, 10, 343, 12, 343, 3096, 9, 343, 1, 343, 3, 343, 3099, 8, 343, 1, 343, 3, 343, 3102, 8, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 5, 344, 3110, 8, 344, 10, 344, 12, 344, 3113, 9, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 3111, 0, 347, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, 671, 336, 673, 0, 675, 0, 677, 0, 679, 0, 681, 0, 683, 0, 685, 0, 687, 337, 689, 338, 691, 339, 693, 340, 1, 0, 37, 2, 0, 83, 83, 115, 115, 2, 0, 75, 75, 107, 107, 2, 0, 73, 73, 105, 105, 2, 0, 80, 80, 112, 112, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 84, 84, 116, 116, 2, 0, 68, 68, 100, 100, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 82, 82, 114, 114, 2, 0, 76, 76, 108, 108, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 67, 67, 99, 99, 2, 0, 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 79, 79, 111, 111, 2, 0, 71, 71, 103, 103, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, 106, 2, 0, 81, 81, 113, 113, 1, 0, 39, 39, 1, 0, 34, 34, 1, 0, 96, 96, 2, 0, 65, 70, 97, 102, 1, 0, 48, 55, 1, 0, 48, 49, 2, 0, 43, 43, 45, 45, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 3159, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 1, 695, 1, 0, 0, 0, 3, 697, 1, 0, 0, 0, 5, 699, 1, 0, 0, 0, 7, 701, 1, 0, 0, 0, 9, 703, 1, 0, 0, 0, 11, 708, 1, 0, 0, 0, 13, 711, 1, 0, 0, 0, 15, 714, 1, 0, 0, 0, 17, 716, 1, 0, 0, 0, 19, 718, 1, 0, 0, 0, 21, 720, 1, 0, 0, 0, 23, 722, 1, 0, 0, 0, 25, 724, 1, 0, 0, 0, 27, 726, 1, 0, 0, 0, 29, 729, 1, 0, 0, 0, 31, 732, 1, 0, 0, 0, 33, 734, 1, 0, 0, 0, 35, 736, 1, 0, 0, 0, 37, 743, 1, 0, 0, 0, 39, 747, 1, 0, 0, 0, 41, 753, 1, 0, 0, 0, 43, 759, 1, 0, 0, 0, 45, 763, 1, 0, 0, 0, 47, 769, 1, 0, 0, 0, 49, 777, 1, 0, 0, 0, 51, 781, 1, 0, 0, 0, 53, 785, 1, 0, 0, 0, 55, 791, 1, 0, 0, 0, 57, 794, 1, 0, 0, 0, 59, 798, 1, 0, 0, 0, 61, 801, 1, 0, 0, 0, 63, 815, 1, 0, 0, 0, 65, 821, 1, 0, 0, 0, 67, 831, 1, 0, 0, 0, 69, 839, 1, 0, 0, 0, 71, 844, 1, 0, 0, 0, 73, 847, 1, 0, 0, 0, 75, 852, 1, 0, 0, 0, 77, 859, 1, 0, 0, 0, 79, 867, 1, 0, 0, 0, 81, 872, 1, 0, 0, 0, 83, 877, 1, 0, 0, 0, 85, 885, 1, 0, 0, 0, 87, 894, 1, 0, 0, 0, 89, 903, 1, 0, 0, 0, 91, 910, 1, 0, 0, 0, 93, 918, 1, 0, 0, 0, 95, 926, 1, 0, 0, 0, 97, 933, 1, 0, 0, 0, 99, 943, 1, 0, 0, 0, 101, 955, 1, 0, 0, 0, 103, 966, 1, 0, 0, 0, 105, 972, 1, 0, 0, 0, 107, 984, 1, 0, 0, 0, 109, 991, 1, 0, 0, 0, 111, 997, 1, 0, 0, 0, 113, 1002, 1, 0, 0, 0, 115, 1010, 1, 0, 0, 0, 117, 1026, 1, 0, 0, 0, 119, 1039, 1, 0, 0, 0, 121, 1052, 1, 0, 0, 0, 123, 1065, 1, 0, 0, 0, 125, 1080, 1, 0, 0, 0, 127, 1093, 1, 0, 0, 0, 129, 1111, 1, 0, 0, 0, 131, 1124, 1, 0, 0, 0, 133, 1129, 1, 0, 0, 0, 135, 1134, 1, 0, 0, 0, 137, 1138, 1, 0, 0, 0, 139, 1149, 1, 0, 0, 0, 141, 1157, 1, 0, 0, 0, 143, 1165, 1, 0, 0, 0, 145, 1172, 1, 0, 0, 0, 147, 1180, 1, 0, 0, 0, 149, 1187, 1, 0, 0, 0, 151, 1192, 1, 0, 0, 0, 153, 1197, 1, 0, 0, 0, 155, 1206, 1, 0, 0, 0, 157, 1217, 1, 0, 0, 0, 159, 1231, 1, 0, 0, 0, 161, 1240, 1, 0, 0, 0, 163, 1252, 1, 0, 0, 0, 165, 1255, 1, 0, 0, 0, 167, 1262, 1, 0, 0, 0, 169, 1267, 1, 0, 0, 0, 171, 1272, 1, 0, 0, 0, 173, 1278, 1, 0, 0, 0, 175, 1285, 1, 0, 0, 0, 177, 1294, 1, 0, 0, 0, 179, 1298, 1, 0, 0, 0, 181, 1304, 1, 0, 0, 0, 183, 1311, 1, 0, 0, 0, 185, 1318, 1, 0, 0, 0, 187, 1328, 1, 0, 0, 0, 189, 1336, 1, 0, 0, 0, 191, 1343, 1, 0, 0, 0, 193, 1351, 1, 0, 0, 0, 195, 1359, 1, 0, 0, 0, 197, 1365, 1, 0, 0, 0, 199, 1371, 1, 0, 0, 0, 201, 1378, 1, 0, 0, 0, 203, 1384, 1, 0, 0, 0, 205, 1390, 1, 0, 0, 0, 207, 1400, 1, 0, 0, 0, 209, 1404, 1, 0, 0, 0, 211, 1411, 1, 0, 0, 0, 213, 1416, 1, 0, 0, 0, 215, 1421, 1, 0, 0, 0, 217, 1430, 1, 0, 0, 0, 219, 1440, 1, 0, 0, 0, 221, 1446, 1, 0, 0, 0, 223, 1452, 1, 0, 0, 0, 225, 1460, 1, 0, 0, 0, 227, 1467, 1, 0, 0, 0, 229, 1476, 1, 0, 0, 0, 231, 1482, 1, 0, 0, 0, 233, 1491, 1, 0, 0, 0, 235, 1498, 1, 0, 0, 0, 237, 1505, 1, 0, 0, 0, 239, 1510, 1, 0, 0, 0, 241, 1513, 1, 0, 0, 0, 243, 1520, 1, 0, 0, 0, 245, 1530, 1, 0, 0, 0, 247, 1533, 1, 0, 0, 0, 249, 1543, 1, 0, 0, 0, 251, 1551, 1, 0, 0, 0, 253, 1557, 1, 0, 0, 0, 255, 1563, 1, 0, 0, 0, 257, 1570, 1, 0, 0, 0, 259, 1580, 1, 0, 0, 0, 261, 1589, 1, 0, 0, 0, 263, 1594, 1, 0, 0, 0, 265, 1602, 1, 0, 0, 0, 267, 1605, 1, 0, 0, 0, 269, 1608, 1, 0, 0, 0, 271, 1618, 1, 0, 0, 0, 273, 1626, 1, 0, 0, 0, 275, 1631, 1, 0, 0, 0, 277, 1636, 1, 0, 0, 0, 279, 1647, 1, 0, 0, 0, 281, 1659, 1, 0, 0, 0, 283, 1671, 1, 0, 0, 0, 285, 1682, 1, 0, 0, 0, 287, 1693, 1, 0, 0, 0, 289, 1704, 1, 0, 0, 0, 291, 1709, 1, 0, 0, 0, 293, 1713, 1, 0, 0, 0, 295, 1718, 1, 0, 0, 0, 297, 1727, 1, 0, 0, 0, 299, 1732, 1, 0, 0, 0, 301, 1740, 1, 0, 0, 0, 303, 1748, 1, 0, 0, 0, 305, 1754, 1, 0, 0, 0, 307, 1759, 1, 0, 0, 0, 309, 1765, 1, 0, 0, 0, 311, 1770, 1, 0, 0, 0, 313, 1776, 1, 0, 0, 0, 315, 1784, 1, 0, 0, 0, 317, 1790, 1, 0, 0, 0, 319, 1800, 1, 0, 0, 0, 321, 1815, 1, 0, 0, 0, 323, 1823, 1, 0, 0, 0, 325, 1828, 1, 0, 0, 0, 327, 1832, 1, 0, 0, 0, 329, 1838, 1, 0, 0, 0, 331, 1846, 1, 0, 0, 0, 333, 1854, 1, 0, 0, 0, 335, 1870, 1, 0, 0, 0, 337, 1883, 1, 0, 0, 0, 339, 1892, 1, 0, 0, 0, 341, 1898, 1, 0, 0, 0, 343, 1905, 1, 0, 0, 0, 345, 1911, 1, 0, 0, 0, 347, 1919, 1, 0, 0, 0, 349, 1926, 1, 0, 0, 0, 351, 1931, 1, 0, 0, 0, 353, 1935, 1, 0, 0, 0, 355, 1939, 1, 0, 0, 0, 357, 1944, 1, 0, 0, 0, 359, 1949, 1, 0, 0, 0, 361, 1952, 1, 0, 0, 0, 363, 1957, 1, 0, 0, 0, 365, 1967, 1, 0, 0, 0, 367, 1971, 1, 0, 0, 0, 369, 1976, 1, 0, 0, 0, 371, 1983, 1, 0, 0, 0, 373, 1989, 1, 0, 0, 0, 375, 1996, 1, 0, 0, 0, 377, 1999, 1, 0, 0, 0, 379, 2006, 1, 0, 0, 0, 381, 2011, 1, 0, 0, 0, 383, 2014, 1, 0, 0, 0, 385, 2018, 1, 0, 0, 0, 387, 2023, 1, 0, 0, 0, 389, 2030, 1, 0, 0, 0, 391, 2033, 1, 0, 0, 0, 393, 2039, 1, 0, 0, 0, 395, 2050, 1, 0, 0, 0, 397, 2056, 1, 0, 0, 0, 399, 2063, 1, 0, 0, 0, 401, 2068, 1, 0, 0, 0, 403, 2077, 1, 0, 0, 0, 405, 2087, 1, 0, 0, 0, 407, 2098, 1, 0, 0, 0, 409, 2106, 1, 0, 0, 0, 411, 2111, 1, 0, 0, 0, 413, 2116, 1, 0, 0, 0, 415, 2124, 1, 0, 0, 0, 417, 2128, 1, 0, 0, 0, 419, 2135, 1, 0, 0, 0, 421, 2143, 1, 0, 0, 0, 423, 2148, 1, 0, 0, 0, 425, 2157, 1, 0, 0, 0, 427, 2167, 1, 0, 0, 0, 429, 2177, 1, 0, 0, 0, 431, 2185, 1, 0, 0, 0, 433, 2196, 1, 0, 0, 0, 435, 2207, 1, 0, 0, 0, 437, 2213, 1, 0, 0, 0, 439, 2220, 1, 0, 0, 0, 441, 2226, 1, 0, 0, 0, 443, 2231, 1, 0, 0, 0, 445, 2241, 1, 0, 0, 0, 447, 2249, 1, 0, 0, 0, 449, 2256, 1, 0, 0, 0, 451, 2263, 1, 0, 0, 0, 453, 2274, 1, 0, 0, 0, 455, 2282, 1, 0, 0, 0, 457, 2288, 1, 0, 0, 0, 459, 2296, 1, 0, 0, 0, 461, 2305, 1, 0, 0, 0, 463, 2312, 1, 0, 0, 0, 465, 2322, 1, 0, 0, 0, 467, 2330, 1, 0, 0, 0, 469, 2337, 1, 0, 0, 0, 471, 2343, 1, 0, 0, 0, 473, 2348, 1, 0, 0, 0, 475, 2354, 1, 0, 0, 0, 477, 2363, 1, 0, 0, 0, 479, 2370, 1, 0, 0, 0, 481, 2374, 1, 0, 0, 0, 483, 2379, 1, 0, 0, 0, 485, 2387, 1, 0, 0, 0, 487, 2394, 1, 0, 0, 0, 489, 2401, 1, 0, 0, 0, 491, 2409, 1, 0, 0, 0, 493, 2416, 1, 0, 0, 0, 495, 2425, 1, 0, 0, 0, 497, 2430, 1, 0, 0, 0, 499, 2437, 1, 0, 0, 0, 501, 2450, 1, 0, 0, 0, 503, 2458, 1, 0, 0, 0, 505, 2462, 1, 0, 0, 0, 507, 2467, 1, 0, 0, 0, 509, 2472, 1, 0, 0, 0, 511, 2477, 1, 0, 0, 0, 513, 2483, 1, 0, 0, 0, 515, 2489, 1, 0, 0, 0, 517, 2496, 1, 0, 0, 0, 519, 2506, 1, 0, 0, 0, 521, 2513, 1, 0, 0, 0, 523, 2519, 1, 0, 0, 0, 525, 2526, 1, 0, 0, 0, 527, 2538, 1, 0, 0, 0, 529, 2543, 1, 0, 0, 0, 531, 2550, 1, 0, 0, 0, 533, 2555, 1, 0, 0, 0, 535, 2560, 1, 0, 0, 0, 537, 2565, 1, 0, 0, 0, 539, 2575, 1, 0, 0, 0, 541, 2578, 1, 0, 0, 0, 543, 2587, 1, 0, 0, 0, 545, 2599, 1, 0, 0, 0, 547, 2604, 1, 0, 0, 0, 549, 2609, 1, 0, 0, 0, 551, 2618, 1, 0, 0, 0, 553, 2627, 1, 0, 0, 0, 555, 2632, 1, 0, 0, 0, 557, 2640, 1, 0, 0, 0, 559, 2650, 1, 0, 0, 0, 561, 2662, 1, 0, 0, 0, 563, 2676, 1, 0, 0, 0, 565, 2682, 1, 0, 0, 0, 567, 2689, 1, 0, 0, 0, 569, 2697, 1, 0, 0, 0, 571, 2707, 1, 0, 0, 0, 573, 2714, 1, 0, 0, 0, 575, 2720, 1, 0, 0, 0, 577, 2727, 1, 0, 0, 0, 579, 2731, 1, 0, 0, 0, 581, 2736, 1, 0, 0, 0, 583, 2742, 1, 0, 0, 0, 585, 2748, 1, 0, 0, 0, 587, 2754, 1, 0, 0, 0, 589, 2759, 1, 0, 0, 0, 591, 2768, 1, 0, 0, 0, 593, 2774, 1, 0, 0, 0, 595, 2781, 1, 0, 0, 0, 597, 2789, 1, 0, 0, 0, 599, 2797, 1, 0, 0, 0, 601, 2802, 1, 0, 0, 0, 603, 2807, 1, 0, 0, 0, 605, 2813, 1, 0, 0, 0, 607, 2819, 1, 0, 0, 0, 609, 2826, 1, 0, 0, 0, 611, 2831, 1, 0, 0, 0, 613, 2838, 1, 0, 0, 0, 615, 2846, 1, 0, 0, 0, 617, 2851, 1, 0, 0, 0, 619, 2859, 1, 0, 0, 0, 621, 2865, 1, 0, 0, 0, 623, 2870, 1, 0, 0, 0, 625, 2875, 1, 0, 0, 0, 627, 2881, 1, 0, 0, 0, 629, 2883, 1, 0, 0, 0, 631, 2885, 1, 0, 0, 0, 633, 2888, 1, 0, 0, 0, 635, 2890, 1, 0, 0, 0, 637, 2893, 1, 0, 0, 0, 639, 2895, 1, 0, 0, 0, 641, 2897, 1, 0, 0, 0, 643, 2899, 1, 0, 0, 0, 645, 2901, 1, 0, 0, 0, 647, 2903, 1, 0, 0, 0, 649, 2906, 1, 0, 0, 0, 651, 2908, 1, 0, 0, 0, 653, 2910, 1, 0, 0, 0, 655, 2921, 1, 0, 0, 0, 657, 2935, 1, 0, 0, 0, 659, 2950, 1, 0, 0, 0, 661, 2959, 1, 0, 0, 0, 663, 2985, 1, 0, 0, 0, 665, 2989, 1, 0, 0, 0, 667, 2999, 1, 0, 0, 0, 669, 3007, 1, 0, 0, 0, 671, 3018, 1, 0, 0, 0, 673, 3029, 1, 0, 0, 0, 675, 3039, 1, 0, 0, 0, 677, 3053, 1, 0, 0, 0, 679, 3064, 1, 0, 0, 0, 681, 3075, 1, 0, 0, 0, 683, 3084, 1, 0, 0, 0, 685, 3086, 1, 0, 0, 0, 687, 3088, 1, 0, 0, 0, 689, 3105, 1, 0, 0, 0, 691, 3119, 1, 0, 0, 0, 693, 3123, 1, 0, 0, 0, 695, 696, 5, 40, 0, 0, 696, 2, 1, 0, 0, 0, 697, 698, 5, 41, 0, 0, 698, 4, 1, 0, 0, 0, 699, 700, 5, 44, 0, 0, 700, 6, 1, 0, 0, 0, 701, 702, 5, 46, 0, 0, 702, 8, 1, 0, 0, 0, 703, 704, 7, 0, 0, 0, 704, 705, 7, 1, 0, 0, 705, 706, 7, 2, 0, 0, 706, 707, 7, 3, 0, 0, 707, 10, 1, 0, 0, 0, 708, 709, 5, 61, 0, 0, 709, 710, 5, 62, 0, 0, 710, 12, 1, 0, 0, 0, 711, 712, 5, 45, 0, 0, 712, 713, 5, 62, 0, 0, 713, 14, 1, 0, 0, 0, 714, 715, 5, 91, 0, 0, 715, 16, 1, 0, 0, 0, 716, 717, 5, 93, 0, 0, 717, 18, 1, 0, 0, 0, 718, 719, 5, 58, 0, 0, 719, 20, 1, 0, 0, 0, 720, 721, 5, 124, 0, 0, 721, 22, 1, 0, 0, 0, 722, 723, 5, 94, 0, 0, 723, 24, 1, 0, 0, 0, 724, 725, 5, 36, 0, 0, 725, 26, 1, 0, 0, 0, 726, 727, 5, 123, 0, 0, 727, 728, 5, 45, 0, 0, 728, 28, 1, 0, 0, 0, 729, 730, 5, 45, 0, 0, 730, 731, 5, 125, 0, 0, 731, 30, 1, 0, 0, 0, 732, 733, 5, 123, 0, 0, 733, 32, 1, 0, 0, 0, 734, 735, 5, 125, 0, 0, 735, 34, 1, 0, 0, 0, 736, 737, 7, 4, 0, 0, 737, 738, 7, 5, 0, 0, 738, 739, 7, 0, 0, 0, 739, 740, 7, 6, 0, 0, 740, 741, 7, 7, 0, 0, 741, 742, 7, 8, 0, 0, 742, 36, 1, 0, 0, 0, 743, 744, 7, 4, 0, 0, 744, 745, 7, 9, 0, 0, 745, 746, 7, 9, 0, 0, 746, 38, 1, 0, 0, 0, 747, 748, 7, 4, 0, 0, 748, 749, 7, 9, 0, 0, 749, 750, 7, 10, 0, 0, 750, 751, 7, 2, 0, 0, 751, 752, 7, 7, 0, 0, 752, 40, 1, 0, 0, 0, 753, 754, 7, 4, 0, 0, 754, 755, 7, 11, 0, 0, 755, 756, 7, 8, 0, 0, 756, 757, 7, 6, 0, 0, 757, 758, 7, 12, 0, 0, 758, 42, 1, 0, 0, 0, 759, 760, 7, 4, 0, 0, 760, 761, 7, 13, 0, 0, 761, 762, 7, 13, 0, 0, 762, 44, 1, 0, 0, 0, 763, 764, 7, 4, 0, 0, 764, 765, 7, 13, 0, 0, 765, 766, 7, 8, 0, 0, 766, 767, 7, 6, 0, 0, 767, 768, 7, 12, 0, 0, 768, 46, 1, 0, 0, 0, 769, 770, 7, 4, 0, 0, 770, 771, 7, 7, 0, 0, 771, 772, 7, 4, 0, 0, 772, 773, 7, 13, 0, 0, 773, 774, 7, 14, 0, 0, 774, 775, 7, 15, 0, 0, 775, 776, 7, 6, 0, 0, 776, 48, 1, 0, 0, 0, 777, 778, 7, 4, 0, 0, 778, 779, 7, 7, 0, 0, 779, 780, 7, 9, 0, 0, 780, 50, 1, 0, 0, 0, 781, 782, 7, 4, 0, 0, 782, 783, 7, 7, 0, 0, 783, 784, 7, 14, 0, 0, 784, 52, 1, 0, 0, 0, 785, 786, 7, 4, 0, 0, 786, 787, 7, 12, 0, 0, 787, 788, 7, 12, 0, 0, 788, 789, 7, 4, 0, 0, 789, 790, 7, 14, 0, 0, 790, 54, 1, 0, 0, 0, 791, 792, 7, 4, 0, 0, 792, 793, 7, 0, 0, 0, 793, 56, 1, 0, 0, 0, 794, 795, 7, 4, 0, 0, 795, 796, 7, 0, 0, 0, 796, 797, 7, 16, 0, 0, 797, 58, 1, 0, 0, 0, 798, 799, 7, 4, 0, 0, 799, 800, 7, 8, 0, 0, 800, 60, 1, 0, 0, 0, 801, 802, 7, 4, 0, 0, 802, 803, 7, 17, 0, 0, 803, 804, 7, 8, 0, 0, 804, 805, 7, 18, 0, 0, 805, 806, 7, 19, 0, 0, 806, 807, 7, 12, 0, 0, 807, 808, 7, 2, 0, 0, 808, 809, 7, 15, 0, 0, 809, 810, 7, 4, 0, 0, 810, 811, 7, 8, 0, 0, 811, 812, 7, 2, 0, 0, 812, 813, 7, 19, 0, 0, 813, 814, 7, 7, 0, 0, 814, 62, 1, 0, 0, 0, 815, 816, 7, 5, 0, 0, 816, 817, 7, 6, 0, 0, 817, 818, 7, 20, 0, 0, 818, 819, 7, 2, 0, 0, 819, 820, 7, 7, 0, 0, 820, 64, 1, 0, 0, 0, 821, 822, 7, 5, 0, 0, 822, 823, 7, 6, 0, 0, 823, 824, 7, 12, 0, 0, 824, 825, 7, 7, 0, 0, 825, 826, 7, 19, 0, 0, 826, 827, 7, 17, 0, 0, 827, 828, 7, 13, 0, 0, 828, 829, 7, 13, 0, 0, 829, 830, 7, 2, 0, 0, 830, 66, 1, 0, 0, 0, 831, 832, 7, 5, 0, 0, 832, 833, 7, 6, 0, 0, 833, 834, 7, 8, 0, 0, 834, 835, 7, 21, 0, 0, 835, 836, 7, 6, 0, 0, 836, 837, 7, 6, 0, 0, 837, 838, 7, 7, 0, 0, 838, 68, 1, 0, 0, 0, 839, 840, 7, 5, 0, 0, 840, 841, 7, 19, 0, 0, 841, 842, 7, 8, 0, 0, 842, 843, 7, 18, 0, 0, 843, 70, 1, 0, 0, 0, 844, 845, 7, 5, 0, 0, 845, 846, 7, 14, 0, 0, 846, 72, 1, 0, 0, 0, 847, 848, 7, 16, 0, 0, 848, 849, 7, 4, 0, 0, 849, 850, 7, 13, 0, 0, 850, 851, 7, 13, 0, 0, 851, 74, 1, 0, 0, 0, 852, 853, 7, 16, 0, 0, 853, 854, 7, 4, 0, 0, 854, 855, 7, 13, 0, 0, 855, 856, 7, 13, 0, 0, 856, 857, 7, 6, 0, 0, 857, 858, 7, 9, 0, 0, 858, 76, 1, 0, 0, 0, 859, 860, 7, 16, 0, 0, 860, 861, 7, 4, 0, 0, 861, 862, 7, 0, 0, 0, 862, 863, 7, 16, 0, 0, 863, 864, 7, 4, 0, 0, 864, 865, 7, 9, 0, 0, 865, 866, 7, 6, 0, 0, 866, 78, 1, 0, 0, 0, 867, 868, 7, 16, 0, 0, 868, 869, 7, 4, 0, 0, 869, 870, 7, 0, 0, 0, 870, 871, 7, 6, 0, 0, 871, 80, 1, 0, 0, 0, 872, 873, 7, 16, 0, 0, 873, 874, 7, 4, 0, 0, 874, 875, 7, 0, 0, 0, 875, 876, 7, 8, 0, 0, 876, 82, 1, 0, 0, 0, 877, 878, 7, 16, 0, 0, 878, 879, 7, 4, 0, 0, 879, 880, 7, 8, 0, 0, 880, 881, 7, 4, 0, 0, 881, 882, 7, 13, 0, 0, 882, 883, 7, 19, 0, 0, 883, 884, 7, 20, 0, 0, 884, 84, 1, 0, 0, 0, 885, 886, 7, 16, 0, 0, 886, 887, 7, 4, 0, 0, 887, 888, 7, 8, 0, 0, 888, 889, 7, 4, 0, 0, 889, 890, 7, 13, 0, 0, 890, 891, 7, 19, 0, 0, 891, 892, 7, 20, 0, 0, 892, 893, 7, 0, 0, 0, 893, 86, 1, 0, 0, 0, 894, 895, 7, 16, 0, 0, 895, 896, 7, 19, 0, 0, 896, 897, 7, 4, 0, 0, 897, 898, 7, 13, 0, 0, 898, 899, 7, 6, 0, 0, 899, 900, 7, 0, 0, 0, 900, 901, 7, 16, 0, 0, 901, 902, 7, 6, 0, 0, 902, 88, 1, 0, 0, 0, 903, 904, 7, 16, 0, 0, 904, 905, 7, 19, 0, 0, 905, 906, 7, 13, 0, 0, 906, 907, 7, 17, 0, 0, 907, 908, 7, 10, 0, 0, 908, 909, 7, 7, 0, 0, 909, 90, 1, 0, 0, 0, 910, 911, 7, 16, 0, 0, 911, 912, 7, 19, 0, 0, 912, 913, 7, 13, 0, 0, 913, 914, 7, 17, 0, 0, 914, 915, 7, 10, 0, 0, 915, 916, 7, 7, 0, 0, 916, 917, 7, 0, 0, 0, 917, 92, 1, 0, 0, 0, 918, 919, 7, 16, 0, 0, 919, 920, 7, 19, 0, 0, 920, 921, 7, 10, 0, 0, 921, 922, 7, 10, 0, 0, 922, 923, 7, 6, 0, 0, 923, 924, 7, 7, 0, 0, 924, 925, 7, 8, 0, 0, 925, 94, 1, 0, 0, 0, 926, 927, 7, 16, 0, 0, 927, 928, 7, 19, 0, 0, 928, 929, 7, 10, 0, 0, 929, 930, 7, 10, 0, 0, 930, 931, 7, 2, 0, 0, 931, 932, 7, 8, 0, 0, 932, 96, 1, 0, 0, 0, 933, 934, 7, 16, 0, 0, 934, 935, 7, 19, 0, 0, 935, 936, 7, 10, 0, 0, 936, 937, 7, 10, 0, 0, 937, 938, 7, 2, 0, 0, 938, 939, 7, 8, 0, 0, 939, 940, 7, 8, 0, 0, 940, 941, 7, 6, 0, 0, 941, 942, 7, 9, 0, 0, 942, 98, 1, 0, 0, 0, 943, 944, 7, 16, 0, 0, 944, 945, 7, 19, 0, 0, 945, 946, 7, 7, 0, 0, 946, 947, 7, 9, 0, 0, 947, 948, 7, 2, 0, 0, 948, 949, 7, 8, 0, 0, 949, 950, 7, 2, 0, 0, 950, 951, 7, 19, 0, 0, 951, 952, 7, 7, 0, 0, 952, 953, 7, 4, 0, 0, 953, 954, 7, 13, 0, 0, 954, 100, 1, 0, 0, 0, 955, 956, 7, 16, 0, 0, 956, 957, 7, 19, 0, 0, 957, 958, 7, 7, 0, 0, 958, 959, 7, 0, 0, 0, 959, 960, 7, 8, 0, 0, 960, 961, 7, 12, 0, 0, 961, 962, 7, 4, 0, 0, 962, 963, 7, 2, 0, 0, 963, 964, 7, 7, 0, 0, 964, 965, 7, 8, 0, 0, 965, 102, 1, 0, 0, 0, 966, 967, 7, 16, 0, 0, 967, 968, 7, 19, 0, 0, 968, 969, 7, 17, 0, 0, 969, 970, 7, 7, 0, 0, 970, 971, 7, 8, 0, 0, 971, 104, 1, 0, 0, 0, 972, 973, 7, 16, 0, 0, 973, 974, 7, 19, 0, 0, 974, 975, 7, 3, 0, 0, 975, 976, 7, 4, 0, 0, 976, 977, 7, 12, 0, 0, 977, 978, 7, 8, 0, 0, 978, 979, 7, 2, 0, 0, 979, 980, 7, 8, 0, 0, 980, 981, 7, 2, 0, 0, 981, 982, 7, 19, 0, 0, 982, 983, 7, 7, 0, 0, 983, 106, 1, 0, 0, 0, 984, 985, 7, 16, 0, 0, 985, 986, 7, 12, 0, 0, 986, 987, 7, 6, 0, 0, 987, 988, 7, 4, 0, 0, 988, 989, 7, 8, 0, 0, 989, 990, 7, 6, 0, 0, 990, 108, 1, 0, 0, 0, 991, 992, 7, 16, 0, 0, 992, 993, 7, 12, 0, 0, 993, 994, 7, 19, 0, 0, 994, 995, 7, 0, 0, 0, 995, 996, 7, 0, 0, 0, 996, 110, 1, 0, 0, 0, 997, 998, 7, 16, 0, 0, 998, 999, 7, 17, 0, 0, 999, 1000, 7, 5, 0, 0, 1000, 1001, 7, 6, 0, 0, 1001, 112, 1, 0, 0, 0, 1002, 1003, 7, 16, 0, 0, 1003, 1004, 7, 17, 0, 0, 1004, 1005, 7, 12, 0, 0, 1005, 1006, 7, 12, 0, 0, 1006, 1007, 7, 6, 0, 0, 1007, 1008, 7, 7, 0, 0, 1008, 1009, 7, 8, 0, 0, 1009, 114, 1, 0, 0, 0, 1010, 1011, 7, 16, 0, 0, 1011, 1012, 7, 17, 0, 0, 1012, 1013, 7, 12, 0, 0, 1013, 1014, 7, 12, 0, 0, 1014, 1015, 7, 6, 0, 0, 1015, 1016, 7, 7, 0, 0, 1016, 1017, 7, 8, 0, 0, 1017, 1018, 5, 95, 0, 0, 1018, 1019, 7, 16, 0, 0, 1019, 1020, 7, 4, 0, 0, 1020, 1021, 7, 8, 0, 0, 1021, 1022, 7, 4, 0, 0, 1022, 1023, 7, 13, 0, 0, 1023, 1024, 7, 19, 0, 0, 1024, 1025, 7, 20, 0, 0, 1025, 116, 1, 0, 0, 0, 1026, 1027, 7, 16, 0, 0, 1027, 1028, 7, 17, 0, 0, 1028, 1029, 7, 12, 0, 0, 1029, 1030, 7, 12, 0, 0, 1030, 1031, 7, 6, 0, 0, 1031, 1032, 7, 7, 0, 0, 1032, 1033, 7, 8, 0, 0, 1033, 1034, 5, 95, 0, 0, 1034, 1035, 7, 9, 0, 0, 1035, 1036, 7, 4, 0, 0, 1036, 1037, 7, 8, 0, 0, 1037, 1038, 7, 6, 0, 0, 1038, 118, 1, 0, 0, 0, 1039, 1040, 7, 16, 0, 0, 1040, 1041, 7, 17, 0, 0, 1041, 1042, 7, 12, 0, 0, 1042, 1043, 7, 12, 0, 0, 1043, 1044, 7, 6, 0, 0, 1044, 1045, 7, 7, 0, 0, 1045, 1046, 7, 8, 0, 0, 1046, 1047, 5, 95, 0, 0, 1047, 1048, 7, 3, 0, 0, 1048, 1049, 7, 4, 0, 0, 1049, 1050, 7, 8, 0, 0, 1050, 1051, 7, 18, 0, 0, 1051, 120, 1, 0, 0, 0, 1052, 1053, 7, 16, 0, 0, 1053, 1054, 7, 17, 0, 0, 1054, 1055, 7, 12, 0, 0, 1055, 1056, 7, 12, 0, 0, 1056, 1057, 7, 6, 0, 0, 1057, 1058, 7, 7, 0, 0, 1058, 1059, 7, 8, 0, 0, 1059, 1060, 5, 95, 0, 0, 1060, 1061, 7, 12, 0, 0, 1061, 1062, 7, 19, 0, 0, 1062, 1063, 7, 13, 0, 0, 1063, 1064, 7, 6, 0, 0, 1064, 122, 1, 0, 0, 0, 1065, 1066, 7, 16, 0, 0, 1066, 1067, 7, 17, 0, 0, 1067, 1068, 7, 12, 0, 0, 1068, 1069, 7, 12, 0, 0, 1069, 1070, 7, 6, 0, 0, 1070, 1071, 7, 7, 0, 0, 1071, 1072, 7, 8, 0, 0, 1072, 1073, 5, 95, 0, 0, 1073, 1074, 7, 0, 0, 0, 1074, 1075, 7, 16, 0, 0, 1075, 1076, 7, 18, 0, 0, 1076, 1077, 7, 6, 0, 0, 1077, 1078, 7, 10, 0, 0, 1078, 1079, 7, 4, 0, 0, 1079, 124, 1, 0, 0, 0, 1080, 1081, 7, 16, 0, 0, 1081, 1082, 7, 17, 0, 0, 1082, 1083, 7, 12, 0, 0, 1083, 1084, 7, 12, 0, 0, 1084, 1085, 7, 6, 0, 0, 1085, 1086, 7, 7, 0, 0, 1086, 1087, 7, 8, 0, 0, 1087, 1088, 5, 95, 0, 0, 1088, 1089, 7, 8, 0, 0, 1089, 1090, 7, 2, 0, 0, 1090, 1091, 7, 10, 0, 0, 1091, 1092, 7, 6, 0, 0, 1092, 126, 1, 0, 0, 0, 1093, 1094, 7, 16, 0, 0, 1094, 1095, 7, 17, 0, 0, 1095, 1096, 7, 12, 0, 0, 1096, 1097, 7, 12, 0, 0, 1097, 1098, 7, 6, 0, 0, 1098, 1099, 7, 7, 0, 0, 1099, 1100, 7, 8, 0, 0, 1100, 1101, 5, 95, 0, 0, 1101, 1102, 7, 8, 0, 0, 1102, 1103, 7, 2, 0, 0, 1103, 1104, 7, 10, 0, 0, 1104, 1105, 7, 6, 0, 0, 1105, 1106, 7, 0, 0, 0, 1106, 1107, 7, 8, 0, 0, 1107, 1108, 7, 4, 0, 0, 1108, 1109, 7, 10, 0, 0, 1109, 1110, 7, 3, 0, 0, 1110, 128, 1, 0, 0, 0, 1111, 1112, 7, 16, 0, 0, 1112, 1113, 7, 17, 0, 0, 1113, 1114, 7, 12, 0, 0, 1114, 1115, 7, 12, 0, 0, 1115, 1116, 7, 6, 0, 0, 1116, 1117, 7, 7, 0, 0, 1117, 1118, 7, 8, 0, 0, 1118, 1119, 5, 95, 0, 0, 1119, 1120, 7, 17, 0, 0, 1120, 1121, 7, 0, 0, 0, 1121, 1122, 7, 6, 0, 0, 1122, 1123, 7, 12, 0, 0, 1123, 130, 1, 0, 0, 0, 1124, 1125, 7, 9, 0, 0, 1125, 1126, 7, 4, 0, 0, 1126, 1127, 7, 8, 0, 0, 1127, 1128, 7, 4, 0, 0, 1128, 132, 1, 0, 0, 0, 1129, 1130, 7, 9, 0, 0, 1130, 1131, 7, 4, 0, 0, 1131, 1132, 7, 8, 0, 0, 1132, 1133, 7, 6, 0, 0, 1133, 134, 1, 0, 0, 0, 1134, 1135, 7, 9, 0, 0, 1135, 1136, 7, 4, 0, 0, 1136, 1137, 7, 14, 0, 0, 1137, 136, 1, 0, 0, 0, 1138, 1139, 7, 9, 0, 0, 1139, 1140, 7, 6, 0, 0, 1140, 1141, 7, 4, 0, 0, 1141, 1142, 7, 13, 0, 0, 1142, 1143, 7, 13, 0, 0, 1143, 1144, 7, 19, 0, 0, 1144, 1145, 7, 16, 0, 0, 1145, 1146, 7, 4, 0, 0, 1146, 1147, 7, 8, 0, 0, 1147, 1148, 7, 6, 0, 0, 1148, 138, 1, 0, 0, 0, 1149, 1150, 7, 9, 0, 0, 1150, 1151, 7, 6, 0, 0, 1151, 1152, 7, 16, 0, 0, 1152, 1153, 7, 13, 0, 0, 1153, 1154, 7, 4, 0, 0, 1154, 1155, 7, 12, 0, 0, 1155, 1156, 7, 6, 0, 0, 1156, 140, 1, 0, 0, 0, 1157, 1158, 7, 9, 0, 0, 1158, 1159, 7, 6, 0, 0, 1159, 1160, 7, 11, 0, 0, 1160, 1161, 7, 4, 0, 0, 1161, 1162, 7, 17, 0, 0, 1162, 1163, 7, 13, 0, 0, 1163, 1164, 7, 8, 0, 0, 1164, 142, 1, 0, 0, 0, 1165, 1166, 7, 9, 0, 0, 1166, 1167, 7, 6, 0, 0, 1167, 1168, 7, 11, 0, 0, 1168, 1169, 7, 2, 0, 0, 1169, 1170, 7, 7, 0, 0, 1170, 1171, 7, 6, 0, 0, 1171, 144, 1, 0, 0, 0, 1172, 1173, 7, 9, 0, 0, 1173, 1174, 7, 6, 0, 0, 1174, 1175, 7, 11, 0, 0, 1175, 1176, 7, 2, 0, 0, 1176, 1177, 7, 7, 0, 0, 1177, 1178, 7, 6, 0, 0, 1178, 1179, 7, 12, 0, 0, 1179, 146, 1, 0, 0, 0, 1180, 1181, 7, 9, 0, 0, 1181, 1182, 7, 6, 0, 0, 1182, 1183, 7, 13, 0, 0, 1183, 1184, 7, 6, 0, 0, 1184, 1185, 7, 8, 0, 0, 1185, 1186, 7, 6, 0, 0, 1186, 148, 1, 0, 0, 0, 1187, 1188, 7, 9, 0, 0, 1188, 1189, 7, 6, 0, 0, 1189, 1190, 7, 7, 0, 0, 1190, 1191, 7, 14, 0, 0, 1191, 150, 1, 0, 0, 0, 1192, 1193, 7, 9, 0, 0, 1193, 1194, 7, 6, 0, 0, 1194, 1195, 7, 0, 0, 0, 1195, 1196, 7, 16, 0, 0, 1196, 152, 1, 0, 0, 0, 1197, 1198, 7, 9, 0, 0, 1198, 1199, 7, 6, 0, 0, 1199, 1200, 7, 0, 0, 0, 1200, 1201, 7, 16, 0, 0, 1201, 1202, 7, 12, 0, 0, 1202, 1203, 7, 2, 0, 0, 1203, 1204, 7, 5, 0, 0, 1204, 1205, 7, 6, 0, 0, 1205, 154, 1, 0, 0, 0, 1206, 1207, 7, 9, 0, 0, 1207, 1208, 7, 6, 0, 0, 1208, 1209, 7, 0, 0, 0, 1209, 1210, 7, 16, 0, 0, 1210, 1211, 7, 12, 0, 0, 1211, 1212, 7, 2, 0, 0, 1212, 1213, 7, 3, 0, 0, 1213, 1214, 7, 8, 0, 0, 1214, 1215, 7, 19, 0, 0, 1215, 1216, 7, 12, 0, 0, 1216, 156, 1, 0, 0, 0, 1217, 1218, 7, 9, 0, 0, 1218, 1219, 7, 6, 0, 0, 1219, 1220, 7, 8, 0, 0, 1220, 1221, 7, 6, 0, 0, 1221, 1222, 7, 12, 0, 0, 1222, 1223, 7, 10, 0, 0, 1223, 1224, 7, 2, 0, 0, 1224, 1225, 7, 7, 0, 0, 1225, 1226, 7, 2, 0, 0, 1226, 1227, 7, 0, 0, 0, 1227, 1228, 7, 8, 0, 0, 1228, 1229, 7, 2, 0, 0, 1229, 1230, 7, 16, 0, 0, 1230, 158, 1, 0, 0, 0, 1231, 1232, 7, 9, 0, 0, 1232, 1233, 7, 2, 0, 0, 1233, 1234, 7, 0, 0, 0, 1234, 1235, 7, 8, 0, 0, 1235, 1236, 7, 2, 0, 0, 1236, 1237, 7, 7, 0, 0, 1237, 1238, 7, 16, 0, 0, 1238, 1239, 7, 8, 0, 0, 1239, 160, 1, 0, 0, 0, 1240, 1241, 7, 9, 0, 0, 1241, 1242, 7, 2, 0, 0, 1242, 1243, 7, 0, 0, 0, 1243, 1244, 7, 8, 0, 0, 1244, 1245, 7, 12, 0, 0, 1245, 1246, 7, 2, 0, 0, 1246, 1247, 7, 5, 0, 0, 1247, 1248, 7, 17, 0, 0, 1248, 1249, 7, 8, 0, 0, 1249, 1250, 7, 6, 0, 0, 1250, 1251, 7, 9, 0, 0, 1251, 162, 1, 0, 0, 0, 1252, 1253, 7, 9, 0, 0, 1253, 1254, 7, 19, 0, 0, 1254, 164, 1, 0, 0, 0, 1255, 1256, 7, 9, 0, 0, 1256, 1257, 7, 19, 0, 0, 1257, 1258, 7, 17, 0, 0, 1258, 1259, 7, 5, 0, 0, 1259, 1260, 7, 13, 0, 0, 1260, 1261, 7, 6, 0, 0, 1261, 166, 1, 0, 0, 0, 1262, 1263, 7, 9, 0, 0, 1263, 1264, 7, 12, 0, 0, 1264, 1265, 7, 19, 0, 0, 1265, 1266, 7, 3, 0, 0, 1266, 168, 1, 0, 0, 0, 1267, 1268, 7, 6, 0, 0, 1268, 1269, 7, 13, 0, 0, 1269, 1270, 7, 0, 0, 0, 1270, 1271, 7, 6, 0, 0, 1271, 170, 1, 0, 0, 0, 1272, 1273, 7, 6, 0, 0, 1273, 1274, 7, 10, 0, 0, 1274, 1275, 7, 3, 0, 0, 1275, 1276, 7, 8, 0, 0, 1276, 1277, 7, 14, 0, 0, 1277, 172, 1, 0, 0, 0, 1278, 1279, 7, 6, 0, 0, 1279, 1280, 7, 13, 0, 0, 1280, 1281, 7, 0, 0, 0, 1281, 1282, 7, 6, 0, 0, 1282, 1283, 7, 2, 0, 0, 1283, 1284, 7, 11, 0, 0, 1284, 174, 1, 0, 0, 0, 1285, 1286, 7, 6, 0, 0, 1286, 1287, 7, 7, 0, 0, 1287, 1288, 7, 16, 0, 0, 1288, 1289, 7, 19, 0, 0, 1289, 1290, 7, 9, 0, 0, 1290, 1291, 7, 2, 0, 0, 1291, 1292, 7, 7, 0, 0, 1292, 1293, 7, 20, 0, 0, 1293, 176, 1, 0, 0, 0, 1294, 1295, 7, 6, 0, 0, 1295, 1296, 7, 7, 0, 0, 1296, 1297, 7, 9, 0, 0, 1297, 178, 1, 0, 0, 0, 1298, 1299, 7, 6, 0, 0, 1299, 1300, 7, 12, 0, 0, 1300, 1301, 7, 12, 0, 0, 1301, 1302, 7, 19, 0, 0, 1302, 1303, 7, 12, 0, 0, 1303, 180, 1, 0, 0, 0, 1304, 1305, 7, 6, 0, 0, 1305, 1306, 7, 0, 0, 0, 1306, 1307, 7, 16, 0, 0, 1307, 1308, 7, 4, 0, 0, 1308, 1309, 7, 3, 0, 0, 1309, 1310, 7, 6, 0, 0, 1310, 182, 1, 0, 0, 0, 1311, 1312, 7, 6, 0, 0, 1312, 1313, 7, 22, 0, 0, 1313, 1314, 7, 16, 0, 0, 1314, 1315, 7, 6, 0, 0, 1315, 1316, 7, 3, 0, 0, 1316, 1317, 7, 8, 0, 0, 1317, 184, 1, 0, 0, 0, 1318, 1319, 7, 6, 0, 0, 1319, 1320, 7, 22, 0, 0, 1320, 1321, 7, 16, 0, 0, 1321, 1322, 7, 13, 0, 0, 1322, 1323, 7, 17, 0, 0, 1323, 1324, 7, 9, 0, 0, 1324, 1325, 7, 2, 0, 0, 1325, 1326, 7, 7, 0, 0, 1326, 1327, 7, 20, 0, 0, 1327, 186, 1, 0, 0, 0, 1328, 1329, 7, 6, 0, 0, 1329, 1330, 7, 22, 0, 0, 1330, 1331, 7, 6, 0, 0, 1331, 1332, 7, 16, 0, 0, 1332, 1333, 7, 17, 0, 0, 1333, 1334, 7, 8, 0, 0, 1334, 1335, 7, 6, 0, 0, 1335, 188, 1, 0, 0, 0, 1336, 1337, 7, 6, 0, 0, 1337, 1338, 7, 22, 0, 0, 1338, 1339, 7, 2, 0, 0, 1339, 1340, 7, 0, 0, 0, 1340, 1341, 7, 8, 0, 0, 1341, 1342, 7, 0, 0, 0, 1342, 190, 1, 0, 0, 0, 1343, 1344, 7, 6, 0, 0, 1344, 1345, 7, 22, 0, 0, 1345, 1346, 7, 3, 0, 0, 1346, 1347, 7, 13, 0, 0, 1347, 1348, 7, 4, 0, 0, 1348, 1349, 7, 2, 0, 0, 1349, 1350, 7, 7, 0, 0, 1350, 192, 1, 0, 0, 0, 1351, 1352, 7, 6, 0, 0, 1352, 1353, 7, 22, 0, 0, 1353, 1354, 7, 8, 0, 0, 1354, 1355, 7, 12, 0, 0, 1355, 1356, 7, 4, 0, 0, 1356, 1357, 7, 16, 0, 0, 1357, 1358, 7, 8, 0, 0, 1358, 194, 1, 0, 0, 0, 1359, 1360, 7, 11, 0, 0, 1360, 1361, 7, 4, 0, 0, 1361, 1362, 7, 13, 0, 0, 1362, 1363, 7, 0, 0, 0, 1363, 1364, 7, 6, 0, 0, 1364, 196, 1, 0, 0, 0, 1365, 1366, 7, 11, 0, 0, 1366, 1367, 7, 6, 0, 0, 1367, 1368, 7, 8, 0, 0, 1368, 1369, 7, 16, 0, 0, 1369, 1370, 7, 18, 0, 0, 1370, 198, 1, 0, 0, 0, 1371, 1372, 7, 11, 0, 0, 1372, 1373, 7, 2, 0, 0, 1373, 1374, 7, 13, 0, 0, 1374, 1375, 7, 8, 0, 0, 1375, 1376, 7, 6, 0, 0, 1376, 1377, 7, 12, 0, 0, 1377, 200, 1, 0, 0, 0, 1378, 1379, 7, 11, 0, 0, 1379, 1380, 7, 2, 0, 0, 1380, 1381, 7, 7, 0, 0, 1381, 1382, 7, 4, 0, 0, 1382, 1383, 7, 13, 0, 0, 1383, 202, 1, 0, 0, 0, 1384, 1385, 7, 11, 0, 0, 1385, 1386, 7, 2, 0, 0, 1386, 1387, 7, 12, 0, 0, 1387, 1388, 7, 0, 0, 0, 1388, 1389, 7, 8, 0, 0, 1389, 204, 1, 0, 0, 0, 1390, 1391, 7, 11, 0, 0, 1391, 1392, 7, 19, 0, 0, 1392, 1393, 7, 13, 0, 0, 1393, 1394, 7, 13, 0, 0, 1394, 1395, 7, 19, 0, 0, 1395, 1396, 7, 21, 0, 0, 1396, 1397, 7, 2, 0, 0, 1397, 1398, 7, 7, 0, 0, 1398, 1399, 7, 20, 0, 0, 1399, 206, 1, 0, 0, 0, 1400, 1401, 7, 11, 0, 0, 1401, 1402, 7, 19, 0, 0, 1402, 1403, 7, 12, 0, 0, 1403, 208, 1, 0, 0, 0, 1404, 1405, 7, 11, 0, 0, 1405, 1406, 7, 19, 0, 0, 1406, 1407, 7, 12, 0, 0, 1407, 1408, 7, 10, 0, 0, 1408, 1409, 7, 4, 0, 0, 1409, 1410, 7, 8, 0, 0, 1410, 210, 1, 0, 0, 0, 1411, 1412, 7, 11, 0, 0, 1412, 1413, 7, 12, 0, 0, 1413, 1414, 7, 19, 0, 0, 1414, 1415, 7, 10, 0, 0, 1415, 212, 1, 0, 0, 0, 1416, 1417, 7, 11, 0, 0, 1417, 1418, 7, 17, 0, 0, 1418, 1419, 7, 13, 0, 0, 1419, 1420, 7, 13, 0, 0, 1420, 214, 1, 0, 0, 0, 1421, 1422, 7, 11, 0, 0, 1422, 1423, 7, 17, 0, 0, 1423, 1424, 7, 7, 0, 0, 1424, 1425, 7, 16, 0, 0, 1425, 1426, 7, 8, 0, 0, 1426, 1427, 7, 2, 0, 0, 1427, 1428, 7, 19, 0, 0, 1428, 1429, 7, 7, 0, 0, 1429, 216, 1, 0, 0, 0, 1430, 1431, 7, 11, 0, 0, 1431, 1432, 7, 17, 0, 0, 1432, 1433, 7, 7, 0, 0, 1433, 1434, 7, 16, 0, 0, 1434, 1435, 7, 8, 0, 0, 1435, 1436, 7, 2, 0, 0, 1436, 1437, 7, 19, 0, 0, 1437, 1438, 7, 7, 0, 0, 1438, 1439, 7, 0, 0, 0, 1439, 218, 1, 0, 0, 0, 1440, 1441, 7, 20, 0, 0, 1441, 1442, 7, 12, 0, 0, 1442, 1443, 7, 4, 0, 0, 1443, 1444, 7, 16, 0, 0, 1444, 1445, 7, 6, 0, 0, 1445, 220, 1, 0, 0, 0, 1446, 1447, 7, 20, 0, 0, 1447, 1448, 7, 12, 0, 0, 1448, 1449, 7, 4, 0, 0, 1449, 1450, 7, 7, 0, 0, 1450, 1451, 7, 8, 0, 0, 1451, 222, 1, 0, 0, 0, 1452, 1453, 7, 20, 0, 0, 1453, 1454, 7, 12, 0, 0, 1454, 1455, 7, 4, 0, 0, 1455, 1456, 7, 7, 0, 0, 1456, 1457, 7, 8, 0, 0, 1457, 1458, 7, 6, 0, 0, 1458, 1459, 7, 9, 0, 0, 1459, 224, 1, 0, 0, 0, 1460, 1461, 7, 20, 0, 0, 1461, 1462, 7, 12, 0, 0, 1462, 1463, 7, 4, 0, 0, 1463, 1464, 7, 7, 0, 0, 1464, 1465, 7, 8, 0, 0, 1465, 1466, 7, 0, 0, 0, 1466, 226, 1, 0, 0, 0, 1467, 1468, 7, 20, 0, 0, 1468, 1469, 7, 12, 0, 0, 1469, 1470, 7, 4, 0, 0, 1470, 1471, 7, 3, 0, 0, 1471, 1472, 7, 18, 0, 0, 1472, 1473, 7, 23, 0, 0, 1473, 1474, 7, 2, 0, 0, 1474, 1475, 7, 15, 0, 0, 1475, 228, 1, 0, 0, 0, 1476, 1477, 7, 20, 0, 0, 1477, 1478, 7, 12, 0, 0, 1478, 1479, 7, 19, 0, 0, 1479, 1480, 7, 17, 0, 0, 1480, 1481, 7, 3, 0, 0, 1481, 230, 1, 0, 0, 0, 1482, 1483, 7, 20, 0, 0, 1483, 1484, 7, 12, 0, 0, 1484, 1485, 7, 19, 0, 0, 1485, 1486, 7, 17, 0, 0, 1486, 1487, 7, 3, 0, 0, 1487, 1488, 7, 2, 0, 0, 1488, 1489, 7, 7, 0, 0, 1489, 1490, 7, 20, 0, 0, 1490, 232, 1, 0, 0, 0, 1491, 1492, 7, 20, 0, 0, 1492, 1493, 7, 12, 0, 0, 1493, 1494, 7, 19, 0, 0, 1494, 1495, 7, 17, 0, 0, 1495, 1496, 7, 3, 0, 0, 1496, 1497, 7, 0, 0, 0, 1497, 234, 1, 0, 0, 0, 1498, 1499, 7, 18, 0, 0, 1499, 1500, 7, 4, 0, 0, 1500, 1501, 7, 23, 0, 0, 1501, 1502, 7, 2, 0, 0, 1502, 1503, 7, 7, 0, 0, 1503, 1504, 7, 20, 0, 0, 1504, 236, 1, 0, 0, 0, 1505, 1506, 7, 18, 0, 0, 1506, 1507, 7, 19, 0, 0, 1507, 1508, 7, 17, 0, 0, 1508, 1509, 7, 12, 0, 0, 1509, 238, 1, 0, 0, 0, 1510, 1511, 7, 2, 0, 0, 1511, 1512, 7, 11, 0, 0, 1512, 240, 1, 0, 0, 0, 1513, 1514, 7, 2, 0, 0, 1514, 1515, 7, 20, 0, 0, 1515, 1516, 7, 7, 0, 0, 1516, 1517, 7, 19, 0, 0, 1517, 1518, 7, 12, 0, 0, 1518, 1519, 7, 6, 0, 0, 1519, 242, 1, 0, 0, 0, 1520, 1521, 7, 2, 0, 0, 1521, 1522, 7, 10, 0, 0, 1522, 1523, 7, 10, 0, 0, 1523, 1524, 7, 6, 0, 0, 1524, 1525, 7, 9, 0, 0, 1525, 1526, 7, 2, 0, 0, 1526, 1527, 7, 4, 0, 0, 1527, 1528, 7, 8, 0, 0, 1528, 1529, 7, 6, 0, 0, 1529, 244, 1, 0, 0, 0, 1530, 1531, 7, 2, 0, 0, 1531, 1532, 7, 7, 0, 0, 1532, 246, 1, 0, 0, 0, 1533, 1534, 7, 2, 0, 0, 1534, 1535, 7, 7, 0, 0, 1535, 1536, 7, 16, 0, 0, 1536, 1537, 7, 13, 0, 0, 1537, 1538, 7, 17, 0, 0, 1538, 1539, 7, 9, 0, 0, 1539, 1540, 7, 2, 0, 0, 1540, 1541, 7, 7, 0, 0, 1541, 1542, 7, 20, 0, 0, 1542, 248, 1, 0, 0, 0, 1543, 1544, 7, 2, 0, 0, 1544, 1545, 7, 7, 0, 0, 1545, 1546, 7, 2, 0, 0, 1546, 1547, 7, 8, 0, 0, 1547, 1548, 7, 2, 0, 0, 1548, 1549, 7, 4, 0, 0, 1549, 1550, 7, 13, 0, 0, 1550, 250, 1, 0, 0, 0, 1551, 1552, 7, 2, 0, 0, 1552, 1553, 7, 7, 0, 0, 1553, 1554, 7, 7, 0, 0, 1554, 1555, 7, 6, 0, 0, 1555, 1556, 7, 12, 0, 0, 1556, 252, 1, 0, 0, 0, 1557, 1558, 7, 2, 0, 0, 1558, 1559, 7, 7, 0, 0, 1559, 1560, 7, 3, 0, 0, 1560, 1561, 7, 17, 0, 0, 1561, 1562, 7, 8, 0, 0, 1562, 254, 1, 0, 0, 0, 1563, 1564, 7, 2, 0, 0, 1564, 1565, 7, 7, 0, 0, 1565, 1566, 7, 0, 0, 0, 1566, 1567, 7, 6, 0, 0, 1567, 1568, 7, 12, 0, 0, 1568, 1569, 7, 8, 0, 0, 1569, 256, 1, 0, 0, 0, 1570, 1571, 7, 2, 0, 0, 1571, 1572, 7, 7, 0, 0, 1572, 1573, 7, 8, 0, 0, 1573, 1574, 7, 6, 0, 0, 1574, 1575, 7, 12, 0, 0, 1575, 1576, 7, 0, 0, 0, 1576, 1577, 7, 6, 0, 0, 1577, 1578, 7, 16, 0, 0, 1578, 1579, 7, 8, 0, 0, 1579, 258, 1, 0, 0, 0, 1580, 1581, 7, 2, 0, 0, 1581, 1582, 7, 7, 0, 0, 1582, 1583, 7, 8, 0, 0, 1583, 1584, 7, 6, 0, 0, 1584, 1585, 7, 12, 0, 0, 1585, 1586, 7, 23, 0, 0, 1586, 1587, 7, 4, 0, 0, 1587, 1588, 7, 13, 0, 0, 1588, 260, 1, 0, 0, 0, 1589, 1590, 7, 2, 0, 0, 1590, 1591, 7, 7, 0, 0, 1591, 1592, 7, 8, 0, 0, 1592, 1593, 7, 19, 0, 0, 1593, 262, 1, 0, 0, 0, 1594, 1595, 7, 2, 0, 0, 1595, 1596, 7, 7, 0, 0, 1596, 1597, 7, 23, 0, 0, 1597, 1598, 7, 19, 0, 0, 1598, 1599, 7, 1, 0, 0, 1599, 1600, 7, 6, 0, 0, 1600, 1601, 7, 12, 0, 0, 1601, 264, 1, 0, 0, 0, 1602, 1603, 7, 2, 0, 0, 1603, 1604, 7, 19, 0, 0, 1604, 266, 1, 0, 0, 0, 1605, 1606, 7, 2, 0, 0, 1606, 1607, 7, 0, 0, 0, 1607, 268, 1, 0, 0, 0, 1608, 1609, 7, 2, 0, 0, 1609, 1610, 7, 0, 0, 0, 1610, 1611, 7, 19, 0, 0, 1611, 1612, 7, 13, 0, 0, 1612, 1613, 7, 4, 0, 0, 1613, 1614, 7, 8, 0, 0, 1614, 1615, 7, 2, 0, 0, 1615, 1616, 7, 19, 0, 0, 1616, 1617, 7, 7, 0, 0, 1617, 270, 1, 0, 0, 0, 1618, 1619, 7, 2, 0, 0, 1619, 1620, 7, 8, 0, 0, 1620, 1621, 7, 6, 0, 0, 1621, 1622, 7, 12, 0, 0, 1622, 1623, 7, 4, 0, 0, 1623, 1624, 7, 8, 0, 0, 1624, 1625, 7, 6, 0, 0, 1625, 272, 1, 0, 0, 0, 1626, 1627, 7, 24, 0, 0, 1627, 1628, 7, 19, 0, 0, 1628, 1629, 7, 2, 0, 0, 1629, 1630, 7, 7, 0, 0, 1630, 274, 1, 0, 0, 0, 1631, 1632, 7, 24, 0, 0, 1632, 1633, 7, 0, 0, 0, 1633, 1634, 7, 19, 0, 0, 1634, 1635, 7, 7, 0, 0, 1635, 276, 1, 0, 0, 0, 1636, 1637, 7, 24, 0, 0, 1637, 1638, 7, 0, 0, 0, 1638, 1639, 7, 19, 0, 0, 1639, 1640, 7, 7, 0, 0, 1640, 1641, 5, 95, 0, 0, 1641, 1642, 7, 4, 0, 0, 1642, 1643, 7, 12, 0, 0, 1643, 1644, 7, 12, 0, 0, 1644, 1645, 7, 4, 0, 0, 1645, 1646, 7, 14, 0, 0, 1646, 278, 1, 0, 0, 0, 1647, 1648, 7, 24, 0, 0, 1648, 1649, 7, 0, 0, 0, 1649, 1650, 7, 19, 0, 0, 1650, 1651, 7, 7, 0, 0, 1651, 1652, 5, 95, 0, 0, 1652, 1653, 7, 6, 0, 0, 1653, 1654, 7, 22, 0, 0, 1654, 1655, 7, 2, 0, 0, 1655, 1656, 7, 0, 0, 0, 1656, 1657, 7, 8, 0, 0, 1657, 1658, 7, 0, 0, 0, 1658, 280, 1, 0, 0, 0, 1659, 1660, 7, 24, 0, 0, 1660, 1661, 7, 0, 0, 0, 1661, 1662, 7, 19, 0, 0, 1662, 1663, 7, 7, 0, 0, 1663, 1664, 5, 95, 0, 0, 1664, 1665, 7, 19, 0, 0, 1665, 1666, 7, 5, 0, 0, 1666, 1667, 7, 24, 0, 0, 1667, 1668, 7, 6, 0, 0, 1668, 1669, 7, 16, 0, 0, 1669, 1670, 7, 8, 0, 0, 1670, 282, 1, 0, 0, 0, 1671, 1672, 7, 24, 0, 0, 1672, 1673, 7, 0, 0, 0, 1673, 1674, 7, 19, 0, 0, 1674, 1675, 7, 7, 0, 0, 1675, 1676, 5, 95, 0, 0, 1676, 1677, 7, 25, 0, 0, 1677, 1678, 7, 17, 0, 0, 1678, 1679, 7, 6, 0, 0, 1679, 1680, 7, 12, 0, 0, 1680, 1681, 7, 14, 0, 0, 1681, 284, 1, 0, 0, 0, 1682, 1683, 7, 24, 0, 0, 1683, 1684, 7, 0, 0, 0, 1684, 1685, 7, 19, 0, 0, 1685, 1686, 7, 7, 0, 0, 1686, 1687, 5, 95, 0, 0, 1687, 1688, 7, 8, 0, 0, 1688, 1689, 7, 4, 0, 0, 1689, 1690, 7, 5, 0, 0, 1690, 1691, 7, 13, 0, 0, 1691, 1692, 7, 6, 0, 0, 1692, 286, 1, 0, 0, 0, 1693, 1694, 7, 24, 0, 0, 1694, 1695, 7, 0, 0, 0, 1695, 1696, 7, 19, 0, 0, 1696, 1697, 7, 7, 0, 0, 1697, 1698, 5, 95, 0, 0, 1698, 1699, 7, 23, 0, 0, 1699, 1700, 7, 4, 0, 0, 1700, 1701, 7, 13, 0, 0, 1701, 1702, 7, 17, 0, 0, 1702, 1703, 7, 6, 0, 0, 1703, 288, 1, 0, 0, 0, 1704, 1705, 7, 1, 0, 0, 1705, 1706, 7, 6, 0, 0, 1706, 1707, 7, 6, 0, 0, 1707, 1708, 7, 3, 0, 0, 1708, 290, 1, 0, 0, 0, 1709, 1710, 7, 1, 0, 0, 1710, 1711, 7, 6, 0, 0, 1711, 1712, 7, 14, 0, 0, 1712, 292, 1, 0, 0, 0, 1713, 1714, 7, 1, 0, 0, 1714, 1715, 7, 6, 0, 0, 1715, 1716, 7, 14, 0, 0, 1716, 1717, 7, 0, 0, 0, 1717, 294, 1, 0, 0, 0, 1718, 1719, 7, 13, 0, 0, 1719, 1720, 7, 4, 0, 0, 1720, 1721, 7, 7, 0, 0, 1721, 1722, 7, 20, 0, 0, 1722, 1723, 7, 17, 0, 0, 1723, 1724, 7, 4, 0, 0, 1724, 1725, 7, 20, 0, 0, 1725, 1726, 7, 6, 0, 0, 1726, 296, 1, 0, 0, 0, 1727, 1728, 7, 13, 0, 0, 1728, 1729, 7, 4, 0, 0, 1729, 1730, 7, 0, 0, 0, 1730, 1731, 7, 8, 0, 0, 1731, 298, 1, 0, 0, 0, 1732, 1733, 7, 13, 0, 0, 1733, 1734, 7, 4, 0, 0, 1734, 1735, 7, 8, 0, 0, 1735, 1736, 7, 6, 0, 0, 1736, 1737, 7, 12, 0, 0, 1737, 1738, 7, 4, 0, 0, 1738, 1739, 7, 13, 0, 0, 1739, 300, 1, 0, 0, 0, 1740, 1741, 7, 13, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 1743, 7, 4, 0, 0, 1743, 1744, 7, 9, 0, 0, 1744, 1745, 7, 2, 0, 0, 1745, 1746, 7, 7, 0, 0, 1746, 1747, 7, 20, 0, 0, 1747, 302, 1, 0, 0, 0, 1748, 1749, 7, 13, 0, 0, 1749, 1750, 7, 6, 0, 0, 1750, 1751, 7, 4, 0, 0, 1751, 1752, 7, 23, 0, 0, 1752, 1753, 7, 6, 0, 0, 1753, 304, 1, 0, 0, 0, 1754, 1755, 7, 13, 0, 0, 1755, 1756, 7, 6, 0, 0, 1756, 1757, 7, 11, 0, 0, 1757, 1758, 7, 8, 0, 0, 1758, 306, 1, 0, 0, 0, 1759, 1760, 7, 13, 0, 0, 1760, 1761, 7, 6, 0, 0, 1761, 1762, 7, 23, 0, 0, 1762, 1763, 7, 6, 0, 0, 1763, 1764, 7, 13, 0, 0, 1764, 308, 1, 0, 0, 0, 1765, 1766, 7, 13, 0, 0, 1766, 1767, 7, 2, 0, 0, 1767, 1768, 7, 1, 0, 0, 1768, 1769, 7, 6, 0, 0, 1769, 310, 1, 0, 0, 0, 1770, 1771, 7, 13, 0, 0, 1771, 1772, 7, 2, 0, 0, 1772, 1773, 7, 10, 0, 0, 1773, 1774, 7, 2, 0, 0, 1774, 1775, 7, 8, 0, 0, 1775, 312, 1, 0, 0, 0, 1776, 1777, 7, 13, 0, 0, 1777, 1778, 7, 2, 0, 0, 1778, 1779, 7, 0, 0, 0, 1779, 1780, 7, 8, 0, 0, 1780, 1781, 7, 4, 0, 0, 1781, 1782, 7, 20, 0, 0, 1782, 1783, 7, 20, 0, 0, 1783, 314, 1, 0, 0, 0, 1784, 1785, 7, 13, 0, 0, 1785, 1786, 7, 19, 0, 0, 1786, 1787, 7, 16, 0, 0, 1787, 1788, 7, 4, 0, 0, 1788, 1789, 7, 13, 0, 0, 1789, 316, 1, 0, 0, 0, 1790, 1791, 7, 13, 0, 0, 1791, 1792, 7, 19, 0, 0, 1792, 1793, 7, 16, 0, 0, 1793, 1794, 7, 4, 0, 0, 1794, 1795, 7, 13, 0, 0, 1795, 1796, 7, 8, 0, 0, 1796, 1797, 7, 2, 0, 0, 1797, 1798, 7, 10, 0, 0, 1798, 1799, 7, 6, 0, 0, 1799, 318, 1, 0, 0, 0, 1800, 1801, 7, 13, 0, 0, 1801, 1802, 7, 19, 0, 0, 1802, 1803, 7, 16, 0, 0, 1803, 1804, 7, 4, 0, 0, 1804, 1805, 7, 13, 0, 0, 1805, 1806, 7, 8, 0, 0, 1806, 1807, 7, 2, 0, 0, 1807, 1808, 7, 10, 0, 0, 1808, 1809, 7, 6, 0, 0, 1809, 1810, 7, 0, 0, 0, 1810, 1811, 7, 8, 0, 0, 1811, 1812, 7, 4, 0, 0, 1812, 1813, 7, 10, 0, 0, 1813, 1814, 7, 3, 0, 0, 1814, 320, 1, 0, 0, 0, 1815, 1816, 7, 13, 0, 0, 1816, 1817, 7, 19, 0, 0, 1817, 1818, 7, 20, 0, 0, 1818, 1819, 7, 2, 0, 0, 1819, 1820, 7, 16, 0, 0, 1820, 1821, 7, 4, 0, 0, 1821, 1822, 7, 13, 0, 0, 1822, 322, 1, 0, 0, 0, 1823, 1824, 7, 13, 0, 0, 1824, 1825, 7, 19, 0, 0, 1825, 1826, 7, 19, 0, 0, 1826, 1827, 7, 3, 0, 0, 1827, 324, 1, 0, 0, 0, 1828, 1829, 7, 10, 0, 0, 1829, 1830, 7, 4, 0, 0, 1830, 1831, 7, 3, 0, 0, 1831, 326, 1, 0, 0, 0, 1832, 1833, 7, 10, 0, 0, 1833, 1834, 7, 4, 0, 0, 1834, 1835, 7, 8, 0, 0, 1835, 1836, 7, 16, 0, 0, 1836, 1837, 7, 18, 0, 0, 1837, 328, 1, 0, 0, 0, 1838, 1839, 7, 10, 0, 0, 1839, 1840, 7, 4, 0, 0, 1840, 1841, 7, 8, 0, 0, 1841, 1842, 7, 16, 0, 0, 1842, 1843, 7, 18, 0, 0, 1843, 1844, 7, 6, 0, 0, 1844, 1845, 7, 9, 0, 0, 1845, 330, 1, 0, 0, 0, 1846, 1847, 7, 10, 0, 0, 1847, 1848, 7, 4, 0, 0, 1848, 1849, 7, 8, 0, 0, 1849, 1850, 7, 16, 0, 0, 1850, 1851, 7, 18, 0, 0, 1851, 1852, 7, 6, 0, 0, 1852, 1853, 7, 0, 0, 0, 1853, 332, 1, 0, 0, 0, 1854, 1855, 7, 10, 0, 0, 1855, 1856, 7, 4, 0, 0, 1856, 1857, 7, 8, 0, 0, 1857, 1858, 7, 16, 0, 0, 1858, 1859, 7, 18, 0, 0, 1859, 1860, 5, 95, 0, 0, 1860, 1861, 7, 12, 0, 0, 1861, 1862, 7, 6, 0, 0, 1862, 1863, 7, 16, 0, 0, 1863, 1864, 7, 19, 0, 0, 1864, 1865, 7, 20, 0, 0, 1865, 1866, 7, 7, 0, 0, 1866, 1867, 7, 2, 0, 0, 1867, 1868, 7, 15, 0, 0, 1868, 1869, 7, 6, 0, 0, 1869, 334, 1, 0, 0, 0, 1870, 1871, 7, 10, 0, 0, 1871, 1872, 7, 4, 0, 0, 1872, 1873, 7, 8, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 12, 0, 0, 1875, 1876, 7, 2, 0, 0, 1876, 1877, 7, 4, 0, 0, 1877, 1878, 7, 13, 0, 0, 1878, 1879, 7, 2, 0, 0, 1879, 1880, 7, 15, 0, 0, 1880, 1881, 7, 6, 0, 0, 1881, 1882, 7, 9, 0, 0, 1882, 336, 1, 0, 0, 0, 1883, 1884, 7, 10, 0, 0, 1884, 1885, 7, 6, 0, 0, 1885, 1886, 7, 4, 0, 0, 1886, 1887, 7, 0, 0, 0, 1887, 1888, 7, 17, 0, 0, 1888, 1889, 7, 12, 0, 0, 1889, 1890, 7, 6, 0, 0, 1890, 1891, 7, 0, 0, 0, 1891, 338, 1, 0, 0, 0, 1892, 1893, 7, 10, 0, 0, 1893, 1894, 7, 6, 0, 0, 1894, 1895, 7, 12, 0, 0, 1895, 1896, 7, 20, 0, 0, 1896, 1897, 7, 6, 0, 0, 1897, 340, 1, 0, 0, 0, 1898, 1899, 7, 10, 0, 0, 1899, 1900, 7, 2, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 17, 0, 0, 1902, 1903, 7, 8, 0, 0, 1903, 1904, 7, 6, 0, 0, 1904, 342, 1, 0, 0, 0, 1905, 1906, 7, 10, 0, 0, 1906, 1907, 7, 19, 0, 0, 1907, 1908, 7, 7, 0, 0, 1908, 1909, 7, 8, 0, 0, 1909, 1910, 7, 18, 0, 0, 1910, 344, 1, 0, 0, 0, 1911, 1912, 7, 7, 0, 0, 1912, 1913, 7, 4, 0, 0, 1913, 1914, 7, 8, 0, 0, 1914, 1915, 7, 17, 0, 0, 1915, 1916, 7, 12, 0, 0, 1916, 1917, 7, 4, 0, 0, 1917, 1918, 7, 13, 0, 0, 1918, 346, 1, 0, 0, 0, 1919, 1920, 7, 7, 0, 0, 1920, 1921, 7, 6, 0, 0, 1921, 1922, 7, 0, 0, 0, 1922, 1923, 7, 8, 0, 0, 1923, 1924, 7, 6, 0, 0, 1924, 1925, 7, 9, 0, 0, 1925, 348, 1, 0, 0, 0, 1926, 1927, 7, 7, 0, 0, 1927, 1928, 7, 6, 0, 0, 1928, 1929, 7, 22, 0, 0, 1929, 1930, 7, 8, 0, 0, 1930, 350, 1, 0, 0, 0, 1931, 1932, 7, 7, 0, 0, 1932, 1933, 7, 11, 0, 0, 1933, 1934, 7, 16, 0, 0, 1934, 352, 1, 0, 0, 0, 1935, 1936, 7, 7, 0, 0, 1936, 1937, 7, 11, 0, 0, 1937, 1938, 7, 9, 0, 0, 1938, 354, 1, 0, 0, 0, 1939, 1940, 7, 7, 0, 0, 1940, 1941, 7, 11, 0, 0, 1941, 1942, 7, 1, 0, 0, 1942, 1943, 7, 16, 0, 0, 1943, 356, 1, 0, 0, 0, 1944, 1945, 7, 7, 0, 0, 1945, 1946, 7, 11, 0, 0, 1946, 1947, 7, 1, 0, 0, 1947, 1948, 7, 9, 0, 0, 1948, 358, 1, 0, 0, 0, 1949, 1950, 7, 7, 0, 0, 1950, 1951, 7, 19, 0, 0, 1951, 360, 1, 0, 0, 0, 1952, 1953, 7, 7, 0, 0, 1953, 1954, 7, 19, 0, 0, 1954, 1955, 7, 7, 0, 0, 1955, 1956, 7, 6, 0, 0, 1956, 362, 1, 0, 0, 0, 1957, 1958, 7, 7, 0, 0, 1958, 1959, 7, 19, 0, 0, 1959, 1960, 7, 12, 0, 0, 1960, 1961, 7, 10, 0, 0, 1961, 1962, 7, 4, 0, 0, 1962, 1963, 7, 13, 0, 0, 1963, 1964, 7, 2, 0, 0, 1964, 1965, 7, 15, 0, 0, 1965, 1966, 7, 6, 0, 0, 1966, 364, 1, 0, 0, 0, 1967, 1968, 7, 7, 0, 0, 1968, 1969, 7, 19, 0, 0, 1969, 1970, 7, 8, 0, 0, 1970, 366, 1, 0, 0, 0, 1971, 1972, 7, 7, 0, 0, 1972, 1973, 7, 17, 0, 0, 1973, 1974, 7, 13, 0, 0, 1974, 1975, 7, 13, 0, 0, 1975, 368, 1, 0, 0, 0, 1976, 1977, 7, 7, 0, 0, 1977, 1978, 7, 17, 0, 0, 1978, 1979, 7, 13, 0, 0, 1979, 1980, 7, 13, 0, 0, 1980, 1981, 7, 2, 0, 0, 1981, 1982, 7, 11, 0, 0, 1982, 370, 1, 0, 0, 0, 1983, 1984, 7, 7, 0, 0, 1984, 1985, 7, 17, 0, 0, 1985, 1986, 7, 13, 0, 0, 1986, 1987, 7, 13, 0, 0, 1987, 1988, 7, 0, 0, 0, 1988, 372, 1, 0, 0, 0, 1989, 1990, 7, 19, 0, 0, 1990, 1991, 7, 5, 0, 0, 1991, 1992, 7, 24, 0, 0, 1992, 1993, 7, 6, 0, 0, 1993, 1994, 7, 16, 0, 0, 1994, 1995, 7, 8, 0, 0, 1995, 374, 1, 0, 0, 0, 1996, 1997, 7, 19, 0, 0, 1997, 1998, 7, 11, 0, 0, 1998, 376, 1, 0, 0, 0, 1999, 2000, 7, 19, 0, 0, 2000, 2001, 7, 11, 0, 0, 2001, 2002, 7, 11, 0, 0, 2002, 2003, 7, 0, 0, 0, 2003, 2004, 7, 6, 0, 0, 2004, 2005, 7, 8, 0, 0, 2005, 378, 1, 0, 0, 0, 2006, 2007, 7, 19, 0, 0, 2007, 2008, 7, 10, 0, 0, 2008, 2009, 7, 2, 0, 0, 2009, 2010, 7, 8, 0, 0, 2010, 380, 1, 0, 0, 0, 2011, 2012, 7, 19, 0, 0, 2012, 2013, 7, 7, 0, 0, 2013, 382, 1, 0, 0, 0, 2014, 2015, 7, 19, 0, 0, 2015, 2016, 7, 7, 0, 0, 2016, 2017, 7, 6, 0, 0, 2017, 384, 1, 0, 0, 0, 2018, 2019, 7, 19, 0, 0, 2019, 2020, 7, 7, 0, 0, 2020, 2021, 7, 13, 0, 0, 2021, 2022, 7, 14, 0, 0, 2022, 386, 1, 0, 0, 0, 2023, 2024, 7, 19, 0, 0, 2024, 2025, 7, 3, 0, 0, 2025, 2026, 7, 8, 0, 0, 2026, 2027, 7, 2, 0, 0, 2027, 2028, 7, 19, 0, 0, 2028, 2029, 7, 7, 0, 0, 2029, 388, 1, 0, 0, 0, 2030, 2031, 7, 19, 0, 0, 2031, 2032, 7, 12, 0, 0, 2032, 390, 1, 0, 0, 0, 2033, 2034, 7, 19, 0, 0, 2034, 2035, 7, 12, 0, 0, 2035, 2036, 7, 9, 0, 0, 2036, 2037, 7, 6, 0, 0, 2037, 2038, 7, 12, 0, 0, 2038, 392, 1, 0, 0, 0, 2039, 2040, 7, 19, 0, 0, 2040, 2041, 7, 12, 0, 0, 2041, 2042, 7, 9, 0, 0, 2042, 2043, 7, 2, 0, 0, 2043, 2044, 7, 7, 0, 0, 2044, 2045, 7, 4, 0, 0, 2045, 2046, 7, 13, 0, 0, 2046, 2047, 7, 2, 0, 0, 2047, 2048, 7, 8, 0, 0, 2048, 2049, 7, 14, 0, 0, 2049, 394, 1, 0, 0, 0, 2050, 2051, 7, 19, 0, 0, 2051, 2052, 7, 17, 0, 0, 2052, 2053, 7, 8, 0, 0, 2053, 2054, 7, 6, 0, 0, 2054, 2055, 7, 12, 0, 0, 2055, 396, 1, 0, 0, 0, 2056, 2057, 7, 19, 0, 0, 2057, 2058, 7, 17, 0, 0, 2058, 2059, 7, 8, 0, 0, 2059, 2060, 7, 3, 0, 0, 2060, 2061, 7, 17, 0, 0, 2061, 2062, 7, 8, 0, 0, 2062, 398, 1, 0, 0, 0, 2063, 2064, 7, 19, 0, 0, 2064, 2065, 7, 23, 0, 0, 2065, 2066, 7, 6, 0, 0, 2066, 2067, 7, 12, 0, 0, 2067, 400, 1, 0, 0, 0, 2068, 2069, 7, 19, 0, 0, 2069, 2070, 7, 23, 0, 0, 2070, 2071, 7, 6, 0, 0, 2071, 2072, 7, 12, 0, 0, 2072, 2073, 7, 11, 0, 0, 2073, 2074, 7, 13, 0, 0, 2074, 2075, 7, 19, 0, 0, 2075, 2076, 7, 21, 0, 0, 2076, 402, 1, 0, 0, 0, 2077, 2078, 7, 3, 0, 0, 2078, 2079, 7, 4, 0, 0, 2079, 2080, 7, 12, 0, 0, 2080, 2081, 7, 8, 0, 0, 2081, 2082, 7, 2, 0, 0, 2082, 2083, 7, 8, 0, 0, 2083, 2084, 7, 2, 0, 0, 2084, 2085, 7, 19, 0, 0, 2085, 2086, 7, 7, 0, 0, 2086, 404, 1, 0, 0, 0, 2087, 2088, 7, 3, 0, 0, 2088, 2089, 7, 4, 0, 0, 2089, 2090, 7, 12, 0, 0, 2090, 2091, 7, 8, 0, 0, 2091, 2092, 7, 2, 0, 0, 2092, 2093, 7, 8, 0, 0, 2093, 2094, 7, 2, 0, 0, 2094, 2095, 7, 19, 0, 0, 2095, 2096, 7, 7, 0, 0, 2096, 2097, 7, 0, 0, 0, 2097, 406, 1, 0, 0, 0, 2098, 2099, 7, 3, 0, 0, 2099, 2100, 7, 4, 0, 0, 2100, 2101, 7, 0, 0, 0, 2101, 2102, 7, 0, 0, 0, 2102, 2103, 7, 2, 0, 0, 2103, 2104, 7, 7, 0, 0, 2104, 2105, 7, 20, 0, 0, 2105, 408, 1, 0, 0, 0, 2106, 2107, 7, 3, 0, 0, 2107, 2108, 7, 4, 0, 0, 2108, 2109, 7, 0, 0, 0, 2109, 2110, 7, 8, 0, 0, 2110, 410, 1, 0, 0, 0, 2111, 2112, 7, 3, 0, 0, 2112, 2113, 7, 4, 0, 0, 2113, 2114, 7, 8, 0, 0, 2114, 2115, 7, 18, 0, 0, 2115, 412, 1, 0, 0, 0, 2116, 2117, 7, 3, 0, 0, 2117, 2118, 7, 4, 0, 0, 2118, 2119, 7, 8, 0, 0, 2119, 2120, 7, 8, 0, 0, 2120, 2121, 7, 6, 0, 0, 2121, 2122, 7, 12, 0, 0, 2122, 2123, 7, 7, 0, 0, 2123, 414, 1, 0, 0, 0, 2124, 2125, 7, 3, 0, 0, 2125, 2126, 7, 6, 0, 0, 2126, 2127, 7, 12, 0, 0, 2127, 416, 1, 0, 0, 0, 2128, 2129, 7, 3, 0, 0, 2129, 2130, 7, 6, 0, 0, 2130, 2131, 7, 12, 0, 0, 2131, 2132, 7, 2, 0, 0, 2132, 2133, 7, 19, 0, 0, 2133, 2134, 7, 9, 0, 0, 2134, 418, 1, 0, 0, 0, 2135, 2136, 7, 3, 0, 0, 2136, 2137, 7, 6, 0, 0, 2137, 2138, 7, 12, 0, 0, 2138, 2139, 7, 10, 0, 0, 2139, 2140, 7, 17, 0, 0, 2140, 2141, 7, 8, 0, 0, 2141, 2142, 7, 6, 0, 0, 2142, 420, 1, 0, 0, 0, 2143, 2144, 7, 3, 0, 0, 2144, 2145, 7, 13, 0, 0, 2145, 2146, 7, 4, 0, 0, 2146, 2147, 7, 7, 0, 0, 2147, 422, 1, 0, 0, 0, 2148, 2149, 7, 3, 0, 0, 2149, 2150, 7, 19, 0, 0, 2150, 2151, 7, 0, 0, 0, 2151, 2152, 7, 2, 0, 0, 2152, 2153, 7, 8, 0, 0, 2153, 2154, 7, 2, 0, 0, 2154, 2155, 7, 19, 0, 0, 2155, 2156, 7, 7, 0, 0, 2156, 424, 1, 0, 0, 0, 2157, 2158, 7, 3, 0, 0, 2158, 2159, 7, 12, 0, 0, 2159, 2160, 7, 6, 0, 0, 2160, 2161, 7, 16, 0, 0, 2161, 2162, 7, 6, 0, 0, 2162, 2163, 7, 9, 0, 0, 2163, 2164, 7, 2, 0, 0, 2164, 2165, 7, 7, 0, 0, 2165, 2166, 7, 20, 0, 0, 2166, 426, 1, 0, 0, 0, 2167, 2168, 7, 3, 0, 0, 2168, 2169, 7, 12, 0, 0, 2169, 2170, 7, 6, 0, 0, 2170, 2171, 7, 16, 0, 0, 2171, 2172, 7, 2, 0, 0, 2172, 2173, 7, 0, 0, 0, 2173, 2174, 7, 2, 0, 0, 2174, 2175, 7, 19, 0, 0, 2175, 2176, 7, 7, 0, 0, 2176, 428, 1, 0, 0, 0, 2177, 2178, 7, 3, 0, 0, 2178, 2179, 7, 12, 0, 0, 2179, 2180, 7, 6, 0, 0, 2180, 2181, 7, 3, 0, 0, 2181, 2182, 7, 4, 0, 0, 2182, 2183, 7, 12, 0, 0, 2183, 2184, 7, 6, 0, 0, 2184, 430, 1, 0, 0, 0, 2185, 2186, 7, 3, 0, 0, 2186, 2187, 7, 12, 0, 0, 2187, 2188, 7, 2, 0, 0, 2188, 2189, 7, 23, 0, 0, 2189, 2190, 7, 2, 0, 0, 2190, 2191, 7, 13, 0, 0, 2191, 2192, 7, 6, 0, 0, 2192, 2193, 7, 20, 0, 0, 2193, 2194, 7, 6, 0, 0, 2194, 2195, 7, 0, 0, 0, 2195, 432, 1, 0, 0, 0, 2196, 2197, 7, 3, 0, 0, 2197, 2198, 7, 12, 0, 0, 2198, 2199, 7, 19, 0, 0, 2199, 2200, 7, 3, 0, 0, 2200, 2201, 7, 6, 0, 0, 2201, 2202, 7, 12, 0, 0, 2202, 2203, 7, 8, 0, 0, 2203, 2204, 7, 2, 0, 0, 2204, 2205, 7, 6, 0, 0, 2205, 2206, 7, 0, 0, 0, 2206, 434, 1, 0, 0, 0, 2207, 2208, 7, 3, 0, 0, 2208, 2209, 7, 12, 0, 0, 2209, 2210, 7, 17, 0, 0, 2210, 2211, 7, 7, 0, 0, 2211, 2212, 7, 6, 0, 0, 2212, 436, 1, 0, 0, 0, 2213, 2214, 7, 25, 0, 0, 2214, 2215, 7, 17, 0, 0, 2215, 2216, 7, 19, 0, 0, 2216, 2217, 7, 8, 0, 0, 2217, 2218, 7, 6, 0, 0, 2218, 2219, 7, 0, 0, 0, 2219, 438, 1, 0, 0, 0, 2220, 2221, 7, 12, 0, 0, 2221, 2222, 7, 4, 0, 0, 2222, 2223, 7, 7, 0, 0, 2223, 2224, 7, 20, 0, 0, 2224, 2225, 7, 6, 0, 0, 2225, 440, 1, 0, 0, 0, 2226, 2227, 7, 12, 0, 0, 2227, 2228, 7, 6, 0, 0, 2228, 2229, 7, 4, 0, 0, 2229, 2230, 7, 9, 0, 0, 2230, 442, 1, 0, 0, 0, 2231, 2232, 7, 12, 0, 0, 2232, 2233, 7, 6, 0, 0, 2233, 2234, 7, 16, 0, 0, 2234, 2235, 7, 17, 0, 0, 2235, 2236, 7, 12, 0, 0, 2236, 2237, 7, 0, 0, 0, 2237, 2238, 7, 2, 0, 0, 2238, 2239, 7, 23, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 444, 1, 0, 0, 0, 2241, 2242, 7, 12, 0, 0, 2242, 2243, 7, 6, 0, 0, 2243, 2244, 7, 11, 0, 0, 2244, 2245, 7, 12, 0, 0, 2245, 2246, 7, 6, 0, 0, 2246, 2247, 7, 0, 0, 0, 2247, 2248, 7, 18, 0, 0, 2248, 446, 1, 0, 0, 0, 2249, 2250, 7, 12, 0, 0, 2250, 2251, 7, 6, 0, 0, 2251, 2252, 7, 7, 0, 0, 2252, 2253, 7, 4, 0, 0, 2253, 2254, 7, 10, 0, 0, 2254, 2255, 7, 6, 0, 0, 2255, 448, 1, 0, 0, 0, 2256, 2257, 7, 12, 0, 0, 2257, 2258, 7, 6, 0, 0, 2258, 2259, 7, 3, 0, 0, 2259, 2260, 7, 6, 0, 0, 2260, 2261, 7, 4, 0, 0, 2261, 2262, 7, 8, 0, 0, 2262, 450, 1, 0, 0, 0, 2263, 2264, 7, 12, 0, 0, 2264, 2265, 7, 6, 0, 0, 2265, 2266, 7, 3, 0, 0, 2266, 2267, 7, 6, 0, 0, 2267, 2268, 7, 4, 0, 0, 2268, 2269, 7, 8, 0, 0, 2269, 2270, 7, 4, 0, 0, 2270, 2271, 7, 5, 0, 0, 2271, 2272, 7, 13, 0, 0, 2272, 2273, 7, 6, 0, 0, 2273, 452, 1, 0, 0, 0, 2274, 2275, 7, 12, 0, 0, 2275, 2276, 7, 6, 0, 0, 2276, 2277, 7, 3, 0, 0, 2277, 2278, 7, 13, 0, 0, 2278, 2279, 7, 4, 0, 0, 2279, 2280, 7, 16, 0, 0, 2280, 2281, 7, 6, 0, 0, 2281, 454, 1, 0, 0, 0, 2282, 2283, 7, 12, 0, 0, 2283, 2284, 7, 6, 0, 0, 2284, 2285, 7, 0, 0, 0, 2285, 2286, 7, 6, 0, 0, 2286, 2287, 7, 8, 0, 0, 2287, 456, 1, 0, 0, 0, 2288, 2289, 7, 12, 0, 0, 2289, 2290, 7, 6, 0, 0, 2290, 2291, 7, 0, 0, 0, 2291, 2292, 7, 3, 0, 0, 2292, 2293, 7, 6, 0, 0, 2293, 2294, 7, 16, 0, 0, 2294, 2295, 7, 8, 0, 0, 2295, 458, 1, 0, 0, 0, 2296, 2297, 7, 12, 0, 0, 2297, 2298, 7, 6, 0, 0, 2298, 2299, 7, 0, 0, 0, 2299, 2300, 7, 8, 0, 0, 2300, 2301, 7, 12, 0, 0, 2301, 2302, 7, 2, 0, 0, 2302, 2303, 7, 16, 0, 0, 2303, 2304, 7, 8, 0, 0, 2304, 460, 1, 0, 0, 0, 2305, 2306, 7, 12, 0, 0, 2306, 2307, 7, 6, 0, 0, 2307, 2308, 7, 8, 0, 0, 2308, 2309, 7, 17, 0, 0, 2309, 2310, 7, 12, 0, 0, 2310, 2311, 7, 7, 0, 0, 2311, 462, 1, 0, 0, 0, 2312, 2313, 7, 12, 0, 0, 2313, 2314, 7, 6, 0, 0, 2314, 2315, 7, 8, 0, 0, 2315, 2316, 7, 17, 0, 0, 2316, 2317, 7, 12, 0, 0, 2317, 2318, 7, 7, 0, 0, 2318, 2319, 7, 2, 0, 0, 2319, 2320, 7, 7, 0, 0, 2320, 2321, 7, 20, 0, 0, 2321, 464, 1, 0, 0, 0, 2322, 2323, 7, 12, 0, 0, 2323, 2324, 7, 6, 0, 0, 2324, 2325, 7, 8, 0, 0, 2325, 2326, 7, 17, 0, 0, 2326, 2327, 7, 12, 0, 0, 2327, 2328, 7, 7, 0, 0, 2328, 2329, 7, 0, 0, 0, 2329, 466, 1, 0, 0, 0, 2330, 2331, 7, 12, 0, 0, 2331, 2332, 7, 6, 0, 0, 2332, 2333, 7, 23, 0, 0, 2333, 2334, 7, 19, 0, 0, 2334, 2335, 7, 1, 0, 0, 2335, 2336, 7, 6, 0, 0, 2336, 468, 1, 0, 0, 0, 2337, 2338, 7, 12, 0, 0, 2338, 2339, 7, 2, 0, 0, 2339, 2340, 7, 20, 0, 0, 2340, 2341, 7, 18, 0, 0, 2341, 2342, 7, 8, 0, 0, 2342, 470, 1, 0, 0, 0, 2343, 2344, 7, 12, 0, 0, 2344, 2345, 7, 19, 0, 0, 2345, 2346, 7, 13, 0, 0, 2346, 2347, 7, 6, 0, 0, 2347, 472, 1, 0, 0, 0, 2348, 2349, 7, 12, 0, 0, 2349, 2350, 7, 19, 0, 0, 2350, 2351, 7, 13, 0, 0, 2351, 2352, 7, 6, 0, 0, 2352, 2353, 7, 0, 0, 0, 2353, 474, 1, 0, 0, 0, 2354, 2355, 7, 12, 0, 0, 2355, 2356, 7, 19, 0, 0, 2356, 2357, 7, 13, 0, 0, 2357, 2358, 7, 13, 0, 0, 2358, 2359, 7, 5, 0, 0, 2359, 2360, 7, 4, 0, 0, 2360, 2361, 7, 16, 0, 0, 2361, 2362, 7, 1, 0, 0, 2362, 476, 1, 0, 0, 0, 2363, 2364, 7, 12, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 2366, 7, 13, 0, 0, 2366, 2367, 7, 13, 0, 0, 2367, 2368, 7, 17, 0, 0, 2368, 2369, 7, 3, 0, 0, 2369, 478, 1, 0, 0, 0, 2370, 2371, 7, 12, 0, 0, 2371, 2372, 7, 19, 0, 0, 2372, 2373, 7, 21, 0, 0, 2373, 480, 1, 0, 0, 0, 2374, 2375, 7, 12, 0, 0, 2375, 2376, 7, 19, 0, 0, 2376, 2377, 7, 21, 0, 0, 2377, 2378, 7, 0, 0, 0, 2378, 482, 1, 0, 0, 0, 2379, 2380, 7, 12, 0, 0, 2380, 2381, 7, 17, 0, 0, 2381, 2382, 7, 7, 0, 0, 2382, 2383, 7, 7, 0, 0, 2383, 2384, 7, 2, 0, 0, 2384, 2385, 7, 7, 0, 0, 2385, 2386, 7, 20, 0, 0, 2386, 484, 1, 0, 0, 0, 2387, 2388, 7, 0, 0, 0, 2388, 2389, 7, 16, 0, 0, 2389, 2390, 7, 4, 0, 0, 2390, 2391, 7, 13, 0, 0, 2391, 2392, 7, 4, 0, 0, 2392, 2393, 7, 12, 0, 0, 2393, 486, 1, 0, 0, 0, 2394, 2395, 7, 0, 0, 0, 2395, 2396, 7, 16, 0, 0, 2396, 2397, 7, 18, 0, 0, 2397, 2398, 7, 6, 0, 0, 2398, 2399, 7, 10, 0, 0, 2399, 2400, 7, 4, 0, 0, 2400, 488, 1, 0, 0, 0, 2401, 2402, 7, 0, 0, 0, 2402, 2403, 7, 16, 0, 0, 2403, 2404, 7, 18, 0, 0, 2404, 2405, 7, 6, 0, 0, 2405, 2406, 7, 10, 0, 0, 2406, 2407, 7, 4, 0, 0, 2407, 2408, 7, 0, 0, 0, 2408, 490, 1, 0, 0, 0, 2409, 2410, 7, 0, 0, 0, 2410, 2411, 7, 6, 0, 0, 2411, 2412, 7, 16, 0, 0, 2412, 2413, 7, 19, 0, 0, 2413, 2414, 7, 7, 0, 0, 2414, 2415, 7, 9, 0, 0, 2415, 492, 1, 0, 0, 0, 2416, 2417, 7, 0, 0, 0, 2417, 2418, 7, 6, 0, 0, 2418, 2419, 7, 16, 0, 0, 2419, 2420, 7, 17, 0, 0, 2420, 2421, 7, 12, 0, 0, 2421, 2422, 7, 2, 0, 0, 2422, 2423, 7, 8, 0, 0, 2423, 2424, 7, 14, 0, 0, 2424, 494, 1, 0, 0, 0, 2425, 2426, 7, 0, 0, 0, 2426, 2427, 7, 6, 0, 0, 2427, 2428, 7, 6, 0, 0, 2428, 2429, 7, 1, 0, 0, 2429, 496, 1, 0, 0, 0, 2430, 2431, 7, 0, 0, 0, 2431, 2432, 7, 6, 0, 0, 2432, 2433, 7, 13, 0, 0, 2433, 2434, 7, 6, 0, 0, 2434, 2435, 7, 16, 0, 0, 2435, 2436, 7, 8, 0, 0, 2436, 498, 1, 0, 0, 0, 2437, 2438, 7, 0, 0, 0, 2438, 2439, 7, 6, 0, 0, 2439, 2440, 7, 12, 0, 0, 2440, 2441, 7, 2, 0, 0, 2441, 2442, 7, 4, 0, 0, 2442, 2443, 7, 13, 0, 0, 2443, 2444, 7, 2, 0, 0, 2444, 2445, 7, 15, 0, 0, 2445, 2446, 7, 4, 0, 0, 2446, 2447, 7, 5, 0, 0, 2447, 2448, 7, 13, 0, 0, 2448, 2449, 7, 6, 0, 0, 2449, 500, 1, 0, 0, 0, 2450, 2451, 7, 0, 0, 0, 2451, 2452, 7, 6, 0, 0, 2452, 2453, 7, 0, 0, 0, 2453, 2454, 7, 0, 0, 0, 2454, 2455, 7, 2, 0, 0, 2455, 2456, 7, 19, 0, 0, 2456, 2457, 7, 7, 0, 0, 2457, 502, 1, 0, 0, 0, 2458, 2459, 7, 0, 0, 0, 2459, 2460, 7, 6, 0, 0, 2460, 2461, 7, 8, 0, 0, 2461, 504, 1, 0, 0, 0, 2462, 2463, 7, 0, 0, 0, 2463, 2464, 7, 6, 0, 0, 2464, 2465, 7, 8, 0, 0, 2465, 2466, 7, 0, 0, 0, 2466, 506, 1, 0, 0, 0, 2467, 2468, 7, 0, 0, 0, 2468, 2469, 7, 18, 0, 0, 2469, 2470, 7, 19, 0, 0, 2470, 2471, 7, 21, 0, 0, 2471, 508, 1, 0, 0, 0, 2472, 2473, 7, 0, 0, 0, 2473, 2474, 7, 19, 0, 0, 2474, 2475, 7, 10, 0, 0, 2475, 2476, 7, 6, 0, 0, 2476, 510, 1, 0, 0, 0, 2477, 2478, 7, 0, 0, 0, 2478, 2479, 7, 8, 0, 0, 2479, 2480, 7, 4, 0, 0, 2480, 2481, 7, 12, 0, 0, 2481, 2482, 7, 8, 0, 0, 2482, 512, 1, 0, 0, 0, 2483, 2484, 7, 0, 0, 0, 2484, 2485, 7, 8, 0, 0, 2485, 2486, 7, 4, 0, 0, 2486, 2487, 7, 8, 0, 0, 2487, 2488, 7, 0, 0, 0, 2488, 514, 1, 0, 0, 0, 2489, 2490, 7, 0, 0, 0, 2490, 2491, 7, 17, 0, 0, 2491, 2492, 7, 5, 0, 0, 2492, 2493, 7, 0, 0, 0, 2493, 2494, 7, 6, 0, 0, 2494, 2495, 7, 8, 0, 0, 2495, 516, 1, 0, 0, 0, 2496, 2497, 7, 0, 0, 0, 2497, 2498, 7, 17, 0, 0, 2498, 2499, 7, 5, 0, 0, 2499, 2500, 7, 0, 0, 0, 2500, 2501, 7, 8, 0, 0, 2501, 2502, 7, 12, 0, 0, 2502, 2503, 7, 2, 0, 0, 2503, 2504, 7, 7, 0, 0, 2504, 2505, 7, 20, 0, 0, 2505, 518, 1, 0, 0, 0, 2506, 2507, 7, 0, 0, 0, 2507, 2508, 7, 14, 0, 0, 2508, 2509, 7, 0, 0, 0, 2509, 2510, 7, 8, 0, 0, 2510, 2511, 7, 6, 0, 0, 2511, 2512, 7, 10, 0, 0, 2512, 520, 1, 0, 0, 0, 2513, 2514, 7, 8, 0, 0, 2514, 2515, 7, 4, 0, 0, 2515, 2516, 7, 5, 0, 0, 2516, 2517, 7, 13, 0, 0, 2517, 2518, 7, 6, 0, 0, 2518, 522, 1, 0, 0, 0, 2519, 2520, 7, 8, 0, 0, 2520, 2521, 7, 4, 0, 0, 2521, 2522, 7, 5, 0, 0, 2522, 2523, 7, 13, 0, 0, 2523, 2524, 7, 6, 0, 0, 2524, 2525, 7, 0, 0, 0, 2525, 524, 1, 0, 0, 0, 2526, 2527, 7, 8, 0, 0, 2527, 2528, 7, 4, 0, 0, 2528, 2529, 7, 5, 0, 0, 2529, 2530, 7, 13, 0, 0, 2530, 2531, 7, 6, 0, 0, 2531, 2532, 7, 0, 0, 0, 2532, 2533, 7, 4, 0, 0, 2533, 2534, 7, 10, 0, 0, 2534, 2535, 7, 3, 0, 0, 2535, 2536, 7, 13, 0, 0, 2536, 2537, 7, 6, 0, 0, 2537, 526, 1, 0, 0, 0, 2538, 2539, 7, 8, 0, 0, 2539, 2540, 7, 6, 0, 0, 2540, 2541, 7, 22, 0, 0, 2541, 2542, 7, 8, 0, 0, 2542, 528, 1, 0, 0, 0, 2543, 2544, 7, 0, 0, 0, 2544, 2545, 7, 8, 0, 0, 2545, 2546, 7, 12, 0, 0, 2546, 2547, 7, 2, 0, 0, 2547, 2548, 7, 7, 0, 0, 2548, 2549, 7, 20, 0, 0, 2549, 530, 1, 0, 0, 0, 2550, 2551, 7, 8, 0, 0, 2551, 2552, 7, 18, 0, 0, 2552, 2553, 7, 6, 0, 0, 2553, 2554, 7, 7, 0, 0, 2554, 532, 1, 0, 0, 0, 2555, 2556, 7, 8, 0, 0, 2556, 2557, 7, 2, 0, 0, 2557, 2558, 7, 6, 0, 0, 2558, 2559, 7, 0, 0, 0, 2559, 534, 1, 0, 0, 0, 2560, 2561, 7, 8, 0, 0, 2561, 2562, 7, 2, 0, 0, 2562, 2563, 7, 10, 0, 0, 2563, 2564, 7, 6, 0, 0, 2564, 536, 1, 0, 0, 0, 2565, 2566, 7, 8, 0, 0, 2566, 2567, 7, 2, 0, 0, 2567, 2568, 7, 10, 0, 0, 2568, 2569, 7, 6, 0, 0, 2569, 2570, 7, 0, 0, 0, 2570, 2571, 7, 8, 0, 0, 2571, 2572, 7, 4, 0, 0, 2572, 2573, 7, 10, 0, 0, 2573, 2574, 7, 3, 0, 0, 2574, 538, 1, 0, 0, 0, 2575, 2576, 7, 8, 0, 0, 2576, 2577, 7, 19, 0, 0, 2577, 540, 1, 0, 0, 0, 2578, 2579, 7, 8, 0, 0, 2579, 2580, 7, 12, 0, 0, 2580, 2581, 7, 4, 0, 0, 2581, 2582, 7, 2, 0, 0, 2582, 2583, 7, 13, 0, 0, 2583, 2584, 7, 2, 0, 0, 2584, 2585, 7, 7, 0, 0, 2585, 2586, 7, 20, 0, 0, 2586, 542, 1, 0, 0, 0, 2587, 2588, 7, 8, 0, 0, 2588, 2589, 7, 12, 0, 0, 2589, 2590, 7, 4, 0, 0, 2590, 2591, 7, 7, 0, 0, 2591, 2592, 7, 0, 0, 0, 2592, 2593, 7, 4, 0, 0, 2593, 2594, 7, 16, 0, 0, 2594, 2595, 7, 8, 0, 0, 2595, 2596, 7, 2, 0, 0, 2596, 2597, 7, 19, 0, 0, 2597, 2598, 7, 7, 0, 0, 2598, 544, 1, 0, 0, 0, 2599, 2600, 7, 8, 0, 0, 2600, 2601, 7, 12, 0, 0, 2601, 2602, 7, 2, 0, 0, 2602, 2603, 7, 10, 0, 0, 2603, 546, 1, 0, 0, 0, 2604, 2605, 7, 8, 0, 0, 2605, 2606, 7, 12, 0, 0, 2606, 2607, 7, 17, 0, 0, 2607, 2608, 7, 6, 0, 0, 2608, 548, 1, 0, 0, 0, 2609, 2610, 7, 8, 0, 0, 2610, 2611, 7, 12, 0, 0, 2611, 2612, 7, 17, 0, 0, 2612, 2613, 7, 7, 0, 0, 2613, 2614, 7, 16, 0, 0, 2614, 2615, 7, 4, 0, 0, 2615, 2616, 7, 8, 0, 0, 2616, 2617, 7, 6, 0, 0, 2617, 550, 1, 0, 0, 0, 2618, 2619, 7, 8, 0, 0, 2619, 2620, 7, 12, 0, 0, 2620, 2621, 7, 14, 0, 0, 2621, 2622, 5, 95, 0, 0, 2622, 2623, 7, 16, 0, 0, 2623, 2624, 7, 4, 0, 0, 2624, 2625, 7, 0, 0, 0, 2625, 2626, 7, 8, 0, 0, 2626, 552, 1, 0, 0, 0, 2627, 2628, 7, 8, 0, 0, 2628, 2629, 7, 14, 0, 0, 2629, 2630, 7, 3, 0, 0, 2630, 2631, 7, 6, 0, 0, 2631, 554, 1, 0, 0, 0, 2632, 2633, 7, 17, 0, 0, 2633, 2634, 7, 6, 0, 0, 2634, 2635, 7, 0, 0, 0, 2635, 2636, 7, 16, 0, 0, 2636, 2637, 7, 4, 0, 0, 2637, 2638, 7, 3, 0, 0, 2638, 2639, 7, 6, 0, 0, 2639, 556, 1, 0, 0, 0, 2640, 2641, 7, 17, 0, 0, 2641, 2642, 7, 7, 0, 0, 2642, 2643, 7, 5, 0, 0, 2643, 2644, 7, 19, 0, 0, 2644, 2645, 7, 17, 0, 0, 2645, 2646, 7, 7, 0, 0, 2646, 2647, 7, 9, 0, 0, 2647, 2648, 7, 6, 0, 0, 2648, 2649, 7, 9, 0, 0, 2649, 558, 1, 0, 0, 0, 2650, 2651, 7, 17, 0, 0, 2651, 2652, 7, 7, 0, 0, 2652, 2653, 7, 16, 0, 0, 2653, 2654, 7, 19, 0, 0, 2654, 2655, 7, 10, 0, 0, 2655, 2656, 7, 10, 0, 0, 2656, 2657, 7, 2, 0, 0, 2657, 2658, 7, 8, 0, 0, 2658, 2659, 7, 8, 0, 0, 2659, 2660, 7, 6, 0, 0, 2660, 2661, 7, 9, 0, 0, 2661, 560, 1, 0, 0, 0, 2662, 2663, 7, 17, 0, 0, 2663, 2664, 7, 7, 0, 0, 2664, 2665, 7, 16, 0, 0, 2665, 2666, 7, 19, 0, 0, 2666, 2667, 7, 7, 0, 0, 2667, 2668, 7, 9, 0, 0, 2668, 2669, 7, 2, 0, 0, 2669, 2670, 7, 8, 0, 0, 2670, 2671, 7, 2, 0, 0, 2671, 2672, 7, 19, 0, 0, 2672, 2673, 7, 7, 0, 0, 2673, 2674, 7, 4, 0, 0, 2674, 2675, 7, 13, 0, 0, 2675, 562, 1, 0, 0, 0, 2676, 2677, 7, 17, 0, 0, 2677, 2678, 7, 7, 0, 0, 2678, 2679, 7, 2, 0, 0, 2679, 2680, 7, 19, 0, 0, 2680, 2681, 7, 7, 0, 0, 2681, 564, 1, 0, 0, 0, 2682, 2683, 7, 17, 0, 0, 2683, 2684, 7, 7, 0, 0, 2684, 2685, 7, 2, 0, 0, 2685, 2686, 7, 25, 0, 0, 2686, 2687, 7, 17, 0, 0, 2687, 2688, 7, 6, 0, 0, 2688, 566, 1, 0, 0, 0, 2689, 2690, 7, 17, 0, 0, 2690, 2691, 7, 7, 0, 0, 2691, 2692, 7, 1, 0, 0, 2692, 2693, 7, 7, 0, 0, 2693, 2694, 7, 19, 0, 0, 2694, 2695, 7, 21, 0, 0, 2695, 2696, 7, 7, 0, 0, 2696, 568, 1, 0, 0, 0, 2697, 2698, 7, 17, 0, 0, 2698, 2699, 7, 7, 0, 0, 2699, 2700, 7, 10, 0, 0, 2700, 2701, 7, 4, 0, 0, 2701, 2702, 7, 8, 0, 0, 2702, 2703, 7, 16, 0, 0, 2703, 2704, 7, 18, 0, 0, 2704, 2705, 7, 6, 0, 0, 2705, 2706, 7, 9, 0, 0, 2706, 570, 1, 0, 0, 0, 2707, 2708, 7, 17, 0, 0, 2708, 2709, 7, 7, 0, 0, 2709, 2710, 7, 7, 0, 0, 2710, 2711, 7, 6, 0, 0, 2711, 2712, 7, 0, 0, 0, 2712, 2713, 7, 8, 0, 0, 2713, 572, 1, 0, 0, 0, 2714, 2715, 7, 17, 0, 0, 2715, 2716, 7, 7, 0, 0, 2716, 2717, 7, 8, 0, 0, 2717, 2718, 7, 2, 0, 0, 2718, 2719, 7, 13, 0, 0, 2719, 574, 1, 0, 0, 0, 2720, 2721, 7, 17, 0, 0, 2721, 2722, 7, 3, 0, 0, 2722, 2723, 7, 9, 0, 0, 2723, 2724, 7, 4, 0, 0, 2724, 2725, 7, 8, 0, 0, 2725, 2726, 7, 6, 0, 0, 2726, 576, 1, 0, 0, 0, 2727, 2728, 7, 17, 0, 0, 2728, 2729, 7, 0, 0, 0, 2729, 2730, 7, 6, 0, 0, 2730, 578, 1, 0, 0, 0, 2731, 2732, 7, 17, 0, 0, 2732, 2733, 7, 0, 0, 0, 2733, 2734, 7, 6, 0, 0, 2734, 2735, 7, 12, 0, 0, 2735, 580, 1, 0, 0, 0, 2736, 2737, 7, 17, 0, 0, 2737, 2738, 7, 0, 0, 0, 2738, 2739, 7, 2, 0, 0, 2739, 2740, 7, 7, 0, 0, 2740, 2741, 7, 20, 0, 0, 2741, 582, 1, 0, 0, 0, 2742, 2743, 7, 17, 0, 0, 2743, 2744, 7, 8, 0, 0, 2744, 2745, 7, 11, 0, 0, 2745, 2746, 5, 49, 0, 0, 2746, 2747, 5, 54, 0, 0, 2747, 584, 1, 0, 0, 0, 2748, 2749, 7, 17, 0, 0, 2749, 2750, 7, 8, 0, 0, 2750, 2751, 7, 11, 0, 0, 2751, 2752, 5, 51, 0, 0, 2752, 2753, 5, 50, 0, 0, 2753, 586, 1, 0, 0, 0, 2754, 2755, 7, 17, 0, 0, 2755, 2756, 7, 8, 0, 0, 2756, 2757, 7, 11, 0, 0, 2757, 2758, 5, 56, 0, 0, 2758, 588, 1, 0, 0, 0, 2759, 2760, 7, 23, 0, 0, 2760, 2761, 7, 4, 0, 0, 2761, 2762, 7, 13, 0, 0, 2762, 2763, 7, 2, 0, 0, 2763, 2764, 7, 9, 0, 0, 2764, 2765, 7, 4, 0, 0, 2765, 2766, 7, 8, 0, 0, 2766, 2767, 7, 6, 0, 0, 2767, 590, 1, 0, 0, 0, 2768, 2769, 7, 23, 0, 0, 2769, 2770, 7, 4, 0, 0, 2770, 2771, 7, 13, 0, 0, 2771, 2772, 7, 17, 0, 0, 2772, 2773, 7, 6, 0, 0, 2773, 592, 1, 0, 0, 0, 2774, 2775, 7, 23, 0, 0, 2775, 2776, 7, 4, 0, 0, 2776, 2777, 7, 13, 0, 0, 2777, 2778, 7, 17, 0, 0, 2778, 2779, 7, 6, 0, 0, 2779, 2780, 7, 0, 0, 0, 2780, 594, 1, 0, 0, 0, 2781, 2782, 7, 23, 0, 0, 2782, 2783, 7, 6, 0, 0, 2783, 2784, 7, 12, 0, 0, 2784, 2785, 7, 5, 0, 0, 2785, 2786, 7, 19, 0, 0, 2786, 2787, 7, 0, 0, 0, 2787, 2788, 7, 6, 0, 0, 2788, 596, 1, 0, 0, 0, 2789, 2790, 7, 23, 0, 0, 2790, 2791, 7, 6, 0, 0, 2791, 2792, 7, 12, 0, 0, 2792, 2793, 7, 0, 0, 0, 2793, 2794, 7, 2, 0, 0, 2794, 2795, 7, 19, 0, 0, 2795, 2796, 7, 7, 0, 0, 2796, 598, 1, 0, 0, 0, 2797, 2798, 7, 23, 0, 0, 2798, 2799, 7, 2, 0, 0, 2799, 2800, 7, 6, 0, 0, 2800, 2801, 7, 21, 0, 0, 2801, 600, 1, 0, 0, 0, 2802, 2803, 7, 21, 0, 0, 2803, 2804, 7, 18, 0, 0, 2804, 2805, 7, 6, 0, 0, 2805, 2806, 7, 7, 0, 0, 2806, 602, 1, 0, 0, 0, 2807, 2808, 7, 21, 0, 0, 2808, 2809, 7, 18, 0, 0, 2809, 2810, 7, 6, 0, 0, 2810, 2811, 7, 12, 0, 0, 2811, 2812, 7, 6, 0, 0, 2812, 604, 1, 0, 0, 0, 2813, 2814, 7, 21, 0, 0, 2814, 2815, 7, 18, 0, 0, 2815, 2816, 7, 2, 0, 0, 2816, 2817, 7, 13, 0, 0, 2817, 2818, 7, 6, 0, 0, 2818, 606, 1, 0, 0, 0, 2819, 2820, 7, 21, 0, 0, 2820, 2821, 7, 2, 0, 0, 2821, 2822, 7, 7, 0, 0, 2822, 2823, 7, 9, 0, 0, 2823, 2824, 7, 19, 0, 0, 2824, 2825, 7, 21, 0, 0, 2825, 608, 1, 0, 0, 0, 2826, 2827, 7, 21, 0, 0, 2827, 2828, 7, 2, 0, 0, 2828, 2829, 7, 8, 0, 0, 2829, 2830, 7, 18, 0, 0, 2830, 610, 1, 0, 0, 0, 2831, 2832, 7, 21, 0, 0, 2832, 2833, 7, 2, 0, 0, 2833, 2834, 7, 8, 0, 0, 2834, 2835, 7, 18, 0, 0, 2835, 2836, 7, 2, 0, 0, 2836, 2837, 7, 7, 0, 0, 2837, 612, 1, 0, 0, 0, 2838, 2839, 7, 21, 0, 0, 2839, 2840, 7, 2, 0, 0, 2840, 2841, 7, 8, 0, 0, 2841, 2842, 7, 18, 0, 0, 2842, 2843, 7, 19, 0, 0, 2843, 2844, 7, 17, 0, 0, 2844, 2845, 7, 8, 0, 0, 2845, 614, 1, 0, 0, 0, 2846, 2847, 7, 21, 0, 0, 2847, 2848, 7, 19, 0, 0, 2848, 2849, 7, 12, 0, 0, 2849, 2850, 7, 1, 0, 0, 2850, 616, 1, 0, 0, 0, 2851, 2852, 7, 21, 0, 0, 2852, 2853, 7, 12, 0, 0, 2853, 2854, 7, 4, 0, 0, 2854, 2855, 7, 3, 0, 0, 2855, 2856, 7, 3, 0, 0, 2856, 2857, 7, 6, 0, 0, 2857, 2858, 7, 12, 0, 0, 2858, 618, 1, 0, 0, 0, 2859, 2860, 7, 21, 0, 0, 2860, 2861, 7, 12, 0, 0, 2861, 2862, 7, 2, 0, 0, 2862, 2863, 7, 8, 0, 0, 2863, 2864, 7, 6, 0, 0, 2864, 620, 1, 0, 0, 0, 2865, 2866, 7, 14, 0, 0, 2866, 2867, 7, 6, 0, 0, 2867, 2868, 7, 4, 0, 0, 2868, 2869, 7, 12, 0, 0, 2869, 622, 1, 0, 0, 0, 2870, 2871, 7, 15, 0, 0, 2871, 2872, 7, 19, 0, 0, 2872, 2873, 7, 7, 0, 0, 2873, 2874, 7, 6, 0, 0, 2874, 624, 1, 0, 0, 0, 2875, 2876, 5, 61, 0, 0, 2876, 626, 1, 0, 0, 0, 2877, 2878, 5, 60, 0, 0, 2878, 2882, 5, 62, 0, 0, 2879, 2880, 5, 33, 0, 0, 2880, 2882, 5, 61, 0, 0, 2881, 2877, 1, 0, 0, 0, 2881, 2879, 1, 0, 0, 0, 2882, 628, 1, 0, 0, 0, 2883, 2884, 5, 60, 0, 0, 2884, 630, 1, 0, 0, 0, 2885, 2886, 5, 60, 0, 0, 2886, 2887, 5, 61, 0, 0, 2887, 632, 1, 0, 0, 0, 2888, 2889, 5, 62, 0, 0, 2889, 634, 1, 0, 0, 0, 2890, 2891, 5, 62, 0, 0, 2891, 2892, 5, 61, 0, 0, 2892, 636, 1, 0, 0, 0, 2893, 2894, 5, 43, 0, 0, 2894, 638, 1, 0, 0, 0, 2895, 2896, 5, 45, 0, 0, 2896, 640, 1, 0, 0, 0, 2897, 2898, 5, 42, 0, 0, 2898, 642, 1, 0, 0, 0, 2899, 2900, 5, 47, 0, 0, 2900, 644, 1, 0, 0, 0, 2901, 2902, 5, 37, 0, 0, 2902, 646, 1, 0, 0, 0, 2903, 2904, 5, 124, 0, 0, 2904, 2905, 5, 124, 0, 0, 2905, 648, 1, 0, 0, 0, 2906, 2907, 5, 63, 0, 0, 2907, 650, 1, 0, 0, 0, 2908, 2909, 5, 59, 0, 0, 2909, 652, 1, 0, 0, 0, 2910, 2916, 5, 39, 0, 0, 2911, 2915, 8, 26, 0, 0, 2912, 2913, 5, 39, 0, 0, 2913, 2915, 5, 39, 0, 0, 2914, 2911, 1, 0, 0, 0, 2914, 2912, 1, 0, 0, 0, 2915, 2918, 1, 0, 0, 0, 2916, 2914, 1, 0, 0, 0, 2916, 2917, 1, 0, 0, 0, 2917, 2919, 1, 0, 0, 0, 2918, 2916, 1, 0, 0, 0, 2919, 2920, 5, 39, 0, 0, 2920, 654, 1, 0, 0, 0, 2921, 2922, 7, 17, 0, 0, 2922, 2923, 5, 38, 0, 0, 2923, 2924, 5, 39, 0, 0, 2924, 2930, 1, 0, 0, 0, 2925, 2929, 8, 26, 0, 0, 2926, 2927, 5, 39, 0, 0, 2927, 2929, 5, 39, 0, 0, 2928, 2925, 1, 0, 0, 0, 2928, 2926, 1, 0, 0, 0, 2929, 2932, 1, 0, 0, 0, 2930, 2928, 1, 0, 0, 0, 2930, 2931, 1, 0, 0, 0, 2931, 2933, 1, 0, 0, 0, 2932, 2930, 1, 0, 0, 0, 2933, 2934, 5, 39, 0, 0, 2934, 656, 1, 0, 0, 0, 2935, 2936, 7, 22, 0, 0, 2936, 2937, 5, 39, 0, 0, 2937, 2941, 1, 0, 0, 0, 2938, 2940, 8, 26, 0, 0, 2939, 2938, 1, 0, 0, 0, 2940, 2943, 1, 0, 0, 0, 2941, 2939, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2944, 1, 0, 0, 0, 2943, 2941, 1, 0, 0, 0, 2944, 2945, 5, 39, 0, 0, 2945, 658, 1, 0, 0, 0, 2946, 2951, 3, 673, 336, 0, 2947, 2951, 3, 675, 337, 0, 2948, 2951, 3, 677, 338, 0, 2949, 2951, 3, 679, 339, 0, 2950, 2946, 1, 0, 0, 0, 2950, 2947, 1, 0, 0, 0, 2950, 2948, 1, 0, 0, 0, 2950, 2949, 1, 0, 0, 0, 2951, 660, 1, 0, 0, 0, 2952, 2953, 3, 673, 336, 0, 2953, 2955, 5, 46, 0, 0, 2954, 2956, 3, 673, 336, 0, 2955, 2954, 1, 0, 0, 0, 2955, 2956, 1, 0, 0, 0, 2956, 2960, 1, 0, 0, 0, 2957, 2958, 5, 46, 0, 0, 2958, 2960, 3, 673, 336, 0, 2959, 2952, 1, 0, 0, 0, 2959, 2957, 1, 0, 0, 0, 2960, 662, 1, 0, 0, 0, 2961, 2963, 3, 683, 341, 0, 2962, 2961, 1, 0, 0, 0, 2963, 2964, 1, 0, 0, 0, 2964, 2962, 1, 0, 0, 0, 2964, 2965, 1, 0, 0, 0, 2965, 2973, 1, 0, 0, 0, 2966, 2970, 5, 46, 0, 0, 2967, 2969, 3, 683, 341, 0, 2968, 2967, 1, 0, 0, 0, 2969, 2972, 1, 0, 0, 0, 2970, 2968, 1, 0, 0, 0, 2970, 2971, 1, 0, 0, 0, 2971, 2974, 1, 0, 0, 0, 2972, 2970, 1, 0, 0, 0, 2973, 2966, 1, 0, 0, 0, 2973, 2974, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 2976, 3, 681, 340, 0, 2976, 2986, 1, 0, 0, 0, 2977, 2979, 5, 46, 0, 0, 2978, 2980, 3, 683, 341, 0, 2979, 2978, 1, 0, 0, 0, 2980, 2981, 1, 0, 0, 0, 2981, 2979, 1, 0, 0, 0, 2981, 2982, 1, 0, 0, 0, 2982, 2983, 1, 0, 0, 0, 2983, 2984, 3, 681, 340, 0, 2984, 2986, 1, 0, 0, 0, 2985, 2962, 1, 0, 0, 0, 2985, 2977, 1, 0, 0, 0, 2986, 664, 1, 0, 0, 0, 2987, 2990, 3, 685, 342, 0, 2988, 2990, 5, 95, 0, 0, 2989, 2987, 1, 0, 0, 0, 2989, 2988, 1, 0, 0, 0, 2990, 2996, 1, 0, 0, 0, 2991, 2995, 3, 685, 342, 0, 2992, 2995, 3, 683, 341, 0, 2993, 2995, 5, 95, 0, 0, 2994, 2991, 1, 0, 0, 0, 2994, 2992, 1, 0, 0, 0, 2994, 2993, 1, 0, 0, 0, 2995, 2998, 1, 0, 0, 0, 2996, 2994, 1, 0, 0, 0, 2996, 2997, 1, 0, 0, 0, 2997, 666, 1, 0, 0, 0, 2998, 2996, 1, 0, 0, 0, 2999, 3003, 3, 683, 341, 0, 3000, 3004, 3, 685, 342, 0, 3001, 3004, 3, 683, 341, 0, 3002, 3004, 5, 95, 0, 0, 3003, 3000, 1, 0, 0, 0, 3003, 3001, 1, 0, 0, 0, 3003, 3002, 1, 0, 0, 0, 3004, 3005, 1, 0, 0, 0, 3005, 3003, 1, 0, 0, 0, 3005, 3006, 1, 0, 0, 0, 3006, 668, 1, 0, 0, 0, 3007, 3013, 5, 34, 0, 0, 3008, 3012, 8, 27, 0, 0, 3009, 3010, 5, 34, 0, 0, 3010, 3012, 5, 34, 0, 0, 3011, 3008, 1, 0, 0, 0, 3011, 3009, 1, 0, 0, 0, 3012, 3015, 1, 0, 0, 0, 3013, 3011, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3016, 1, 0, 0, 0, 3015, 3013, 1, 0, 0, 0, 3016, 3017, 5, 34, 0, 0, 3017, 670, 1, 0, 0, 0, 3018, 3024, 5, 96, 0, 0, 3019, 3023, 8, 28, 0, 0, 3020, 3021, 5, 96, 0, 0, 3021, 3023, 5, 96, 0, 0, 3022, 3019, 1, 0, 0, 0, 3022, 3020, 1, 0, 0, 0, 3023, 3026, 1, 0, 0, 0, 3024, 3022, 1, 0, 0, 0, 3024, 3025, 1, 0, 0, 0, 3025, 3027, 1, 0, 0, 0, 3026, 3024, 1, 0, 0, 0, 3027, 3028, 5, 96, 0, 0, 3028, 672, 1, 0, 0, 0, 3029, 3036, 3, 683, 341, 0, 3030, 3032, 5, 95, 0, 0, 3031, 3030, 1, 0, 0, 0, 3031, 3032, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3035, 3, 683, 341, 0, 3034, 3031, 1, 0, 0, 0, 3035, 3038, 1, 0, 0, 0, 3036, 3034, 1, 0, 0, 0, 3036, 3037, 1, 0, 0, 0, 3037, 674, 1, 0, 0, 0, 3038, 3036, 1, 0, 0, 0, 3039, 3040, 5, 48, 0, 0, 3040, 3041, 7, 22, 0, 0, 3041, 3049, 1, 0, 0, 0, 3042, 3044, 5, 95, 0, 0, 3043, 3042, 1, 0, 0, 0, 3043, 3044, 1, 0, 0, 0, 3044, 3047, 1, 0, 0, 0, 3045, 3048, 3, 683, 341, 0, 3046, 3048, 7, 29, 0, 0, 3047, 3045, 1, 0, 0, 0, 3047, 3046, 1, 0, 0, 0, 3048, 3050, 1, 0, 0, 0, 3049, 3043, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3049, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 676, 1, 0, 0, 0, 3053, 3054, 5, 48, 0, 0, 3054, 3055, 7, 19, 0, 0, 3055, 3060, 1, 0, 0, 0, 3056, 3058, 5, 95, 0, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3061, 7, 30, 0, 0, 3060, 3057, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3060, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 678, 1, 0, 0, 0, 3064, 3065, 5, 48, 0, 0, 3065, 3066, 7, 5, 0, 0, 3066, 3071, 1, 0, 0, 0, 3067, 3069, 5, 95, 0, 0, 3068, 3067, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3070, 1, 0, 0, 0, 3070, 3072, 7, 31, 0, 0, 3071, 3068, 1, 0, 0, 0, 3072, 3073, 1, 0, 0, 0, 3073, 3071, 1, 0, 0, 0, 3073, 3074, 1, 0, 0, 0, 3074, 680, 1, 0, 0, 0, 3075, 3077, 7, 6, 0, 0, 3076, 3078, 7, 32, 0, 0, 3077, 3076, 1, 0, 0, 0, 3077, 3078, 1, 0, 0, 0, 3078, 3080, 1, 0, 0, 0, 3079, 3081, 3, 683, 341, 0, 3080, 3079, 1, 0, 0, 0, 3081, 3082, 1, 0, 0, 0, 3082, 3080, 1, 0, 0, 0, 3082, 3083, 1, 0, 0, 0, 3083, 682, 1, 0, 0, 0, 3084, 3085, 7, 33, 0, 0, 3085, 684, 1, 0, 0, 0, 3086, 3087, 7, 34, 0, 0, 3087, 686, 1, 0, 0, 0, 3088, 3089, 5, 45, 0, 0, 3089, 3090, 5, 45, 0, 0, 3090, 3094, 1, 0, 0, 0, 3091, 3093, 8, 35, 0, 0, 3092, 3091, 1, 0, 0, 0, 3093, 3096, 1, 0, 0, 0, 3094, 3092, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3098, 1, 0, 0, 0, 3096, 3094, 1, 0, 0, 0, 3097, 3099, 5, 13, 0, 0, 3098, 3097, 1, 0, 0, 0, 3098, 3099, 1, 0, 0, 0, 3099, 3101, 1, 0, 0, 0, 3100, 3102, 5, 10, 0, 0, 3101, 3100, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3103, 1, 0, 0, 0, 3103, 3104, 6, 343, 0, 0, 3104, 688, 1, 0, 0, 0, 3105, 3106, 5, 47, 0, 0, 3106, 3107, 5, 42, 0, 0, 3107, 3111, 1, 0, 0, 0, 3108, 3110, 9, 0, 0, 0, 3109, 3108, 1, 0, 0, 0, 3110, 3113, 1, 0, 0, 0, 3111, 3112, 1, 0, 0, 0, 3111, 3109, 1, 0, 0, 0, 3112, 3114, 1, 0, 0, 0, 3113, 3111, 1, 0, 0, 0, 3114, 3115, 5, 42, 0, 0, 3115, 3116, 5, 47, 0, 0, 3116, 3117, 1, 0, 0, 0, 3117, 3118, 6, 344, 0, 0, 3118, 690, 1, 0, 0, 0, 3119, 3120, 7, 36, 0, 0, 3120, 3121, 1, 0, 0, 0, 3121, 3122, 6, 345, 0, 0, 3122, 692, 1, 0, 0, 0, 3123, 3124, 9, 0, 0, 0, 3124, 694, 1, 0, 0, 0, 39, 0, 2881, 2914, 2916, 2928, 2930, 2941, 2950, 2955, 2959, 2964, 2970, 2973, 2981, 2985, 2989, 2994, 2996, 3003, 3005, 3011, 3013, 3022, 3024, 3031, 3036, 3043, 3047, 3051, 3057, 3062, 3068, 3073, 3077, 3082, 3094, 3098, 3101, 3111, 1, 0, 1, 0] \ No newline at end of file diff --git a/src/lib/trino/TrinoSqlLexer.tokens b/src/lib/trino/TrinoSqlLexer.tokens index d8b65c55..6a46330a 100644 --- a/src/lib/trino/TrinoSqlLexer.tokens +++ b/src/lib/trino/TrinoSqlLexer.tokens @@ -41,302 +41,303 @@ KW_CASE=40 KW_CAST=41 KW_CATALOG=42 KW_CATALOGS=43 -KW_COLUMN=44 -KW_COLUMNS=45 -KW_COMMENT=46 -KW_COMMIT=47 -KW_COMMITTED=48 -KW_CONDITIONAL=49 -KW_CONSTRAINT=50 -KW_COUNT=51 -KW_COPARTITION=52 -KW_CREATE=53 -KW_CROSS=54 -KW_CUBE=55 -KW_CURRENT=56 -KW_CURRENT_CATALOG=57 -KW_CURRENT_DATE=58 -KW_CURRENT_PATH=59 -KW_CURRENT_ROLE=60 -KW_CURRENT_SCHEMA=61 -KW_CURRENT_TIME=62 -KW_CURRENT_TIMESTAMP=63 -KW_CURRENT_USER=64 -KW_DATA=65 -KW_DATE=66 -KW_DAY=67 -KW_DEALLOCATE=68 -KW_DECLARE=69 -KW_DEFAULT=70 -KW_DEFINE=71 -KW_DEFINER=72 -KW_DELETE=73 -KW_DENY=74 -KW_DESC=75 -KW_DESCRIBE=76 -KW_DESCRIPTOR=77 -KW_DETERMINISTIC=78 -KW_DISTINCT=79 -KW_DISTRIBUTED=80 -KW_DO=81 -KW_DOUBLE=82 -KW_DROP=83 -KW_ELSE=84 -KW_EMPTY=85 -KW_ELSEIF=86 -KW_ENCODING=87 -KW_END=88 -KW_ERROR=89 -KW_ESCAPE=90 -KW_EXCEPT=91 -KW_EXCLUDING=92 -KW_EXECUTE=93 -KW_EXISTS=94 -KW_EXPLAIN=95 -KW_EXTRACT=96 -KW_FALSE=97 -KW_FETCH=98 -KW_FILTER=99 -KW_FINAL=100 -KW_FIRST=101 -KW_FOLLOWING=102 -KW_FOR=103 -KW_FORMAT=104 -KW_FROM=105 -KW_FULL=106 -KW_FUNCTION=107 -KW_FUNCTIONS=108 -KW_GRACE=109 -KW_GRANT=110 -KW_GRANTED=111 -KW_GRANTS=112 -KW_GRAPHVIZ=113 -KW_GROUP=114 -KW_GROUPING=115 -KW_GROUPS=116 -KW_HAVING=117 -KW_HOUR=118 -KW_IF=119 -KW_IGNORE=120 -KW_IMMEDIATE=121 -KW_IN=122 -KW_INCLUDING=123 -KW_INITIAL=124 -KW_INNER=125 -KW_INPUT=126 -KW_INSERT=127 -KW_INTERSECT=128 -KW_INTERVAL=129 -KW_INTO=130 -KW_INVOKER=131 -KW_IO=132 -KW_IS=133 -KW_ISOLATION=134 -KW_ITERATE=135 -KW_JOIN=136 -KW_JSON=137 -KW_JSON_ARRAY=138 -KW_JSON_EXISTS=139 -KW_JSON_OBJECT=140 -KW_JSON_QUERY=141 -KW_JSON_TABLE=142 -KW_JSON_VALUE=143 -KW_KEEP=144 -KW_KEY=145 -KW_KEYS=146 -KW_LANGUAGE=147 -KW_LAST=148 -KW_LATERAL=149 -KW_LEADING=150 -KW_LEAVE=151 -KW_LEFT=152 -KW_LEVEL=153 -KW_LIKE=154 -KW_LIMIT=155 -KW_LISTAGG=156 -KW_LOCAL=157 -KW_LOCALTIME=158 -KW_LOCALTIMESTAMP=159 -KW_LOGICAL=160 -KW_LOOP=161 -KW_MAP=162 -KW_MATCH=163 -KW_MATCHED=164 -KW_MATCHES=165 -KW_MATCH_RECOGNIZE=166 -KW_MATERIALIZED=167 -KW_MEASURES=168 -KW_MERGE=169 -KW_MINUTE=170 -KW_MONTH=171 -KW_NATURAL=172 -KW_NESTED=173 -KW_NEXT=174 -KW_NFC=175 -KW_NFD=176 -KW_NFKC=177 -KW_NFKD=178 -KW_NO=179 -KW_NONE=180 -KW_NORMALIZE=181 -KW_NOT=182 -KW_NULL=183 -KW_NULLIF=184 -KW_NULLS=185 -KW_OBJECT=186 -KW_OF=187 -KW_OFFSET=188 -KW_OMIT=189 -KW_ON=190 -KW_ONE=191 -KW_ONLY=192 -KW_OPTION=193 -KW_OR=194 -KW_ORDER=195 -KW_ORDINALITY=196 -KW_OUTER=197 -KW_OUTPUT=198 -KW_OVER=199 -KW_OVERFLOW=200 -KW_PARTITION=201 -KW_PARTITIONS=202 -KW_PASSING=203 -KW_PAST=204 -KW_PATH=205 -KW_PATTERN=206 -KW_PER=207 -KW_PERIOD=208 -KW_PERMUTE=209 -KW_PLAN=210 -KW_POSITION=211 -KW_PRECEDING=212 -KW_PRECISION=213 -KW_PREPARE=214 -KW_PRIVILEGES=215 -KW_PROPERTIES=216 -KW_PRUNE=217 -KW_QUOTES=218 -KW_RANGE=219 -KW_READ=220 -KW_RECURSIVE=221 -KW_REFRESH=222 -KW_RENAME=223 -KW_REPEAT=224 -KW_REPEATABLE=225 -KW_REPLACE=226 -KW_RESET=227 -KW_RESPECT=228 -KW_RESTRICT=229 -KW_RETURN=230 -KW_RETURNING=231 -KW_RETURNS=232 -KW_REVOKE=233 -KW_RIGHT=234 -KW_ROLE=235 -KW_ROLES=236 -KW_ROLLBACK=237 -KW_ROLLUP=238 -KW_ROW=239 -KW_ROWS=240 -KW_RUNNING=241 -KW_SCALAR=242 -KW_SCHEMA=243 -KW_SCHEMAS=244 -KW_SECOND=245 -KW_SECURITY=246 -KW_SEEK=247 -KW_SELECT=248 -KW_SERIALIZABLE=249 -KW_SESSION=250 -KW_SET=251 -KW_SETS=252 -KW_SHOW=253 -KW_SOME=254 -KW_START=255 -KW_STATS=256 -KW_SUBSET=257 -KW_SUBSTRING=258 -KW_SYSTEM=259 -KW_TABLE=260 -KW_TABLES=261 -KW_TABLESAMPLE=262 -KW_TEXT=263 -KW_TEXT_STRING=264 -KW_THEN=265 -KW_TIES=266 -KW_TIME=267 -KW_TIMESTAMP=268 -KW_TO=269 -KW_TRAILING=270 -KW_TRANSACTION=271 -KW_TRIM=272 -KW_TRUE=273 -KW_TRUNCATE=274 -KW_TRY_CAST=275 -KW_TYPE=276 -KW_UESCAPE=277 -KW_UNBOUNDED=278 -KW_UNCOMMITTED=279 -KW_UNCONDITIONAL=280 -KW_UNION=281 -KW_UNIQUE=282 -KW_UNKNOWN=283 -KW_UNMATCHED=284 -KW_UNNEST=285 -KW_UNTIL=286 -KW_UPDATE=287 -KW_USE=288 -KW_USER=289 -KW_USING=290 -KW_UTF16=291 -KW_UTF32=292 -KW_UTF8=293 -KW_VALIDATE=294 -KW_VALUE=295 -KW_VALUES=296 -KW_VERBOSE=297 -KW_VERSION=298 -KW_VIEW=299 -KW_WHEN=300 -KW_WHERE=301 -KW_WHILE=302 -KW_WINDOW=303 -KW_WITH=304 -KW_WITHIN=305 -KW_WITHOUT=306 -KW_WORK=307 -KW_WRAPPER=308 -KW_WRITE=309 -KW_YEAR=310 -KW_ZONE=311 -EQ=312 -NEQ=313 -LT=314 -LTE=315 -GT=316 -GTE=317 -PLUS=318 -MINUS=319 -ASTERISK=320 -SLASH=321 -PERCENT=322 -CONCAT=323 -QUESTION_MARK=324 -SEMICOLON=325 -STRING=326 -UNICODE_STRING=327 -BINARY_LITERAL=328 -INTEGER_VALUE=329 -DECIMAL_VALUE=330 -DOUBLE_VALUE=331 -IDENTIFIER=332 -DIGIT_IDENTIFIER=333 -QUOTED_IDENTIFIER=334 -BACKQUOTED_IDENTIFIER=335 -LINE_COMMENT=336 -BRACKETED_COMMENT=337 -WHITE_SPACE=338 -UNRECOGNIZED=339 +KW_COALESCE=44 +KW_COLUMN=45 +KW_COLUMNS=46 +KW_COMMENT=47 +KW_COMMIT=48 +KW_COMMITTED=49 +KW_CONDITIONAL=50 +KW_CONSTRAINT=51 +KW_COUNT=52 +KW_COPARTITION=53 +KW_CREATE=54 +KW_CROSS=55 +KW_CUBE=56 +KW_CURRENT=57 +KW_CURRENT_CATALOG=58 +KW_CURRENT_DATE=59 +KW_CURRENT_PATH=60 +KW_CURRENT_ROLE=61 +KW_CURRENT_SCHEMA=62 +KW_CURRENT_TIME=63 +KW_CURRENT_TIMESTAMP=64 +KW_CURRENT_USER=65 +KW_DATA=66 +KW_DATE=67 +KW_DAY=68 +KW_DEALLOCATE=69 +KW_DECLARE=70 +KW_DEFAULT=71 +KW_DEFINE=72 +KW_DEFINER=73 +KW_DELETE=74 +KW_DENY=75 +KW_DESC=76 +KW_DESCRIBE=77 +KW_DESCRIPTOR=78 +KW_DETERMINISTIC=79 +KW_DISTINCT=80 +KW_DISTRIBUTED=81 +KW_DO=82 +KW_DOUBLE=83 +KW_DROP=84 +KW_ELSE=85 +KW_EMPTY=86 +KW_ELSEIF=87 +KW_ENCODING=88 +KW_END=89 +KW_ERROR=90 +KW_ESCAPE=91 +KW_EXCEPT=92 +KW_EXCLUDING=93 +KW_EXECUTE=94 +KW_EXISTS=95 +KW_EXPLAIN=96 +KW_EXTRACT=97 +KW_FALSE=98 +KW_FETCH=99 +KW_FILTER=100 +KW_FINAL=101 +KW_FIRST=102 +KW_FOLLOWING=103 +KW_FOR=104 +KW_FORMAT=105 +KW_FROM=106 +KW_FULL=107 +KW_FUNCTION=108 +KW_FUNCTIONS=109 +KW_GRACE=110 +KW_GRANT=111 +KW_GRANTED=112 +KW_GRANTS=113 +KW_GRAPHVIZ=114 +KW_GROUP=115 +KW_GROUPING=116 +KW_GROUPS=117 +KW_HAVING=118 +KW_HOUR=119 +KW_IF=120 +KW_IGNORE=121 +KW_IMMEDIATE=122 +KW_IN=123 +KW_INCLUDING=124 +KW_INITIAL=125 +KW_INNER=126 +KW_INPUT=127 +KW_INSERT=128 +KW_INTERSECT=129 +KW_INTERVAL=130 +KW_INTO=131 +KW_INVOKER=132 +KW_IO=133 +KW_IS=134 +KW_ISOLATION=135 +KW_ITERATE=136 +KW_JOIN=137 +KW_JSON=138 +KW_JSON_ARRAY=139 +KW_JSON_EXISTS=140 +KW_JSON_OBJECT=141 +KW_JSON_QUERY=142 +KW_JSON_TABLE=143 +KW_JSON_VALUE=144 +KW_KEEP=145 +KW_KEY=146 +KW_KEYS=147 +KW_LANGUAGE=148 +KW_LAST=149 +KW_LATERAL=150 +KW_LEADING=151 +KW_LEAVE=152 +KW_LEFT=153 +KW_LEVEL=154 +KW_LIKE=155 +KW_LIMIT=156 +KW_LISTAGG=157 +KW_LOCAL=158 +KW_LOCALTIME=159 +KW_LOCALTIMESTAMP=160 +KW_LOGICAL=161 +KW_LOOP=162 +KW_MAP=163 +KW_MATCH=164 +KW_MATCHED=165 +KW_MATCHES=166 +KW_MATCH_RECOGNIZE=167 +KW_MATERIALIZED=168 +KW_MEASURES=169 +KW_MERGE=170 +KW_MINUTE=171 +KW_MONTH=172 +KW_NATURAL=173 +KW_NESTED=174 +KW_NEXT=175 +KW_NFC=176 +KW_NFD=177 +KW_NFKC=178 +KW_NFKD=179 +KW_NO=180 +KW_NONE=181 +KW_NORMALIZE=182 +KW_NOT=183 +KW_NULL=184 +KW_NULLIF=185 +KW_NULLS=186 +KW_OBJECT=187 +KW_OF=188 +KW_OFFSET=189 +KW_OMIT=190 +KW_ON=191 +KW_ONE=192 +KW_ONLY=193 +KW_OPTION=194 +KW_OR=195 +KW_ORDER=196 +KW_ORDINALITY=197 +KW_OUTER=198 +KW_OUTPUT=199 +KW_OVER=200 +KW_OVERFLOW=201 +KW_PARTITION=202 +KW_PARTITIONS=203 +KW_PASSING=204 +KW_PAST=205 +KW_PATH=206 +KW_PATTERN=207 +KW_PER=208 +KW_PERIOD=209 +KW_PERMUTE=210 +KW_PLAN=211 +KW_POSITION=212 +KW_PRECEDING=213 +KW_PRECISION=214 +KW_PREPARE=215 +KW_PRIVILEGES=216 +KW_PROPERTIES=217 +KW_PRUNE=218 +KW_QUOTES=219 +KW_RANGE=220 +KW_READ=221 +KW_RECURSIVE=222 +KW_REFRESH=223 +KW_RENAME=224 +KW_REPEAT=225 +KW_REPEATABLE=226 +KW_REPLACE=227 +KW_RESET=228 +KW_RESPECT=229 +KW_RESTRICT=230 +KW_RETURN=231 +KW_RETURNING=232 +KW_RETURNS=233 +KW_REVOKE=234 +KW_RIGHT=235 +KW_ROLE=236 +KW_ROLES=237 +KW_ROLLBACK=238 +KW_ROLLUP=239 +KW_ROW=240 +KW_ROWS=241 +KW_RUNNING=242 +KW_SCALAR=243 +KW_SCHEMA=244 +KW_SCHEMAS=245 +KW_SECOND=246 +KW_SECURITY=247 +KW_SEEK=248 +KW_SELECT=249 +KW_SERIALIZABLE=250 +KW_SESSION=251 +KW_SET=252 +KW_SETS=253 +KW_SHOW=254 +KW_SOME=255 +KW_START=256 +KW_STATS=257 +KW_SUBSET=258 +KW_SUBSTRING=259 +KW_SYSTEM=260 +KW_TABLE=261 +KW_TABLES=262 +KW_TABLESAMPLE=263 +KW_TEXT=264 +KW_TEXT_STRING=265 +KW_THEN=266 +KW_TIES=267 +KW_TIME=268 +KW_TIMESTAMP=269 +KW_TO=270 +KW_TRAILING=271 +KW_TRANSACTION=272 +KW_TRIM=273 +KW_TRUE=274 +KW_TRUNCATE=275 +KW_TRY_CAST=276 +KW_TYPE=277 +KW_UESCAPE=278 +KW_UNBOUNDED=279 +KW_UNCOMMITTED=280 +KW_UNCONDITIONAL=281 +KW_UNION=282 +KW_UNIQUE=283 +KW_UNKNOWN=284 +KW_UNMATCHED=285 +KW_UNNEST=286 +KW_UNTIL=287 +KW_UPDATE=288 +KW_USE=289 +KW_USER=290 +KW_USING=291 +KW_UTF16=292 +KW_UTF32=293 +KW_UTF8=294 +KW_VALIDATE=295 +KW_VALUE=296 +KW_VALUES=297 +KW_VERBOSE=298 +KW_VERSION=299 +KW_VIEW=300 +KW_WHEN=301 +KW_WHERE=302 +KW_WHILE=303 +KW_WINDOW=304 +KW_WITH=305 +KW_WITHIN=306 +KW_WITHOUT=307 +KW_WORK=308 +KW_WRAPPER=309 +KW_WRITE=310 +KW_YEAR=311 +KW_ZONE=312 +EQ=313 +NEQ=314 +LT=315 +LTE=316 +GT=317 +GTE=318 +PLUS=319 +MINUS=320 +ASTERISK=321 +SLASH=322 +PERCENT=323 +CONCAT=324 +QUESTION_MARK=325 +SEMICOLON=326 +STRING=327 +UNICODE_STRING=328 +BINARY_LITERAL=329 +INTEGER_VALUE=330 +DECIMAL_VALUE=331 +DOUBLE_VALUE=332 +IDENTIFIER=333 +DIGIT_IDENTIFIER=334 +QUOTED_IDENTIFIER=335 +BACKQUOTED_IDENTIFIER=336 +LINE_COMMENT=337 +BRACKETED_COMMENT=338 +WHITE_SPACE=339 +UNRECOGNIZED=340 '('=1 ')'=2 ','=3 @@ -380,284 +381,285 @@ UNRECOGNIZED=339 'CAST'=41 'CATALOG'=42 'CATALOGS'=43 -'COLUMN'=44 -'COLUMNS'=45 -'COMMENT'=46 -'COMMIT'=47 -'COMMITTED'=48 -'CONDITIONAL'=49 -'CONSTRAINT'=50 -'COUNT'=51 -'COPARTITION'=52 -'CREATE'=53 -'CROSS'=54 -'CUBE'=55 -'CURRENT'=56 -'CURRENT_CATALOG'=57 -'CURRENT_DATE'=58 -'CURRENT_PATH'=59 -'CURRENT_ROLE'=60 -'CURRENT_SCHEMA'=61 -'CURRENT_TIME'=62 -'CURRENT_TIMESTAMP'=63 -'CURRENT_USER'=64 -'DATA'=65 -'DATE'=66 -'DAY'=67 -'DEALLOCATE'=68 -'DECLARE'=69 -'DEFAULT'=70 -'DEFINE'=71 -'DEFINER'=72 -'DELETE'=73 -'DENY'=74 -'DESC'=75 -'DESCRIBE'=76 -'DESCRIPTOR'=77 -'DETERMINISTIC'=78 -'DISTINCT'=79 -'DISTRIBUTED'=80 -'DO'=81 -'DOUBLE'=82 -'DROP'=83 -'ELSE'=84 -'EMPTY'=85 -'ELSEIF'=86 -'ENCODING'=87 -'END'=88 -'ERROR'=89 -'ESCAPE'=90 -'EXCEPT'=91 -'EXCLUDING'=92 -'EXECUTE'=93 -'EXISTS'=94 -'EXPLAIN'=95 -'EXTRACT'=96 -'FALSE'=97 -'FETCH'=98 -'FILTER'=99 -'FINAL'=100 -'FIRST'=101 -'FOLLOWING'=102 -'FOR'=103 -'FORMAT'=104 -'FROM'=105 -'FULL'=106 -'FUNCTION'=107 -'FUNCTIONS'=108 -'GRACE'=109 -'GRANT'=110 -'GRANTED'=111 -'GRANTS'=112 -'GRAPHVIZ'=113 -'GROUP'=114 -'GROUPING'=115 -'GROUPS'=116 -'HAVING'=117 -'HOUR'=118 -'IF'=119 -'IGNORE'=120 -'IMMEDIATE'=121 -'IN'=122 -'INCLUDING'=123 -'INITIAL'=124 -'INNER'=125 -'INPUT'=126 -'INSERT'=127 -'INTERSECT'=128 -'INTERVAL'=129 -'INTO'=130 -'INVOKER'=131 -'IO'=132 -'IS'=133 -'ISOLATION'=134 -'ITERATE'=135 -'JOIN'=136 -'JSON'=137 -'JSON_ARRAY'=138 -'JSON_EXISTS'=139 -'JSON_OBJECT'=140 -'JSON_QUERY'=141 -'JSON_TABLE'=142 -'JSON_VALUE'=143 -'KEEP'=144 -'KEY'=145 -'KEYS'=146 -'LANGUAGE'=147 -'LAST'=148 -'LATERAL'=149 -'LEADING'=150 -'LEAVE'=151 -'LEFT'=152 -'LEVEL'=153 -'LIKE'=154 -'LIMIT'=155 -'LISTAGG'=156 -'LOCAL'=157 -'LOCALTIME'=158 -'LOCALTIMESTAMP'=159 -'LOGICAL'=160 -'LOOP'=161 -'MAP'=162 -'MATCH'=163 -'MATCHED'=164 -'MATCHES'=165 -'MATCH_RECOGNIZE'=166 -'MATERIALIZED'=167 -'MEASURES'=168 -'MERGE'=169 -'MINUTE'=170 -'MONTH'=171 -'NATURAL'=172 -'NESTED'=173 -'NEXT'=174 -'NFC'=175 -'NFD'=176 -'NFKC'=177 -'NFKD'=178 -'NO'=179 -'NONE'=180 -'NORMALIZE'=181 -'NOT'=182 -'NULL'=183 -'NULLIF'=184 -'NULLS'=185 -'OBJECT'=186 -'OF'=187 -'OFFSET'=188 -'OMIT'=189 -'ON'=190 -'ONE'=191 -'ONLY'=192 -'OPTION'=193 -'OR'=194 -'ORDER'=195 -'ORDINALITY'=196 -'OUTER'=197 -'OUTPUT'=198 -'OVER'=199 -'OVERFLOW'=200 -'PARTITION'=201 -'PARTITIONS'=202 -'PASSING'=203 -'PAST'=204 -'PATH'=205 -'PATTERN'=206 -'PER'=207 -'PERIOD'=208 -'PERMUTE'=209 -'PLAN'=210 -'POSITION'=211 -'PRECEDING'=212 -'PRECISION'=213 -'PREPARE'=214 -'PRIVILEGES'=215 -'PROPERTIES'=216 -'PRUNE'=217 -'QUOTES'=218 -'RANGE'=219 -'READ'=220 -'RECURSIVE'=221 -'REFRESH'=222 -'RENAME'=223 -'REPEAT'=224 -'REPEATABLE'=225 -'REPLACE'=226 -'RESET'=227 -'RESPECT'=228 -'RESTRICT'=229 -'RETURN'=230 -'RETURNING'=231 -'RETURNS'=232 -'REVOKE'=233 -'RIGHT'=234 -'ROLE'=235 -'ROLES'=236 -'ROLLBACK'=237 -'ROLLUP'=238 -'ROW'=239 -'ROWS'=240 -'RUNNING'=241 -'SCALAR'=242 -'SCHEMA'=243 -'SCHEMAS'=244 -'SECOND'=245 -'SECURITY'=246 -'SEEK'=247 -'SELECT'=248 -'SERIALIZABLE'=249 -'SESSION'=250 -'SET'=251 -'SETS'=252 -'SHOW'=253 -'SOME'=254 -'START'=255 -'STATS'=256 -'SUBSET'=257 -'SUBSTRING'=258 -'SYSTEM'=259 -'TABLE'=260 -'TABLES'=261 -'TABLESAMPLE'=262 -'TEXT'=263 -'STRING'=264 -'THEN'=265 -'TIES'=266 -'TIME'=267 -'TIMESTAMP'=268 -'TO'=269 -'TRAILING'=270 -'TRANSACTION'=271 -'TRIM'=272 -'TRUE'=273 -'TRUNCATE'=274 -'TRY_CAST'=275 -'TYPE'=276 -'UESCAPE'=277 -'UNBOUNDED'=278 -'UNCOMMITTED'=279 -'UNCONDITIONAL'=280 -'UNION'=281 -'UNIQUE'=282 -'UNKNOWN'=283 -'UNMATCHED'=284 -'UNNEST'=285 -'UNTIL'=286 -'UPDATE'=287 -'USE'=288 -'USER'=289 -'USING'=290 -'UTF16'=291 -'UTF32'=292 -'UTF8'=293 -'VALIDATE'=294 -'VALUE'=295 -'VALUES'=296 -'VERBOSE'=297 -'VERSION'=298 -'VIEW'=299 -'WHEN'=300 -'WHERE'=301 -'WHILE'=302 -'WINDOW'=303 -'WITH'=304 -'WITHIN'=305 -'WITHOUT'=306 -'WORK'=307 -'WRAPPER'=308 -'WRITE'=309 -'YEAR'=310 -'ZONE'=311 -'='=312 -'<'=314 -'<='=315 -'>'=316 -'>='=317 -'+'=318 -'-'=319 -'*'=320 -'/'=321 -'%'=322 -'||'=323 -'?'=324 -';'=325 +'COALESCE'=44 +'COLUMN'=45 +'COLUMNS'=46 +'COMMENT'=47 +'COMMIT'=48 +'COMMITTED'=49 +'CONDITIONAL'=50 +'CONSTRAINT'=51 +'COUNT'=52 +'COPARTITION'=53 +'CREATE'=54 +'CROSS'=55 +'CUBE'=56 +'CURRENT'=57 +'CURRENT_CATALOG'=58 +'CURRENT_DATE'=59 +'CURRENT_PATH'=60 +'CURRENT_ROLE'=61 +'CURRENT_SCHEMA'=62 +'CURRENT_TIME'=63 +'CURRENT_TIMESTAMP'=64 +'CURRENT_USER'=65 +'DATA'=66 +'DATE'=67 +'DAY'=68 +'DEALLOCATE'=69 +'DECLARE'=70 +'DEFAULT'=71 +'DEFINE'=72 +'DEFINER'=73 +'DELETE'=74 +'DENY'=75 +'DESC'=76 +'DESCRIBE'=77 +'DESCRIPTOR'=78 +'DETERMINISTIC'=79 +'DISTINCT'=80 +'DISTRIBUTED'=81 +'DO'=82 +'DOUBLE'=83 +'DROP'=84 +'ELSE'=85 +'EMPTY'=86 +'ELSEIF'=87 +'ENCODING'=88 +'END'=89 +'ERROR'=90 +'ESCAPE'=91 +'EXCEPT'=92 +'EXCLUDING'=93 +'EXECUTE'=94 +'EXISTS'=95 +'EXPLAIN'=96 +'EXTRACT'=97 +'FALSE'=98 +'FETCH'=99 +'FILTER'=100 +'FINAL'=101 +'FIRST'=102 +'FOLLOWING'=103 +'FOR'=104 +'FORMAT'=105 +'FROM'=106 +'FULL'=107 +'FUNCTION'=108 +'FUNCTIONS'=109 +'GRACE'=110 +'GRANT'=111 +'GRANTED'=112 +'GRANTS'=113 +'GRAPHVIZ'=114 +'GROUP'=115 +'GROUPING'=116 +'GROUPS'=117 +'HAVING'=118 +'HOUR'=119 +'IF'=120 +'IGNORE'=121 +'IMMEDIATE'=122 +'IN'=123 +'INCLUDING'=124 +'INITIAL'=125 +'INNER'=126 +'INPUT'=127 +'INSERT'=128 +'INTERSECT'=129 +'INTERVAL'=130 +'INTO'=131 +'INVOKER'=132 +'IO'=133 +'IS'=134 +'ISOLATION'=135 +'ITERATE'=136 +'JOIN'=137 +'JSON'=138 +'JSON_ARRAY'=139 +'JSON_EXISTS'=140 +'JSON_OBJECT'=141 +'JSON_QUERY'=142 +'JSON_TABLE'=143 +'JSON_VALUE'=144 +'KEEP'=145 +'KEY'=146 +'KEYS'=147 +'LANGUAGE'=148 +'LAST'=149 +'LATERAL'=150 +'LEADING'=151 +'LEAVE'=152 +'LEFT'=153 +'LEVEL'=154 +'LIKE'=155 +'LIMIT'=156 +'LISTAGG'=157 +'LOCAL'=158 +'LOCALTIME'=159 +'LOCALTIMESTAMP'=160 +'LOGICAL'=161 +'LOOP'=162 +'MAP'=163 +'MATCH'=164 +'MATCHED'=165 +'MATCHES'=166 +'MATCH_RECOGNIZE'=167 +'MATERIALIZED'=168 +'MEASURES'=169 +'MERGE'=170 +'MINUTE'=171 +'MONTH'=172 +'NATURAL'=173 +'NESTED'=174 +'NEXT'=175 +'NFC'=176 +'NFD'=177 +'NFKC'=178 +'NFKD'=179 +'NO'=180 +'NONE'=181 +'NORMALIZE'=182 +'NOT'=183 +'NULL'=184 +'NULLIF'=185 +'NULLS'=186 +'OBJECT'=187 +'OF'=188 +'OFFSET'=189 +'OMIT'=190 +'ON'=191 +'ONE'=192 +'ONLY'=193 +'OPTION'=194 +'OR'=195 +'ORDER'=196 +'ORDINALITY'=197 +'OUTER'=198 +'OUTPUT'=199 +'OVER'=200 +'OVERFLOW'=201 +'PARTITION'=202 +'PARTITIONS'=203 +'PASSING'=204 +'PAST'=205 +'PATH'=206 +'PATTERN'=207 +'PER'=208 +'PERIOD'=209 +'PERMUTE'=210 +'PLAN'=211 +'POSITION'=212 +'PRECEDING'=213 +'PRECISION'=214 +'PREPARE'=215 +'PRIVILEGES'=216 +'PROPERTIES'=217 +'PRUNE'=218 +'QUOTES'=219 +'RANGE'=220 +'READ'=221 +'RECURSIVE'=222 +'REFRESH'=223 +'RENAME'=224 +'REPEAT'=225 +'REPEATABLE'=226 +'REPLACE'=227 +'RESET'=228 +'RESPECT'=229 +'RESTRICT'=230 +'RETURN'=231 +'RETURNING'=232 +'RETURNS'=233 +'REVOKE'=234 +'RIGHT'=235 +'ROLE'=236 +'ROLES'=237 +'ROLLBACK'=238 +'ROLLUP'=239 +'ROW'=240 +'ROWS'=241 +'RUNNING'=242 +'SCALAR'=243 +'SCHEMA'=244 +'SCHEMAS'=245 +'SECOND'=246 +'SECURITY'=247 +'SEEK'=248 +'SELECT'=249 +'SERIALIZABLE'=250 +'SESSION'=251 +'SET'=252 +'SETS'=253 +'SHOW'=254 +'SOME'=255 +'START'=256 +'STATS'=257 +'SUBSET'=258 +'SUBSTRING'=259 +'SYSTEM'=260 +'TABLE'=261 +'TABLES'=262 +'TABLESAMPLE'=263 +'TEXT'=264 +'STRING'=265 +'THEN'=266 +'TIES'=267 +'TIME'=268 +'TIMESTAMP'=269 +'TO'=270 +'TRAILING'=271 +'TRANSACTION'=272 +'TRIM'=273 +'TRUE'=274 +'TRUNCATE'=275 +'TRY_CAST'=276 +'TYPE'=277 +'UESCAPE'=278 +'UNBOUNDED'=279 +'UNCOMMITTED'=280 +'UNCONDITIONAL'=281 +'UNION'=282 +'UNIQUE'=283 +'UNKNOWN'=284 +'UNMATCHED'=285 +'UNNEST'=286 +'UNTIL'=287 +'UPDATE'=288 +'USE'=289 +'USER'=290 +'USING'=291 +'UTF16'=292 +'UTF32'=293 +'UTF8'=294 +'VALIDATE'=295 +'VALUE'=296 +'VALUES'=297 +'VERBOSE'=298 +'VERSION'=299 +'VIEW'=300 +'WHEN'=301 +'WHERE'=302 +'WHILE'=303 +'WINDOW'=304 +'WITH'=305 +'WITHIN'=306 +'WITHOUT'=307 +'WORK'=308 +'WRAPPER'=309 +'WRITE'=310 +'YEAR'=311 +'ZONE'=312 +'='=313 +'<'=315 +'<='=316 +'>'=317 +'>='=318 +'+'=319 +'-'=320 +'*'=321 +'/'=322 +'%'=323 +'||'=324 +'?'=325 +';'=326 diff --git a/src/lib/trino/TrinoSqlLexer.ts b/src/lib/trino/TrinoSqlLexer.ts index 84cf96cd..8b34d509 100644 --- a/src/lib/trino/TrinoSqlLexer.ts +++ b/src/lib/trino/TrinoSqlLexer.ts @@ -53,302 +53,303 @@ export class TrinoSqlLexer extends antlr.Lexer { public static readonly KW_CAST = 41; public static readonly KW_CATALOG = 42; public static readonly KW_CATALOGS = 43; - public static readonly KW_COLUMN = 44; - public static readonly KW_COLUMNS = 45; - public static readonly KW_COMMENT = 46; - public static readonly KW_COMMIT = 47; - public static readonly KW_COMMITTED = 48; - public static readonly KW_CONDITIONAL = 49; - public static readonly KW_CONSTRAINT = 50; - public static readonly KW_COUNT = 51; - public static readonly KW_COPARTITION = 52; - public static readonly KW_CREATE = 53; - public static readonly KW_CROSS = 54; - public static readonly KW_CUBE = 55; - public static readonly KW_CURRENT = 56; - public static readonly KW_CURRENT_CATALOG = 57; - public static readonly KW_CURRENT_DATE = 58; - public static readonly KW_CURRENT_PATH = 59; - public static readonly KW_CURRENT_ROLE = 60; - public static readonly KW_CURRENT_SCHEMA = 61; - public static readonly KW_CURRENT_TIME = 62; - public static readonly KW_CURRENT_TIMESTAMP = 63; - public static readonly KW_CURRENT_USER = 64; - public static readonly KW_DATA = 65; - public static readonly KW_DATE = 66; - public static readonly KW_DAY = 67; - public static readonly KW_DEALLOCATE = 68; - public static readonly KW_DECLARE = 69; - public static readonly KW_DEFAULT = 70; - public static readonly KW_DEFINE = 71; - public static readonly KW_DEFINER = 72; - public static readonly KW_DELETE = 73; - public static readonly KW_DENY = 74; - public static readonly KW_DESC = 75; - public static readonly KW_DESCRIBE = 76; - public static readonly KW_DESCRIPTOR = 77; - public static readonly KW_DETERMINISTIC = 78; - public static readonly KW_DISTINCT = 79; - public static readonly KW_DISTRIBUTED = 80; - public static readonly KW_DO = 81; - public static readonly KW_DOUBLE = 82; - public static readonly KW_DROP = 83; - public static readonly KW_ELSE = 84; - public static readonly KW_EMPTY = 85; - public static readonly KW_ELSEIF = 86; - public static readonly KW_ENCODING = 87; - public static readonly KW_END = 88; - public static readonly KW_ERROR = 89; - public static readonly KW_ESCAPE = 90; - public static readonly KW_EXCEPT = 91; - public static readonly KW_EXCLUDING = 92; - public static readonly KW_EXECUTE = 93; - public static readonly KW_EXISTS = 94; - public static readonly KW_EXPLAIN = 95; - public static readonly KW_EXTRACT = 96; - public static readonly KW_FALSE = 97; - public static readonly KW_FETCH = 98; - public static readonly KW_FILTER = 99; - public static readonly KW_FINAL = 100; - public static readonly KW_FIRST = 101; - public static readonly KW_FOLLOWING = 102; - public static readonly KW_FOR = 103; - public static readonly KW_FORMAT = 104; - public static readonly KW_FROM = 105; - public static readonly KW_FULL = 106; - public static readonly KW_FUNCTION = 107; - public static readonly KW_FUNCTIONS = 108; - public static readonly KW_GRACE = 109; - public static readonly KW_GRANT = 110; - public static readonly KW_GRANTED = 111; - public static readonly KW_GRANTS = 112; - public static readonly KW_GRAPHVIZ = 113; - public static readonly KW_GROUP = 114; - public static readonly KW_GROUPING = 115; - public static readonly KW_GROUPS = 116; - public static readonly KW_HAVING = 117; - public static readonly KW_HOUR = 118; - public static readonly KW_IF = 119; - public static readonly KW_IGNORE = 120; - public static readonly KW_IMMEDIATE = 121; - public static readonly KW_IN = 122; - public static readonly KW_INCLUDING = 123; - public static readonly KW_INITIAL = 124; - public static readonly KW_INNER = 125; - public static readonly KW_INPUT = 126; - public static readonly KW_INSERT = 127; - public static readonly KW_INTERSECT = 128; - public static readonly KW_INTERVAL = 129; - public static readonly KW_INTO = 130; - public static readonly KW_INVOKER = 131; - public static readonly KW_IO = 132; - public static readonly KW_IS = 133; - public static readonly KW_ISOLATION = 134; - public static readonly KW_ITERATE = 135; - public static readonly KW_JOIN = 136; - public static readonly KW_JSON = 137; - public static readonly KW_JSON_ARRAY = 138; - public static readonly KW_JSON_EXISTS = 139; - public static readonly KW_JSON_OBJECT = 140; - public static readonly KW_JSON_QUERY = 141; - public static readonly KW_JSON_TABLE = 142; - public static readonly KW_JSON_VALUE = 143; - public static readonly KW_KEEP = 144; - public static readonly KW_KEY = 145; - public static readonly KW_KEYS = 146; - public static readonly KW_LANGUAGE = 147; - public static readonly KW_LAST = 148; - public static readonly KW_LATERAL = 149; - public static readonly KW_LEADING = 150; - public static readonly KW_LEAVE = 151; - public static readonly KW_LEFT = 152; - public static readonly KW_LEVEL = 153; - public static readonly KW_LIKE = 154; - public static readonly KW_LIMIT = 155; - public static readonly KW_LISTAGG = 156; - public static readonly KW_LOCAL = 157; - public static readonly KW_LOCALTIME = 158; - public static readonly KW_LOCALTIMESTAMP = 159; - public static readonly KW_LOGICAL = 160; - public static readonly KW_LOOP = 161; - public static readonly KW_MAP = 162; - public static readonly KW_MATCH = 163; - public static readonly KW_MATCHED = 164; - public static readonly KW_MATCHES = 165; - public static readonly KW_MATCH_RECOGNIZE = 166; - public static readonly KW_MATERIALIZED = 167; - public static readonly KW_MEASURES = 168; - public static readonly KW_MERGE = 169; - public static readonly KW_MINUTE = 170; - public static readonly KW_MONTH = 171; - public static readonly KW_NATURAL = 172; - public static readonly KW_NESTED = 173; - public static readonly KW_NEXT = 174; - public static readonly KW_NFC = 175; - public static readonly KW_NFD = 176; - public static readonly KW_NFKC = 177; - public static readonly KW_NFKD = 178; - public static readonly KW_NO = 179; - public static readonly KW_NONE = 180; - public static readonly KW_NORMALIZE = 181; - public static readonly KW_NOT = 182; - public static readonly KW_NULL = 183; - public static readonly KW_NULLIF = 184; - public static readonly KW_NULLS = 185; - public static readonly KW_OBJECT = 186; - public static readonly KW_OF = 187; - public static readonly KW_OFFSET = 188; - public static readonly KW_OMIT = 189; - public static readonly KW_ON = 190; - public static readonly KW_ONE = 191; - public static readonly KW_ONLY = 192; - public static readonly KW_OPTION = 193; - public static readonly KW_OR = 194; - public static readonly KW_ORDER = 195; - public static readonly KW_ORDINALITY = 196; - public static readonly KW_OUTER = 197; - public static readonly KW_OUTPUT = 198; - public static readonly KW_OVER = 199; - public static readonly KW_OVERFLOW = 200; - public static readonly KW_PARTITION = 201; - public static readonly KW_PARTITIONS = 202; - public static readonly KW_PASSING = 203; - public static readonly KW_PAST = 204; - public static readonly KW_PATH = 205; - public static readonly KW_PATTERN = 206; - public static readonly KW_PER = 207; - public static readonly KW_PERIOD = 208; - public static readonly KW_PERMUTE = 209; - public static readonly KW_PLAN = 210; - public static readonly KW_POSITION = 211; - public static readonly KW_PRECEDING = 212; - public static readonly KW_PRECISION = 213; - public static readonly KW_PREPARE = 214; - public static readonly KW_PRIVILEGES = 215; - public static readonly KW_PROPERTIES = 216; - public static readonly KW_PRUNE = 217; - public static readonly KW_QUOTES = 218; - public static readonly KW_RANGE = 219; - public static readonly KW_READ = 220; - public static readonly KW_RECURSIVE = 221; - public static readonly KW_REFRESH = 222; - public static readonly KW_RENAME = 223; - public static readonly KW_REPEAT = 224; - public static readonly KW_REPEATABLE = 225; - public static readonly KW_REPLACE = 226; - public static readonly KW_RESET = 227; - public static readonly KW_RESPECT = 228; - public static readonly KW_RESTRICT = 229; - public static readonly KW_RETURN = 230; - public static readonly KW_RETURNING = 231; - public static readonly KW_RETURNS = 232; - public static readonly KW_REVOKE = 233; - public static readonly KW_RIGHT = 234; - public static readonly KW_ROLE = 235; - public static readonly KW_ROLES = 236; - public static readonly KW_ROLLBACK = 237; - public static readonly KW_ROLLUP = 238; - public static readonly KW_ROW = 239; - public static readonly KW_ROWS = 240; - public static readonly KW_RUNNING = 241; - public static readonly KW_SCALAR = 242; - public static readonly KW_SCHEMA = 243; - public static readonly KW_SCHEMAS = 244; - public static readonly KW_SECOND = 245; - public static readonly KW_SECURITY = 246; - public static readonly KW_SEEK = 247; - public static readonly KW_SELECT = 248; - public static readonly KW_SERIALIZABLE = 249; - public static readonly KW_SESSION = 250; - public static readonly KW_SET = 251; - public static readonly KW_SETS = 252; - public static readonly KW_SHOW = 253; - public static readonly KW_SOME = 254; - public static readonly KW_START = 255; - public static readonly KW_STATS = 256; - public static readonly KW_SUBSET = 257; - public static readonly KW_SUBSTRING = 258; - public static readonly KW_SYSTEM = 259; - public static readonly KW_TABLE = 260; - public static readonly KW_TABLES = 261; - public static readonly KW_TABLESAMPLE = 262; - public static readonly KW_TEXT = 263; - public static readonly KW_TEXT_STRING = 264; - public static readonly KW_THEN = 265; - public static readonly KW_TIES = 266; - public static readonly KW_TIME = 267; - public static readonly KW_TIMESTAMP = 268; - public static readonly KW_TO = 269; - public static readonly KW_TRAILING = 270; - public static readonly KW_TRANSACTION = 271; - public static readonly KW_TRIM = 272; - public static readonly KW_TRUE = 273; - public static readonly KW_TRUNCATE = 274; - public static readonly KW_TRY_CAST = 275; - public static readonly KW_TYPE = 276; - public static readonly KW_UESCAPE = 277; - public static readonly KW_UNBOUNDED = 278; - public static readonly KW_UNCOMMITTED = 279; - public static readonly KW_UNCONDITIONAL = 280; - public static readonly KW_UNION = 281; - public static readonly KW_UNIQUE = 282; - public static readonly KW_UNKNOWN = 283; - public static readonly KW_UNMATCHED = 284; - public static readonly KW_UNNEST = 285; - public static readonly KW_UNTIL = 286; - public static readonly KW_UPDATE = 287; - public static readonly KW_USE = 288; - public static readonly KW_USER = 289; - public static readonly KW_USING = 290; - public static readonly KW_UTF16 = 291; - public static readonly KW_UTF32 = 292; - public static readonly KW_UTF8 = 293; - public static readonly KW_VALIDATE = 294; - public static readonly KW_VALUE = 295; - public static readonly KW_VALUES = 296; - public static readonly KW_VERBOSE = 297; - public static readonly KW_VERSION = 298; - public static readonly KW_VIEW = 299; - public static readonly KW_WHEN = 300; - public static readonly KW_WHERE = 301; - public static readonly KW_WHILE = 302; - public static readonly KW_WINDOW = 303; - public static readonly KW_WITH = 304; - public static readonly KW_WITHIN = 305; - public static readonly KW_WITHOUT = 306; - public static readonly KW_WORK = 307; - public static readonly KW_WRAPPER = 308; - public static readonly KW_WRITE = 309; - public static readonly KW_YEAR = 310; - public static readonly KW_ZONE = 311; - public static readonly EQ = 312; - public static readonly NEQ = 313; - public static readonly LT = 314; - public static readonly LTE = 315; - public static readonly GT = 316; - public static readonly GTE = 317; - public static readonly PLUS = 318; - public static readonly MINUS = 319; - public static readonly ASTERISK = 320; - public static readonly SLASH = 321; - public static readonly PERCENT = 322; - public static readonly CONCAT = 323; - public static readonly QUESTION_MARK = 324; - public static readonly SEMICOLON = 325; - public static readonly STRING = 326; - public static readonly UNICODE_STRING = 327; - public static readonly BINARY_LITERAL = 328; - public static readonly INTEGER_VALUE = 329; - public static readonly DECIMAL_VALUE = 330; - public static readonly DOUBLE_VALUE = 331; - public static readonly IDENTIFIER = 332; - public static readonly DIGIT_IDENTIFIER = 333; - public static readonly QUOTED_IDENTIFIER = 334; - public static readonly BACKQUOTED_IDENTIFIER = 335; - public static readonly LINE_COMMENT = 336; - public static readonly BRACKETED_COMMENT = 337; - public static readonly WHITE_SPACE = 338; - public static readonly UNRECOGNIZED = 339; + public static readonly KW_COALESCE = 44; + public static readonly KW_COLUMN = 45; + public static readonly KW_COLUMNS = 46; + public static readonly KW_COMMENT = 47; + public static readonly KW_COMMIT = 48; + public static readonly KW_COMMITTED = 49; + public static readonly KW_CONDITIONAL = 50; + public static readonly KW_CONSTRAINT = 51; + public static readonly KW_COUNT = 52; + public static readonly KW_COPARTITION = 53; + public static readonly KW_CREATE = 54; + public static readonly KW_CROSS = 55; + public static readonly KW_CUBE = 56; + public static readonly KW_CURRENT = 57; + public static readonly KW_CURRENT_CATALOG = 58; + public static readonly KW_CURRENT_DATE = 59; + public static readonly KW_CURRENT_PATH = 60; + public static readonly KW_CURRENT_ROLE = 61; + public static readonly KW_CURRENT_SCHEMA = 62; + public static readonly KW_CURRENT_TIME = 63; + public static readonly KW_CURRENT_TIMESTAMP = 64; + public static readonly KW_CURRENT_USER = 65; + public static readonly KW_DATA = 66; + public static readonly KW_DATE = 67; + public static readonly KW_DAY = 68; + public static readonly KW_DEALLOCATE = 69; + public static readonly KW_DECLARE = 70; + public static readonly KW_DEFAULT = 71; + public static readonly KW_DEFINE = 72; + public static readonly KW_DEFINER = 73; + public static readonly KW_DELETE = 74; + public static readonly KW_DENY = 75; + public static readonly KW_DESC = 76; + public static readonly KW_DESCRIBE = 77; + public static readonly KW_DESCRIPTOR = 78; + public static readonly KW_DETERMINISTIC = 79; + public static readonly KW_DISTINCT = 80; + public static readonly KW_DISTRIBUTED = 81; + public static readonly KW_DO = 82; + public static readonly KW_DOUBLE = 83; + public static readonly KW_DROP = 84; + public static readonly KW_ELSE = 85; + public static readonly KW_EMPTY = 86; + public static readonly KW_ELSEIF = 87; + public static readonly KW_ENCODING = 88; + public static readonly KW_END = 89; + public static readonly KW_ERROR = 90; + public static readonly KW_ESCAPE = 91; + public static readonly KW_EXCEPT = 92; + public static readonly KW_EXCLUDING = 93; + public static readonly KW_EXECUTE = 94; + public static readonly KW_EXISTS = 95; + public static readonly KW_EXPLAIN = 96; + public static readonly KW_EXTRACT = 97; + public static readonly KW_FALSE = 98; + public static readonly KW_FETCH = 99; + public static readonly KW_FILTER = 100; + public static readonly KW_FINAL = 101; + public static readonly KW_FIRST = 102; + public static readonly KW_FOLLOWING = 103; + public static readonly KW_FOR = 104; + public static readonly KW_FORMAT = 105; + public static readonly KW_FROM = 106; + public static readonly KW_FULL = 107; + public static readonly KW_FUNCTION = 108; + public static readonly KW_FUNCTIONS = 109; + public static readonly KW_GRACE = 110; + public static readonly KW_GRANT = 111; + public static readonly KW_GRANTED = 112; + public static readonly KW_GRANTS = 113; + public static readonly KW_GRAPHVIZ = 114; + public static readonly KW_GROUP = 115; + public static readonly KW_GROUPING = 116; + public static readonly KW_GROUPS = 117; + public static readonly KW_HAVING = 118; + public static readonly KW_HOUR = 119; + public static readonly KW_IF = 120; + public static readonly KW_IGNORE = 121; + public static readonly KW_IMMEDIATE = 122; + public static readonly KW_IN = 123; + public static readonly KW_INCLUDING = 124; + public static readonly KW_INITIAL = 125; + public static readonly KW_INNER = 126; + public static readonly KW_INPUT = 127; + public static readonly KW_INSERT = 128; + public static readonly KW_INTERSECT = 129; + public static readonly KW_INTERVAL = 130; + public static readonly KW_INTO = 131; + public static readonly KW_INVOKER = 132; + public static readonly KW_IO = 133; + public static readonly KW_IS = 134; + public static readonly KW_ISOLATION = 135; + public static readonly KW_ITERATE = 136; + public static readonly KW_JOIN = 137; + public static readonly KW_JSON = 138; + public static readonly KW_JSON_ARRAY = 139; + public static readonly KW_JSON_EXISTS = 140; + public static readonly KW_JSON_OBJECT = 141; + public static readonly KW_JSON_QUERY = 142; + public static readonly KW_JSON_TABLE = 143; + public static readonly KW_JSON_VALUE = 144; + public static readonly KW_KEEP = 145; + public static readonly KW_KEY = 146; + public static readonly KW_KEYS = 147; + public static readonly KW_LANGUAGE = 148; + public static readonly KW_LAST = 149; + public static readonly KW_LATERAL = 150; + public static readonly KW_LEADING = 151; + public static readonly KW_LEAVE = 152; + public static readonly KW_LEFT = 153; + public static readonly KW_LEVEL = 154; + public static readonly KW_LIKE = 155; + public static readonly KW_LIMIT = 156; + public static readonly KW_LISTAGG = 157; + public static readonly KW_LOCAL = 158; + public static readonly KW_LOCALTIME = 159; + public static readonly KW_LOCALTIMESTAMP = 160; + public static readonly KW_LOGICAL = 161; + public static readonly KW_LOOP = 162; + public static readonly KW_MAP = 163; + public static readonly KW_MATCH = 164; + public static readonly KW_MATCHED = 165; + public static readonly KW_MATCHES = 166; + public static readonly KW_MATCH_RECOGNIZE = 167; + public static readonly KW_MATERIALIZED = 168; + public static readonly KW_MEASURES = 169; + public static readonly KW_MERGE = 170; + public static readonly KW_MINUTE = 171; + public static readonly KW_MONTH = 172; + public static readonly KW_NATURAL = 173; + public static readonly KW_NESTED = 174; + public static readonly KW_NEXT = 175; + public static readonly KW_NFC = 176; + public static readonly KW_NFD = 177; + public static readonly KW_NFKC = 178; + public static readonly KW_NFKD = 179; + public static readonly KW_NO = 180; + public static readonly KW_NONE = 181; + public static readonly KW_NORMALIZE = 182; + public static readonly KW_NOT = 183; + public static readonly KW_NULL = 184; + public static readonly KW_NULLIF = 185; + public static readonly KW_NULLS = 186; + public static readonly KW_OBJECT = 187; + public static readonly KW_OF = 188; + public static readonly KW_OFFSET = 189; + public static readonly KW_OMIT = 190; + public static readonly KW_ON = 191; + public static readonly KW_ONE = 192; + public static readonly KW_ONLY = 193; + public static readonly KW_OPTION = 194; + public static readonly KW_OR = 195; + public static readonly KW_ORDER = 196; + public static readonly KW_ORDINALITY = 197; + public static readonly KW_OUTER = 198; + public static readonly KW_OUTPUT = 199; + public static readonly KW_OVER = 200; + public static readonly KW_OVERFLOW = 201; + public static readonly KW_PARTITION = 202; + public static readonly KW_PARTITIONS = 203; + public static readonly KW_PASSING = 204; + public static readonly KW_PAST = 205; + public static readonly KW_PATH = 206; + public static readonly KW_PATTERN = 207; + public static readonly KW_PER = 208; + public static readonly KW_PERIOD = 209; + public static readonly KW_PERMUTE = 210; + public static readonly KW_PLAN = 211; + public static readonly KW_POSITION = 212; + public static readonly KW_PRECEDING = 213; + public static readonly KW_PRECISION = 214; + public static readonly KW_PREPARE = 215; + public static readonly KW_PRIVILEGES = 216; + public static readonly KW_PROPERTIES = 217; + public static readonly KW_PRUNE = 218; + public static readonly KW_QUOTES = 219; + public static readonly KW_RANGE = 220; + public static readonly KW_READ = 221; + public static readonly KW_RECURSIVE = 222; + public static readonly KW_REFRESH = 223; + public static readonly KW_RENAME = 224; + public static readonly KW_REPEAT = 225; + public static readonly KW_REPEATABLE = 226; + public static readonly KW_REPLACE = 227; + public static readonly KW_RESET = 228; + public static readonly KW_RESPECT = 229; + public static readonly KW_RESTRICT = 230; + public static readonly KW_RETURN = 231; + public static readonly KW_RETURNING = 232; + public static readonly KW_RETURNS = 233; + public static readonly KW_REVOKE = 234; + public static readonly KW_RIGHT = 235; + public static readonly KW_ROLE = 236; + public static readonly KW_ROLES = 237; + public static readonly KW_ROLLBACK = 238; + public static readonly KW_ROLLUP = 239; + public static readonly KW_ROW = 240; + public static readonly KW_ROWS = 241; + public static readonly KW_RUNNING = 242; + public static readonly KW_SCALAR = 243; + public static readonly KW_SCHEMA = 244; + public static readonly KW_SCHEMAS = 245; + public static readonly KW_SECOND = 246; + public static readonly KW_SECURITY = 247; + public static readonly KW_SEEK = 248; + public static readonly KW_SELECT = 249; + public static readonly KW_SERIALIZABLE = 250; + public static readonly KW_SESSION = 251; + public static readonly KW_SET = 252; + public static readonly KW_SETS = 253; + public static readonly KW_SHOW = 254; + public static readonly KW_SOME = 255; + public static readonly KW_START = 256; + public static readonly KW_STATS = 257; + public static readonly KW_SUBSET = 258; + public static readonly KW_SUBSTRING = 259; + public static readonly KW_SYSTEM = 260; + public static readonly KW_TABLE = 261; + public static readonly KW_TABLES = 262; + public static readonly KW_TABLESAMPLE = 263; + public static readonly KW_TEXT = 264; + public static readonly KW_TEXT_STRING = 265; + public static readonly KW_THEN = 266; + public static readonly KW_TIES = 267; + public static readonly KW_TIME = 268; + public static readonly KW_TIMESTAMP = 269; + public static readonly KW_TO = 270; + public static readonly KW_TRAILING = 271; + public static readonly KW_TRANSACTION = 272; + public static readonly KW_TRIM = 273; + public static readonly KW_TRUE = 274; + public static readonly KW_TRUNCATE = 275; + public static readonly KW_TRY_CAST = 276; + public static readonly KW_TYPE = 277; + public static readonly KW_UESCAPE = 278; + public static readonly KW_UNBOUNDED = 279; + public static readonly KW_UNCOMMITTED = 280; + public static readonly KW_UNCONDITIONAL = 281; + public static readonly KW_UNION = 282; + public static readonly KW_UNIQUE = 283; + public static readonly KW_UNKNOWN = 284; + public static readonly KW_UNMATCHED = 285; + public static readonly KW_UNNEST = 286; + public static readonly KW_UNTIL = 287; + public static readonly KW_UPDATE = 288; + public static readonly KW_USE = 289; + public static readonly KW_USER = 290; + public static readonly KW_USING = 291; + public static readonly KW_UTF16 = 292; + public static readonly KW_UTF32 = 293; + public static readonly KW_UTF8 = 294; + public static readonly KW_VALIDATE = 295; + public static readonly KW_VALUE = 296; + public static readonly KW_VALUES = 297; + public static readonly KW_VERBOSE = 298; + public static readonly KW_VERSION = 299; + public static readonly KW_VIEW = 300; + public static readonly KW_WHEN = 301; + public static readonly KW_WHERE = 302; + public static readonly KW_WHILE = 303; + public static readonly KW_WINDOW = 304; + public static readonly KW_WITH = 305; + public static readonly KW_WITHIN = 306; + public static readonly KW_WITHOUT = 307; + public static readonly KW_WORK = 308; + public static readonly KW_WRAPPER = 309; + public static readonly KW_WRITE = 310; + public static readonly KW_YEAR = 311; + public static readonly KW_ZONE = 312; + public static readonly EQ = 313; + public static readonly NEQ = 314; + public static readonly LT = 315; + public static readonly LTE = 316; + public static readonly GT = 317; + public static readonly GTE = 318; + public static readonly PLUS = 319; + public static readonly MINUS = 320; + public static readonly ASTERISK = 321; + public static readonly SLASH = 322; + public static readonly PERCENT = 323; + public static readonly CONCAT = 324; + public static readonly QUESTION_MARK = 325; + public static readonly SEMICOLON = 326; + public static readonly STRING = 327; + public static readonly UNICODE_STRING = 328; + public static readonly BINARY_LITERAL = 329; + public static readonly INTEGER_VALUE = 330; + public static readonly DECIMAL_VALUE = 331; + public static readonly DOUBLE_VALUE = 332; + public static readonly IDENTIFIER = 333; + public static readonly DIGIT_IDENTIFIER = 334; + public static readonly QUOTED_IDENTIFIER = 335; + public static readonly BACKQUOTED_IDENTIFIER = 336; + public static readonly LINE_COMMENT = 337; + public static readonly BRACKETED_COMMENT = 338; + public static readonly WHITE_SPACE = 339; + public static readonly UNRECOGNIZED = 340; public static readonly channelNames = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" @@ -361,45 +362,45 @@ export class TrinoSqlLexer extends antlr.Lexer { "'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", "'BEGIN'", "'BERNOULLI'", "'BETWEEN'", "'BOTH'", "'BY'", "'CALL'", "'CALLED'", "'CASCADE'", "'CASE'", "'CAST'", "'CATALOG'", "'CATALOGS'", - "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", - "'CONDITIONAL'", "'CONSTRAINT'", "'COUNT'", "'COPARTITION'", "'CREATE'", - "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", - "'CURRENT_PATH'", "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", - "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", - "'DEALLOCATE'", "'DECLARE'", "'DEFAULT'", "'DEFINE'", "'DEFINER'", - "'DELETE'", "'DENY'", "'DESC'", "'DESCRIBE'", "'DESCRIPTOR'", "'DETERMINISTIC'", - "'DISTINCT'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", "'DROP'", "'ELSE'", - "'EMPTY'", "'ELSEIF'", "'ENCODING'", "'END'", "'ERROR'", "'ESCAPE'", - "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", "'EXPLAIN'", - "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", "'FIRST'", - "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTION'", - "'FUNCTIONS'", "'GRACE'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'GRAPHVIZ'", - "'GROUP'", "'GROUPING'", "'GROUPS'", "'HAVING'", "'HOUR'", "'IF'", - "'IGNORE'", "'IMMEDIATE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", - "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", - "'IO'", "'IS'", "'ISOLATION'", "'ITERATE'", "'JOIN'", "'JSON'", - "'JSON_ARRAY'", "'JSON_EXISTS'", "'JSON_OBJECT'", "'JSON_QUERY'", - "'JSON_TABLE'", "'JSON_VALUE'", "'KEEP'", "'KEY'", "'KEYS'", "'LANGUAGE'", - "'LAST'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", "'LEVEL'", - "'LIKE'", "'LIMIT'", "'LISTAGG'", "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", - "'LOGICAL'", "'LOOP'", "'MAP'", "'MATCH'", "'MATCHED'", "'MATCHES'", - "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", "'MERGE'", - "'MINUTE'", "'MONTH'", "'NATURAL'", "'NESTED'", "'NEXT'", "'NFC'", - "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NONE'", "'NORMALIZE'", "'NOT'", - "'NULL'", "'NULLIF'", "'NULLS'", "'OBJECT'", "'OF'", "'OFFSET'", - "'OMIT'", "'ON'", "'ONE'", "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", - "'ORDINALITY'", "'OUTER'", "'OUTPUT'", "'OVER'", "'OVERFLOW'", "'PARTITION'", - "'PARTITIONS'", "'PASSING'", "'PAST'", "'PATH'", "'PATTERN'", "'PER'", - "'PERIOD'", "'PERMUTE'", "'PLAN'", "'POSITION'", "'PRECEDING'", - "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'PRUNE'", - "'QUOTES'", "'RANGE'", "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", - "'REPEAT'", "'REPEATABLE'", "'REPLACE'", "'RESET'", "'RESPECT'", - "'RESTRICT'", "'RETURN'", "'RETURNING'", "'RETURNS'", "'REVOKE'", - "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", - "'ROWS'", "'RUNNING'", "'SCALAR'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", - "'SECURITY'", "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", - "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", - "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'COALESCE'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", + "'COMMITTED'", "'CONDITIONAL'", "'CONSTRAINT'", "'COUNT'", "'COPARTITION'", + "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_CATALOG'", + "'CURRENT_DATE'", "'CURRENT_PATH'", "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", + "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", + "'DATE'", "'DAY'", "'DEALLOCATE'", "'DECLARE'", "'DEFAULT'", "'DEFINE'", + "'DEFINER'", "'DELETE'", "'DENY'", "'DESC'", "'DESCRIBE'", "'DESCRIPTOR'", + "'DETERMINISTIC'", "'DISTINCT'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", + "'DROP'", "'ELSE'", "'EMPTY'", "'ELSEIF'", "'ENCODING'", "'END'", + "'ERROR'", "'ESCAPE'", "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", + "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", + "'FIRST'", "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", + "'FUNCTION'", "'FUNCTIONS'", "'GRACE'", "'GRANT'", "'GRANTED'", + "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", "'GROUPING'", "'GROUPS'", "'HAVING'", + "'HOUR'", "'IF'", "'IGNORE'", "'IMMEDIATE'", "'IN'", "'INCLUDING'", + "'INITIAL'", "'INNER'", "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", + "'INTO'", "'INVOKER'", "'IO'", "'IS'", "'ISOLATION'", "'ITERATE'", + "'JOIN'", "'JSON'", "'JSON_ARRAY'", "'JSON_EXISTS'", "'JSON_OBJECT'", + "'JSON_QUERY'", "'JSON_TABLE'", "'JSON_VALUE'", "'KEEP'", "'KEY'", + "'KEYS'", "'LANGUAGE'", "'LAST'", "'LATERAL'", "'LEADING'", "'LEAVE'", + "'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LISTAGG'", "'LOCAL'", + "'LOCALTIME'", "'LOCALTIMESTAMP'", "'LOGICAL'", "'LOOP'", "'MAP'", + "'MATCH'", "'MATCHED'", "'MATCHES'", "'MATCH_RECOGNIZE'", "'MATERIALIZED'", + "'MEASURES'", "'MERGE'", "'MINUTE'", "'MONTH'", "'NATURAL'", "'NESTED'", + "'NEXT'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NONE'", + "'NORMALIZE'", "'NOT'", "'NULL'", "'NULLIF'", "'NULLS'", "'OBJECT'", + "'OF'", "'OFFSET'", "'OMIT'", "'ON'", "'ONE'", "'ONLY'", "'OPTION'", + "'OR'", "'ORDER'", "'ORDINALITY'", "'OUTER'", "'OUTPUT'", "'OVER'", + "'OVERFLOW'", "'PARTITION'", "'PARTITIONS'", "'PASSING'", "'PAST'", + "'PATH'", "'PATTERN'", "'PER'", "'PERIOD'", "'PERMUTE'", "'PLAN'", + "'POSITION'", "'PRECEDING'", "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", + "'PROPERTIES'", "'PRUNE'", "'QUOTES'", "'RANGE'", "'READ'", "'RECURSIVE'", + "'REFRESH'", "'RENAME'", "'REPEAT'", "'REPEATABLE'", "'REPLACE'", + "'RESET'", "'RESPECT'", "'RESTRICT'", "'RETURN'", "'RETURNING'", + "'RETURNS'", "'REVOKE'", "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", + "'ROLLUP'", "'ROW'", "'ROWS'", "'RUNNING'", "'SCALAR'", "'SCHEMA'", + "'SCHEMAS'", "'SECOND'", "'SECURITY'", "'SEEK'", "'SELECT'", "'SERIALIZABLE'", + "'SESSION'", "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'START'", "'STATS'", + "'SUBSET'", "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TEXT'", "'STRING'", "'THEN'", "'TIES'", "'TIME'", "'TIMESTAMP'", "'TO'", "'TRAILING'", "'TRANSACTION'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", @@ -419,8 +420,8 @@ export class TrinoSqlLexer extends antlr.Lexer { "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BEGIN", "KW_BERNOULLI", "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", "KW_CALLED", "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", - "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", - "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", + "KW_COALESCE", "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", + "KW_COMMITTED", "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", "KW_CREATE", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", @@ -489,14 +490,14 @@ export class TrinoSqlLexer extends antlr.Lexer { "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BEGIN", "KW_BERNOULLI", "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", "KW_CALLED", "KW_CASCADE", - "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", "KW_COLUMN", - "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", "KW_CONDITIONAL", - "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", "KW_CREATE", "KW_CROSS", - "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", - "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", - "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", "KW_DATE", - "KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULT", "KW_DEFINE", - "KW_DEFINER", "KW_DELETE", "KW_DENY", "KW_DESC", "KW_DESCRIBE", + "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", "KW_COALESCE", + "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", + "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", + "KW_CREATE", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", + "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", + "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", + "KW_DATE", "KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULT", + "KW_DEFINE", "KW_DEFINER", "KW_DELETE", "KW_DENY", "KW_DESC", "KW_DESCRIBE", "KW_DESCRIPTOR", "KW_DETERMINISTIC", "KW_DISTINCT", "KW_DISTRIBUTED", "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_ELSEIF", "KW_ENCODING", "KW_END", "KW_ERROR", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", @@ -569,7 +570,7 @@ export class TrinoSqlLexer extends antlr.Lexer { public get modeNames(): string[] { return TrinoSqlLexer.modeNames; } public static readonly _serializedATN: number[] = [ - 4,0,339,3114,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7, + 4,0,340,3125,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7, 5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12, 2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19, 7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25, @@ -629,1109 +630,1114 @@ export class TrinoSqlLexer extends antlr.Lexer { 2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334, 7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339, 2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345, - 7,345,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,5,1, - 5,1,5,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1, - 12,1,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1, - 17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1, - 19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1, - 22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1, - 23,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1, - 26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1, - 30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1, - 31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, - 32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1, - 34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1, - 37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1, - 39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1, - 41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, - 42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1, - 44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1, - 46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, - 47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1, - 48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1, - 50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1, - 51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1, - 53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1, - 56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1, - 57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1, - 58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1, - 59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1, - 60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1, - 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1, - 62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1, - 62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, - 63,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1, - 66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1, - 68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1, - 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1, - 73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1, - 75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1, - 76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1, - 79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1, - 80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1, - 82,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1, - 85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1, - 86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1, - 89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1, - 91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1, - 92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1, - 94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1, - 95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1, - 97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1, - 99,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1, - 101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,103, - 1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104, - 1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106, - 1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, - 1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109, - 1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, - 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112, - 1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113, - 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115, - 1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116, - 1,116,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,119,1,119, - 1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120, - 1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122,1,122, - 1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123, - 1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125, - 1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126, - 1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128, - 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129, - 1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131, - 1,131,1,131,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136, - 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137, - 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138, - 1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, - 1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140, - 1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141, - 1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, - 1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144, - 1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146, - 1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148, - 1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149, - 1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151, - 1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153, - 1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155, - 1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156, - 1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,158, - 1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158, - 1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159, - 1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,162,1,162, - 1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163, - 1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165, - 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165, - 1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166, - 1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167, - 1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,169,1,169, - 1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170, - 1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172, - 1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,174,1,174, - 1,174,1,174,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176, - 1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,179,1,179,1,179, - 1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180, - 1,180,1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,183, - 1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184, - 1,184,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186, - 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188, - 1,188,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,191,1,191,1,191, - 1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193, - 1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195, - 1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196, - 1,196,1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198,1,198, - 1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, - 1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200, - 1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201, - 1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,203,1,203,1,203, - 1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205, - 1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,207,1,207,1,207, - 1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208,1,208, - 1,208,1,209,1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210, - 1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211, + 7,345,2,346,7,346,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1, + 4,1,4,1,5,1,5,1,5,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10, + 1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,16, + 1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,19, + 1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21, + 1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23, + 1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,26,1,26, + 1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,29,1,29, + 1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32, + 1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33, + 1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36, + 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,41, + 1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44, + 1,44,1,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45, + 1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47, + 1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48, + 1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50, + 1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51, + 1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52, + 1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54, + 1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56, + 1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57, + 1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58, + 1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59, + 1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60, + 1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61, + 1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,62, + 1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63, + 1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64, + 1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65, + 1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67, + 1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69, + 1,69,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70, + 1,70,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74, + 1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76, + 1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77, + 1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78, + 1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80, + 1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81, + 1,82,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,84, + 1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86, + 1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87, + 1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90, + 1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92, + 1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93, + 1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95, + 1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,96, + 1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,99, + 1,99,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100, + 1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102, + 1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,104,1,104, + 1,104,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,106, + 1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108, + 1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110, + 1,110,1,110,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112, + 1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113, + 1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,115, + 1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116, + 1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117, + 1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,120,1,120,1,120, + 1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121, + 1,121,1,121,1,121,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124, + 1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126, + 1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129, + 1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130, + 1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132, + 1,132,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134, + 1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135, + 1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,138, + 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139, + 1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, + 1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140, + 1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, + 1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143, + 1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,146, + 1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147, + 1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149, + 1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,150, + 1,150,1,151,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152, + 1,152,1,153,1,153,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154, + 1,154,1,155,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,158, + 1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159, + 1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159, + 1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,160,1,161, + 1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,163,1,163,1,163, + 1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, + 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166, + 1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166, + 1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167, + 1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,168, + 1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170, + 1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,172, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173, + 1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,174,1,175,1,175,1,175, + 1,175,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,178, + 1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,180, + 1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181, + 1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,184,1,184, + 1,184,1,184,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,185, + 1,186,1,186,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,188, + 1,188,1,188,1,188,1,188,1,188,1,188,1,189,1,189,1,189,1,189,1,189, + 1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192, + 1,192,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,194,1,194,1,194, + 1,195,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196, + 1,196,1,196,1,196,1,196,1,196,1,196,1,197,1,197,1,197,1,197,1,197, + 1,197,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,199,1,199,1,199, + 1,199,1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200, + 1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,202, + 1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,203, + 1,203,1,203,1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204, + 1,204,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,206, + 1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208, + 1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,209,1,209, + 1,210,1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211, 1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212, - 1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,214, - 1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,215, - 1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216, - 1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217,1,217, - 1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219, - 1,219,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220, - 1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,222,1,222,1,222, - 1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, - 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226, - 1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, - 1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,229,1,229, - 1,229,1,229,1,229,1,229,1,229,1,230,1,230,1,230,1,230,1,230,1,230, + 1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213, + 1,213,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,215,1,215, + 1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,217,1,217, + 1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,218, + 1,219,1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,1,220, + 1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,222, + 1,222,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,225, + 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226, + 1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227, + 1,227,1,227,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,229, + 1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,230,1,230,1,230, 1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,1,231,1,231,1,231, - 1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,233,1,233,1,233, - 1,233,1,233,1,233,1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235, - 1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,236, - 1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,238,1,238,1,238, - 1,238,1,239,1,239,1,239,1,239,1,239,1,240,1,240,1,240,1,240,1,240, - 1,240,1,240,1,240,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,242, - 1,242,1,242,1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243, - 1,243,1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,245, - 1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,246,1,246,1,246, - 1,246,1,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,248,1,248, - 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248, - 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250,1,250, - 1,250,1,251,1,251,1,251,1,251,1,251,1,252,1,252,1,252,1,252,1,252, - 1,253,1,253,1,253,1,253,1,253,1,254,1,254,1,254,1,254,1,254,1,254, - 1,255,1,255,1,255,1,255,1,255,1,255,1,256,1,256,1,256,1,256,1,256, - 1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257, - 1,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259,1,259,1,259, - 1,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,261, - 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, - 1,262,1,262,1,262,1,262,1,262,1,263,1,263,1,263,1,263,1,263,1,263, - 1,263,1,264,1,264,1,264,1,264,1,264,1,265,1,265,1,265,1,265,1,265, - 1,266,1,266,1,266,1,266,1,266,1,267,1,267,1,267,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,1,268,1,268,1,268,1,269,1,269,1,269,1,269, - 1,269,1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270, - 1,270,1,270,1,270,1,270,1,270,1,270,1,271,1,271,1,271,1,271,1,271, - 1,272,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,273, - 1,273,1,273,1,273,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274, - 1,274,1,275,1,275,1,275,1,275,1,275,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,232, + 1,233,1,233,1,233,1,233,1,233,1,233,1,233,1,234,1,234,1,234,1,234, + 1,234,1,234,1,235,1,235,1,235,1,235,1,235,1,236,1,236,1,236,1,236, + 1,236,1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237, + 1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,239,1,239,1,239,1,239, + 1,240,1,240,1,240,1,240,1,240,1,241,1,241,1,241,1,241,1,241,1,241, + 1,241,1,241,1,242,1,242,1,242,1,242,1,242,1,242,1,242,1,243,1,243, + 1,243,1,243,1,243,1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244, + 1,244,1,244,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,246,1,246, + 1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,247,1,247,1,247,1,247, + 1,247,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,251,1,251,1,251,1,251, + 1,252,1,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,253,1,254, + 1,254,1,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,256, + 1,256,1,256,1,256,1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257, + 1,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, + 1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,260,1,260,1,260,1,260, + 1,260,1,260,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,262,1,262, + 1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,263, + 1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,1,264,1,264,1,264, + 1,265,1,265,1,265,1,265,1,265,1,266,1,266,1,266,1,266,1,266,1,267, + 1,267,1,267,1,267,1,267,1,268,1,268,1,268,1,268,1,268,1,268,1,268, + 1,268,1,268,1,268,1,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270, + 1,270,1,270,1,270,1,270,1,271,1,271,1,271,1,271,1,271,1,271,1,271, + 1,271,1,271,1,271,1,271,1,271,1,272,1,272,1,272,1,272,1,272,1,273, + 1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,274,1,274,1,274,1,274, + 1,274,1,274,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, + 1,276,1,276,1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277, 1,277,1,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, - 1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279, - 1,279,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280,1,280,1,280, - 1,280,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,282,1,282,1,282, - 1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,283,1,283, + 1,278,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279, + 1,279,1,279,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280, + 1,280,1,280,1,280,1,280,1,280,1,281,1,281,1,281,1,281,1,281,1,281, + 1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283, 1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,284,1,284, - 1,285,1,285,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286, - 1,286,1,286,1,287,1,287,1,287,1,287,1,288,1,288,1,288,1,288,1,288, - 1,289,1,289,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,290,1,290, - 1,290,1,291,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,1,292, - 1,292,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,294, - 1,294,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295, - 1,295,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,297,1,297, - 1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298, - 1,299,1,299,1,299,1,299,1,299,1,300,1,300,1,300,1,300,1,300,1,300, - 1,301,1,301,1,301,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302, - 1,302,1,302,1,303,1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304, - 1,304,1,304,1,304,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305, - 1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307,1,307,1,307,1,307, - 1,307,1,307,1,308,1,308,1,308,1,308,1,308,1,308,1,309,1,309,1,309, - 1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,311,1,311,1,312,1,312, - 1,312,1,312,3,312,2871,8,312,1,313,1,313,1,314,1,314,1,314,1,315, - 1,315,1,316,1,316,1,316,1,317,1,317,1,318,1,318,1,319,1,319,1,320, - 1,320,1,321,1,321,1,322,1,322,1,322,1,323,1,323,1,324,1,324,1,325, - 1,325,1,325,1,325,5,325,2904,8,325,10,325,12,325,2907,9,325,1,325, - 1,325,1,326,1,326,1,326,1,326,1,326,1,326,1,326,5,326,2918,8,326, - 10,326,12,326,2921,9,326,1,326,1,326,1,327,1,327,1,327,1,327,5,327, - 2929,8,327,10,327,12,327,2932,9,327,1,327,1,327,1,328,1,328,1,328, - 1,328,3,328,2940,8,328,1,329,1,329,1,329,3,329,2945,8,329,1,329, - 1,329,3,329,2949,8,329,1,330,4,330,2952,8,330,11,330,12,330,2953, - 1,330,1,330,5,330,2958,8,330,10,330,12,330,2961,9,330,3,330,2963, - 8,330,1,330,1,330,1,330,1,330,4,330,2969,8,330,11,330,12,330,2970, - 1,330,1,330,3,330,2975,8,330,1,331,1,331,3,331,2979,8,331,1,331, - 1,331,1,331,5,331,2984,8,331,10,331,12,331,2987,9,331,1,332,1,332, - 1,332,1,332,4,332,2993,8,332,11,332,12,332,2994,1,333,1,333,1,333, - 1,333,5,333,3001,8,333,10,333,12,333,3004,9,333,1,333,1,333,1,334, - 1,334,1,334,1,334,5,334,3012,8,334,10,334,12,334,3015,9,334,1,334, - 1,334,1,335,1,335,3,335,3021,8,335,1,335,5,335,3024,8,335,10,335, - 12,335,3027,9,335,1,336,1,336,1,336,1,336,3,336,3033,8,336,1,336, - 1,336,3,336,3037,8,336,4,336,3039,8,336,11,336,12,336,3040,1,337, - 1,337,1,337,1,337,3,337,3047,8,337,1,337,4,337,3050,8,337,11,337, - 12,337,3051,1,338,1,338,1,338,1,338,3,338,3058,8,338,1,338,4,338, - 3061,8,338,11,338,12,338,3062,1,339,1,339,3,339,3067,8,339,1,339, - 4,339,3070,8,339,11,339,12,339,3071,1,340,1,340,1,341,1,341,1,342, - 1,342,1,342,1,342,5,342,3082,8,342,10,342,12,342,3085,9,342,1,342, - 3,342,3088,8,342,1,342,3,342,3091,8,342,1,342,1,342,1,343,1,343, - 1,343,1,343,5,343,3099,8,343,10,343,12,343,3102,9,343,1,343,1,343, - 1,343,1,343,1,343,1,344,1,344,1,344,1,344,1,345,1,345,1,3100,0,346, - 1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13, - 27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24, - 49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35, - 71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46, - 93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56, - 113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131, - 66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75, - 151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169, - 85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94, - 189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103, - 207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111, - 223,112,225,113,227,114,229,115,231,116,233,117,235,118,237,119, - 239,120,241,121,243,122,245,123,247,124,249,125,251,126,253,127, - 255,128,257,129,259,130,261,131,263,132,265,133,267,134,269,135, - 271,136,273,137,275,138,277,139,279,140,281,141,283,142,285,143, - 287,144,289,145,291,146,293,147,295,148,297,149,299,150,301,151, - 303,152,305,153,307,154,309,155,311,156,313,157,315,158,317,159, - 319,160,321,161,323,162,325,163,327,164,329,165,331,166,333,167, - 335,168,337,169,339,170,341,171,343,172,345,173,347,174,349,175, - 351,176,353,177,355,178,357,179,359,180,361,181,363,182,365,183, - 367,184,369,185,371,186,373,187,375,188,377,189,379,190,381,191, - 383,192,385,193,387,194,389,195,391,196,393,197,395,198,397,199, - 399,200,401,201,403,202,405,203,407,204,409,205,411,206,413,207, - 415,208,417,209,419,210,421,211,423,212,425,213,427,214,429,215, - 431,216,433,217,435,218,437,219,439,220,441,221,443,222,445,223, - 447,224,449,225,451,226,453,227,455,228,457,229,459,230,461,231, - 463,232,465,233,467,234,469,235,471,236,473,237,475,238,477,239, - 479,240,481,241,483,242,485,243,487,244,489,245,491,246,493,247, - 495,248,497,249,499,250,501,251,503,252,505,253,507,254,509,255, - 511,256,513,257,515,258,517,259,519,260,521,261,523,262,525,263, - 527,264,529,265,531,266,533,267,535,268,537,269,539,270,541,271, - 543,272,545,273,547,274,549,275,551,276,553,277,555,278,557,279, - 559,280,561,281,563,282,565,283,567,284,569,285,571,286,573,287, - 575,288,577,289,579,290,581,291,583,292,585,293,587,294,589,295, - 591,296,593,297,595,298,597,299,599,300,601,301,603,302,605,303, - 607,304,609,305,611,306,613,307,615,308,617,309,619,310,621,311, - 623,312,625,313,627,314,629,315,631,316,633,317,635,318,637,319, - 639,320,641,321,643,322,645,323,647,324,649,325,651,326,653,327, - 655,328,657,329,659,330,661,331,663,332,665,333,667,334,669,335, - 671,0,673,0,675,0,677,0,679,0,681,0,683,0,685,336,687,337,689,338, - 691,339,1,0,37,2,0,83,83,115,115,2,0,75,75,107,107,2,0,73,73,105, - 105,2,0,80,80,112,112,2,0,65,65,97,97,2,0,66,66,98,98,2,0,69,69, - 101,101,2,0,78,78,110,110,2,0,84,84,116,116,2,0,68,68,100,100,2, - 0,77,77,109,109,2,0,70,70,102,102,2,0,82,82,114,114,2,0,76,76,108, - 108,2,0,89,89,121,121,2,0,90,90,122,122,2,0,67,67,99,99,2,0,85,85, - 117,117,2,0,72,72,104,104,2,0,79,79,111,111,2,0,71,71,103,103,2, - 0,87,87,119,119,2,0,88,88,120,120,2,0,86,86,118,118,2,0,74,74,106, - 106,2,0,81,81,113,113,1,0,39,39,1,0,34,34,1,0,96,96,2,0,65,70,97, - 102,1,0,48,55,1,0,48,49,2,0,43,43,45,45,1,0,48,57,2,0,65,90,97,122, - 2,0,10,10,13,13,3,0,9,10,13,13,32,32,3148,0,1,1,0,0,0,0,3,1,0,0, - 0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0, - 0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0, - 0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0, - 0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0, - 0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0, - 0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0, - 0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0, - 0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0, - 0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0, - 0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0, - 0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113, - 1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0, - 0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1, - 0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0, - 141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0, - 0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159, - 1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0, - 0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1, - 0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0, - 187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0, - 0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205, - 1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0, - 0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1, - 0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0, - 233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0, - 0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251, - 1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0, - 0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1, - 0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0, - 279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0, - 0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297, - 1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0, - 0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1, - 0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0, - 325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0, - 0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343, - 1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0, - 0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1, - 0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0, - 371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0, - 0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389, - 1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0, - 0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1, - 0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0, - 417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0, - 0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435, - 1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0, - 0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1, - 0,0,0,0,455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0, - 463,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0, - 0,0,0,473,1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481, - 1,0,0,0,0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0, - 0,491,1,0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,0,499,1, - 0,0,0,0,501,1,0,0,0,0,503,1,0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0, - 509,1,0,0,0,0,511,1,0,0,0,0,513,1,0,0,0,0,515,1,0,0,0,0,517,1,0, - 0,0,0,519,1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527, - 1,0,0,0,0,529,1,0,0,0,0,531,1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0, - 0,537,1,0,0,0,0,539,1,0,0,0,0,541,1,0,0,0,0,543,1,0,0,0,0,545,1, - 0,0,0,0,547,1,0,0,0,0,549,1,0,0,0,0,551,1,0,0,0,0,553,1,0,0,0,0, - 555,1,0,0,0,0,557,1,0,0,0,0,559,1,0,0,0,0,561,1,0,0,0,0,563,1,0, - 0,0,0,565,1,0,0,0,0,567,1,0,0,0,0,569,1,0,0,0,0,571,1,0,0,0,0,573, - 1,0,0,0,0,575,1,0,0,0,0,577,1,0,0,0,0,579,1,0,0,0,0,581,1,0,0,0, - 0,583,1,0,0,0,0,585,1,0,0,0,0,587,1,0,0,0,0,589,1,0,0,0,0,591,1, - 0,0,0,0,593,1,0,0,0,0,595,1,0,0,0,0,597,1,0,0,0,0,599,1,0,0,0,0, - 601,1,0,0,0,0,603,1,0,0,0,0,605,1,0,0,0,0,607,1,0,0,0,0,609,1,0, - 0,0,0,611,1,0,0,0,0,613,1,0,0,0,0,615,1,0,0,0,0,617,1,0,0,0,0,619, - 1,0,0,0,0,621,1,0,0,0,0,623,1,0,0,0,0,625,1,0,0,0,0,627,1,0,0,0, - 0,629,1,0,0,0,0,631,1,0,0,0,0,633,1,0,0,0,0,635,1,0,0,0,0,637,1, - 0,0,0,0,639,1,0,0,0,0,641,1,0,0,0,0,643,1,0,0,0,0,645,1,0,0,0,0, - 647,1,0,0,0,0,649,1,0,0,0,0,651,1,0,0,0,0,653,1,0,0,0,0,655,1,0, - 0,0,0,657,1,0,0,0,0,659,1,0,0,0,0,661,1,0,0,0,0,663,1,0,0,0,0,665, - 1,0,0,0,0,667,1,0,0,0,0,669,1,0,0,0,0,685,1,0,0,0,0,687,1,0,0,0, - 0,689,1,0,0,0,0,691,1,0,0,0,1,693,1,0,0,0,3,695,1,0,0,0,5,697,1, - 0,0,0,7,699,1,0,0,0,9,701,1,0,0,0,11,706,1,0,0,0,13,709,1,0,0,0, - 15,712,1,0,0,0,17,714,1,0,0,0,19,716,1,0,0,0,21,718,1,0,0,0,23,720, - 1,0,0,0,25,722,1,0,0,0,27,724,1,0,0,0,29,727,1,0,0,0,31,730,1,0, - 0,0,33,732,1,0,0,0,35,734,1,0,0,0,37,741,1,0,0,0,39,745,1,0,0,0, - 41,751,1,0,0,0,43,757,1,0,0,0,45,761,1,0,0,0,47,767,1,0,0,0,49,775, - 1,0,0,0,51,779,1,0,0,0,53,783,1,0,0,0,55,789,1,0,0,0,57,792,1,0, - 0,0,59,796,1,0,0,0,61,799,1,0,0,0,63,813,1,0,0,0,65,819,1,0,0,0, - 67,829,1,0,0,0,69,837,1,0,0,0,71,842,1,0,0,0,73,845,1,0,0,0,75,850, - 1,0,0,0,77,857,1,0,0,0,79,865,1,0,0,0,81,870,1,0,0,0,83,875,1,0, - 0,0,85,883,1,0,0,0,87,892,1,0,0,0,89,899,1,0,0,0,91,907,1,0,0,0, - 93,915,1,0,0,0,95,922,1,0,0,0,97,932,1,0,0,0,99,944,1,0,0,0,101, - 955,1,0,0,0,103,961,1,0,0,0,105,973,1,0,0,0,107,980,1,0,0,0,109, - 986,1,0,0,0,111,991,1,0,0,0,113,999,1,0,0,0,115,1015,1,0,0,0,117, - 1028,1,0,0,0,119,1041,1,0,0,0,121,1054,1,0,0,0,123,1069,1,0,0,0, - 125,1082,1,0,0,0,127,1100,1,0,0,0,129,1113,1,0,0,0,131,1118,1,0, - 0,0,133,1123,1,0,0,0,135,1127,1,0,0,0,137,1138,1,0,0,0,139,1146, - 1,0,0,0,141,1154,1,0,0,0,143,1161,1,0,0,0,145,1169,1,0,0,0,147,1176, - 1,0,0,0,149,1181,1,0,0,0,151,1186,1,0,0,0,153,1195,1,0,0,0,155,1206, - 1,0,0,0,157,1220,1,0,0,0,159,1229,1,0,0,0,161,1241,1,0,0,0,163,1244, - 1,0,0,0,165,1251,1,0,0,0,167,1256,1,0,0,0,169,1261,1,0,0,0,171,1267, - 1,0,0,0,173,1274,1,0,0,0,175,1283,1,0,0,0,177,1287,1,0,0,0,179,1293, - 1,0,0,0,181,1300,1,0,0,0,183,1307,1,0,0,0,185,1317,1,0,0,0,187,1325, - 1,0,0,0,189,1332,1,0,0,0,191,1340,1,0,0,0,193,1348,1,0,0,0,195,1354, - 1,0,0,0,197,1360,1,0,0,0,199,1367,1,0,0,0,201,1373,1,0,0,0,203,1379, - 1,0,0,0,205,1389,1,0,0,0,207,1393,1,0,0,0,209,1400,1,0,0,0,211,1405, - 1,0,0,0,213,1410,1,0,0,0,215,1419,1,0,0,0,217,1429,1,0,0,0,219,1435, - 1,0,0,0,221,1441,1,0,0,0,223,1449,1,0,0,0,225,1456,1,0,0,0,227,1465, - 1,0,0,0,229,1471,1,0,0,0,231,1480,1,0,0,0,233,1487,1,0,0,0,235,1494, - 1,0,0,0,237,1499,1,0,0,0,239,1502,1,0,0,0,241,1509,1,0,0,0,243,1519, - 1,0,0,0,245,1522,1,0,0,0,247,1532,1,0,0,0,249,1540,1,0,0,0,251,1546, - 1,0,0,0,253,1552,1,0,0,0,255,1559,1,0,0,0,257,1569,1,0,0,0,259,1578, - 1,0,0,0,261,1583,1,0,0,0,263,1591,1,0,0,0,265,1594,1,0,0,0,267,1597, - 1,0,0,0,269,1607,1,0,0,0,271,1615,1,0,0,0,273,1620,1,0,0,0,275,1625, - 1,0,0,0,277,1636,1,0,0,0,279,1648,1,0,0,0,281,1660,1,0,0,0,283,1671, - 1,0,0,0,285,1682,1,0,0,0,287,1693,1,0,0,0,289,1698,1,0,0,0,291,1702, - 1,0,0,0,293,1707,1,0,0,0,295,1716,1,0,0,0,297,1721,1,0,0,0,299,1729, - 1,0,0,0,301,1737,1,0,0,0,303,1743,1,0,0,0,305,1748,1,0,0,0,307,1754, - 1,0,0,0,309,1759,1,0,0,0,311,1765,1,0,0,0,313,1773,1,0,0,0,315,1779, - 1,0,0,0,317,1789,1,0,0,0,319,1804,1,0,0,0,321,1812,1,0,0,0,323,1817, - 1,0,0,0,325,1821,1,0,0,0,327,1827,1,0,0,0,329,1835,1,0,0,0,331,1843, - 1,0,0,0,333,1859,1,0,0,0,335,1872,1,0,0,0,337,1881,1,0,0,0,339,1887, - 1,0,0,0,341,1894,1,0,0,0,343,1900,1,0,0,0,345,1908,1,0,0,0,347,1915, - 1,0,0,0,349,1920,1,0,0,0,351,1924,1,0,0,0,353,1928,1,0,0,0,355,1933, - 1,0,0,0,357,1938,1,0,0,0,359,1941,1,0,0,0,361,1946,1,0,0,0,363,1956, - 1,0,0,0,365,1960,1,0,0,0,367,1965,1,0,0,0,369,1972,1,0,0,0,371,1978, - 1,0,0,0,373,1985,1,0,0,0,375,1988,1,0,0,0,377,1995,1,0,0,0,379,2000, - 1,0,0,0,381,2003,1,0,0,0,383,2007,1,0,0,0,385,2012,1,0,0,0,387,2019, - 1,0,0,0,389,2022,1,0,0,0,391,2028,1,0,0,0,393,2039,1,0,0,0,395,2045, - 1,0,0,0,397,2052,1,0,0,0,399,2057,1,0,0,0,401,2066,1,0,0,0,403,2076, - 1,0,0,0,405,2087,1,0,0,0,407,2095,1,0,0,0,409,2100,1,0,0,0,411,2105, - 1,0,0,0,413,2113,1,0,0,0,415,2117,1,0,0,0,417,2124,1,0,0,0,419,2132, - 1,0,0,0,421,2137,1,0,0,0,423,2146,1,0,0,0,425,2156,1,0,0,0,427,2166, - 1,0,0,0,429,2174,1,0,0,0,431,2185,1,0,0,0,433,2196,1,0,0,0,435,2202, - 1,0,0,0,437,2209,1,0,0,0,439,2215,1,0,0,0,441,2220,1,0,0,0,443,2230, - 1,0,0,0,445,2238,1,0,0,0,447,2245,1,0,0,0,449,2252,1,0,0,0,451,2263, - 1,0,0,0,453,2271,1,0,0,0,455,2277,1,0,0,0,457,2285,1,0,0,0,459,2294, - 1,0,0,0,461,2301,1,0,0,0,463,2311,1,0,0,0,465,2319,1,0,0,0,467,2326, - 1,0,0,0,469,2332,1,0,0,0,471,2337,1,0,0,0,473,2343,1,0,0,0,475,2352, - 1,0,0,0,477,2359,1,0,0,0,479,2363,1,0,0,0,481,2368,1,0,0,0,483,2376, - 1,0,0,0,485,2383,1,0,0,0,487,2390,1,0,0,0,489,2398,1,0,0,0,491,2405, - 1,0,0,0,493,2414,1,0,0,0,495,2419,1,0,0,0,497,2426,1,0,0,0,499,2439, - 1,0,0,0,501,2447,1,0,0,0,503,2451,1,0,0,0,505,2456,1,0,0,0,507,2461, - 1,0,0,0,509,2466,1,0,0,0,511,2472,1,0,0,0,513,2478,1,0,0,0,515,2485, - 1,0,0,0,517,2495,1,0,0,0,519,2502,1,0,0,0,521,2508,1,0,0,0,523,2515, - 1,0,0,0,525,2527,1,0,0,0,527,2532,1,0,0,0,529,2539,1,0,0,0,531,2544, - 1,0,0,0,533,2549,1,0,0,0,535,2554,1,0,0,0,537,2564,1,0,0,0,539,2567, - 1,0,0,0,541,2576,1,0,0,0,543,2588,1,0,0,0,545,2593,1,0,0,0,547,2598, - 1,0,0,0,549,2607,1,0,0,0,551,2616,1,0,0,0,553,2621,1,0,0,0,555,2629, - 1,0,0,0,557,2639,1,0,0,0,559,2651,1,0,0,0,561,2665,1,0,0,0,563,2671, - 1,0,0,0,565,2678,1,0,0,0,567,2686,1,0,0,0,569,2696,1,0,0,0,571,2703, - 1,0,0,0,573,2709,1,0,0,0,575,2716,1,0,0,0,577,2720,1,0,0,0,579,2725, - 1,0,0,0,581,2731,1,0,0,0,583,2737,1,0,0,0,585,2743,1,0,0,0,587,2748, - 1,0,0,0,589,2757,1,0,0,0,591,2763,1,0,0,0,593,2770,1,0,0,0,595,2778, - 1,0,0,0,597,2786,1,0,0,0,599,2791,1,0,0,0,601,2796,1,0,0,0,603,2802, - 1,0,0,0,605,2808,1,0,0,0,607,2815,1,0,0,0,609,2820,1,0,0,0,611,2827, - 1,0,0,0,613,2835,1,0,0,0,615,2840,1,0,0,0,617,2848,1,0,0,0,619,2854, - 1,0,0,0,621,2859,1,0,0,0,623,2864,1,0,0,0,625,2870,1,0,0,0,627,2872, - 1,0,0,0,629,2874,1,0,0,0,631,2877,1,0,0,0,633,2879,1,0,0,0,635,2882, - 1,0,0,0,637,2884,1,0,0,0,639,2886,1,0,0,0,641,2888,1,0,0,0,643,2890, - 1,0,0,0,645,2892,1,0,0,0,647,2895,1,0,0,0,649,2897,1,0,0,0,651,2899, - 1,0,0,0,653,2910,1,0,0,0,655,2924,1,0,0,0,657,2939,1,0,0,0,659,2948, - 1,0,0,0,661,2974,1,0,0,0,663,2978,1,0,0,0,665,2988,1,0,0,0,667,2996, - 1,0,0,0,669,3007,1,0,0,0,671,3018,1,0,0,0,673,3028,1,0,0,0,675,3042, - 1,0,0,0,677,3053,1,0,0,0,679,3064,1,0,0,0,681,3073,1,0,0,0,683,3075, - 1,0,0,0,685,3077,1,0,0,0,687,3094,1,0,0,0,689,3108,1,0,0,0,691,3112, - 1,0,0,0,693,694,5,40,0,0,694,2,1,0,0,0,695,696,5,41,0,0,696,4,1, - 0,0,0,697,698,5,44,0,0,698,6,1,0,0,0,699,700,5,46,0,0,700,8,1,0, - 0,0,701,702,7,0,0,0,702,703,7,1,0,0,703,704,7,2,0,0,704,705,7,3, - 0,0,705,10,1,0,0,0,706,707,5,61,0,0,707,708,5,62,0,0,708,12,1,0, - 0,0,709,710,5,45,0,0,710,711,5,62,0,0,711,14,1,0,0,0,712,713,5,91, - 0,0,713,16,1,0,0,0,714,715,5,93,0,0,715,18,1,0,0,0,716,717,5,58, - 0,0,717,20,1,0,0,0,718,719,5,124,0,0,719,22,1,0,0,0,720,721,5,94, - 0,0,721,24,1,0,0,0,722,723,5,36,0,0,723,26,1,0,0,0,724,725,5,123, - 0,0,725,726,5,45,0,0,726,28,1,0,0,0,727,728,5,45,0,0,728,729,5,125, - 0,0,729,30,1,0,0,0,730,731,5,123,0,0,731,32,1,0,0,0,732,733,5,125, - 0,0,733,34,1,0,0,0,734,735,7,4,0,0,735,736,7,5,0,0,736,737,7,0,0, - 0,737,738,7,6,0,0,738,739,7,7,0,0,739,740,7,8,0,0,740,36,1,0,0,0, - 741,742,7,4,0,0,742,743,7,9,0,0,743,744,7,9,0,0,744,38,1,0,0,0,745, - 746,7,4,0,0,746,747,7,9,0,0,747,748,7,10,0,0,748,749,7,2,0,0,749, - 750,7,7,0,0,750,40,1,0,0,0,751,752,7,4,0,0,752,753,7,11,0,0,753, - 754,7,8,0,0,754,755,7,6,0,0,755,756,7,12,0,0,756,42,1,0,0,0,757, - 758,7,4,0,0,758,759,7,13,0,0,759,760,7,13,0,0,760,44,1,0,0,0,761, - 762,7,4,0,0,762,763,7,13,0,0,763,764,7,8,0,0,764,765,7,6,0,0,765, - 766,7,12,0,0,766,46,1,0,0,0,767,768,7,4,0,0,768,769,7,7,0,0,769, - 770,7,4,0,0,770,771,7,13,0,0,771,772,7,14,0,0,772,773,7,15,0,0,773, - 774,7,6,0,0,774,48,1,0,0,0,775,776,7,4,0,0,776,777,7,7,0,0,777,778, - 7,9,0,0,778,50,1,0,0,0,779,780,7,4,0,0,780,781,7,7,0,0,781,782,7, - 14,0,0,782,52,1,0,0,0,783,784,7,4,0,0,784,785,7,12,0,0,785,786,7, - 12,0,0,786,787,7,4,0,0,787,788,7,14,0,0,788,54,1,0,0,0,789,790,7, - 4,0,0,790,791,7,0,0,0,791,56,1,0,0,0,792,793,7,4,0,0,793,794,7,0, - 0,0,794,795,7,16,0,0,795,58,1,0,0,0,796,797,7,4,0,0,797,798,7,8, - 0,0,798,60,1,0,0,0,799,800,7,4,0,0,800,801,7,17,0,0,801,802,7,8, - 0,0,802,803,7,18,0,0,803,804,7,19,0,0,804,805,7,12,0,0,805,806,7, - 2,0,0,806,807,7,15,0,0,807,808,7,4,0,0,808,809,7,8,0,0,809,810,7, - 2,0,0,810,811,7,19,0,0,811,812,7,7,0,0,812,62,1,0,0,0,813,814,7, - 5,0,0,814,815,7,6,0,0,815,816,7,20,0,0,816,817,7,2,0,0,817,818,7, - 7,0,0,818,64,1,0,0,0,819,820,7,5,0,0,820,821,7,6,0,0,821,822,7,12, - 0,0,822,823,7,7,0,0,823,824,7,19,0,0,824,825,7,17,0,0,825,826,7, - 13,0,0,826,827,7,13,0,0,827,828,7,2,0,0,828,66,1,0,0,0,829,830,7, - 5,0,0,830,831,7,6,0,0,831,832,7,8,0,0,832,833,7,21,0,0,833,834,7, - 6,0,0,834,835,7,6,0,0,835,836,7,7,0,0,836,68,1,0,0,0,837,838,7,5, - 0,0,838,839,7,19,0,0,839,840,7,8,0,0,840,841,7,18,0,0,841,70,1,0, - 0,0,842,843,7,5,0,0,843,844,7,14,0,0,844,72,1,0,0,0,845,846,7,16, - 0,0,846,847,7,4,0,0,847,848,7,13,0,0,848,849,7,13,0,0,849,74,1,0, - 0,0,850,851,7,16,0,0,851,852,7,4,0,0,852,853,7,13,0,0,853,854,7, - 13,0,0,854,855,7,6,0,0,855,856,7,9,0,0,856,76,1,0,0,0,857,858,7, - 16,0,0,858,859,7,4,0,0,859,860,7,0,0,0,860,861,7,16,0,0,861,862, - 7,4,0,0,862,863,7,9,0,0,863,864,7,6,0,0,864,78,1,0,0,0,865,866,7, - 16,0,0,866,867,7,4,0,0,867,868,7,0,0,0,868,869,7,6,0,0,869,80,1, - 0,0,0,870,871,7,16,0,0,871,872,7,4,0,0,872,873,7,0,0,0,873,874,7, - 8,0,0,874,82,1,0,0,0,875,876,7,16,0,0,876,877,7,4,0,0,877,878,7, - 8,0,0,878,879,7,4,0,0,879,880,7,13,0,0,880,881,7,19,0,0,881,882, - 7,20,0,0,882,84,1,0,0,0,883,884,7,16,0,0,884,885,7,4,0,0,885,886, - 7,8,0,0,886,887,7,4,0,0,887,888,7,13,0,0,888,889,7,19,0,0,889,890, - 7,20,0,0,890,891,7,0,0,0,891,86,1,0,0,0,892,893,7,16,0,0,893,894, - 7,19,0,0,894,895,7,13,0,0,895,896,7,17,0,0,896,897,7,10,0,0,897, - 898,7,7,0,0,898,88,1,0,0,0,899,900,7,16,0,0,900,901,7,19,0,0,901, - 902,7,13,0,0,902,903,7,17,0,0,903,904,7,10,0,0,904,905,7,7,0,0,905, - 906,7,0,0,0,906,90,1,0,0,0,907,908,7,16,0,0,908,909,7,19,0,0,909, - 910,7,10,0,0,910,911,7,10,0,0,911,912,7,6,0,0,912,913,7,7,0,0,913, - 914,7,8,0,0,914,92,1,0,0,0,915,916,7,16,0,0,916,917,7,19,0,0,917, - 918,7,10,0,0,918,919,7,10,0,0,919,920,7,2,0,0,920,921,7,8,0,0,921, - 94,1,0,0,0,922,923,7,16,0,0,923,924,7,19,0,0,924,925,7,10,0,0,925, - 926,7,10,0,0,926,927,7,2,0,0,927,928,7,8,0,0,928,929,7,8,0,0,929, - 930,7,6,0,0,930,931,7,9,0,0,931,96,1,0,0,0,932,933,7,16,0,0,933, - 934,7,19,0,0,934,935,7,7,0,0,935,936,7,9,0,0,936,937,7,2,0,0,937, - 938,7,8,0,0,938,939,7,2,0,0,939,940,7,19,0,0,940,941,7,7,0,0,941, - 942,7,4,0,0,942,943,7,13,0,0,943,98,1,0,0,0,944,945,7,16,0,0,945, - 946,7,19,0,0,946,947,7,7,0,0,947,948,7,0,0,0,948,949,7,8,0,0,949, - 950,7,12,0,0,950,951,7,4,0,0,951,952,7,2,0,0,952,953,7,7,0,0,953, - 954,7,8,0,0,954,100,1,0,0,0,955,956,7,16,0,0,956,957,7,19,0,0,957, - 958,7,17,0,0,958,959,7,7,0,0,959,960,7,8,0,0,960,102,1,0,0,0,961, - 962,7,16,0,0,962,963,7,19,0,0,963,964,7,3,0,0,964,965,7,4,0,0,965, - 966,7,12,0,0,966,967,7,8,0,0,967,968,7,2,0,0,968,969,7,8,0,0,969, - 970,7,2,0,0,970,971,7,19,0,0,971,972,7,7,0,0,972,104,1,0,0,0,973, - 974,7,16,0,0,974,975,7,12,0,0,975,976,7,6,0,0,976,977,7,4,0,0,977, - 978,7,8,0,0,978,979,7,6,0,0,979,106,1,0,0,0,980,981,7,16,0,0,981, - 982,7,12,0,0,982,983,7,19,0,0,983,984,7,0,0,0,984,985,7,0,0,0,985, - 108,1,0,0,0,986,987,7,16,0,0,987,988,7,17,0,0,988,989,7,5,0,0,989, - 990,7,6,0,0,990,110,1,0,0,0,991,992,7,16,0,0,992,993,7,17,0,0,993, - 994,7,12,0,0,994,995,7,12,0,0,995,996,7,6,0,0,996,997,7,7,0,0,997, - 998,7,8,0,0,998,112,1,0,0,0,999,1000,7,16,0,0,1000,1001,7,17,0,0, - 1001,1002,7,12,0,0,1002,1003,7,12,0,0,1003,1004,7,6,0,0,1004,1005, - 7,7,0,0,1005,1006,7,8,0,0,1006,1007,5,95,0,0,1007,1008,7,16,0,0, - 1008,1009,7,4,0,0,1009,1010,7,8,0,0,1010,1011,7,4,0,0,1011,1012, - 7,13,0,0,1012,1013,7,19,0,0,1013,1014,7,20,0,0,1014,114,1,0,0,0, - 1015,1016,7,16,0,0,1016,1017,7,17,0,0,1017,1018,7,12,0,0,1018,1019, - 7,12,0,0,1019,1020,7,6,0,0,1020,1021,7,7,0,0,1021,1022,7,8,0,0,1022, - 1023,5,95,0,0,1023,1024,7,9,0,0,1024,1025,7,4,0,0,1025,1026,7,8, - 0,0,1026,1027,7,6,0,0,1027,116,1,0,0,0,1028,1029,7,16,0,0,1029,1030, - 7,17,0,0,1030,1031,7,12,0,0,1031,1032,7,12,0,0,1032,1033,7,6,0,0, - 1033,1034,7,7,0,0,1034,1035,7,8,0,0,1035,1036,5,95,0,0,1036,1037, - 7,3,0,0,1037,1038,7,4,0,0,1038,1039,7,8,0,0,1039,1040,7,18,0,0,1040, - 118,1,0,0,0,1041,1042,7,16,0,0,1042,1043,7,17,0,0,1043,1044,7,12, - 0,0,1044,1045,7,12,0,0,1045,1046,7,6,0,0,1046,1047,7,7,0,0,1047, - 1048,7,8,0,0,1048,1049,5,95,0,0,1049,1050,7,12,0,0,1050,1051,7,19, - 0,0,1051,1052,7,13,0,0,1052,1053,7,6,0,0,1053,120,1,0,0,0,1054,1055, - 7,16,0,0,1055,1056,7,17,0,0,1056,1057,7,12,0,0,1057,1058,7,12,0, - 0,1058,1059,7,6,0,0,1059,1060,7,7,0,0,1060,1061,7,8,0,0,1061,1062, - 5,95,0,0,1062,1063,7,0,0,0,1063,1064,7,16,0,0,1064,1065,7,18,0,0, - 1065,1066,7,6,0,0,1066,1067,7,10,0,0,1067,1068,7,4,0,0,1068,122, - 1,0,0,0,1069,1070,7,16,0,0,1070,1071,7,17,0,0,1071,1072,7,12,0,0, - 1072,1073,7,12,0,0,1073,1074,7,6,0,0,1074,1075,7,7,0,0,1075,1076, - 7,8,0,0,1076,1077,5,95,0,0,1077,1078,7,8,0,0,1078,1079,7,2,0,0,1079, - 1080,7,10,0,0,1080,1081,7,6,0,0,1081,124,1,0,0,0,1082,1083,7,16, - 0,0,1083,1084,7,17,0,0,1084,1085,7,12,0,0,1085,1086,7,12,0,0,1086, - 1087,7,6,0,0,1087,1088,7,7,0,0,1088,1089,7,8,0,0,1089,1090,5,95, - 0,0,1090,1091,7,8,0,0,1091,1092,7,2,0,0,1092,1093,7,10,0,0,1093, - 1094,7,6,0,0,1094,1095,7,0,0,0,1095,1096,7,8,0,0,1096,1097,7,4,0, - 0,1097,1098,7,10,0,0,1098,1099,7,3,0,0,1099,126,1,0,0,0,1100,1101, - 7,16,0,0,1101,1102,7,17,0,0,1102,1103,7,12,0,0,1103,1104,7,12,0, - 0,1104,1105,7,6,0,0,1105,1106,7,7,0,0,1106,1107,7,8,0,0,1107,1108, - 5,95,0,0,1108,1109,7,17,0,0,1109,1110,7,0,0,0,1110,1111,7,6,0,0, - 1111,1112,7,12,0,0,1112,128,1,0,0,0,1113,1114,7,9,0,0,1114,1115, - 7,4,0,0,1115,1116,7,8,0,0,1116,1117,7,4,0,0,1117,130,1,0,0,0,1118, - 1119,7,9,0,0,1119,1120,7,4,0,0,1120,1121,7,8,0,0,1121,1122,7,6,0, - 0,1122,132,1,0,0,0,1123,1124,7,9,0,0,1124,1125,7,4,0,0,1125,1126, - 7,14,0,0,1126,134,1,0,0,0,1127,1128,7,9,0,0,1128,1129,7,6,0,0,1129, - 1130,7,4,0,0,1130,1131,7,13,0,0,1131,1132,7,13,0,0,1132,1133,7,19, - 0,0,1133,1134,7,16,0,0,1134,1135,7,4,0,0,1135,1136,7,8,0,0,1136, - 1137,7,6,0,0,1137,136,1,0,0,0,1138,1139,7,9,0,0,1139,1140,7,6,0, - 0,1140,1141,7,16,0,0,1141,1142,7,13,0,0,1142,1143,7,4,0,0,1143,1144, - 7,12,0,0,1144,1145,7,6,0,0,1145,138,1,0,0,0,1146,1147,7,9,0,0,1147, - 1148,7,6,0,0,1148,1149,7,11,0,0,1149,1150,7,4,0,0,1150,1151,7,17, - 0,0,1151,1152,7,13,0,0,1152,1153,7,8,0,0,1153,140,1,0,0,0,1154,1155, - 7,9,0,0,1155,1156,7,6,0,0,1156,1157,7,11,0,0,1157,1158,7,2,0,0,1158, - 1159,7,7,0,0,1159,1160,7,6,0,0,1160,142,1,0,0,0,1161,1162,7,9,0, - 0,1162,1163,7,6,0,0,1163,1164,7,11,0,0,1164,1165,7,2,0,0,1165,1166, - 7,7,0,0,1166,1167,7,6,0,0,1167,1168,7,12,0,0,1168,144,1,0,0,0,1169, - 1170,7,9,0,0,1170,1171,7,6,0,0,1171,1172,7,13,0,0,1172,1173,7,6, - 0,0,1173,1174,7,8,0,0,1174,1175,7,6,0,0,1175,146,1,0,0,0,1176,1177, - 7,9,0,0,1177,1178,7,6,0,0,1178,1179,7,7,0,0,1179,1180,7,14,0,0,1180, - 148,1,0,0,0,1181,1182,7,9,0,0,1182,1183,7,6,0,0,1183,1184,7,0,0, - 0,1184,1185,7,16,0,0,1185,150,1,0,0,0,1186,1187,7,9,0,0,1187,1188, - 7,6,0,0,1188,1189,7,0,0,0,1189,1190,7,16,0,0,1190,1191,7,12,0,0, - 1191,1192,7,2,0,0,1192,1193,7,5,0,0,1193,1194,7,6,0,0,1194,152,1, - 0,0,0,1195,1196,7,9,0,0,1196,1197,7,6,0,0,1197,1198,7,0,0,0,1198, - 1199,7,16,0,0,1199,1200,7,12,0,0,1200,1201,7,2,0,0,1201,1202,7,3, - 0,0,1202,1203,7,8,0,0,1203,1204,7,19,0,0,1204,1205,7,12,0,0,1205, - 154,1,0,0,0,1206,1207,7,9,0,0,1207,1208,7,6,0,0,1208,1209,7,8,0, - 0,1209,1210,7,6,0,0,1210,1211,7,12,0,0,1211,1212,7,10,0,0,1212,1213, - 7,2,0,0,1213,1214,7,7,0,0,1214,1215,7,2,0,0,1215,1216,7,0,0,0,1216, - 1217,7,8,0,0,1217,1218,7,2,0,0,1218,1219,7,16,0,0,1219,156,1,0,0, - 0,1220,1221,7,9,0,0,1221,1222,7,2,0,0,1222,1223,7,0,0,0,1223,1224, - 7,8,0,0,1224,1225,7,2,0,0,1225,1226,7,7,0,0,1226,1227,7,16,0,0,1227, - 1228,7,8,0,0,1228,158,1,0,0,0,1229,1230,7,9,0,0,1230,1231,7,2,0, - 0,1231,1232,7,0,0,0,1232,1233,7,8,0,0,1233,1234,7,12,0,0,1234,1235, - 7,2,0,0,1235,1236,7,5,0,0,1236,1237,7,17,0,0,1237,1238,7,8,0,0,1238, - 1239,7,6,0,0,1239,1240,7,9,0,0,1240,160,1,0,0,0,1241,1242,7,9,0, - 0,1242,1243,7,19,0,0,1243,162,1,0,0,0,1244,1245,7,9,0,0,1245,1246, - 7,19,0,0,1246,1247,7,17,0,0,1247,1248,7,5,0,0,1248,1249,7,13,0,0, - 1249,1250,7,6,0,0,1250,164,1,0,0,0,1251,1252,7,9,0,0,1252,1253,7, - 12,0,0,1253,1254,7,19,0,0,1254,1255,7,3,0,0,1255,166,1,0,0,0,1256, - 1257,7,6,0,0,1257,1258,7,13,0,0,1258,1259,7,0,0,0,1259,1260,7,6, - 0,0,1260,168,1,0,0,0,1261,1262,7,6,0,0,1262,1263,7,10,0,0,1263,1264, - 7,3,0,0,1264,1265,7,8,0,0,1265,1266,7,14,0,0,1266,170,1,0,0,0,1267, - 1268,7,6,0,0,1268,1269,7,13,0,0,1269,1270,7,0,0,0,1270,1271,7,6, - 0,0,1271,1272,7,2,0,0,1272,1273,7,11,0,0,1273,172,1,0,0,0,1274,1275, - 7,6,0,0,1275,1276,7,7,0,0,1276,1277,7,16,0,0,1277,1278,7,19,0,0, - 1278,1279,7,9,0,0,1279,1280,7,2,0,0,1280,1281,7,7,0,0,1281,1282, - 7,20,0,0,1282,174,1,0,0,0,1283,1284,7,6,0,0,1284,1285,7,7,0,0,1285, - 1286,7,9,0,0,1286,176,1,0,0,0,1287,1288,7,6,0,0,1288,1289,7,12,0, - 0,1289,1290,7,12,0,0,1290,1291,7,19,0,0,1291,1292,7,12,0,0,1292, - 178,1,0,0,0,1293,1294,7,6,0,0,1294,1295,7,0,0,0,1295,1296,7,16,0, - 0,1296,1297,7,4,0,0,1297,1298,7,3,0,0,1298,1299,7,6,0,0,1299,180, - 1,0,0,0,1300,1301,7,6,0,0,1301,1302,7,22,0,0,1302,1303,7,16,0,0, - 1303,1304,7,6,0,0,1304,1305,7,3,0,0,1305,1306,7,8,0,0,1306,182,1, - 0,0,0,1307,1308,7,6,0,0,1308,1309,7,22,0,0,1309,1310,7,16,0,0,1310, - 1311,7,13,0,0,1311,1312,7,17,0,0,1312,1313,7,9,0,0,1313,1314,7,2, - 0,0,1314,1315,7,7,0,0,1315,1316,7,20,0,0,1316,184,1,0,0,0,1317,1318, - 7,6,0,0,1318,1319,7,22,0,0,1319,1320,7,6,0,0,1320,1321,7,16,0,0, - 1321,1322,7,17,0,0,1322,1323,7,8,0,0,1323,1324,7,6,0,0,1324,186, - 1,0,0,0,1325,1326,7,6,0,0,1326,1327,7,22,0,0,1327,1328,7,2,0,0,1328, - 1329,7,0,0,0,1329,1330,7,8,0,0,1330,1331,7,0,0,0,1331,188,1,0,0, - 0,1332,1333,7,6,0,0,1333,1334,7,22,0,0,1334,1335,7,3,0,0,1335,1336, - 7,13,0,0,1336,1337,7,4,0,0,1337,1338,7,2,0,0,1338,1339,7,7,0,0,1339, - 190,1,0,0,0,1340,1341,7,6,0,0,1341,1342,7,22,0,0,1342,1343,7,8,0, - 0,1343,1344,7,12,0,0,1344,1345,7,4,0,0,1345,1346,7,16,0,0,1346,1347, - 7,8,0,0,1347,192,1,0,0,0,1348,1349,7,11,0,0,1349,1350,7,4,0,0,1350, - 1351,7,13,0,0,1351,1352,7,0,0,0,1352,1353,7,6,0,0,1353,194,1,0,0, - 0,1354,1355,7,11,0,0,1355,1356,7,6,0,0,1356,1357,7,8,0,0,1357,1358, - 7,16,0,0,1358,1359,7,18,0,0,1359,196,1,0,0,0,1360,1361,7,11,0,0, - 1361,1362,7,2,0,0,1362,1363,7,13,0,0,1363,1364,7,8,0,0,1364,1365, - 7,6,0,0,1365,1366,7,12,0,0,1366,198,1,0,0,0,1367,1368,7,11,0,0,1368, - 1369,7,2,0,0,1369,1370,7,7,0,0,1370,1371,7,4,0,0,1371,1372,7,13, - 0,0,1372,200,1,0,0,0,1373,1374,7,11,0,0,1374,1375,7,2,0,0,1375,1376, - 7,12,0,0,1376,1377,7,0,0,0,1377,1378,7,8,0,0,1378,202,1,0,0,0,1379, - 1380,7,11,0,0,1380,1381,7,19,0,0,1381,1382,7,13,0,0,1382,1383,7, - 13,0,0,1383,1384,7,19,0,0,1384,1385,7,21,0,0,1385,1386,7,2,0,0,1386, - 1387,7,7,0,0,1387,1388,7,20,0,0,1388,204,1,0,0,0,1389,1390,7,11, - 0,0,1390,1391,7,19,0,0,1391,1392,7,12,0,0,1392,206,1,0,0,0,1393, - 1394,7,11,0,0,1394,1395,7,19,0,0,1395,1396,7,12,0,0,1396,1397,7, - 10,0,0,1397,1398,7,4,0,0,1398,1399,7,8,0,0,1399,208,1,0,0,0,1400, - 1401,7,11,0,0,1401,1402,7,12,0,0,1402,1403,7,19,0,0,1403,1404,7, - 10,0,0,1404,210,1,0,0,0,1405,1406,7,11,0,0,1406,1407,7,17,0,0,1407, - 1408,7,13,0,0,1408,1409,7,13,0,0,1409,212,1,0,0,0,1410,1411,7,11, - 0,0,1411,1412,7,17,0,0,1412,1413,7,7,0,0,1413,1414,7,16,0,0,1414, - 1415,7,8,0,0,1415,1416,7,2,0,0,1416,1417,7,19,0,0,1417,1418,7,7, - 0,0,1418,214,1,0,0,0,1419,1420,7,11,0,0,1420,1421,7,17,0,0,1421, - 1422,7,7,0,0,1422,1423,7,16,0,0,1423,1424,7,8,0,0,1424,1425,7,2, - 0,0,1425,1426,7,19,0,0,1426,1427,7,7,0,0,1427,1428,7,0,0,0,1428, - 216,1,0,0,0,1429,1430,7,20,0,0,1430,1431,7,12,0,0,1431,1432,7,4, - 0,0,1432,1433,7,16,0,0,1433,1434,7,6,0,0,1434,218,1,0,0,0,1435,1436, - 7,20,0,0,1436,1437,7,12,0,0,1437,1438,7,4,0,0,1438,1439,7,7,0,0, - 1439,1440,7,8,0,0,1440,220,1,0,0,0,1441,1442,7,20,0,0,1442,1443, - 7,12,0,0,1443,1444,7,4,0,0,1444,1445,7,7,0,0,1445,1446,7,8,0,0,1446, - 1447,7,6,0,0,1447,1448,7,9,0,0,1448,222,1,0,0,0,1449,1450,7,20,0, - 0,1450,1451,7,12,0,0,1451,1452,7,4,0,0,1452,1453,7,7,0,0,1453,1454, - 7,8,0,0,1454,1455,7,0,0,0,1455,224,1,0,0,0,1456,1457,7,20,0,0,1457, - 1458,7,12,0,0,1458,1459,7,4,0,0,1459,1460,7,3,0,0,1460,1461,7,18, - 0,0,1461,1462,7,23,0,0,1462,1463,7,2,0,0,1463,1464,7,15,0,0,1464, - 226,1,0,0,0,1465,1466,7,20,0,0,1466,1467,7,12,0,0,1467,1468,7,19, - 0,0,1468,1469,7,17,0,0,1469,1470,7,3,0,0,1470,228,1,0,0,0,1471,1472, - 7,20,0,0,1472,1473,7,12,0,0,1473,1474,7,19,0,0,1474,1475,7,17,0, - 0,1475,1476,7,3,0,0,1476,1477,7,2,0,0,1477,1478,7,7,0,0,1478,1479, - 7,20,0,0,1479,230,1,0,0,0,1480,1481,7,20,0,0,1481,1482,7,12,0,0, - 1482,1483,7,19,0,0,1483,1484,7,17,0,0,1484,1485,7,3,0,0,1485,1486, - 7,0,0,0,1486,232,1,0,0,0,1487,1488,7,18,0,0,1488,1489,7,4,0,0,1489, - 1490,7,23,0,0,1490,1491,7,2,0,0,1491,1492,7,7,0,0,1492,1493,7,20, - 0,0,1493,234,1,0,0,0,1494,1495,7,18,0,0,1495,1496,7,19,0,0,1496, - 1497,7,17,0,0,1497,1498,7,12,0,0,1498,236,1,0,0,0,1499,1500,7,2, - 0,0,1500,1501,7,11,0,0,1501,238,1,0,0,0,1502,1503,7,2,0,0,1503,1504, - 7,20,0,0,1504,1505,7,7,0,0,1505,1506,7,19,0,0,1506,1507,7,12,0,0, - 1507,1508,7,6,0,0,1508,240,1,0,0,0,1509,1510,7,2,0,0,1510,1511,7, - 10,0,0,1511,1512,7,10,0,0,1512,1513,7,6,0,0,1513,1514,7,9,0,0,1514, - 1515,7,2,0,0,1515,1516,7,4,0,0,1516,1517,7,8,0,0,1517,1518,7,6,0, - 0,1518,242,1,0,0,0,1519,1520,7,2,0,0,1520,1521,7,7,0,0,1521,244, - 1,0,0,0,1522,1523,7,2,0,0,1523,1524,7,7,0,0,1524,1525,7,16,0,0,1525, - 1526,7,13,0,0,1526,1527,7,17,0,0,1527,1528,7,9,0,0,1528,1529,7,2, - 0,0,1529,1530,7,7,0,0,1530,1531,7,20,0,0,1531,246,1,0,0,0,1532,1533, - 7,2,0,0,1533,1534,7,7,0,0,1534,1535,7,2,0,0,1535,1536,7,8,0,0,1536, - 1537,7,2,0,0,1537,1538,7,4,0,0,1538,1539,7,13,0,0,1539,248,1,0,0, - 0,1540,1541,7,2,0,0,1541,1542,7,7,0,0,1542,1543,7,7,0,0,1543,1544, - 7,6,0,0,1544,1545,7,12,0,0,1545,250,1,0,0,0,1546,1547,7,2,0,0,1547, - 1548,7,7,0,0,1548,1549,7,3,0,0,1549,1550,7,17,0,0,1550,1551,7,8, - 0,0,1551,252,1,0,0,0,1552,1553,7,2,0,0,1553,1554,7,7,0,0,1554,1555, - 7,0,0,0,1555,1556,7,6,0,0,1556,1557,7,12,0,0,1557,1558,7,8,0,0,1558, - 254,1,0,0,0,1559,1560,7,2,0,0,1560,1561,7,7,0,0,1561,1562,7,8,0, - 0,1562,1563,7,6,0,0,1563,1564,7,12,0,0,1564,1565,7,0,0,0,1565,1566, - 7,6,0,0,1566,1567,7,16,0,0,1567,1568,7,8,0,0,1568,256,1,0,0,0,1569, - 1570,7,2,0,0,1570,1571,7,7,0,0,1571,1572,7,8,0,0,1572,1573,7,6,0, - 0,1573,1574,7,12,0,0,1574,1575,7,23,0,0,1575,1576,7,4,0,0,1576,1577, - 7,13,0,0,1577,258,1,0,0,0,1578,1579,7,2,0,0,1579,1580,7,7,0,0,1580, - 1581,7,8,0,0,1581,1582,7,19,0,0,1582,260,1,0,0,0,1583,1584,7,2,0, - 0,1584,1585,7,7,0,0,1585,1586,7,23,0,0,1586,1587,7,19,0,0,1587,1588, - 7,1,0,0,1588,1589,7,6,0,0,1589,1590,7,12,0,0,1590,262,1,0,0,0,1591, - 1592,7,2,0,0,1592,1593,7,19,0,0,1593,264,1,0,0,0,1594,1595,7,2,0, - 0,1595,1596,7,0,0,0,1596,266,1,0,0,0,1597,1598,7,2,0,0,1598,1599, - 7,0,0,0,1599,1600,7,19,0,0,1600,1601,7,13,0,0,1601,1602,7,4,0,0, - 1602,1603,7,8,0,0,1603,1604,7,2,0,0,1604,1605,7,19,0,0,1605,1606, - 7,7,0,0,1606,268,1,0,0,0,1607,1608,7,2,0,0,1608,1609,7,8,0,0,1609, - 1610,7,6,0,0,1610,1611,7,12,0,0,1611,1612,7,4,0,0,1612,1613,7,8, - 0,0,1613,1614,7,6,0,0,1614,270,1,0,0,0,1615,1616,7,24,0,0,1616,1617, - 7,19,0,0,1617,1618,7,2,0,0,1618,1619,7,7,0,0,1619,272,1,0,0,0,1620, - 1621,7,24,0,0,1621,1622,7,0,0,0,1622,1623,7,19,0,0,1623,1624,7,7, - 0,0,1624,274,1,0,0,0,1625,1626,7,24,0,0,1626,1627,7,0,0,0,1627,1628, - 7,19,0,0,1628,1629,7,7,0,0,1629,1630,5,95,0,0,1630,1631,7,4,0,0, - 1631,1632,7,12,0,0,1632,1633,7,12,0,0,1633,1634,7,4,0,0,1634,1635, - 7,14,0,0,1635,276,1,0,0,0,1636,1637,7,24,0,0,1637,1638,7,0,0,0,1638, - 1639,7,19,0,0,1639,1640,7,7,0,0,1640,1641,5,95,0,0,1641,1642,7,6, - 0,0,1642,1643,7,22,0,0,1643,1644,7,2,0,0,1644,1645,7,0,0,0,1645, - 1646,7,8,0,0,1646,1647,7,0,0,0,1647,278,1,0,0,0,1648,1649,7,24,0, - 0,1649,1650,7,0,0,0,1650,1651,7,19,0,0,1651,1652,7,7,0,0,1652,1653, - 5,95,0,0,1653,1654,7,19,0,0,1654,1655,7,5,0,0,1655,1656,7,24,0,0, - 1656,1657,7,6,0,0,1657,1658,7,16,0,0,1658,1659,7,8,0,0,1659,280, - 1,0,0,0,1660,1661,7,24,0,0,1661,1662,7,0,0,0,1662,1663,7,19,0,0, - 1663,1664,7,7,0,0,1664,1665,5,95,0,0,1665,1666,7,25,0,0,1666,1667, - 7,17,0,0,1667,1668,7,6,0,0,1668,1669,7,12,0,0,1669,1670,7,14,0,0, - 1670,282,1,0,0,0,1671,1672,7,24,0,0,1672,1673,7,0,0,0,1673,1674, - 7,19,0,0,1674,1675,7,7,0,0,1675,1676,5,95,0,0,1676,1677,7,8,0,0, - 1677,1678,7,4,0,0,1678,1679,7,5,0,0,1679,1680,7,13,0,0,1680,1681, - 7,6,0,0,1681,284,1,0,0,0,1682,1683,7,24,0,0,1683,1684,7,0,0,0,1684, - 1685,7,19,0,0,1685,1686,7,7,0,0,1686,1687,5,95,0,0,1687,1688,7,23, - 0,0,1688,1689,7,4,0,0,1689,1690,7,13,0,0,1690,1691,7,17,0,0,1691, - 1692,7,6,0,0,1692,286,1,0,0,0,1693,1694,7,1,0,0,1694,1695,7,6,0, - 0,1695,1696,7,6,0,0,1696,1697,7,3,0,0,1697,288,1,0,0,0,1698,1699, - 7,1,0,0,1699,1700,7,6,0,0,1700,1701,7,14,0,0,1701,290,1,0,0,0,1702, - 1703,7,1,0,0,1703,1704,7,6,0,0,1704,1705,7,14,0,0,1705,1706,7,0, - 0,0,1706,292,1,0,0,0,1707,1708,7,13,0,0,1708,1709,7,4,0,0,1709,1710, - 7,7,0,0,1710,1711,7,20,0,0,1711,1712,7,17,0,0,1712,1713,7,4,0,0, - 1713,1714,7,20,0,0,1714,1715,7,6,0,0,1715,294,1,0,0,0,1716,1717, - 7,13,0,0,1717,1718,7,4,0,0,1718,1719,7,0,0,0,1719,1720,7,8,0,0,1720, - 296,1,0,0,0,1721,1722,7,13,0,0,1722,1723,7,4,0,0,1723,1724,7,8,0, - 0,1724,1725,7,6,0,0,1725,1726,7,12,0,0,1726,1727,7,4,0,0,1727,1728, - 7,13,0,0,1728,298,1,0,0,0,1729,1730,7,13,0,0,1730,1731,7,6,0,0,1731, - 1732,7,4,0,0,1732,1733,7,9,0,0,1733,1734,7,2,0,0,1734,1735,7,7,0, - 0,1735,1736,7,20,0,0,1736,300,1,0,0,0,1737,1738,7,13,0,0,1738,1739, - 7,6,0,0,1739,1740,7,4,0,0,1740,1741,7,23,0,0,1741,1742,7,6,0,0,1742, - 302,1,0,0,0,1743,1744,7,13,0,0,1744,1745,7,6,0,0,1745,1746,7,11, - 0,0,1746,1747,7,8,0,0,1747,304,1,0,0,0,1748,1749,7,13,0,0,1749,1750, - 7,6,0,0,1750,1751,7,23,0,0,1751,1752,7,6,0,0,1752,1753,7,13,0,0, - 1753,306,1,0,0,0,1754,1755,7,13,0,0,1755,1756,7,2,0,0,1756,1757, - 7,1,0,0,1757,1758,7,6,0,0,1758,308,1,0,0,0,1759,1760,7,13,0,0,1760, - 1761,7,2,0,0,1761,1762,7,10,0,0,1762,1763,7,2,0,0,1763,1764,7,8, - 0,0,1764,310,1,0,0,0,1765,1766,7,13,0,0,1766,1767,7,2,0,0,1767,1768, - 7,0,0,0,1768,1769,7,8,0,0,1769,1770,7,4,0,0,1770,1771,7,20,0,0,1771, - 1772,7,20,0,0,1772,312,1,0,0,0,1773,1774,7,13,0,0,1774,1775,7,19, - 0,0,1775,1776,7,16,0,0,1776,1777,7,4,0,0,1777,1778,7,13,0,0,1778, - 314,1,0,0,0,1779,1780,7,13,0,0,1780,1781,7,19,0,0,1781,1782,7,16, - 0,0,1782,1783,7,4,0,0,1783,1784,7,13,0,0,1784,1785,7,8,0,0,1785, - 1786,7,2,0,0,1786,1787,7,10,0,0,1787,1788,7,6,0,0,1788,316,1,0,0, - 0,1789,1790,7,13,0,0,1790,1791,7,19,0,0,1791,1792,7,16,0,0,1792, - 1793,7,4,0,0,1793,1794,7,13,0,0,1794,1795,7,8,0,0,1795,1796,7,2, - 0,0,1796,1797,7,10,0,0,1797,1798,7,6,0,0,1798,1799,7,0,0,0,1799, - 1800,7,8,0,0,1800,1801,7,4,0,0,1801,1802,7,10,0,0,1802,1803,7,3, - 0,0,1803,318,1,0,0,0,1804,1805,7,13,0,0,1805,1806,7,19,0,0,1806, - 1807,7,20,0,0,1807,1808,7,2,0,0,1808,1809,7,16,0,0,1809,1810,7,4, - 0,0,1810,1811,7,13,0,0,1811,320,1,0,0,0,1812,1813,7,13,0,0,1813, - 1814,7,19,0,0,1814,1815,7,19,0,0,1815,1816,7,3,0,0,1816,322,1,0, - 0,0,1817,1818,7,10,0,0,1818,1819,7,4,0,0,1819,1820,7,3,0,0,1820, - 324,1,0,0,0,1821,1822,7,10,0,0,1822,1823,7,4,0,0,1823,1824,7,8,0, - 0,1824,1825,7,16,0,0,1825,1826,7,18,0,0,1826,326,1,0,0,0,1827,1828, - 7,10,0,0,1828,1829,7,4,0,0,1829,1830,7,8,0,0,1830,1831,7,16,0,0, - 1831,1832,7,18,0,0,1832,1833,7,6,0,0,1833,1834,7,9,0,0,1834,328, - 1,0,0,0,1835,1836,7,10,0,0,1836,1837,7,4,0,0,1837,1838,7,8,0,0,1838, - 1839,7,16,0,0,1839,1840,7,18,0,0,1840,1841,7,6,0,0,1841,1842,7,0, - 0,0,1842,330,1,0,0,0,1843,1844,7,10,0,0,1844,1845,7,4,0,0,1845,1846, - 7,8,0,0,1846,1847,7,16,0,0,1847,1848,7,18,0,0,1848,1849,5,95,0,0, - 1849,1850,7,12,0,0,1850,1851,7,6,0,0,1851,1852,7,16,0,0,1852,1853, - 7,19,0,0,1853,1854,7,20,0,0,1854,1855,7,7,0,0,1855,1856,7,2,0,0, - 1856,1857,7,15,0,0,1857,1858,7,6,0,0,1858,332,1,0,0,0,1859,1860, - 7,10,0,0,1860,1861,7,4,0,0,1861,1862,7,8,0,0,1862,1863,7,6,0,0,1863, - 1864,7,12,0,0,1864,1865,7,2,0,0,1865,1866,7,4,0,0,1866,1867,7,13, - 0,0,1867,1868,7,2,0,0,1868,1869,7,15,0,0,1869,1870,7,6,0,0,1870, - 1871,7,9,0,0,1871,334,1,0,0,0,1872,1873,7,10,0,0,1873,1874,7,6,0, - 0,1874,1875,7,4,0,0,1875,1876,7,0,0,0,1876,1877,7,17,0,0,1877,1878, - 7,12,0,0,1878,1879,7,6,0,0,1879,1880,7,0,0,0,1880,336,1,0,0,0,1881, - 1882,7,10,0,0,1882,1883,7,6,0,0,1883,1884,7,12,0,0,1884,1885,7,20, - 0,0,1885,1886,7,6,0,0,1886,338,1,0,0,0,1887,1888,7,10,0,0,1888,1889, - 7,2,0,0,1889,1890,7,7,0,0,1890,1891,7,17,0,0,1891,1892,7,8,0,0,1892, - 1893,7,6,0,0,1893,340,1,0,0,0,1894,1895,7,10,0,0,1895,1896,7,19, - 0,0,1896,1897,7,7,0,0,1897,1898,7,8,0,0,1898,1899,7,18,0,0,1899, - 342,1,0,0,0,1900,1901,7,7,0,0,1901,1902,7,4,0,0,1902,1903,7,8,0, - 0,1903,1904,7,17,0,0,1904,1905,7,12,0,0,1905,1906,7,4,0,0,1906,1907, - 7,13,0,0,1907,344,1,0,0,0,1908,1909,7,7,0,0,1909,1910,7,6,0,0,1910, - 1911,7,0,0,0,1911,1912,7,8,0,0,1912,1913,7,6,0,0,1913,1914,7,9,0, - 0,1914,346,1,0,0,0,1915,1916,7,7,0,0,1916,1917,7,6,0,0,1917,1918, - 7,22,0,0,1918,1919,7,8,0,0,1919,348,1,0,0,0,1920,1921,7,7,0,0,1921, - 1922,7,11,0,0,1922,1923,7,16,0,0,1923,350,1,0,0,0,1924,1925,7,7, - 0,0,1925,1926,7,11,0,0,1926,1927,7,9,0,0,1927,352,1,0,0,0,1928,1929, - 7,7,0,0,1929,1930,7,11,0,0,1930,1931,7,1,0,0,1931,1932,7,16,0,0, - 1932,354,1,0,0,0,1933,1934,7,7,0,0,1934,1935,7,11,0,0,1935,1936, - 7,1,0,0,1936,1937,7,9,0,0,1937,356,1,0,0,0,1938,1939,7,7,0,0,1939, - 1940,7,19,0,0,1940,358,1,0,0,0,1941,1942,7,7,0,0,1942,1943,7,19, - 0,0,1943,1944,7,7,0,0,1944,1945,7,6,0,0,1945,360,1,0,0,0,1946,1947, - 7,7,0,0,1947,1948,7,19,0,0,1948,1949,7,12,0,0,1949,1950,7,10,0,0, - 1950,1951,7,4,0,0,1951,1952,7,13,0,0,1952,1953,7,2,0,0,1953,1954, - 7,15,0,0,1954,1955,7,6,0,0,1955,362,1,0,0,0,1956,1957,7,7,0,0,1957, - 1958,7,19,0,0,1958,1959,7,8,0,0,1959,364,1,0,0,0,1960,1961,7,7,0, - 0,1961,1962,7,17,0,0,1962,1963,7,13,0,0,1963,1964,7,13,0,0,1964, - 366,1,0,0,0,1965,1966,7,7,0,0,1966,1967,7,17,0,0,1967,1968,7,13, - 0,0,1968,1969,7,13,0,0,1969,1970,7,2,0,0,1970,1971,7,11,0,0,1971, - 368,1,0,0,0,1972,1973,7,7,0,0,1973,1974,7,17,0,0,1974,1975,7,13, - 0,0,1975,1976,7,13,0,0,1976,1977,7,0,0,0,1977,370,1,0,0,0,1978,1979, - 7,19,0,0,1979,1980,7,5,0,0,1980,1981,7,24,0,0,1981,1982,7,6,0,0, - 1982,1983,7,16,0,0,1983,1984,7,8,0,0,1984,372,1,0,0,0,1985,1986, - 7,19,0,0,1986,1987,7,11,0,0,1987,374,1,0,0,0,1988,1989,7,19,0,0, - 1989,1990,7,11,0,0,1990,1991,7,11,0,0,1991,1992,7,0,0,0,1992,1993, - 7,6,0,0,1993,1994,7,8,0,0,1994,376,1,0,0,0,1995,1996,7,19,0,0,1996, - 1997,7,10,0,0,1997,1998,7,2,0,0,1998,1999,7,8,0,0,1999,378,1,0,0, - 0,2000,2001,7,19,0,0,2001,2002,7,7,0,0,2002,380,1,0,0,0,2003,2004, - 7,19,0,0,2004,2005,7,7,0,0,2005,2006,7,6,0,0,2006,382,1,0,0,0,2007, - 2008,7,19,0,0,2008,2009,7,7,0,0,2009,2010,7,13,0,0,2010,2011,7,14, - 0,0,2011,384,1,0,0,0,2012,2013,7,19,0,0,2013,2014,7,3,0,0,2014,2015, - 7,8,0,0,2015,2016,7,2,0,0,2016,2017,7,19,0,0,2017,2018,7,7,0,0,2018, - 386,1,0,0,0,2019,2020,7,19,0,0,2020,2021,7,12,0,0,2021,388,1,0,0, - 0,2022,2023,7,19,0,0,2023,2024,7,12,0,0,2024,2025,7,9,0,0,2025,2026, - 7,6,0,0,2026,2027,7,12,0,0,2027,390,1,0,0,0,2028,2029,7,19,0,0,2029, - 2030,7,12,0,0,2030,2031,7,9,0,0,2031,2032,7,2,0,0,2032,2033,7,7, - 0,0,2033,2034,7,4,0,0,2034,2035,7,13,0,0,2035,2036,7,2,0,0,2036, - 2037,7,8,0,0,2037,2038,7,14,0,0,2038,392,1,0,0,0,2039,2040,7,19, - 0,0,2040,2041,7,17,0,0,2041,2042,7,8,0,0,2042,2043,7,6,0,0,2043, - 2044,7,12,0,0,2044,394,1,0,0,0,2045,2046,7,19,0,0,2046,2047,7,17, - 0,0,2047,2048,7,8,0,0,2048,2049,7,3,0,0,2049,2050,7,17,0,0,2050, - 2051,7,8,0,0,2051,396,1,0,0,0,2052,2053,7,19,0,0,2053,2054,7,23, - 0,0,2054,2055,7,6,0,0,2055,2056,7,12,0,0,2056,398,1,0,0,0,2057,2058, - 7,19,0,0,2058,2059,7,23,0,0,2059,2060,7,6,0,0,2060,2061,7,12,0,0, - 2061,2062,7,11,0,0,2062,2063,7,13,0,0,2063,2064,7,19,0,0,2064,2065, - 7,21,0,0,2065,400,1,0,0,0,2066,2067,7,3,0,0,2067,2068,7,4,0,0,2068, - 2069,7,12,0,0,2069,2070,7,8,0,0,2070,2071,7,2,0,0,2071,2072,7,8, - 0,0,2072,2073,7,2,0,0,2073,2074,7,19,0,0,2074,2075,7,7,0,0,2075, - 402,1,0,0,0,2076,2077,7,3,0,0,2077,2078,7,4,0,0,2078,2079,7,12,0, - 0,2079,2080,7,8,0,0,2080,2081,7,2,0,0,2081,2082,7,8,0,0,2082,2083, - 7,2,0,0,2083,2084,7,19,0,0,2084,2085,7,7,0,0,2085,2086,7,0,0,0,2086, - 404,1,0,0,0,2087,2088,7,3,0,0,2088,2089,7,4,0,0,2089,2090,7,0,0, - 0,2090,2091,7,0,0,0,2091,2092,7,2,0,0,2092,2093,7,7,0,0,2093,2094, - 7,20,0,0,2094,406,1,0,0,0,2095,2096,7,3,0,0,2096,2097,7,4,0,0,2097, - 2098,7,0,0,0,2098,2099,7,8,0,0,2099,408,1,0,0,0,2100,2101,7,3,0, - 0,2101,2102,7,4,0,0,2102,2103,7,8,0,0,2103,2104,7,18,0,0,2104,410, - 1,0,0,0,2105,2106,7,3,0,0,2106,2107,7,4,0,0,2107,2108,7,8,0,0,2108, - 2109,7,8,0,0,2109,2110,7,6,0,0,2110,2111,7,12,0,0,2111,2112,7,7, - 0,0,2112,412,1,0,0,0,2113,2114,7,3,0,0,2114,2115,7,6,0,0,2115,2116, - 7,12,0,0,2116,414,1,0,0,0,2117,2118,7,3,0,0,2118,2119,7,6,0,0,2119, - 2120,7,12,0,0,2120,2121,7,2,0,0,2121,2122,7,19,0,0,2122,2123,7,9, - 0,0,2123,416,1,0,0,0,2124,2125,7,3,0,0,2125,2126,7,6,0,0,2126,2127, - 7,12,0,0,2127,2128,7,10,0,0,2128,2129,7,17,0,0,2129,2130,7,8,0,0, - 2130,2131,7,6,0,0,2131,418,1,0,0,0,2132,2133,7,3,0,0,2133,2134,7, - 13,0,0,2134,2135,7,4,0,0,2135,2136,7,7,0,0,2136,420,1,0,0,0,2137, - 2138,7,3,0,0,2138,2139,7,19,0,0,2139,2140,7,0,0,0,2140,2141,7,2, - 0,0,2141,2142,7,8,0,0,2142,2143,7,2,0,0,2143,2144,7,19,0,0,2144, - 2145,7,7,0,0,2145,422,1,0,0,0,2146,2147,7,3,0,0,2147,2148,7,12,0, - 0,2148,2149,7,6,0,0,2149,2150,7,16,0,0,2150,2151,7,6,0,0,2151,2152, - 7,9,0,0,2152,2153,7,2,0,0,2153,2154,7,7,0,0,2154,2155,7,20,0,0,2155, - 424,1,0,0,0,2156,2157,7,3,0,0,2157,2158,7,12,0,0,2158,2159,7,6,0, - 0,2159,2160,7,16,0,0,2160,2161,7,2,0,0,2161,2162,7,0,0,0,2162,2163, - 7,2,0,0,2163,2164,7,19,0,0,2164,2165,7,7,0,0,2165,426,1,0,0,0,2166, - 2167,7,3,0,0,2167,2168,7,12,0,0,2168,2169,7,6,0,0,2169,2170,7,3, - 0,0,2170,2171,7,4,0,0,2171,2172,7,12,0,0,2172,2173,7,6,0,0,2173, - 428,1,0,0,0,2174,2175,7,3,0,0,2175,2176,7,12,0,0,2176,2177,7,2,0, - 0,2177,2178,7,23,0,0,2178,2179,7,2,0,0,2179,2180,7,13,0,0,2180,2181, - 7,6,0,0,2181,2182,7,20,0,0,2182,2183,7,6,0,0,2183,2184,7,0,0,0,2184, - 430,1,0,0,0,2185,2186,7,3,0,0,2186,2187,7,12,0,0,2187,2188,7,19, - 0,0,2188,2189,7,3,0,0,2189,2190,7,6,0,0,2190,2191,7,12,0,0,2191, - 2192,7,8,0,0,2192,2193,7,2,0,0,2193,2194,7,6,0,0,2194,2195,7,0,0, - 0,2195,432,1,0,0,0,2196,2197,7,3,0,0,2197,2198,7,12,0,0,2198,2199, - 7,17,0,0,2199,2200,7,7,0,0,2200,2201,7,6,0,0,2201,434,1,0,0,0,2202, - 2203,7,25,0,0,2203,2204,7,17,0,0,2204,2205,7,19,0,0,2205,2206,7, - 8,0,0,2206,2207,7,6,0,0,2207,2208,7,0,0,0,2208,436,1,0,0,0,2209, - 2210,7,12,0,0,2210,2211,7,4,0,0,2211,2212,7,7,0,0,2212,2213,7,20, - 0,0,2213,2214,7,6,0,0,2214,438,1,0,0,0,2215,2216,7,12,0,0,2216,2217, - 7,6,0,0,2217,2218,7,4,0,0,2218,2219,7,9,0,0,2219,440,1,0,0,0,2220, - 2221,7,12,0,0,2221,2222,7,6,0,0,2222,2223,7,16,0,0,2223,2224,7,17, - 0,0,2224,2225,7,12,0,0,2225,2226,7,0,0,0,2226,2227,7,2,0,0,2227, - 2228,7,23,0,0,2228,2229,7,6,0,0,2229,442,1,0,0,0,2230,2231,7,12, - 0,0,2231,2232,7,6,0,0,2232,2233,7,11,0,0,2233,2234,7,12,0,0,2234, - 2235,7,6,0,0,2235,2236,7,0,0,0,2236,2237,7,18,0,0,2237,444,1,0,0, - 0,2238,2239,7,12,0,0,2239,2240,7,6,0,0,2240,2241,7,7,0,0,2241,2242, - 7,4,0,0,2242,2243,7,10,0,0,2243,2244,7,6,0,0,2244,446,1,0,0,0,2245, - 2246,7,12,0,0,2246,2247,7,6,0,0,2247,2248,7,3,0,0,2248,2249,7,6, - 0,0,2249,2250,7,4,0,0,2250,2251,7,8,0,0,2251,448,1,0,0,0,2252,2253, - 7,12,0,0,2253,2254,7,6,0,0,2254,2255,7,3,0,0,2255,2256,7,6,0,0,2256, - 2257,7,4,0,0,2257,2258,7,8,0,0,2258,2259,7,4,0,0,2259,2260,7,5,0, - 0,2260,2261,7,13,0,0,2261,2262,7,6,0,0,2262,450,1,0,0,0,2263,2264, - 7,12,0,0,2264,2265,7,6,0,0,2265,2266,7,3,0,0,2266,2267,7,13,0,0, - 2267,2268,7,4,0,0,2268,2269,7,16,0,0,2269,2270,7,6,0,0,2270,452, - 1,0,0,0,2271,2272,7,12,0,0,2272,2273,7,6,0,0,2273,2274,7,0,0,0,2274, - 2275,7,6,0,0,2275,2276,7,8,0,0,2276,454,1,0,0,0,2277,2278,7,12,0, - 0,2278,2279,7,6,0,0,2279,2280,7,0,0,0,2280,2281,7,3,0,0,2281,2282, - 7,6,0,0,2282,2283,7,16,0,0,2283,2284,7,8,0,0,2284,456,1,0,0,0,2285, - 2286,7,12,0,0,2286,2287,7,6,0,0,2287,2288,7,0,0,0,2288,2289,7,8, - 0,0,2289,2290,7,12,0,0,2290,2291,7,2,0,0,2291,2292,7,16,0,0,2292, - 2293,7,8,0,0,2293,458,1,0,0,0,2294,2295,7,12,0,0,2295,2296,7,6,0, - 0,2296,2297,7,8,0,0,2297,2298,7,17,0,0,2298,2299,7,12,0,0,2299,2300, - 7,7,0,0,2300,460,1,0,0,0,2301,2302,7,12,0,0,2302,2303,7,6,0,0,2303, - 2304,7,8,0,0,2304,2305,7,17,0,0,2305,2306,7,12,0,0,2306,2307,7,7, - 0,0,2307,2308,7,2,0,0,2308,2309,7,7,0,0,2309,2310,7,20,0,0,2310, - 462,1,0,0,0,2311,2312,7,12,0,0,2312,2313,7,6,0,0,2313,2314,7,8,0, - 0,2314,2315,7,17,0,0,2315,2316,7,12,0,0,2316,2317,7,7,0,0,2317,2318, - 7,0,0,0,2318,464,1,0,0,0,2319,2320,7,12,0,0,2320,2321,7,6,0,0,2321, - 2322,7,23,0,0,2322,2323,7,19,0,0,2323,2324,7,1,0,0,2324,2325,7,6, - 0,0,2325,466,1,0,0,0,2326,2327,7,12,0,0,2327,2328,7,2,0,0,2328,2329, - 7,20,0,0,2329,2330,7,18,0,0,2330,2331,7,8,0,0,2331,468,1,0,0,0,2332, - 2333,7,12,0,0,2333,2334,7,19,0,0,2334,2335,7,13,0,0,2335,2336,7, - 6,0,0,2336,470,1,0,0,0,2337,2338,7,12,0,0,2338,2339,7,19,0,0,2339, - 2340,7,13,0,0,2340,2341,7,6,0,0,2341,2342,7,0,0,0,2342,472,1,0,0, - 0,2343,2344,7,12,0,0,2344,2345,7,19,0,0,2345,2346,7,13,0,0,2346, - 2347,7,13,0,0,2347,2348,7,5,0,0,2348,2349,7,4,0,0,2349,2350,7,16, - 0,0,2350,2351,7,1,0,0,2351,474,1,0,0,0,2352,2353,7,12,0,0,2353,2354, - 7,19,0,0,2354,2355,7,13,0,0,2355,2356,7,13,0,0,2356,2357,7,17,0, - 0,2357,2358,7,3,0,0,2358,476,1,0,0,0,2359,2360,7,12,0,0,2360,2361, - 7,19,0,0,2361,2362,7,21,0,0,2362,478,1,0,0,0,2363,2364,7,12,0,0, - 2364,2365,7,19,0,0,2365,2366,7,21,0,0,2366,2367,7,0,0,0,2367,480, - 1,0,0,0,2368,2369,7,12,0,0,2369,2370,7,17,0,0,2370,2371,7,7,0,0, - 2371,2372,7,7,0,0,2372,2373,7,2,0,0,2373,2374,7,7,0,0,2374,2375, - 7,20,0,0,2375,482,1,0,0,0,2376,2377,7,0,0,0,2377,2378,7,16,0,0,2378, - 2379,7,4,0,0,2379,2380,7,13,0,0,2380,2381,7,4,0,0,2381,2382,7,12, - 0,0,2382,484,1,0,0,0,2383,2384,7,0,0,0,2384,2385,7,16,0,0,2385,2386, - 7,18,0,0,2386,2387,7,6,0,0,2387,2388,7,10,0,0,2388,2389,7,4,0,0, - 2389,486,1,0,0,0,2390,2391,7,0,0,0,2391,2392,7,16,0,0,2392,2393, - 7,18,0,0,2393,2394,7,6,0,0,2394,2395,7,10,0,0,2395,2396,7,4,0,0, - 2396,2397,7,0,0,0,2397,488,1,0,0,0,2398,2399,7,0,0,0,2399,2400,7, - 6,0,0,2400,2401,7,16,0,0,2401,2402,7,19,0,0,2402,2403,7,7,0,0,2403, - 2404,7,9,0,0,2404,490,1,0,0,0,2405,2406,7,0,0,0,2406,2407,7,6,0, - 0,2407,2408,7,16,0,0,2408,2409,7,17,0,0,2409,2410,7,12,0,0,2410, - 2411,7,2,0,0,2411,2412,7,8,0,0,2412,2413,7,14,0,0,2413,492,1,0,0, - 0,2414,2415,7,0,0,0,2415,2416,7,6,0,0,2416,2417,7,6,0,0,2417,2418, - 7,1,0,0,2418,494,1,0,0,0,2419,2420,7,0,0,0,2420,2421,7,6,0,0,2421, - 2422,7,13,0,0,2422,2423,7,6,0,0,2423,2424,7,16,0,0,2424,2425,7,8, - 0,0,2425,496,1,0,0,0,2426,2427,7,0,0,0,2427,2428,7,6,0,0,2428,2429, - 7,12,0,0,2429,2430,7,2,0,0,2430,2431,7,4,0,0,2431,2432,7,13,0,0, - 2432,2433,7,2,0,0,2433,2434,7,15,0,0,2434,2435,7,4,0,0,2435,2436, - 7,5,0,0,2436,2437,7,13,0,0,2437,2438,7,6,0,0,2438,498,1,0,0,0,2439, - 2440,7,0,0,0,2440,2441,7,6,0,0,2441,2442,7,0,0,0,2442,2443,7,0,0, - 0,2443,2444,7,2,0,0,2444,2445,7,19,0,0,2445,2446,7,7,0,0,2446,500, - 1,0,0,0,2447,2448,7,0,0,0,2448,2449,7,6,0,0,2449,2450,7,8,0,0,2450, - 502,1,0,0,0,2451,2452,7,0,0,0,2452,2453,7,6,0,0,2453,2454,7,8,0, - 0,2454,2455,7,0,0,0,2455,504,1,0,0,0,2456,2457,7,0,0,0,2457,2458, - 7,18,0,0,2458,2459,7,19,0,0,2459,2460,7,21,0,0,2460,506,1,0,0,0, - 2461,2462,7,0,0,0,2462,2463,7,19,0,0,2463,2464,7,10,0,0,2464,2465, - 7,6,0,0,2465,508,1,0,0,0,2466,2467,7,0,0,0,2467,2468,7,8,0,0,2468, - 2469,7,4,0,0,2469,2470,7,12,0,0,2470,2471,7,8,0,0,2471,510,1,0,0, - 0,2472,2473,7,0,0,0,2473,2474,7,8,0,0,2474,2475,7,4,0,0,2475,2476, - 7,8,0,0,2476,2477,7,0,0,0,2477,512,1,0,0,0,2478,2479,7,0,0,0,2479, - 2480,7,17,0,0,2480,2481,7,5,0,0,2481,2482,7,0,0,0,2482,2483,7,6, - 0,0,2483,2484,7,8,0,0,2484,514,1,0,0,0,2485,2486,7,0,0,0,2486,2487, - 7,17,0,0,2487,2488,7,5,0,0,2488,2489,7,0,0,0,2489,2490,7,8,0,0,2490, - 2491,7,12,0,0,2491,2492,7,2,0,0,2492,2493,7,7,0,0,2493,2494,7,20, - 0,0,2494,516,1,0,0,0,2495,2496,7,0,0,0,2496,2497,7,14,0,0,2497,2498, - 7,0,0,0,2498,2499,7,8,0,0,2499,2500,7,6,0,0,2500,2501,7,10,0,0,2501, - 518,1,0,0,0,2502,2503,7,8,0,0,2503,2504,7,4,0,0,2504,2505,7,5,0, - 0,2505,2506,7,13,0,0,2506,2507,7,6,0,0,2507,520,1,0,0,0,2508,2509, - 7,8,0,0,2509,2510,7,4,0,0,2510,2511,7,5,0,0,2511,2512,7,13,0,0,2512, - 2513,7,6,0,0,2513,2514,7,0,0,0,2514,522,1,0,0,0,2515,2516,7,8,0, - 0,2516,2517,7,4,0,0,2517,2518,7,5,0,0,2518,2519,7,13,0,0,2519,2520, - 7,6,0,0,2520,2521,7,0,0,0,2521,2522,7,4,0,0,2522,2523,7,10,0,0,2523, - 2524,7,3,0,0,2524,2525,7,13,0,0,2525,2526,7,6,0,0,2526,524,1,0,0, - 0,2527,2528,7,8,0,0,2528,2529,7,6,0,0,2529,2530,7,22,0,0,2530,2531, - 7,8,0,0,2531,526,1,0,0,0,2532,2533,7,0,0,0,2533,2534,7,8,0,0,2534, - 2535,7,12,0,0,2535,2536,7,2,0,0,2536,2537,7,7,0,0,2537,2538,7,20, - 0,0,2538,528,1,0,0,0,2539,2540,7,8,0,0,2540,2541,7,18,0,0,2541,2542, - 7,6,0,0,2542,2543,7,7,0,0,2543,530,1,0,0,0,2544,2545,7,8,0,0,2545, - 2546,7,2,0,0,2546,2547,7,6,0,0,2547,2548,7,0,0,0,2548,532,1,0,0, - 0,2549,2550,7,8,0,0,2550,2551,7,2,0,0,2551,2552,7,10,0,0,2552,2553, - 7,6,0,0,2553,534,1,0,0,0,2554,2555,7,8,0,0,2555,2556,7,2,0,0,2556, - 2557,7,10,0,0,2557,2558,7,6,0,0,2558,2559,7,0,0,0,2559,2560,7,8, - 0,0,2560,2561,7,4,0,0,2561,2562,7,10,0,0,2562,2563,7,3,0,0,2563, - 536,1,0,0,0,2564,2565,7,8,0,0,2565,2566,7,19,0,0,2566,538,1,0,0, - 0,2567,2568,7,8,0,0,2568,2569,7,12,0,0,2569,2570,7,4,0,0,2570,2571, - 7,2,0,0,2571,2572,7,13,0,0,2572,2573,7,2,0,0,2573,2574,7,7,0,0,2574, - 2575,7,20,0,0,2575,540,1,0,0,0,2576,2577,7,8,0,0,2577,2578,7,12, - 0,0,2578,2579,7,4,0,0,2579,2580,7,7,0,0,2580,2581,7,0,0,0,2581,2582, - 7,4,0,0,2582,2583,7,16,0,0,2583,2584,7,8,0,0,2584,2585,7,2,0,0,2585, - 2586,7,19,0,0,2586,2587,7,7,0,0,2587,542,1,0,0,0,2588,2589,7,8,0, - 0,2589,2590,7,12,0,0,2590,2591,7,2,0,0,2591,2592,7,10,0,0,2592,544, - 1,0,0,0,2593,2594,7,8,0,0,2594,2595,7,12,0,0,2595,2596,7,17,0,0, - 2596,2597,7,6,0,0,2597,546,1,0,0,0,2598,2599,7,8,0,0,2599,2600,7, - 12,0,0,2600,2601,7,17,0,0,2601,2602,7,7,0,0,2602,2603,7,16,0,0,2603, - 2604,7,4,0,0,2604,2605,7,8,0,0,2605,2606,7,6,0,0,2606,548,1,0,0, - 0,2607,2608,7,8,0,0,2608,2609,7,12,0,0,2609,2610,7,14,0,0,2610,2611, - 5,95,0,0,2611,2612,7,16,0,0,2612,2613,7,4,0,0,2613,2614,7,0,0,0, - 2614,2615,7,8,0,0,2615,550,1,0,0,0,2616,2617,7,8,0,0,2617,2618,7, - 14,0,0,2618,2619,7,3,0,0,2619,2620,7,6,0,0,2620,552,1,0,0,0,2621, - 2622,7,17,0,0,2622,2623,7,6,0,0,2623,2624,7,0,0,0,2624,2625,7,16, - 0,0,2625,2626,7,4,0,0,2626,2627,7,3,0,0,2627,2628,7,6,0,0,2628,554, - 1,0,0,0,2629,2630,7,17,0,0,2630,2631,7,7,0,0,2631,2632,7,5,0,0,2632, - 2633,7,19,0,0,2633,2634,7,17,0,0,2634,2635,7,7,0,0,2635,2636,7,9, - 0,0,2636,2637,7,6,0,0,2637,2638,7,9,0,0,2638,556,1,0,0,0,2639,2640, - 7,17,0,0,2640,2641,7,7,0,0,2641,2642,7,16,0,0,2642,2643,7,19,0,0, - 2643,2644,7,10,0,0,2644,2645,7,10,0,0,2645,2646,7,2,0,0,2646,2647, - 7,8,0,0,2647,2648,7,8,0,0,2648,2649,7,6,0,0,2649,2650,7,9,0,0,2650, - 558,1,0,0,0,2651,2652,7,17,0,0,2652,2653,7,7,0,0,2653,2654,7,16, - 0,0,2654,2655,7,19,0,0,2655,2656,7,7,0,0,2656,2657,7,9,0,0,2657, - 2658,7,2,0,0,2658,2659,7,8,0,0,2659,2660,7,2,0,0,2660,2661,7,19, - 0,0,2661,2662,7,7,0,0,2662,2663,7,4,0,0,2663,2664,7,13,0,0,2664, - 560,1,0,0,0,2665,2666,7,17,0,0,2666,2667,7,7,0,0,2667,2668,7,2,0, - 0,2668,2669,7,19,0,0,2669,2670,7,7,0,0,2670,562,1,0,0,0,2671,2672, - 7,17,0,0,2672,2673,7,7,0,0,2673,2674,7,2,0,0,2674,2675,7,25,0,0, - 2675,2676,7,17,0,0,2676,2677,7,6,0,0,2677,564,1,0,0,0,2678,2679, - 7,17,0,0,2679,2680,7,7,0,0,2680,2681,7,1,0,0,2681,2682,7,7,0,0,2682, - 2683,7,19,0,0,2683,2684,7,21,0,0,2684,2685,7,7,0,0,2685,566,1,0, - 0,0,2686,2687,7,17,0,0,2687,2688,7,7,0,0,2688,2689,7,10,0,0,2689, - 2690,7,4,0,0,2690,2691,7,8,0,0,2691,2692,7,16,0,0,2692,2693,7,18, - 0,0,2693,2694,7,6,0,0,2694,2695,7,9,0,0,2695,568,1,0,0,0,2696,2697, - 7,17,0,0,2697,2698,7,7,0,0,2698,2699,7,7,0,0,2699,2700,7,6,0,0,2700, - 2701,7,0,0,0,2701,2702,7,8,0,0,2702,570,1,0,0,0,2703,2704,7,17,0, - 0,2704,2705,7,7,0,0,2705,2706,7,8,0,0,2706,2707,7,2,0,0,2707,2708, - 7,13,0,0,2708,572,1,0,0,0,2709,2710,7,17,0,0,2710,2711,7,3,0,0,2711, - 2712,7,9,0,0,2712,2713,7,4,0,0,2713,2714,7,8,0,0,2714,2715,7,6,0, - 0,2715,574,1,0,0,0,2716,2717,7,17,0,0,2717,2718,7,0,0,0,2718,2719, - 7,6,0,0,2719,576,1,0,0,0,2720,2721,7,17,0,0,2721,2722,7,0,0,0,2722, - 2723,7,6,0,0,2723,2724,7,12,0,0,2724,578,1,0,0,0,2725,2726,7,17, - 0,0,2726,2727,7,0,0,0,2727,2728,7,2,0,0,2728,2729,7,7,0,0,2729,2730, - 7,20,0,0,2730,580,1,0,0,0,2731,2732,7,17,0,0,2732,2733,7,8,0,0,2733, - 2734,7,11,0,0,2734,2735,5,49,0,0,2735,2736,5,54,0,0,2736,582,1,0, - 0,0,2737,2738,7,17,0,0,2738,2739,7,8,0,0,2739,2740,7,11,0,0,2740, - 2741,5,51,0,0,2741,2742,5,50,0,0,2742,584,1,0,0,0,2743,2744,7,17, - 0,0,2744,2745,7,8,0,0,2745,2746,7,11,0,0,2746,2747,5,56,0,0,2747, - 586,1,0,0,0,2748,2749,7,23,0,0,2749,2750,7,4,0,0,2750,2751,7,13, - 0,0,2751,2752,7,2,0,0,2752,2753,7,9,0,0,2753,2754,7,4,0,0,2754,2755, - 7,8,0,0,2755,2756,7,6,0,0,2756,588,1,0,0,0,2757,2758,7,23,0,0,2758, - 2759,7,4,0,0,2759,2760,7,13,0,0,2760,2761,7,17,0,0,2761,2762,7,6, - 0,0,2762,590,1,0,0,0,2763,2764,7,23,0,0,2764,2765,7,4,0,0,2765,2766, - 7,13,0,0,2766,2767,7,17,0,0,2767,2768,7,6,0,0,2768,2769,7,0,0,0, - 2769,592,1,0,0,0,2770,2771,7,23,0,0,2771,2772,7,6,0,0,2772,2773, - 7,12,0,0,2773,2774,7,5,0,0,2774,2775,7,19,0,0,2775,2776,7,0,0,0, - 2776,2777,7,6,0,0,2777,594,1,0,0,0,2778,2779,7,23,0,0,2779,2780, - 7,6,0,0,2780,2781,7,12,0,0,2781,2782,7,0,0,0,2782,2783,7,2,0,0,2783, - 2784,7,19,0,0,2784,2785,7,7,0,0,2785,596,1,0,0,0,2786,2787,7,23, - 0,0,2787,2788,7,2,0,0,2788,2789,7,6,0,0,2789,2790,7,21,0,0,2790, - 598,1,0,0,0,2791,2792,7,21,0,0,2792,2793,7,18,0,0,2793,2794,7,6, - 0,0,2794,2795,7,7,0,0,2795,600,1,0,0,0,2796,2797,7,21,0,0,2797,2798, - 7,18,0,0,2798,2799,7,6,0,0,2799,2800,7,12,0,0,2800,2801,7,6,0,0, - 2801,602,1,0,0,0,2802,2803,7,21,0,0,2803,2804,7,18,0,0,2804,2805, - 7,2,0,0,2805,2806,7,13,0,0,2806,2807,7,6,0,0,2807,604,1,0,0,0,2808, - 2809,7,21,0,0,2809,2810,7,2,0,0,2810,2811,7,7,0,0,2811,2812,7,9, - 0,0,2812,2813,7,19,0,0,2813,2814,7,21,0,0,2814,606,1,0,0,0,2815, - 2816,7,21,0,0,2816,2817,7,2,0,0,2817,2818,7,8,0,0,2818,2819,7,18, - 0,0,2819,608,1,0,0,0,2820,2821,7,21,0,0,2821,2822,7,2,0,0,2822,2823, - 7,8,0,0,2823,2824,7,18,0,0,2824,2825,7,2,0,0,2825,2826,7,7,0,0,2826, - 610,1,0,0,0,2827,2828,7,21,0,0,2828,2829,7,2,0,0,2829,2830,7,8,0, - 0,2830,2831,7,18,0,0,2831,2832,7,19,0,0,2832,2833,7,17,0,0,2833, - 2834,7,8,0,0,2834,612,1,0,0,0,2835,2836,7,21,0,0,2836,2837,7,19, - 0,0,2837,2838,7,12,0,0,2838,2839,7,1,0,0,2839,614,1,0,0,0,2840,2841, - 7,21,0,0,2841,2842,7,12,0,0,2842,2843,7,4,0,0,2843,2844,7,3,0,0, - 2844,2845,7,3,0,0,2845,2846,7,6,0,0,2846,2847,7,12,0,0,2847,616, - 1,0,0,0,2848,2849,7,21,0,0,2849,2850,7,12,0,0,2850,2851,7,2,0,0, - 2851,2852,7,8,0,0,2852,2853,7,6,0,0,2853,618,1,0,0,0,2854,2855,7, - 14,0,0,2855,2856,7,6,0,0,2856,2857,7,4,0,0,2857,2858,7,12,0,0,2858, - 620,1,0,0,0,2859,2860,7,15,0,0,2860,2861,7,19,0,0,2861,2862,7,7, - 0,0,2862,2863,7,6,0,0,2863,622,1,0,0,0,2864,2865,5,61,0,0,2865,624, - 1,0,0,0,2866,2867,5,60,0,0,2867,2871,5,62,0,0,2868,2869,5,33,0,0, - 2869,2871,5,61,0,0,2870,2866,1,0,0,0,2870,2868,1,0,0,0,2871,626, - 1,0,0,0,2872,2873,5,60,0,0,2873,628,1,0,0,0,2874,2875,5,60,0,0,2875, - 2876,5,61,0,0,2876,630,1,0,0,0,2877,2878,5,62,0,0,2878,632,1,0,0, - 0,2879,2880,5,62,0,0,2880,2881,5,61,0,0,2881,634,1,0,0,0,2882,2883, - 5,43,0,0,2883,636,1,0,0,0,2884,2885,5,45,0,0,2885,638,1,0,0,0,2886, - 2887,5,42,0,0,2887,640,1,0,0,0,2888,2889,5,47,0,0,2889,642,1,0,0, - 0,2890,2891,5,37,0,0,2891,644,1,0,0,0,2892,2893,5,124,0,0,2893,2894, - 5,124,0,0,2894,646,1,0,0,0,2895,2896,5,63,0,0,2896,648,1,0,0,0,2897, - 2898,5,59,0,0,2898,650,1,0,0,0,2899,2905,5,39,0,0,2900,2904,8,26, - 0,0,2901,2902,5,39,0,0,2902,2904,5,39,0,0,2903,2900,1,0,0,0,2903, - 2901,1,0,0,0,2904,2907,1,0,0,0,2905,2903,1,0,0,0,2905,2906,1,0,0, - 0,2906,2908,1,0,0,0,2907,2905,1,0,0,0,2908,2909,5,39,0,0,2909,652, - 1,0,0,0,2910,2911,7,17,0,0,2911,2912,5,38,0,0,2912,2913,5,39,0,0, - 2913,2919,1,0,0,0,2914,2918,8,26,0,0,2915,2916,5,39,0,0,2916,2918, - 5,39,0,0,2917,2914,1,0,0,0,2917,2915,1,0,0,0,2918,2921,1,0,0,0,2919, - 2917,1,0,0,0,2919,2920,1,0,0,0,2920,2922,1,0,0,0,2921,2919,1,0,0, - 0,2922,2923,5,39,0,0,2923,654,1,0,0,0,2924,2925,7,22,0,0,2925,2926, - 5,39,0,0,2926,2930,1,0,0,0,2927,2929,8,26,0,0,2928,2927,1,0,0,0, - 2929,2932,1,0,0,0,2930,2928,1,0,0,0,2930,2931,1,0,0,0,2931,2933, - 1,0,0,0,2932,2930,1,0,0,0,2933,2934,5,39,0,0,2934,656,1,0,0,0,2935, - 2940,3,671,335,0,2936,2940,3,673,336,0,2937,2940,3,675,337,0,2938, - 2940,3,677,338,0,2939,2935,1,0,0,0,2939,2936,1,0,0,0,2939,2937,1, - 0,0,0,2939,2938,1,0,0,0,2940,658,1,0,0,0,2941,2942,3,671,335,0,2942, - 2944,5,46,0,0,2943,2945,3,671,335,0,2944,2943,1,0,0,0,2944,2945, - 1,0,0,0,2945,2949,1,0,0,0,2946,2947,5,46,0,0,2947,2949,3,671,335, - 0,2948,2941,1,0,0,0,2948,2946,1,0,0,0,2949,660,1,0,0,0,2950,2952, - 3,681,340,0,2951,2950,1,0,0,0,2952,2953,1,0,0,0,2953,2951,1,0,0, - 0,2953,2954,1,0,0,0,2954,2962,1,0,0,0,2955,2959,5,46,0,0,2956,2958, - 3,681,340,0,2957,2956,1,0,0,0,2958,2961,1,0,0,0,2959,2957,1,0,0, - 0,2959,2960,1,0,0,0,2960,2963,1,0,0,0,2961,2959,1,0,0,0,2962,2955, - 1,0,0,0,2962,2963,1,0,0,0,2963,2964,1,0,0,0,2964,2965,3,679,339, - 0,2965,2975,1,0,0,0,2966,2968,5,46,0,0,2967,2969,3,681,340,0,2968, - 2967,1,0,0,0,2969,2970,1,0,0,0,2970,2968,1,0,0,0,2970,2971,1,0,0, - 0,2971,2972,1,0,0,0,2972,2973,3,679,339,0,2973,2975,1,0,0,0,2974, - 2951,1,0,0,0,2974,2966,1,0,0,0,2975,662,1,0,0,0,2976,2979,3,683, - 341,0,2977,2979,5,95,0,0,2978,2976,1,0,0,0,2978,2977,1,0,0,0,2979, - 2985,1,0,0,0,2980,2984,3,683,341,0,2981,2984,3,681,340,0,2982,2984, - 5,95,0,0,2983,2980,1,0,0,0,2983,2981,1,0,0,0,2983,2982,1,0,0,0,2984, - 2987,1,0,0,0,2985,2983,1,0,0,0,2985,2986,1,0,0,0,2986,664,1,0,0, - 0,2987,2985,1,0,0,0,2988,2992,3,681,340,0,2989,2993,3,683,341,0, - 2990,2993,3,681,340,0,2991,2993,5,95,0,0,2992,2989,1,0,0,0,2992, - 2990,1,0,0,0,2992,2991,1,0,0,0,2993,2994,1,0,0,0,2994,2992,1,0,0, - 0,2994,2995,1,0,0,0,2995,666,1,0,0,0,2996,3002,5,34,0,0,2997,3001, - 8,27,0,0,2998,2999,5,34,0,0,2999,3001,5,34,0,0,3000,2997,1,0,0,0, - 3000,2998,1,0,0,0,3001,3004,1,0,0,0,3002,3000,1,0,0,0,3002,3003, - 1,0,0,0,3003,3005,1,0,0,0,3004,3002,1,0,0,0,3005,3006,5,34,0,0,3006, - 668,1,0,0,0,3007,3013,5,96,0,0,3008,3012,8,28,0,0,3009,3010,5,96, - 0,0,3010,3012,5,96,0,0,3011,3008,1,0,0,0,3011,3009,1,0,0,0,3012, - 3015,1,0,0,0,3013,3011,1,0,0,0,3013,3014,1,0,0,0,3014,3016,1,0,0, - 0,3015,3013,1,0,0,0,3016,3017,5,96,0,0,3017,670,1,0,0,0,3018,3025, - 3,681,340,0,3019,3021,5,95,0,0,3020,3019,1,0,0,0,3020,3021,1,0,0, - 0,3021,3022,1,0,0,0,3022,3024,3,681,340,0,3023,3020,1,0,0,0,3024, - 3027,1,0,0,0,3025,3023,1,0,0,0,3025,3026,1,0,0,0,3026,672,1,0,0, - 0,3027,3025,1,0,0,0,3028,3029,5,48,0,0,3029,3030,7,22,0,0,3030,3038, - 1,0,0,0,3031,3033,5,95,0,0,3032,3031,1,0,0,0,3032,3033,1,0,0,0,3033, - 3036,1,0,0,0,3034,3037,3,681,340,0,3035,3037,7,29,0,0,3036,3034, - 1,0,0,0,3036,3035,1,0,0,0,3037,3039,1,0,0,0,3038,3032,1,0,0,0,3039, - 3040,1,0,0,0,3040,3038,1,0,0,0,3040,3041,1,0,0,0,3041,674,1,0,0, - 0,3042,3043,5,48,0,0,3043,3044,7,19,0,0,3044,3049,1,0,0,0,3045,3047, - 5,95,0,0,3046,3045,1,0,0,0,3046,3047,1,0,0,0,3047,3048,1,0,0,0,3048, - 3050,7,30,0,0,3049,3046,1,0,0,0,3050,3051,1,0,0,0,3051,3049,1,0, - 0,0,3051,3052,1,0,0,0,3052,676,1,0,0,0,3053,3054,5,48,0,0,3054,3055, - 7,5,0,0,3055,3060,1,0,0,0,3056,3058,5,95,0,0,3057,3056,1,0,0,0,3057, - 3058,1,0,0,0,3058,3059,1,0,0,0,3059,3061,7,31,0,0,3060,3057,1,0, - 0,0,3061,3062,1,0,0,0,3062,3060,1,0,0,0,3062,3063,1,0,0,0,3063,678, - 1,0,0,0,3064,3066,7,6,0,0,3065,3067,7,32,0,0,3066,3065,1,0,0,0,3066, - 3067,1,0,0,0,3067,3069,1,0,0,0,3068,3070,3,681,340,0,3069,3068,1, - 0,0,0,3070,3071,1,0,0,0,3071,3069,1,0,0,0,3071,3072,1,0,0,0,3072, - 680,1,0,0,0,3073,3074,7,33,0,0,3074,682,1,0,0,0,3075,3076,7,34,0, - 0,3076,684,1,0,0,0,3077,3078,5,45,0,0,3078,3079,5,45,0,0,3079,3083, - 1,0,0,0,3080,3082,8,35,0,0,3081,3080,1,0,0,0,3082,3085,1,0,0,0,3083, - 3081,1,0,0,0,3083,3084,1,0,0,0,3084,3087,1,0,0,0,3085,3083,1,0,0, - 0,3086,3088,5,13,0,0,3087,3086,1,0,0,0,3087,3088,1,0,0,0,3088,3090, - 1,0,0,0,3089,3091,5,10,0,0,3090,3089,1,0,0,0,3090,3091,1,0,0,0,3091, - 3092,1,0,0,0,3092,3093,6,342,0,0,3093,686,1,0,0,0,3094,3095,5,47, - 0,0,3095,3096,5,42,0,0,3096,3100,1,0,0,0,3097,3099,9,0,0,0,3098, - 3097,1,0,0,0,3099,3102,1,0,0,0,3100,3101,1,0,0,0,3100,3098,1,0,0, - 0,3101,3103,1,0,0,0,3102,3100,1,0,0,0,3103,3104,5,42,0,0,3104,3105, - 5,47,0,0,3105,3106,1,0,0,0,3106,3107,6,343,0,0,3107,688,1,0,0,0, - 3108,3109,7,36,0,0,3109,3110,1,0,0,0,3110,3111,6,344,0,0,3111,690, - 1,0,0,0,3112,3113,9,0,0,0,3113,692,1,0,0,0,39,0,2870,2903,2905,2917, - 2919,2930,2939,2944,2948,2953,2959,2962,2970,2974,2978,2983,2985, - 2992,2994,3000,3002,3011,3013,3020,3025,3032,3036,3040,3046,3051, - 3057,3062,3066,3071,3083,3087,3090,3100,1,0,1,0 + 1,284,1,284,1,284,1,285,1,285,1,285,1,285,1,285,1,285,1,285,1,286, + 1,286,1,286,1,286,1,286,1,286,1,287,1,287,1,287,1,287,1,287,1,287, + 1,287,1,288,1,288,1,288,1,288,1,289,1,289,1,289,1,289,1,289,1,290, + 1,290,1,290,1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,291, + 1,292,1,292,1,292,1,292,1,292,1,292,1,293,1,293,1,293,1,293,1,293, + 1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,294,1,295,1,295, + 1,295,1,295,1,295,1,295,1,296,1,296,1,296,1,296,1,296,1,296,1,296, + 1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298, + 1,298,1,298,1,298,1,298,1,298,1,299,1,299,1,299,1,299,1,299,1,300, + 1,300,1,300,1,300,1,300,1,301,1,301,1,301,1,301,1,301,1,301,1,302, + 1,302,1,302,1,302,1,302,1,302,1,303,1,303,1,303,1,303,1,303,1,303, + 1,303,1,304,1,304,1,304,1,304,1,304,1,305,1,305,1,305,1,305,1,305, + 1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,306,1,307, + 1,307,1,307,1,307,1,307,1,308,1,308,1,308,1,308,1,308,1,308,1,308, + 1,308,1,309,1,309,1,309,1,309,1,309,1,309,1,310,1,310,1,310,1,310, + 1,310,1,311,1,311,1,311,1,311,1,311,1,312,1,312,1,313,1,313,1,313, + 1,313,3,313,2882,8,313,1,314,1,314,1,315,1,315,1,315,1,316,1,316, + 1,317,1,317,1,317,1,318,1,318,1,319,1,319,1,320,1,320,1,321,1,321, + 1,322,1,322,1,323,1,323,1,323,1,324,1,324,1,325,1,325,1,326,1,326, + 1,326,1,326,5,326,2915,8,326,10,326,12,326,2918,9,326,1,326,1,326, + 1,327,1,327,1,327,1,327,1,327,1,327,1,327,5,327,2929,8,327,10,327, + 12,327,2932,9,327,1,327,1,327,1,328,1,328,1,328,1,328,5,328,2940, + 8,328,10,328,12,328,2943,9,328,1,328,1,328,1,329,1,329,1,329,1,329, + 3,329,2951,8,329,1,330,1,330,1,330,3,330,2956,8,330,1,330,1,330, + 3,330,2960,8,330,1,331,4,331,2963,8,331,11,331,12,331,2964,1,331, + 1,331,5,331,2969,8,331,10,331,12,331,2972,9,331,3,331,2974,8,331, + 1,331,1,331,1,331,1,331,4,331,2980,8,331,11,331,12,331,2981,1,331, + 1,331,3,331,2986,8,331,1,332,1,332,3,332,2990,8,332,1,332,1,332, + 1,332,5,332,2995,8,332,10,332,12,332,2998,9,332,1,333,1,333,1,333, + 1,333,4,333,3004,8,333,11,333,12,333,3005,1,334,1,334,1,334,1,334, + 5,334,3012,8,334,10,334,12,334,3015,9,334,1,334,1,334,1,335,1,335, + 1,335,1,335,5,335,3023,8,335,10,335,12,335,3026,9,335,1,335,1,335, + 1,336,1,336,3,336,3032,8,336,1,336,5,336,3035,8,336,10,336,12,336, + 3038,9,336,1,337,1,337,1,337,1,337,3,337,3044,8,337,1,337,1,337, + 3,337,3048,8,337,4,337,3050,8,337,11,337,12,337,3051,1,338,1,338, + 1,338,1,338,3,338,3058,8,338,1,338,4,338,3061,8,338,11,338,12,338, + 3062,1,339,1,339,1,339,1,339,3,339,3069,8,339,1,339,4,339,3072,8, + 339,11,339,12,339,3073,1,340,1,340,3,340,3078,8,340,1,340,4,340, + 3081,8,340,11,340,12,340,3082,1,341,1,341,1,342,1,342,1,343,1,343, + 1,343,1,343,5,343,3093,8,343,10,343,12,343,3096,9,343,1,343,3,343, + 3099,8,343,1,343,3,343,3102,8,343,1,343,1,343,1,344,1,344,1,344, + 1,344,5,344,3110,8,344,10,344,12,344,3113,9,344,1,344,1,344,1,344, + 1,344,1,344,1,345,1,345,1,345,1,345,1,346,1,346,1,3111,0,347,1,1, + 3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14, + 29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25, + 51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36, + 73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47, + 95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113, + 57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66, + 133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151, + 76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85, + 171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189, + 95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207, + 104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223, + 112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239, + 120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255, + 128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271, + 136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287, + 144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303, + 152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319, + 160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335, + 168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351, + 176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367, + 184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383, + 192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399, + 200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415, + 208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431, + 216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447, + 224,449,225,451,226,453,227,455,228,457,229,459,230,461,231,463, + 232,465,233,467,234,469,235,471,236,473,237,475,238,477,239,479, + 240,481,241,483,242,485,243,487,244,489,245,491,246,493,247,495, + 248,497,249,499,250,501,251,503,252,505,253,507,254,509,255,511, + 256,513,257,515,258,517,259,519,260,521,261,523,262,525,263,527, + 264,529,265,531,266,533,267,535,268,537,269,539,270,541,271,543, + 272,545,273,547,274,549,275,551,276,553,277,555,278,557,279,559, + 280,561,281,563,282,565,283,567,284,569,285,571,286,573,287,575, + 288,577,289,579,290,581,291,583,292,585,293,587,294,589,295,591, + 296,593,297,595,298,597,299,599,300,601,301,603,302,605,303,607, + 304,609,305,611,306,613,307,615,308,617,309,619,310,621,311,623, + 312,625,313,627,314,629,315,631,316,633,317,635,318,637,319,639, + 320,641,321,643,322,645,323,647,324,649,325,651,326,653,327,655, + 328,657,329,659,330,661,331,663,332,665,333,667,334,669,335,671, + 336,673,0,675,0,677,0,679,0,681,0,683,0,685,0,687,337,689,338,691, + 339,693,340,1,0,37,2,0,83,83,115,115,2,0,75,75,107,107,2,0,73,73, + 105,105,2,0,80,80,112,112,2,0,65,65,97,97,2,0,66,66,98,98,2,0,69, + 69,101,101,2,0,78,78,110,110,2,0,84,84,116,116,2,0,68,68,100,100, + 2,0,77,77,109,109,2,0,70,70,102,102,2,0,82,82,114,114,2,0,76,76, + 108,108,2,0,89,89,121,121,2,0,90,90,122,122,2,0,67,67,99,99,2,0, + 85,85,117,117,2,0,72,72,104,104,2,0,79,79,111,111,2,0,71,71,103, + 103,2,0,87,87,119,119,2,0,88,88,120,120,2,0,86,86,118,118,2,0,74, + 74,106,106,2,0,81,81,113,113,1,0,39,39,1,0,34,34,1,0,96,96,2,0,65, + 70,97,102,1,0,48,55,1,0,48,49,2,0,43,43,45,45,1,0,48,57,2,0,65,90, + 97,122,2,0,10,10,13,13,3,0,9,10,13,13,32,32,3159,0,1,1,0,0,0,0,3, + 1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1, + 0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1, + 0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1, + 0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1, + 0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1, + 0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1, + 0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1, + 0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1, + 0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1, + 0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103, + 1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0, + 0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1, + 0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0, + 131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0, + 0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149, + 1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0, + 0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1, + 0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0, + 177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0, + 0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195, + 1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0, + 0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1, + 0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0, + 223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0, + 0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241, + 1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0, + 0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1, + 0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0, + 269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0, + 0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287, + 1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0, + 0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1, + 0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0, + 315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0, + 0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333, + 1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0, + 0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1, + 0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0, + 361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0, + 0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379, + 1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0, + 0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1, + 0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0, + 407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0, + 0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425, + 1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0, + 0,435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1, + 0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0, + 453,1,0,0,0,0,455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0, + 0,0,0,463,1,0,0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471, + 1,0,0,0,0,473,1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0, + 0,481,1,0,0,0,0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1, + 0,0,0,0,491,1,0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,0, + 499,1,0,0,0,0,501,1,0,0,0,0,503,1,0,0,0,0,505,1,0,0,0,0,507,1,0, + 0,0,0,509,1,0,0,0,0,511,1,0,0,0,0,513,1,0,0,0,0,515,1,0,0,0,0,517, + 1,0,0,0,0,519,1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0,525,1,0,0,0, + 0,527,1,0,0,0,0,529,1,0,0,0,0,531,1,0,0,0,0,533,1,0,0,0,0,535,1, + 0,0,0,0,537,1,0,0,0,0,539,1,0,0,0,0,541,1,0,0,0,0,543,1,0,0,0,0, + 545,1,0,0,0,0,547,1,0,0,0,0,549,1,0,0,0,0,551,1,0,0,0,0,553,1,0, + 0,0,0,555,1,0,0,0,0,557,1,0,0,0,0,559,1,0,0,0,0,561,1,0,0,0,0,563, + 1,0,0,0,0,565,1,0,0,0,0,567,1,0,0,0,0,569,1,0,0,0,0,571,1,0,0,0, + 0,573,1,0,0,0,0,575,1,0,0,0,0,577,1,0,0,0,0,579,1,0,0,0,0,581,1, + 0,0,0,0,583,1,0,0,0,0,585,1,0,0,0,0,587,1,0,0,0,0,589,1,0,0,0,0, + 591,1,0,0,0,0,593,1,0,0,0,0,595,1,0,0,0,0,597,1,0,0,0,0,599,1,0, + 0,0,0,601,1,0,0,0,0,603,1,0,0,0,0,605,1,0,0,0,0,607,1,0,0,0,0,609, + 1,0,0,0,0,611,1,0,0,0,0,613,1,0,0,0,0,615,1,0,0,0,0,617,1,0,0,0, + 0,619,1,0,0,0,0,621,1,0,0,0,0,623,1,0,0,0,0,625,1,0,0,0,0,627,1, + 0,0,0,0,629,1,0,0,0,0,631,1,0,0,0,0,633,1,0,0,0,0,635,1,0,0,0,0, + 637,1,0,0,0,0,639,1,0,0,0,0,641,1,0,0,0,0,643,1,0,0,0,0,645,1,0, + 0,0,0,647,1,0,0,0,0,649,1,0,0,0,0,651,1,0,0,0,0,653,1,0,0,0,0,655, + 1,0,0,0,0,657,1,0,0,0,0,659,1,0,0,0,0,661,1,0,0,0,0,663,1,0,0,0, + 0,665,1,0,0,0,0,667,1,0,0,0,0,669,1,0,0,0,0,671,1,0,0,0,0,687,1, + 0,0,0,0,689,1,0,0,0,0,691,1,0,0,0,0,693,1,0,0,0,1,695,1,0,0,0,3, + 697,1,0,0,0,5,699,1,0,0,0,7,701,1,0,0,0,9,703,1,0,0,0,11,708,1,0, + 0,0,13,711,1,0,0,0,15,714,1,0,0,0,17,716,1,0,0,0,19,718,1,0,0,0, + 21,720,1,0,0,0,23,722,1,0,0,0,25,724,1,0,0,0,27,726,1,0,0,0,29,729, + 1,0,0,0,31,732,1,0,0,0,33,734,1,0,0,0,35,736,1,0,0,0,37,743,1,0, + 0,0,39,747,1,0,0,0,41,753,1,0,0,0,43,759,1,0,0,0,45,763,1,0,0,0, + 47,769,1,0,0,0,49,777,1,0,0,0,51,781,1,0,0,0,53,785,1,0,0,0,55,791, + 1,0,0,0,57,794,1,0,0,0,59,798,1,0,0,0,61,801,1,0,0,0,63,815,1,0, + 0,0,65,821,1,0,0,0,67,831,1,0,0,0,69,839,1,0,0,0,71,844,1,0,0,0, + 73,847,1,0,0,0,75,852,1,0,0,0,77,859,1,0,0,0,79,867,1,0,0,0,81,872, + 1,0,0,0,83,877,1,0,0,0,85,885,1,0,0,0,87,894,1,0,0,0,89,903,1,0, + 0,0,91,910,1,0,0,0,93,918,1,0,0,0,95,926,1,0,0,0,97,933,1,0,0,0, + 99,943,1,0,0,0,101,955,1,0,0,0,103,966,1,0,0,0,105,972,1,0,0,0,107, + 984,1,0,0,0,109,991,1,0,0,0,111,997,1,0,0,0,113,1002,1,0,0,0,115, + 1010,1,0,0,0,117,1026,1,0,0,0,119,1039,1,0,0,0,121,1052,1,0,0,0, + 123,1065,1,0,0,0,125,1080,1,0,0,0,127,1093,1,0,0,0,129,1111,1,0, + 0,0,131,1124,1,0,0,0,133,1129,1,0,0,0,135,1134,1,0,0,0,137,1138, + 1,0,0,0,139,1149,1,0,0,0,141,1157,1,0,0,0,143,1165,1,0,0,0,145,1172, + 1,0,0,0,147,1180,1,0,0,0,149,1187,1,0,0,0,151,1192,1,0,0,0,153,1197, + 1,0,0,0,155,1206,1,0,0,0,157,1217,1,0,0,0,159,1231,1,0,0,0,161,1240, + 1,0,0,0,163,1252,1,0,0,0,165,1255,1,0,0,0,167,1262,1,0,0,0,169,1267, + 1,0,0,0,171,1272,1,0,0,0,173,1278,1,0,0,0,175,1285,1,0,0,0,177,1294, + 1,0,0,0,179,1298,1,0,0,0,181,1304,1,0,0,0,183,1311,1,0,0,0,185,1318, + 1,0,0,0,187,1328,1,0,0,0,189,1336,1,0,0,0,191,1343,1,0,0,0,193,1351, + 1,0,0,0,195,1359,1,0,0,0,197,1365,1,0,0,0,199,1371,1,0,0,0,201,1378, + 1,0,0,0,203,1384,1,0,0,0,205,1390,1,0,0,0,207,1400,1,0,0,0,209,1404, + 1,0,0,0,211,1411,1,0,0,0,213,1416,1,0,0,0,215,1421,1,0,0,0,217,1430, + 1,0,0,0,219,1440,1,0,0,0,221,1446,1,0,0,0,223,1452,1,0,0,0,225,1460, + 1,0,0,0,227,1467,1,0,0,0,229,1476,1,0,0,0,231,1482,1,0,0,0,233,1491, + 1,0,0,0,235,1498,1,0,0,0,237,1505,1,0,0,0,239,1510,1,0,0,0,241,1513, + 1,0,0,0,243,1520,1,0,0,0,245,1530,1,0,0,0,247,1533,1,0,0,0,249,1543, + 1,0,0,0,251,1551,1,0,0,0,253,1557,1,0,0,0,255,1563,1,0,0,0,257,1570, + 1,0,0,0,259,1580,1,0,0,0,261,1589,1,0,0,0,263,1594,1,0,0,0,265,1602, + 1,0,0,0,267,1605,1,0,0,0,269,1608,1,0,0,0,271,1618,1,0,0,0,273,1626, + 1,0,0,0,275,1631,1,0,0,0,277,1636,1,0,0,0,279,1647,1,0,0,0,281,1659, + 1,0,0,0,283,1671,1,0,0,0,285,1682,1,0,0,0,287,1693,1,0,0,0,289,1704, + 1,0,0,0,291,1709,1,0,0,0,293,1713,1,0,0,0,295,1718,1,0,0,0,297,1727, + 1,0,0,0,299,1732,1,0,0,0,301,1740,1,0,0,0,303,1748,1,0,0,0,305,1754, + 1,0,0,0,307,1759,1,0,0,0,309,1765,1,0,0,0,311,1770,1,0,0,0,313,1776, + 1,0,0,0,315,1784,1,0,0,0,317,1790,1,0,0,0,319,1800,1,0,0,0,321,1815, + 1,0,0,0,323,1823,1,0,0,0,325,1828,1,0,0,0,327,1832,1,0,0,0,329,1838, + 1,0,0,0,331,1846,1,0,0,0,333,1854,1,0,0,0,335,1870,1,0,0,0,337,1883, + 1,0,0,0,339,1892,1,0,0,0,341,1898,1,0,0,0,343,1905,1,0,0,0,345,1911, + 1,0,0,0,347,1919,1,0,0,0,349,1926,1,0,0,0,351,1931,1,0,0,0,353,1935, + 1,0,0,0,355,1939,1,0,0,0,357,1944,1,0,0,0,359,1949,1,0,0,0,361,1952, + 1,0,0,0,363,1957,1,0,0,0,365,1967,1,0,0,0,367,1971,1,0,0,0,369,1976, + 1,0,0,0,371,1983,1,0,0,0,373,1989,1,0,0,0,375,1996,1,0,0,0,377,1999, + 1,0,0,0,379,2006,1,0,0,0,381,2011,1,0,0,0,383,2014,1,0,0,0,385,2018, + 1,0,0,0,387,2023,1,0,0,0,389,2030,1,0,0,0,391,2033,1,0,0,0,393,2039, + 1,0,0,0,395,2050,1,0,0,0,397,2056,1,0,0,0,399,2063,1,0,0,0,401,2068, + 1,0,0,0,403,2077,1,0,0,0,405,2087,1,0,0,0,407,2098,1,0,0,0,409,2106, + 1,0,0,0,411,2111,1,0,0,0,413,2116,1,0,0,0,415,2124,1,0,0,0,417,2128, + 1,0,0,0,419,2135,1,0,0,0,421,2143,1,0,0,0,423,2148,1,0,0,0,425,2157, + 1,0,0,0,427,2167,1,0,0,0,429,2177,1,0,0,0,431,2185,1,0,0,0,433,2196, + 1,0,0,0,435,2207,1,0,0,0,437,2213,1,0,0,0,439,2220,1,0,0,0,441,2226, + 1,0,0,0,443,2231,1,0,0,0,445,2241,1,0,0,0,447,2249,1,0,0,0,449,2256, + 1,0,0,0,451,2263,1,0,0,0,453,2274,1,0,0,0,455,2282,1,0,0,0,457,2288, + 1,0,0,0,459,2296,1,0,0,0,461,2305,1,0,0,0,463,2312,1,0,0,0,465,2322, + 1,0,0,0,467,2330,1,0,0,0,469,2337,1,0,0,0,471,2343,1,0,0,0,473,2348, + 1,0,0,0,475,2354,1,0,0,0,477,2363,1,0,0,0,479,2370,1,0,0,0,481,2374, + 1,0,0,0,483,2379,1,0,0,0,485,2387,1,0,0,0,487,2394,1,0,0,0,489,2401, + 1,0,0,0,491,2409,1,0,0,0,493,2416,1,0,0,0,495,2425,1,0,0,0,497,2430, + 1,0,0,0,499,2437,1,0,0,0,501,2450,1,0,0,0,503,2458,1,0,0,0,505,2462, + 1,0,0,0,507,2467,1,0,0,0,509,2472,1,0,0,0,511,2477,1,0,0,0,513,2483, + 1,0,0,0,515,2489,1,0,0,0,517,2496,1,0,0,0,519,2506,1,0,0,0,521,2513, + 1,0,0,0,523,2519,1,0,0,0,525,2526,1,0,0,0,527,2538,1,0,0,0,529,2543, + 1,0,0,0,531,2550,1,0,0,0,533,2555,1,0,0,0,535,2560,1,0,0,0,537,2565, + 1,0,0,0,539,2575,1,0,0,0,541,2578,1,0,0,0,543,2587,1,0,0,0,545,2599, + 1,0,0,0,547,2604,1,0,0,0,549,2609,1,0,0,0,551,2618,1,0,0,0,553,2627, + 1,0,0,0,555,2632,1,0,0,0,557,2640,1,0,0,0,559,2650,1,0,0,0,561,2662, + 1,0,0,0,563,2676,1,0,0,0,565,2682,1,0,0,0,567,2689,1,0,0,0,569,2697, + 1,0,0,0,571,2707,1,0,0,0,573,2714,1,0,0,0,575,2720,1,0,0,0,577,2727, + 1,0,0,0,579,2731,1,0,0,0,581,2736,1,0,0,0,583,2742,1,0,0,0,585,2748, + 1,0,0,0,587,2754,1,0,0,0,589,2759,1,0,0,0,591,2768,1,0,0,0,593,2774, + 1,0,0,0,595,2781,1,0,0,0,597,2789,1,0,0,0,599,2797,1,0,0,0,601,2802, + 1,0,0,0,603,2807,1,0,0,0,605,2813,1,0,0,0,607,2819,1,0,0,0,609,2826, + 1,0,0,0,611,2831,1,0,0,0,613,2838,1,0,0,0,615,2846,1,0,0,0,617,2851, + 1,0,0,0,619,2859,1,0,0,0,621,2865,1,0,0,0,623,2870,1,0,0,0,625,2875, + 1,0,0,0,627,2881,1,0,0,0,629,2883,1,0,0,0,631,2885,1,0,0,0,633,2888, + 1,0,0,0,635,2890,1,0,0,0,637,2893,1,0,0,0,639,2895,1,0,0,0,641,2897, + 1,0,0,0,643,2899,1,0,0,0,645,2901,1,0,0,0,647,2903,1,0,0,0,649,2906, + 1,0,0,0,651,2908,1,0,0,0,653,2910,1,0,0,0,655,2921,1,0,0,0,657,2935, + 1,0,0,0,659,2950,1,0,0,0,661,2959,1,0,0,0,663,2985,1,0,0,0,665,2989, + 1,0,0,0,667,2999,1,0,0,0,669,3007,1,0,0,0,671,3018,1,0,0,0,673,3029, + 1,0,0,0,675,3039,1,0,0,0,677,3053,1,0,0,0,679,3064,1,0,0,0,681,3075, + 1,0,0,0,683,3084,1,0,0,0,685,3086,1,0,0,0,687,3088,1,0,0,0,689,3105, + 1,0,0,0,691,3119,1,0,0,0,693,3123,1,0,0,0,695,696,5,40,0,0,696,2, + 1,0,0,0,697,698,5,41,0,0,698,4,1,0,0,0,699,700,5,44,0,0,700,6,1, + 0,0,0,701,702,5,46,0,0,702,8,1,0,0,0,703,704,7,0,0,0,704,705,7,1, + 0,0,705,706,7,2,0,0,706,707,7,3,0,0,707,10,1,0,0,0,708,709,5,61, + 0,0,709,710,5,62,0,0,710,12,1,0,0,0,711,712,5,45,0,0,712,713,5,62, + 0,0,713,14,1,0,0,0,714,715,5,91,0,0,715,16,1,0,0,0,716,717,5,93, + 0,0,717,18,1,0,0,0,718,719,5,58,0,0,719,20,1,0,0,0,720,721,5,124, + 0,0,721,22,1,0,0,0,722,723,5,94,0,0,723,24,1,0,0,0,724,725,5,36, + 0,0,725,26,1,0,0,0,726,727,5,123,0,0,727,728,5,45,0,0,728,28,1,0, + 0,0,729,730,5,45,0,0,730,731,5,125,0,0,731,30,1,0,0,0,732,733,5, + 123,0,0,733,32,1,0,0,0,734,735,5,125,0,0,735,34,1,0,0,0,736,737, + 7,4,0,0,737,738,7,5,0,0,738,739,7,0,0,0,739,740,7,6,0,0,740,741, + 7,7,0,0,741,742,7,8,0,0,742,36,1,0,0,0,743,744,7,4,0,0,744,745,7, + 9,0,0,745,746,7,9,0,0,746,38,1,0,0,0,747,748,7,4,0,0,748,749,7,9, + 0,0,749,750,7,10,0,0,750,751,7,2,0,0,751,752,7,7,0,0,752,40,1,0, + 0,0,753,754,7,4,0,0,754,755,7,11,0,0,755,756,7,8,0,0,756,757,7,6, + 0,0,757,758,7,12,0,0,758,42,1,0,0,0,759,760,7,4,0,0,760,761,7,13, + 0,0,761,762,7,13,0,0,762,44,1,0,0,0,763,764,7,4,0,0,764,765,7,13, + 0,0,765,766,7,8,0,0,766,767,7,6,0,0,767,768,7,12,0,0,768,46,1,0, + 0,0,769,770,7,4,0,0,770,771,7,7,0,0,771,772,7,4,0,0,772,773,7,13, + 0,0,773,774,7,14,0,0,774,775,7,15,0,0,775,776,7,6,0,0,776,48,1,0, + 0,0,777,778,7,4,0,0,778,779,7,7,0,0,779,780,7,9,0,0,780,50,1,0,0, + 0,781,782,7,4,0,0,782,783,7,7,0,0,783,784,7,14,0,0,784,52,1,0,0, + 0,785,786,7,4,0,0,786,787,7,12,0,0,787,788,7,12,0,0,788,789,7,4, + 0,0,789,790,7,14,0,0,790,54,1,0,0,0,791,792,7,4,0,0,792,793,7,0, + 0,0,793,56,1,0,0,0,794,795,7,4,0,0,795,796,7,0,0,0,796,797,7,16, + 0,0,797,58,1,0,0,0,798,799,7,4,0,0,799,800,7,8,0,0,800,60,1,0,0, + 0,801,802,7,4,0,0,802,803,7,17,0,0,803,804,7,8,0,0,804,805,7,18, + 0,0,805,806,7,19,0,0,806,807,7,12,0,0,807,808,7,2,0,0,808,809,7, + 15,0,0,809,810,7,4,0,0,810,811,7,8,0,0,811,812,7,2,0,0,812,813,7, + 19,0,0,813,814,7,7,0,0,814,62,1,0,0,0,815,816,7,5,0,0,816,817,7, + 6,0,0,817,818,7,20,0,0,818,819,7,2,0,0,819,820,7,7,0,0,820,64,1, + 0,0,0,821,822,7,5,0,0,822,823,7,6,0,0,823,824,7,12,0,0,824,825,7, + 7,0,0,825,826,7,19,0,0,826,827,7,17,0,0,827,828,7,13,0,0,828,829, + 7,13,0,0,829,830,7,2,0,0,830,66,1,0,0,0,831,832,7,5,0,0,832,833, + 7,6,0,0,833,834,7,8,0,0,834,835,7,21,0,0,835,836,7,6,0,0,836,837, + 7,6,0,0,837,838,7,7,0,0,838,68,1,0,0,0,839,840,7,5,0,0,840,841,7, + 19,0,0,841,842,7,8,0,0,842,843,7,18,0,0,843,70,1,0,0,0,844,845,7, + 5,0,0,845,846,7,14,0,0,846,72,1,0,0,0,847,848,7,16,0,0,848,849,7, + 4,0,0,849,850,7,13,0,0,850,851,7,13,0,0,851,74,1,0,0,0,852,853,7, + 16,0,0,853,854,7,4,0,0,854,855,7,13,0,0,855,856,7,13,0,0,856,857, + 7,6,0,0,857,858,7,9,0,0,858,76,1,0,0,0,859,860,7,16,0,0,860,861, + 7,4,0,0,861,862,7,0,0,0,862,863,7,16,0,0,863,864,7,4,0,0,864,865, + 7,9,0,0,865,866,7,6,0,0,866,78,1,0,0,0,867,868,7,16,0,0,868,869, + 7,4,0,0,869,870,7,0,0,0,870,871,7,6,0,0,871,80,1,0,0,0,872,873,7, + 16,0,0,873,874,7,4,0,0,874,875,7,0,0,0,875,876,7,8,0,0,876,82,1, + 0,0,0,877,878,7,16,0,0,878,879,7,4,0,0,879,880,7,8,0,0,880,881,7, + 4,0,0,881,882,7,13,0,0,882,883,7,19,0,0,883,884,7,20,0,0,884,84, + 1,0,0,0,885,886,7,16,0,0,886,887,7,4,0,0,887,888,7,8,0,0,888,889, + 7,4,0,0,889,890,7,13,0,0,890,891,7,19,0,0,891,892,7,20,0,0,892,893, + 7,0,0,0,893,86,1,0,0,0,894,895,7,16,0,0,895,896,7,19,0,0,896,897, + 7,4,0,0,897,898,7,13,0,0,898,899,7,6,0,0,899,900,7,0,0,0,900,901, + 7,16,0,0,901,902,7,6,0,0,902,88,1,0,0,0,903,904,7,16,0,0,904,905, + 7,19,0,0,905,906,7,13,0,0,906,907,7,17,0,0,907,908,7,10,0,0,908, + 909,7,7,0,0,909,90,1,0,0,0,910,911,7,16,0,0,911,912,7,19,0,0,912, + 913,7,13,0,0,913,914,7,17,0,0,914,915,7,10,0,0,915,916,7,7,0,0,916, + 917,7,0,0,0,917,92,1,0,0,0,918,919,7,16,0,0,919,920,7,19,0,0,920, + 921,7,10,0,0,921,922,7,10,0,0,922,923,7,6,0,0,923,924,7,7,0,0,924, + 925,7,8,0,0,925,94,1,0,0,0,926,927,7,16,0,0,927,928,7,19,0,0,928, + 929,7,10,0,0,929,930,7,10,0,0,930,931,7,2,0,0,931,932,7,8,0,0,932, + 96,1,0,0,0,933,934,7,16,0,0,934,935,7,19,0,0,935,936,7,10,0,0,936, + 937,7,10,0,0,937,938,7,2,0,0,938,939,7,8,0,0,939,940,7,8,0,0,940, + 941,7,6,0,0,941,942,7,9,0,0,942,98,1,0,0,0,943,944,7,16,0,0,944, + 945,7,19,0,0,945,946,7,7,0,0,946,947,7,9,0,0,947,948,7,2,0,0,948, + 949,7,8,0,0,949,950,7,2,0,0,950,951,7,19,0,0,951,952,7,7,0,0,952, + 953,7,4,0,0,953,954,7,13,0,0,954,100,1,0,0,0,955,956,7,16,0,0,956, + 957,7,19,0,0,957,958,7,7,0,0,958,959,7,0,0,0,959,960,7,8,0,0,960, + 961,7,12,0,0,961,962,7,4,0,0,962,963,7,2,0,0,963,964,7,7,0,0,964, + 965,7,8,0,0,965,102,1,0,0,0,966,967,7,16,0,0,967,968,7,19,0,0,968, + 969,7,17,0,0,969,970,7,7,0,0,970,971,7,8,0,0,971,104,1,0,0,0,972, + 973,7,16,0,0,973,974,7,19,0,0,974,975,7,3,0,0,975,976,7,4,0,0,976, + 977,7,12,0,0,977,978,7,8,0,0,978,979,7,2,0,0,979,980,7,8,0,0,980, + 981,7,2,0,0,981,982,7,19,0,0,982,983,7,7,0,0,983,106,1,0,0,0,984, + 985,7,16,0,0,985,986,7,12,0,0,986,987,7,6,0,0,987,988,7,4,0,0,988, + 989,7,8,0,0,989,990,7,6,0,0,990,108,1,0,0,0,991,992,7,16,0,0,992, + 993,7,12,0,0,993,994,7,19,0,0,994,995,7,0,0,0,995,996,7,0,0,0,996, + 110,1,0,0,0,997,998,7,16,0,0,998,999,7,17,0,0,999,1000,7,5,0,0,1000, + 1001,7,6,0,0,1001,112,1,0,0,0,1002,1003,7,16,0,0,1003,1004,7,17, + 0,0,1004,1005,7,12,0,0,1005,1006,7,12,0,0,1006,1007,7,6,0,0,1007, + 1008,7,7,0,0,1008,1009,7,8,0,0,1009,114,1,0,0,0,1010,1011,7,16,0, + 0,1011,1012,7,17,0,0,1012,1013,7,12,0,0,1013,1014,7,12,0,0,1014, + 1015,7,6,0,0,1015,1016,7,7,0,0,1016,1017,7,8,0,0,1017,1018,5,95, + 0,0,1018,1019,7,16,0,0,1019,1020,7,4,0,0,1020,1021,7,8,0,0,1021, + 1022,7,4,0,0,1022,1023,7,13,0,0,1023,1024,7,19,0,0,1024,1025,7,20, + 0,0,1025,116,1,0,0,0,1026,1027,7,16,0,0,1027,1028,7,17,0,0,1028, + 1029,7,12,0,0,1029,1030,7,12,0,0,1030,1031,7,6,0,0,1031,1032,7,7, + 0,0,1032,1033,7,8,0,0,1033,1034,5,95,0,0,1034,1035,7,9,0,0,1035, + 1036,7,4,0,0,1036,1037,7,8,0,0,1037,1038,7,6,0,0,1038,118,1,0,0, + 0,1039,1040,7,16,0,0,1040,1041,7,17,0,0,1041,1042,7,12,0,0,1042, + 1043,7,12,0,0,1043,1044,7,6,0,0,1044,1045,7,7,0,0,1045,1046,7,8, + 0,0,1046,1047,5,95,0,0,1047,1048,7,3,0,0,1048,1049,7,4,0,0,1049, + 1050,7,8,0,0,1050,1051,7,18,0,0,1051,120,1,0,0,0,1052,1053,7,16, + 0,0,1053,1054,7,17,0,0,1054,1055,7,12,0,0,1055,1056,7,12,0,0,1056, + 1057,7,6,0,0,1057,1058,7,7,0,0,1058,1059,7,8,0,0,1059,1060,5,95, + 0,0,1060,1061,7,12,0,0,1061,1062,7,19,0,0,1062,1063,7,13,0,0,1063, + 1064,7,6,0,0,1064,122,1,0,0,0,1065,1066,7,16,0,0,1066,1067,7,17, + 0,0,1067,1068,7,12,0,0,1068,1069,7,12,0,0,1069,1070,7,6,0,0,1070, + 1071,7,7,0,0,1071,1072,7,8,0,0,1072,1073,5,95,0,0,1073,1074,7,0, + 0,0,1074,1075,7,16,0,0,1075,1076,7,18,0,0,1076,1077,7,6,0,0,1077, + 1078,7,10,0,0,1078,1079,7,4,0,0,1079,124,1,0,0,0,1080,1081,7,16, + 0,0,1081,1082,7,17,0,0,1082,1083,7,12,0,0,1083,1084,7,12,0,0,1084, + 1085,7,6,0,0,1085,1086,7,7,0,0,1086,1087,7,8,0,0,1087,1088,5,95, + 0,0,1088,1089,7,8,0,0,1089,1090,7,2,0,0,1090,1091,7,10,0,0,1091, + 1092,7,6,0,0,1092,126,1,0,0,0,1093,1094,7,16,0,0,1094,1095,7,17, + 0,0,1095,1096,7,12,0,0,1096,1097,7,12,0,0,1097,1098,7,6,0,0,1098, + 1099,7,7,0,0,1099,1100,7,8,0,0,1100,1101,5,95,0,0,1101,1102,7,8, + 0,0,1102,1103,7,2,0,0,1103,1104,7,10,0,0,1104,1105,7,6,0,0,1105, + 1106,7,0,0,0,1106,1107,7,8,0,0,1107,1108,7,4,0,0,1108,1109,7,10, + 0,0,1109,1110,7,3,0,0,1110,128,1,0,0,0,1111,1112,7,16,0,0,1112,1113, + 7,17,0,0,1113,1114,7,12,0,0,1114,1115,7,12,0,0,1115,1116,7,6,0,0, + 1116,1117,7,7,0,0,1117,1118,7,8,0,0,1118,1119,5,95,0,0,1119,1120, + 7,17,0,0,1120,1121,7,0,0,0,1121,1122,7,6,0,0,1122,1123,7,12,0,0, + 1123,130,1,0,0,0,1124,1125,7,9,0,0,1125,1126,7,4,0,0,1126,1127,7, + 8,0,0,1127,1128,7,4,0,0,1128,132,1,0,0,0,1129,1130,7,9,0,0,1130, + 1131,7,4,0,0,1131,1132,7,8,0,0,1132,1133,7,6,0,0,1133,134,1,0,0, + 0,1134,1135,7,9,0,0,1135,1136,7,4,0,0,1136,1137,7,14,0,0,1137,136, + 1,0,0,0,1138,1139,7,9,0,0,1139,1140,7,6,0,0,1140,1141,7,4,0,0,1141, + 1142,7,13,0,0,1142,1143,7,13,0,0,1143,1144,7,19,0,0,1144,1145,7, + 16,0,0,1145,1146,7,4,0,0,1146,1147,7,8,0,0,1147,1148,7,6,0,0,1148, + 138,1,0,0,0,1149,1150,7,9,0,0,1150,1151,7,6,0,0,1151,1152,7,16,0, + 0,1152,1153,7,13,0,0,1153,1154,7,4,0,0,1154,1155,7,12,0,0,1155,1156, + 7,6,0,0,1156,140,1,0,0,0,1157,1158,7,9,0,0,1158,1159,7,6,0,0,1159, + 1160,7,11,0,0,1160,1161,7,4,0,0,1161,1162,7,17,0,0,1162,1163,7,13, + 0,0,1163,1164,7,8,0,0,1164,142,1,0,0,0,1165,1166,7,9,0,0,1166,1167, + 7,6,0,0,1167,1168,7,11,0,0,1168,1169,7,2,0,0,1169,1170,7,7,0,0,1170, + 1171,7,6,0,0,1171,144,1,0,0,0,1172,1173,7,9,0,0,1173,1174,7,6,0, + 0,1174,1175,7,11,0,0,1175,1176,7,2,0,0,1176,1177,7,7,0,0,1177,1178, + 7,6,0,0,1178,1179,7,12,0,0,1179,146,1,0,0,0,1180,1181,7,9,0,0,1181, + 1182,7,6,0,0,1182,1183,7,13,0,0,1183,1184,7,6,0,0,1184,1185,7,8, + 0,0,1185,1186,7,6,0,0,1186,148,1,0,0,0,1187,1188,7,9,0,0,1188,1189, + 7,6,0,0,1189,1190,7,7,0,0,1190,1191,7,14,0,0,1191,150,1,0,0,0,1192, + 1193,7,9,0,0,1193,1194,7,6,0,0,1194,1195,7,0,0,0,1195,1196,7,16, + 0,0,1196,152,1,0,0,0,1197,1198,7,9,0,0,1198,1199,7,6,0,0,1199,1200, + 7,0,0,0,1200,1201,7,16,0,0,1201,1202,7,12,0,0,1202,1203,7,2,0,0, + 1203,1204,7,5,0,0,1204,1205,7,6,0,0,1205,154,1,0,0,0,1206,1207,7, + 9,0,0,1207,1208,7,6,0,0,1208,1209,7,0,0,0,1209,1210,7,16,0,0,1210, + 1211,7,12,0,0,1211,1212,7,2,0,0,1212,1213,7,3,0,0,1213,1214,7,8, + 0,0,1214,1215,7,19,0,0,1215,1216,7,12,0,0,1216,156,1,0,0,0,1217, + 1218,7,9,0,0,1218,1219,7,6,0,0,1219,1220,7,8,0,0,1220,1221,7,6,0, + 0,1221,1222,7,12,0,0,1222,1223,7,10,0,0,1223,1224,7,2,0,0,1224,1225, + 7,7,0,0,1225,1226,7,2,0,0,1226,1227,7,0,0,0,1227,1228,7,8,0,0,1228, + 1229,7,2,0,0,1229,1230,7,16,0,0,1230,158,1,0,0,0,1231,1232,7,9,0, + 0,1232,1233,7,2,0,0,1233,1234,7,0,0,0,1234,1235,7,8,0,0,1235,1236, + 7,2,0,0,1236,1237,7,7,0,0,1237,1238,7,16,0,0,1238,1239,7,8,0,0,1239, + 160,1,0,0,0,1240,1241,7,9,0,0,1241,1242,7,2,0,0,1242,1243,7,0,0, + 0,1243,1244,7,8,0,0,1244,1245,7,12,0,0,1245,1246,7,2,0,0,1246,1247, + 7,5,0,0,1247,1248,7,17,0,0,1248,1249,7,8,0,0,1249,1250,7,6,0,0,1250, + 1251,7,9,0,0,1251,162,1,0,0,0,1252,1253,7,9,0,0,1253,1254,7,19,0, + 0,1254,164,1,0,0,0,1255,1256,7,9,0,0,1256,1257,7,19,0,0,1257,1258, + 7,17,0,0,1258,1259,7,5,0,0,1259,1260,7,13,0,0,1260,1261,7,6,0,0, + 1261,166,1,0,0,0,1262,1263,7,9,0,0,1263,1264,7,12,0,0,1264,1265, + 7,19,0,0,1265,1266,7,3,0,0,1266,168,1,0,0,0,1267,1268,7,6,0,0,1268, + 1269,7,13,0,0,1269,1270,7,0,0,0,1270,1271,7,6,0,0,1271,170,1,0,0, + 0,1272,1273,7,6,0,0,1273,1274,7,10,0,0,1274,1275,7,3,0,0,1275,1276, + 7,8,0,0,1276,1277,7,14,0,0,1277,172,1,0,0,0,1278,1279,7,6,0,0,1279, + 1280,7,13,0,0,1280,1281,7,0,0,0,1281,1282,7,6,0,0,1282,1283,7,2, + 0,0,1283,1284,7,11,0,0,1284,174,1,0,0,0,1285,1286,7,6,0,0,1286,1287, + 7,7,0,0,1287,1288,7,16,0,0,1288,1289,7,19,0,0,1289,1290,7,9,0,0, + 1290,1291,7,2,0,0,1291,1292,7,7,0,0,1292,1293,7,20,0,0,1293,176, + 1,0,0,0,1294,1295,7,6,0,0,1295,1296,7,7,0,0,1296,1297,7,9,0,0,1297, + 178,1,0,0,0,1298,1299,7,6,0,0,1299,1300,7,12,0,0,1300,1301,7,12, + 0,0,1301,1302,7,19,0,0,1302,1303,7,12,0,0,1303,180,1,0,0,0,1304, + 1305,7,6,0,0,1305,1306,7,0,0,0,1306,1307,7,16,0,0,1307,1308,7,4, + 0,0,1308,1309,7,3,0,0,1309,1310,7,6,0,0,1310,182,1,0,0,0,1311,1312, + 7,6,0,0,1312,1313,7,22,0,0,1313,1314,7,16,0,0,1314,1315,7,6,0,0, + 1315,1316,7,3,0,0,1316,1317,7,8,0,0,1317,184,1,0,0,0,1318,1319,7, + 6,0,0,1319,1320,7,22,0,0,1320,1321,7,16,0,0,1321,1322,7,13,0,0,1322, + 1323,7,17,0,0,1323,1324,7,9,0,0,1324,1325,7,2,0,0,1325,1326,7,7, + 0,0,1326,1327,7,20,0,0,1327,186,1,0,0,0,1328,1329,7,6,0,0,1329,1330, + 7,22,0,0,1330,1331,7,6,0,0,1331,1332,7,16,0,0,1332,1333,7,17,0,0, + 1333,1334,7,8,0,0,1334,1335,7,6,0,0,1335,188,1,0,0,0,1336,1337,7, + 6,0,0,1337,1338,7,22,0,0,1338,1339,7,2,0,0,1339,1340,7,0,0,0,1340, + 1341,7,8,0,0,1341,1342,7,0,0,0,1342,190,1,0,0,0,1343,1344,7,6,0, + 0,1344,1345,7,22,0,0,1345,1346,7,3,0,0,1346,1347,7,13,0,0,1347,1348, + 7,4,0,0,1348,1349,7,2,0,0,1349,1350,7,7,0,0,1350,192,1,0,0,0,1351, + 1352,7,6,0,0,1352,1353,7,22,0,0,1353,1354,7,8,0,0,1354,1355,7,12, + 0,0,1355,1356,7,4,0,0,1356,1357,7,16,0,0,1357,1358,7,8,0,0,1358, + 194,1,0,0,0,1359,1360,7,11,0,0,1360,1361,7,4,0,0,1361,1362,7,13, + 0,0,1362,1363,7,0,0,0,1363,1364,7,6,0,0,1364,196,1,0,0,0,1365,1366, + 7,11,0,0,1366,1367,7,6,0,0,1367,1368,7,8,0,0,1368,1369,7,16,0,0, + 1369,1370,7,18,0,0,1370,198,1,0,0,0,1371,1372,7,11,0,0,1372,1373, + 7,2,0,0,1373,1374,7,13,0,0,1374,1375,7,8,0,0,1375,1376,7,6,0,0,1376, + 1377,7,12,0,0,1377,200,1,0,0,0,1378,1379,7,11,0,0,1379,1380,7,2, + 0,0,1380,1381,7,7,0,0,1381,1382,7,4,0,0,1382,1383,7,13,0,0,1383, + 202,1,0,0,0,1384,1385,7,11,0,0,1385,1386,7,2,0,0,1386,1387,7,12, + 0,0,1387,1388,7,0,0,0,1388,1389,7,8,0,0,1389,204,1,0,0,0,1390,1391, + 7,11,0,0,1391,1392,7,19,0,0,1392,1393,7,13,0,0,1393,1394,7,13,0, + 0,1394,1395,7,19,0,0,1395,1396,7,21,0,0,1396,1397,7,2,0,0,1397,1398, + 7,7,0,0,1398,1399,7,20,0,0,1399,206,1,0,0,0,1400,1401,7,11,0,0,1401, + 1402,7,19,0,0,1402,1403,7,12,0,0,1403,208,1,0,0,0,1404,1405,7,11, + 0,0,1405,1406,7,19,0,0,1406,1407,7,12,0,0,1407,1408,7,10,0,0,1408, + 1409,7,4,0,0,1409,1410,7,8,0,0,1410,210,1,0,0,0,1411,1412,7,11,0, + 0,1412,1413,7,12,0,0,1413,1414,7,19,0,0,1414,1415,7,10,0,0,1415, + 212,1,0,0,0,1416,1417,7,11,0,0,1417,1418,7,17,0,0,1418,1419,7,13, + 0,0,1419,1420,7,13,0,0,1420,214,1,0,0,0,1421,1422,7,11,0,0,1422, + 1423,7,17,0,0,1423,1424,7,7,0,0,1424,1425,7,16,0,0,1425,1426,7,8, + 0,0,1426,1427,7,2,0,0,1427,1428,7,19,0,0,1428,1429,7,7,0,0,1429, + 216,1,0,0,0,1430,1431,7,11,0,0,1431,1432,7,17,0,0,1432,1433,7,7, + 0,0,1433,1434,7,16,0,0,1434,1435,7,8,0,0,1435,1436,7,2,0,0,1436, + 1437,7,19,0,0,1437,1438,7,7,0,0,1438,1439,7,0,0,0,1439,218,1,0,0, + 0,1440,1441,7,20,0,0,1441,1442,7,12,0,0,1442,1443,7,4,0,0,1443,1444, + 7,16,0,0,1444,1445,7,6,0,0,1445,220,1,0,0,0,1446,1447,7,20,0,0,1447, + 1448,7,12,0,0,1448,1449,7,4,0,0,1449,1450,7,7,0,0,1450,1451,7,8, + 0,0,1451,222,1,0,0,0,1452,1453,7,20,0,0,1453,1454,7,12,0,0,1454, + 1455,7,4,0,0,1455,1456,7,7,0,0,1456,1457,7,8,0,0,1457,1458,7,6,0, + 0,1458,1459,7,9,0,0,1459,224,1,0,0,0,1460,1461,7,20,0,0,1461,1462, + 7,12,0,0,1462,1463,7,4,0,0,1463,1464,7,7,0,0,1464,1465,7,8,0,0,1465, + 1466,7,0,0,0,1466,226,1,0,0,0,1467,1468,7,20,0,0,1468,1469,7,12, + 0,0,1469,1470,7,4,0,0,1470,1471,7,3,0,0,1471,1472,7,18,0,0,1472, + 1473,7,23,0,0,1473,1474,7,2,0,0,1474,1475,7,15,0,0,1475,228,1,0, + 0,0,1476,1477,7,20,0,0,1477,1478,7,12,0,0,1478,1479,7,19,0,0,1479, + 1480,7,17,0,0,1480,1481,7,3,0,0,1481,230,1,0,0,0,1482,1483,7,20, + 0,0,1483,1484,7,12,0,0,1484,1485,7,19,0,0,1485,1486,7,17,0,0,1486, + 1487,7,3,0,0,1487,1488,7,2,0,0,1488,1489,7,7,0,0,1489,1490,7,20, + 0,0,1490,232,1,0,0,0,1491,1492,7,20,0,0,1492,1493,7,12,0,0,1493, + 1494,7,19,0,0,1494,1495,7,17,0,0,1495,1496,7,3,0,0,1496,1497,7,0, + 0,0,1497,234,1,0,0,0,1498,1499,7,18,0,0,1499,1500,7,4,0,0,1500,1501, + 7,23,0,0,1501,1502,7,2,0,0,1502,1503,7,7,0,0,1503,1504,7,20,0,0, + 1504,236,1,0,0,0,1505,1506,7,18,0,0,1506,1507,7,19,0,0,1507,1508, + 7,17,0,0,1508,1509,7,12,0,0,1509,238,1,0,0,0,1510,1511,7,2,0,0,1511, + 1512,7,11,0,0,1512,240,1,0,0,0,1513,1514,7,2,0,0,1514,1515,7,20, + 0,0,1515,1516,7,7,0,0,1516,1517,7,19,0,0,1517,1518,7,12,0,0,1518, + 1519,7,6,0,0,1519,242,1,0,0,0,1520,1521,7,2,0,0,1521,1522,7,10,0, + 0,1522,1523,7,10,0,0,1523,1524,7,6,0,0,1524,1525,7,9,0,0,1525,1526, + 7,2,0,0,1526,1527,7,4,0,0,1527,1528,7,8,0,0,1528,1529,7,6,0,0,1529, + 244,1,0,0,0,1530,1531,7,2,0,0,1531,1532,7,7,0,0,1532,246,1,0,0,0, + 1533,1534,7,2,0,0,1534,1535,7,7,0,0,1535,1536,7,16,0,0,1536,1537, + 7,13,0,0,1537,1538,7,17,0,0,1538,1539,7,9,0,0,1539,1540,7,2,0,0, + 1540,1541,7,7,0,0,1541,1542,7,20,0,0,1542,248,1,0,0,0,1543,1544, + 7,2,0,0,1544,1545,7,7,0,0,1545,1546,7,2,0,0,1546,1547,7,8,0,0,1547, + 1548,7,2,0,0,1548,1549,7,4,0,0,1549,1550,7,13,0,0,1550,250,1,0,0, + 0,1551,1552,7,2,0,0,1552,1553,7,7,0,0,1553,1554,7,7,0,0,1554,1555, + 7,6,0,0,1555,1556,7,12,0,0,1556,252,1,0,0,0,1557,1558,7,2,0,0,1558, + 1559,7,7,0,0,1559,1560,7,3,0,0,1560,1561,7,17,0,0,1561,1562,7,8, + 0,0,1562,254,1,0,0,0,1563,1564,7,2,0,0,1564,1565,7,7,0,0,1565,1566, + 7,0,0,0,1566,1567,7,6,0,0,1567,1568,7,12,0,0,1568,1569,7,8,0,0,1569, + 256,1,0,0,0,1570,1571,7,2,0,0,1571,1572,7,7,0,0,1572,1573,7,8,0, + 0,1573,1574,7,6,0,0,1574,1575,7,12,0,0,1575,1576,7,0,0,0,1576,1577, + 7,6,0,0,1577,1578,7,16,0,0,1578,1579,7,8,0,0,1579,258,1,0,0,0,1580, + 1581,7,2,0,0,1581,1582,7,7,0,0,1582,1583,7,8,0,0,1583,1584,7,6,0, + 0,1584,1585,7,12,0,0,1585,1586,7,23,0,0,1586,1587,7,4,0,0,1587,1588, + 7,13,0,0,1588,260,1,0,0,0,1589,1590,7,2,0,0,1590,1591,7,7,0,0,1591, + 1592,7,8,0,0,1592,1593,7,19,0,0,1593,262,1,0,0,0,1594,1595,7,2,0, + 0,1595,1596,7,7,0,0,1596,1597,7,23,0,0,1597,1598,7,19,0,0,1598,1599, + 7,1,0,0,1599,1600,7,6,0,0,1600,1601,7,12,0,0,1601,264,1,0,0,0,1602, + 1603,7,2,0,0,1603,1604,7,19,0,0,1604,266,1,0,0,0,1605,1606,7,2,0, + 0,1606,1607,7,0,0,0,1607,268,1,0,0,0,1608,1609,7,2,0,0,1609,1610, + 7,0,0,0,1610,1611,7,19,0,0,1611,1612,7,13,0,0,1612,1613,7,4,0,0, + 1613,1614,7,8,0,0,1614,1615,7,2,0,0,1615,1616,7,19,0,0,1616,1617, + 7,7,0,0,1617,270,1,0,0,0,1618,1619,7,2,0,0,1619,1620,7,8,0,0,1620, + 1621,7,6,0,0,1621,1622,7,12,0,0,1622,1623,7,4,0,0,1623,1624,7,8, + 0,0,1624,1625,7,6,0,0,1625,272,1,0,0,0,1626,1627,7,24,0,0,1627,1628, + 7,19,0,0,1628,1629,7,2,0,0,1629,1630,7,7,0,0,1630,274,1,0,0,0,1631, + 1632,7,24,0,0,1632,1633,7,0,0,0,1633,1634,7,19,0,0,1634,1635,7,7, + 0,0,1635,276,1,0,0,0,1636,1637,7,24,0,0,1637,1638,7,0,0,0,1638,1639, + 7,19,0,0,1639,1640,7,7,0,0,1640,1641,5,95,0,0,1641,1642,7,4,0,0, + 1642,1643,7,12,0,0,1643,1644,7,12,0,0,1644,1645,7,4,0,0,1645,1646, + 7,14,0,0,1646,278,1,0,0,0,1647,1648,7,24,0,0,1648,1649,7,0,0,0,1649, + 1650,7,19,0,0,1650,1651,7,7,0,0,1651,1652,5,95,0,0,1652,1653,7,6, + 0,0,1653,1654,7,22,0,0,1654,1655,7,2,0,0,1655,1656,7,0,0,0,1656, + 1657,7,8,0,0,1657,1658,7,0,0,0,1658,280,1,0,0,0,1659,1660,7,24,0, + 0,1660,1661,7,0,0,0,1661,1662,7,19,0,0,1662,1663,7,7,0,0,1663,1664, + 5,95,0,0,1664,1665,7,19,0,0,1665,1666,7,5,0,0,1666,1667,7,24,0,0, + 1667,1668,7,6,0,0,1668,1669,7,16,0,0,1669,1670,7,8,0,0,1670,282, + 1,0,0,0,1671,1672,7,24,0,0,1672,1673,7,0,0,0,1673,1674,7,19,0,0, + 1674,1675,7,7,0,0,1675,1676,5,95,0,0,1676,1677,7,25,0,0,1677,1678, + 7,17,0,0,1678,1679,7,6,0,0,1679,1680,7,12,0,0,1680,1681,7,14,0,0, + 1681,284,1,0,0,0,1682,1683,7,24,0,0,1683,1684,7,0,0,0,1684,1685, + 7,19,0,0,1685,1686,7,7,0,0,1686,1687,5,95,0,0,1687,1688,7,8,0,0, + 1688,1689,7,4,0,0,1689,1690,7,5,0,0,1690,1691,7,13,0,0,1691,1692, + 7,6,0,0,1692,286,1,0,0,0,1693,1694,7,24,0,0,1694,1695,7,0,0,0,1695, + 1696,7,19,0,0,1696,1697,7,7,0,0,1697,1698,5,95,0,0,1698,1699,7,23, + 0,0,1699,1700,7,4,0,0,1700,1701,7,13,0,0,1701,1702,7,17,0,0,1702, + 1703,7,6,0,0,1703,288,1,0,0,0,1704,1705,7,1,0,0,1705,1706,7,6,0, + 0,1706,1707,7,6,0,0,1707,1708,7,3,0,0,1708,290,1,0,0,0,1709,1710, + 7,1,0,0,1710,1711,7,6,0,0,1711,1712,7,14,0,0,1712,292,1,0,0,0,1713, + 1714,7,1,0,0,1714,1715,7,6,0,0,1715,1716,7,14,0,0,1716,1717,7,0, + 0,0,1717,294,1,0,0,0,1718,1719,7,13,0,0,1719,1720,7,4,0,0,1720,1721, + 7,7,0,0,1721,1722,7,20,0,0,1722,1723,7,17,0,0,1723,1724,7,4,0,0, + 1724,1725,7,20,0,0,1725,1726,7,6,0,0,1726,296,1,0,0,0,1727,1728, + 7,13,0,0,1728,1729,7,4,0,0,1729,1730,7,0,0,0,1730,1731,7,8,0,0,1731, + 298,1,0,0,0,1732,1733,7,13,0,0,1733,1734,7,4,0,0,1734,1735,7,8,0, + 0,1735,1736,7,6,0,0,1736,1737,7,12,0,0,1737,1738,7,4,0,0,1738,1739, + 7,13,0,0,1739,300,1,0,0,0,1740,1741,7,13,0,0,1741,1742,7,6,0,0,1742, + 1743,7,4,0,0,1743,1744,7,9,0,0,1744,1745,7,2,0,0,1745,1746,7,7,0, + 0,1746,1747,7,20,0,0,1747,302,1,0,0,0,1748,1749,7,13,0,0,1749,1750, + 7,6,0,0,1750,1751,7,4,0,0,1751,1752,7,23,0,0,1752,1753,7,6,0,0,1753, + 304,1,0,0,0,1754,1755,7,13,0,0,1755,1756,7,6,0,0,1756,1757,7,11, + 0,0,1757,1758,7,8,0,0,1758,306,1,0,0,0,1759,1760,7,13,0,0,1760,1761, + 7,6,0,0,1761,1762,7,23,0,0,1762,1763,7,6,0,0,1763,1764,7,13,0,0, + 1764,308,1,0,0,0,1765,1766,7,13,0,0,1766,1767,7,2,0,0,1767,1768, + 7,1,0,0,1768,1769,7,6,0,0,1769,310,1,0,0,0,1770,1771,7,13,0,0,1771, + 1772,7,2,0,0,1772,1773,7,10,0,0,1773,1774,7,2,0,0,1774,1775,7,8, + 0,0,1775,312,1,0,0,0,1776,1777,7,13,0,0,1777,1778,7,2,0,0,1778,1779, + 7,0,0,0,1779,1780,7,8,0,0,1780,1781,7,4,0,0,1781,1782,7,20,0,0,1782, + 1783,7,20,0,0,1783,314,1,0,0,0,1784,1785,7,13,0,0,1785,1786,7,19, + 0,0,1786,1787,7,16,0,0,1787,1788,7,4,0,0,1788,1789,7,13,0,0,1789, + 316,1,0,0,0,1790,1791,7,13,0,0,1791,1792,7,19,0,0,1792,1793,7,16, + 0,0,1793,1794,7,4,0,0,1794,1795,7,13,0,0,1795,1796,7,8,0,0,1796, + 1797,7,2,0,0,1797,1798,7,10,0,0,1798,1799,7,6,0,0,1799,318,1,0,0, + 0,1800,1801,7,13,0,0,1801,1802,7,19,0,0,1802,1803,7,16,0,0,1803, + 1804,7,4,0,0,1804,1805,7,13,0,0,1805,1806,7,8,0,0,1806,1807,7,2, + 0,0,1807,1808,7,10,0,0,1808,1809,7,6,0,0,1809,1810,7,0,0,0,1810, + 1811,7,8,0,0,1811,1812,7,4,0,0,1812,1813,7,10,0,0,1813,1814,7,3, + 0,0,1814,320,1,0,0,0,1815,1816,7,13,0,0,1816,1817,7,19,0,0,1817, + 1818,7,20,0,0,1818,1819,7,2,0,0,1819,1820,7,16,0,0,1820,1821,7,4, + 0,0,1821,1822,7,13,0,0,1822,322,1,0,0,0,1823,1824,7,13,0,0,1824, + 1825,7,19,0,0,1825,1826,7,19,0,0,1826,1827,7,3,0,0,1827,324,1,0, + 0,0,1828,1829,7,10,0,0,1829,1830,7,4,0,0,1830,1831,7,3,0,0,1831, + 326,1,0,0,0,1832,1833,7,10,0,0,1833,1834,7,4,0,0,1834,1835,7,8,0, + 0,1835,1836,7,16,0,0,1836,1837,7,18,0,0,1837,328,1,0,0,0,1838,1839, + 7,10,0,0,1839,1840,7,4,0,0,1840,1841,7,8,0,0,1841,1842,7,16,0,0, + 1842,1843,7,18,0,0,1843,1844,7,6,0,0,1844,1845,7,9,0,0,1845,330, + 1,0,0,0,1846,1847,7,10,0,0,1847,1848,7,4,0,0,1848,1849,7,8,0,0,1849, + 1850,7,16,0,0,1850,1851,7,18,0,0,1851,1852,7,6,0,0,1852,1853,7,0, + 0,0,1853,332,1,0,0,0,1854,1855,7,10,0,0,1855,1856,7,4,0,0,1856,1857, + 7,8,0,0,1857,1858,7,16,0,0,1858,1859,7,18,0,0,1859,1860,5,95,0,0, + 1860,1861,7,12,0,0,1861,1862,7,6,0,0,1862,1863,7,16,0,0,1863,1864, + 7,19,0,0,1864,1865,7,20,0,0,1865,1866,7,7,0,0,1866,1867,7,2,0,0, + 1867,1868,7,15,0,0,1868,1869,7,6,0,0,1869,334,1,0,0,0,1870,1871, + 7,10,0,0,1871,1872,7,4,0,0,1872,1873,7,8,0,0,1873,1874,7,6,0,0,1874, + 1875,7,12,0,0,1875,1876,7,2,0,0,1876,1877,7,4,0,0,1877,1878,7,13, + 0,0,1878,1879,7,2,0,0,1879,1880,7,15,0,0,1880,1881,7,6,0,0,1881, + 1882,7,9,0,0,1882,336,1,0,0,0,1883,1884,7,10,0,0,1884,1885,7,6,0, + 0,1885,1886,7,4,0,0,1886,1887,7,0,0,0,1887,1888,7,17,0,0,1888,1889, + 7,12,0,0,1889,1890,7,6,0,0,1890,1891,7,0,0,0,1891,338,1,0,0,0,1892, + 1893,7,10,0,0,1893,1894,7,6,0,0,1894,1895,7,12,0,0,1895,1896,7,20, + 0,0,1896,1897,7,6,0,0,1897,340,1,0,0,0,1898,1899,7,10,0,0,1899,1900, + 7,2,0,0,1900,1901,7,7,0,0,1901,1902,7,17,0,0,1902,1903,7,8,0,0,1903, + 1904,7,6,0,0,1904,342,1,0,0,0,1905,1906,7,10,0,0,1906,1907,7,19, + 0,0,1907,1908,7,7,0,0,1908,1909,7,8,0,0,1909,1910,7,18,0,0,1910, + 344,1,0,0,0,1911,1912,7,7,0,0,1912,1913,7,4,0,0,1913,1914,7,8,0, + 0,1914,1915,7,17,0,0,1915,1916,7,12,0,0,1916,1917,7,4,0,0,1917,1918, + 7,13,0,0,1918,346,1,0,0,0,1919,1920,7,7,0,0,1920,1921,7,6,0,0,1921, + 1922,7,0,0,0,1922,1923,7,8,0,0,1923,1924,7,6,0,0,1924,1925,7,9,0, + 0,1925,348,1,0,0,0,1926,1927,7,7,0,0,1927,1928,7,6,0,0,1928,1929, + 7,22,0,0,1929,1930,7,8,0,0,1930,350,1,0,0,0,1931,1932,7,7,0,0,1932, + 1933,7,11,0,0,1933,1934,7,16,0,0,1934,352,1,0,0,0,1935,1936,7,7, + 0,0,1936,1937,7,11,0,0,1937,1938,7,9,0,0,1938,354,1,0,0,0,1939,1940, + 7,7,0,0,1940,1941,7,11,0,0,1941,1942,7,1,0,0,1942,1943,7,16,0,0, + 1943,356,1,0,0,0,1944,1945,7,7,0,0,1945,1946,7,11,0,0,1946,1947, + 7,1,0,0,1947,1948,7,9,0,0,1948,358,1,0,0,0,1949,1950,7,7,0,0,1950, + 1951,7,19,0,0,1951,360,1,0,0,0,1952,1953,7,7,0,0,1953,1954,7,19, + 0,0,1954,1955,7,7,0,0,1955,1956,7,6,0,0,1956,362,1,0,0,0,1957,1958, + 7,7,0,0,1958,1959,7,19,0,0,1959,1960,7,12,0,0,1960,1961,7,10,0,0, + 1961,1962,7,4,0,0,1962,1963,7,13,0,0,1963,1964,7,2,0,0,1964,1965, + 7,15,0,0,1965,1966,7,6,0,0,1966,364,1,0,0,0,1967,1968,7,7,0,0,1968, + 1969,7,19,0,0,1969,1970,7,8,0,0,1970,366,1,0,0,0,1971,1972,7,7,0, + 0,1972,1973,7,17,0,0,1973,1974,7,13,0,0,1974,1975,7,13,0,0,1975, + 368,1,0,0,0,1976,1977,7,7,0,0,1977,1978,7,17,0,0,1978,1979,7,13, + 0,0,1979,1980,7,13,0,0,1980,1981,7,2,0,0,1981,1982,7,11,0,0,1982, + 370,1,0,0,0,1983,1984,7,7,0,0,1984,1985,7,17,0,0,1985,1986,7,13, + 0,0,1986,1987,7,13,0,0,1987,1988,7,0,0,0,1988,372,1,0,0,0,1989,1990, + 7,19,0,0,1990,1991,7,5,0,0,1991,1992,7,24,0,0,1992,1993,7,6,0,0, + 1993,1994,7,16,0,0,1994,1995,7,8,0,0,1995,374,1,0,0,0,1996,1997, + 7,19,0,0,1997,1998,7,11,0,0,1998,376,1,0,0,0,1999,2000,7,19,0,0, + 2000,2001,7,11,0,0,2001,2002,7,11,0,0,2002,2003,7,0,0,0,2003,2004, + 7,6,0,0,2004,2005,7,8,0,0,2005,378,1,0,0,0,2006,2007,7,19,0,0,2007, + 2008,7,10,0,0,2008,2009,7,2,0,0,2009,2010,7,8,0,0,2010,380,1,0,0, + 0,2011,2012,7,19,0,0,2012,2013,7,7,0,0,2013,382,1,0,0,0,2014,2015, + 7,19,0,0,2015,2016,7,7,0,0,2016,2017,7,6,0,0,2017,384,1,0,0,0,2018, + 2019,7,19,0,0,2019,2020,7,7,0,0,2020,2021,7,13,0,0,2021,2022,7,14, + 0,0,2022,386,1,0,0,0,2023,2024,7,19,0,0,2024,2025,7,3,0,0,2025,2026, + 7,8,0,0,2026,2027,7,2,0,0,2027,2028,7,19,0,0,2028,2029,7,7,0,0,2029, + 388,1,0,0,0,2030,2031,7,19,0,0,2031,2032,7,12,0,0,2032,390,1,0,0, + 0,2033,2034,7,19,0,0,2034,2035,7,12,0,0,2035,2036,7,9,0,0,2036,2037, + 7,6,0,0,2037,2038,7,12,0,0,2038,392,1,0,0,0,2039,2040,7,19,0,0,2040, + 2041,7,12,0,0,2041,2042,7,9,0,0,2042,2043,7,2,0,0,2043,2044,7,7, + 0,0,2044,2045,7,4,0,0,2045,2046,7,13,0,0,2046,2047,7,2,0,0,2047, + 2048,7,8,0,0,2048,2049,7,14,0,0,2049,394,1,0,0,0,2050,2051,7,19, + 0,0,2051,2052,7,17,0,0,2052,2053,7,8,0,0,2053,2054,7,6,0,0,2054, + 2055,7,12,0,0,2055,396,1,0,0,0,2056,2057,7,19,0,0,2057,2058,7,17, + 0,0,2058,2059,7,8,0,0,2059,2060,7,3,0,0,2060,2061,7,17,0,0,2061, + 2062,7,8,0,0,2062,398,1,0,0,0,2063,2064,7,19,0,0,2064,2065,7,23, + 0,0,2065,2066,7,6,0,0,2066,2067,7,12,0,0,2067,400,1,0,0,0,2068,2069, + 7,19,0,0,2069,2070,7,23,0,0,2070,2071,7,6,0,0,2071,2072,7,12,0,0, + 2072,2073,7,11,0,0,2073,2074,7,13,0,0,2074,2075,7,19,0,0,2075,2076, + 7,21,0,0,2076,402,1,0,0,0,2077,2078,7,3,0,0,2078,2079,7,4,0,0,2079, + 2080,7,12,0,0,2080,2081,7,8,0,0,2081,2082,7,2,0,0,2082,2083,7,8, + 0,0,2083,2084,7,2,0,0,2084,2085,7,19,0,0,2085,2086,7,7,0,0,2086, + 404,1,0,0,0,2087,2088,7,3,0,0,2088,2089,7,4,0,0,2089,2090,7,12,0, + 0,2090,2091,7,8,0,0,2091,2092,7,2,0,0,2092,2093,7,8,0,0,2093,2094, + 7,2,0,0,2094,2095,7,19,0,0,2095,2096,7,7,0,0,2096,2097,7,0,0,0,2097, + 406,1,0,0,0,2098,2099,7,3,0,0,2099,2100,7,4,0,0,2100,2101,7,0,0, + 0,2101,2102,7,0,0,0,2102,2103,7,2,0,0,2103,2104,7,7,0,0,2104,2105, + 7,20,0,0,2105,408,1,0,0,0,2106,2107,7,3,0,0,2107,2108,7,4,0,0,2108, + 2109,7,0,0,0,2109,2110,7,8,0,0,2110,410,1,0,0,0,2111,2112,7,3,0, + 0,2112,2113,7,4,0,0,2113,2114,7,8,0,0,2114,2115,7,18,0,0,2115,412, + 1,0,0,0,2116,2117,7,3,0,0,2117,2118,7,4,0,0,2118,2119,7,8,0,0,2119, + 2120,7,8,0,0,2120,2121,7,6,0,0,2121,2122,7,12,0,0,2122,2123,7,7, + 0,0,2123,414,1,0,0,0,2124,2125,7,3,0,0,2125,2126,7,6,0,0,2126,2127, + 7,12,0,0,2127,416,1,0,0,0,2128,2129,7,3,0,0,2129,2130,7,6,0,0,2130, + 2131,7,12,0,0,2131,2132,7,2,0,0,2132,2133,7,19,0,0,2133,2134,7,9, + 0,0,2134,418,1,0,0,0,2135,2136,7,3,0,0,2136,2137,7,6,0,0,2137,2138, + 7,12,0,0,2138,2139,7,10,0,0,2139,2140,7,17,0,0,2140,2141,7,8,0,0, + 2141,2142,7,6,0,0,2142,420,1,0,0,0,2143,2144,7,3,0,0,2144,2145,7, + 13,0,0,2145,2146,7,4,0,0,2146,2147,7,7,0,0,2147,422,1,0,0,0,2148, + 2149,7,3,0,0,2149,2150,7,19,0,0,2150,2151,7,0,0,0,2151,2152,7,2, + 0,0,2152,2153,7,8,0,0,2153,2154,7,2,0,0,2154,2155,7,19,0,0,2155, + 2156,7,7,0,0,2156,424,1,0,0,0,2157,2158,7,3,0,0,2158,2159,7,12,0, + 0,2159,2160,7,6,0,0,2160,2161,7,16,0,0,2161,2162,7,6,0,0,2162,2163, + 7,9,0,0,2163,2164,7,2,0,0,2164,2165,7,7,0,0,2165,2166,7,20,0,0,2166, + 426,1,0,0,0,2167,2168,7,3,0,0,2168,2169,7,12,0,0,2169,2170,7,6,0, + 0,2170,2171,7,16,0,0,2171,2172,7,2,0,0,2172,2173,7,0,0,0,2173,2174, + 7,2,0,0,2174,2175,7,19,0,0,2175,2176,7,7,0,0,2176,428,1,0,0,0,2177, + 2178,7,3,0,0,2178,2179,7,12,0,0,2179,2180,7,6,0,0,2180,2181,7,3, + 0,0,2181,2182,7,4,0,0,2182,2183,7,12,0,0,2183,2184,7,6,0,0,2184, + 430,1,0,0,0,2185,2186,7,3,0,0,2186,2187,7,12,0,0,2187,2188,7,2,0, + 0,2188,2189,7,23,0,0,2189,2190,7,2,0,0,2190,2191,7,13,0,0,2191,2192, + 7,6,0,0,2192,2193,7,20,0,0,2193,2194,7,6,0,0,2194,2195,7,0,0,0,2195, + 432,1,0,0,0,2196,2197,7,3,0,0,2197,2198,7,12,0,0,2198,2199,7,19, + 0,0,2199,2200,7,3,0,0,2200,2201,7,6,0,0,2201,2202,7,12,0,0,2202, + 2203,7,8,0,0,2203,2204,7,2,0,0,2204,2205,7,6,0,0,2205,2206,7,0,0, + 0,2206,434,1,0,0,0,2207,2208,7,3,0,0,2208,2209,7,12,0,0,2209,2210, + 7,17,0,0,2210,2211,7,7,0,0,2211,2212,7,6,0,0,2212,436,1,0,0,0,2213, + 2214,7,25,0,0,2214,2215,7,17,0,0,2215,2216,7,19,0,0,2216,2217,7, + 8,0,0,2217,2218,7,6,0,0,2218,2219,7,0,0,0,2219,438,1,0,0,0,2220, + 2221,7,12,0,0,2221,2222,7,4,0,0,2222,2223,7,7,0,0,2223,2224,7,20, + 0,0,2224,2225,7,6,0,0,2225,440,1,0,0,0,2226,2227,7,12,0,0,2227,2228, + 7,6,0,0,2228,2229,7,4,0,0,2229,2230,7,9,0,0,2230,442,1,0,0,0,2231, + 2232,7,12,0,0,2232,2233,7,6,0,0,2233,2234,7,16,0,0,2234,2235,7,17, + 0,0,2235,2236,7,12,0,0,2236,2237,7,0,0,0,2237,2238,7,2,0,0,2238, + 2239,7,23,0,0,2239,2240,7,6,0,0,2240,444,1,0,0,0,2241,2242,7,12, + 0,0,2242,2243,7,6,0,0,2243,2244,7,11,0,0,2244,2245,7,12,0,0,2245, + 2246,7,6,0,0,2246,2247,7,0,0,0,2247,2248,7,18,0,0,2248,446,1,0,0, + 0,2249,2250,7,12,0,0,2250,2251,7,6,0,0,2251,2252,7,7,0,0,2252,2253, + 7,4,0,0,2253,2254,7,10,0,0,2254,2255,7,6,0,0,2255,448,1,0,0,0,2256, + 2257,7,12,0,0,2257,2258,7,6,0,0,2258,2259,7,3,0,0,2259,2260,7,6, + 0,0,2260,2261,7,4,0,0,2261,2262,7,8,0,0,2262,450,1,0,0,0,2263,2264, + 7,12,0,0,2264,2265,7,6,0,0,2265,2266,7,3,0,0,2266,2267,7,6,0,0,2267, + 2268,7,4,0,0,2268,2269,7,8,0,0,2269,2270,7,4,0,0,2270,2271,7,5,0, + 0,2271,2272,7,13,0,0,2272,2273,7,6,0,0,2273,452,1,0,0,0,2274,2275, + 7,12,0,0,2275,2276,7,6,0,0,2276,2277,7,3,0,0,2277,2278,7,13,0,0, + 2278,2279,7,4,0,0,2279,2280,7,16,0,0,2280,2281,7,6,0,0,2281,454, + 1,0,0,0,2282,2283,7,12,0,0,2283,2284,7,6,0,0,2284,2285,7,0,0,0,2285, + 2286,7,6,0,0,2286,2287,7,8,0,0,2287,456,1,0,0,0,2288,2289,7,12,0, + 0,2289,2290,7,6,0,0,2290,2291,7,0,0,0,2291,2292,7,3,0,0,2292,2293, + 7,6,0,0,2293,2294,7,16,0,0,2294,2295,7,8,0,0,2295,458,1,0,0,0,2296, + 2297,7,12,0,0,2297,2298,7,6,0,0,2298,2299,7,0,0,0,2299,2300,7,8, + 0,0,2300,2301,7,12,0,0,2301,2302,7,2,0,0,2302,2303,7,16,0,0,2303, + 2304,7,8,0,0,2304,460,1,0,0,0,2305,2306,7,12,0,0,2306,2307,7,6,0, + 0,2307,2308,7,8,0,0,2308,2309,7,17,0,0,2309,2310,7,12,0,0,2310,2311, + 7,7,0,0,2311,462,1,0,0,0,2312,2313,7,12,0,0,2313,2314,7,6,0,0,2314, + 2315,7,8,0,0,2315,2316,7,17,0,0,2316,2317,7,12,0,0,2317,2318,7,7, + 0,0,2318,2319,7,2,0,0,2319,2320,7,7,0,0,2320,2321,7,20,0,0,2321, + 464,1,0,0,0,2322,2323,7,12,0,0,2323,2324,7,6,0,0,2324,2325,7,8,0, + 0,2325,2326,7,17,0,0,2326,2327,7,12,0,0,2327,2328,7,7,0,0,2328,2329, + 7,0,0,0,2329,466,1,0,0,0,2330,2331,7,12,0,0,2331,2332,7,6,0,0,2332, + 2333,7,23,0,0,2333,2334,7,19,0,0,2334,2335,7,1,0,0,2335,2336,7,6, + 0,0,2336,468,1,0,0,0,2337,2338,7,12,0,0,2338,2339,7,2,0,0,2339,2340, + 7,20,0,0,2340,2341,7,18,0,0,2341,2342,7,8,0,0,2342,470,1,0,0,0,2343, + 2344,7,12,0,0,2344,2345,7,19,0,0,2345,2346,7,13,0,0,2346,2347,7, + 6,0,0,2347,472,1,0,0,0,2348,2349,7,12,0,0,2349,2350,7,19,0,0,2350, + 2351,7,13,0,0,2351,2352,7,6,0,0,2352,2353,7,0,0,0,2353,474,1,0,0, + 0,2354,2355,7,12,0,0,2355,2356,7,19,0,0,2356,2357,7,13,0,0,2357, + 2358,7,13,0,0,2358,2359,7,5,0,0,2359,2360,7,4,0,0,2360,2361,7,16, + 0,0,2361,2362,7,1,0,0,2362,476,1,0,0,0,2363,2364,7,12,0,0,2364,2365, + 7,19,0,0,2365,2366,7,13,0,0,2366,2367,7,13,0,0,2367,2368,7,17,0, + 0,2368,2369,7,3,0,0,2369,478,1,0,0,0,2370,2371,7,12,0,0,2371,2372, + 7,19,0,0,2372,2373,7,21,0,0,2373,480,1,0,0,0,2374,2375,7,12,0,0, + 2375,2376,7,19,0,0,2376,2377,7,21,0,0,2377,2378,7,0,0,0,2378,482, + 1,0,0,0,2379,2380,7,12,0,0,2380,2381,7,17,0,0,2381,2382,7,7,0,0, + 2382,2383,7,7,0,0,2383,2384,7,2,0,0,2384,2385,7,7,0,0,2385,2386, + 7,20,0,0,2386,484,1,0,0,0,2387,2388,7,0,0,0,2388,2389,7,16,0,0,2389, + 2390,7,4,0,0,2390,2391,7,13,0,0,2391,2392,7,4,0,0,2392,2393,7,12, + 0,0,2393,486,1,0,0,0,2394,2395,7,0,0,0,2395,2396,7,16,0,0,2396,2397, + 7,18,0,0,2397,2398,7,6,0,0,2398,2399,7,10,0,0,2399,2400,7,4,0,0, + 2400,488,1,0,0,0,2401,2402,7,0,0,0,2402,2403,7,16,0,0,2403,2404, + 7,18,0,0,2404,2405,7,6,0,0,2405,2406,7,10,0,0,2406,2407,7,4,0,0, + 2407,2408,7,0,0,0,2408,490,1,0,0,0,2409,2410,7,0,0,0,2410,2411,7, + 6,0,0,2411,2412,7,16,0,0,2412,2413,7,19,0,0,2413,2414,7,7,0,0,2414, + 2415,7,9,0,0,2415,492,1,0,0,0,2416,2417,7,0,0,0,2417,2418,7,6,0, + 0,2418,2419,7,16,0,0,2419,2420,7,17,0,0,2420,2421,7,12,0,0,2421, + 2422,7,2,0,0,2422,2423,7,8,0,0,2423,2424,7,14,0,0,2424,494,1,0,0, + 0,2425,2426,7,0,0,0,2426,2427,7,6,0,0,2427,2428,7,6,0,0,2428,2429, + 7,1,0,0,2429,496,1,0,0,0,2430,2431,7,0,0,0,2431,2432,7,6,0,0,2432, + 2433,7,13,0,0,2433,2434,7,6,0,0,2434,2435,7,16,0,0,2435,2436,7,8, + 0,0,2436,498,1,0,0,0,2437,2438,7,0,0,0,2438,2439,7,6,0,0,2439,2440, + 7,12,0,0,2440,2441,7,2,0,0,2441,2442,7,4,0,0,2442,2443,7,13,0,0, + 2443,2444,7,2,0,0,2444,2445,7,15,0,0,2445,2446,7,4,0,0,2446,2447, + 7,5,0,0,2447,2448,7,13,0,0,2448,2449,7,6,0,0,2449,500,1,0,0,0,2450, + 2451,7,0,0,0,2451,2452,7,6,0,0,2452,2453,7,0,0,0,2453,2454,7,0,0, + 0,2454,2455,7,2,0,0,2455,2456,7,19,0,0,2456,2457,7,7,0,0,2457,502, + 1,0,0,0,2458,2459,7,0,0,0,2459,2460,7,6,0,0,2460,2461,7,8,0,0,2461, + 504,1,0,0,0,2462,2463,7,0,0,0,2463,2464,7,6,0,0,2464,2465,7,8,0, + 0,2465,2466,7,0,0,0,2466,506,1,0,0,0,2467,2468,7,0,0,0,2468,2469, + 7,18,0,0,2469,2470,7,19,0,0,2470,2471,7,21,0,0,2471,508,1,0,0,0, + 2472,2473,7,0,0,0,2473,2474,7,19,0,0,2474,2475,7,10,0,0,2475,2476, + 7,6,0,0,2476,510,1,0,0,0,2477,2478,7,0,0,0,2478,2479,7,8,0,0,2479, + 2480,7,4,0,0,2480,2481,7,12,0,0,2481,2482,7,8,0,0,2482,512,1,0,0, + 0,2483,2484,7,0,0,0,2484,2485,7,8,0,0,2485,2486,7,4,0,0,2486,2487, + 7,8,0,0,2487,2488,7,0,0,0,2488,514,1,0,0,0,2489,2490,7,0,0,0,2490, + 2491,7,17,0,0,2491,2492,7,5,0,0,2492,2493,7,0,0,0,2493,2494,7,6, + 0,0,2494,2495,7,8,0,0,2495,516,1,0,0,0,2496,2497,7,0,0,0,2497,2498, + 7,17,0,0,2498,2499,7,5,0,0,2499,2500,7,0,0,0,2500,2501,7,8,0,0,2501, + 2502,7,12,0,0,2502,2503,7,2,0,0,2503,2504,7,7,0,0,2504,2505,7,20, + 0,0,2505,518,1,0,0,0,2506,2507,7,0,0,0,2507,2508,7,14,0,0,2508,2509, + 7,0,0,0,2509,2510,7,8,0,0,2510,2511,7,6,0,0,2511,2512,7,10,0,0,2512, + 520,1,0,0,0,2513,2514,7,8,0,0,2514,2515,7,4,0,0,2515,2516,7,5,0, + 0,2516,2517,7,13,0,0,2517,2518,7,6,0,0,2518,522,1,0,0,0,2519,2520, + 7,8,0,0,2520,2521,7,4,0,0,2521,2522,7,5,0,0,2522,2523,7,13,0,0,2523, + 2524,7,6,0,0,2524,2525,7,0,0,0,2525,524,1,0,0,0,2526,2527,7,8,0, + 0,2527,2528,7,4,0,0,2528,2529,7,5,0,0,2529,2530,7,13,0,0,2530,2531, + 7,6,0,0,2531,2532,7,0,0,0,2532,2533,7,4,0,0,2533,2534,7,10,0,0,2534, + 2535,7,3,0,0,2535,2536,7,13,0,0,2536,2537,7,6,0,0,2537,526,1,0,0, + 0,2538,2539,7,8,0,0,2539,2540,7,6,0,0,2540,2541,7,22,0,0,2541,2542, + 7,8,0,0,2542,528,1,0,0,0,2543,2544,7,0,0,0,2544,2545,7,8,0,0,2545, + 2546,7,12,0,0,2546,2547,7,2,0,0,2547,2548,7,7,0,0,2548,2549,7,20, + 0,0,2549,530,1,0,0,0,2550,2551,7,8,0,0,2551,2552,7,18,0,0,2552,2553, + 7,6,0,0,2553,2554,7,7,0,0,2554,532,1,0,0,0,2555,2556,7,8,0,0,2556, + 2557,7,2,0,0,2557,2558,7,6,0,0,2558,2559,7,0,0,0,2559,534,1,0,0, + 0,2560,2561,7,8,0,0,2561,2562,7,2,0,0,2562,2563,7,10,0,0,2563,2564, + 7,6,0,0,2564,536,1,0,0,0,2565,2566,7,8,0,0,2566,2567,7,2,0,0,2567, + 2568,7,10,0,0,2568,2569,7,6,0,0,2569,2570,7,0,0,0,2570,2571,7,8, + 0,0,2571,2572,7,4,0,0,2572,2573,7,10,0,0,2573,2574,7,3,0,0,2574, + 538,1,0,0,0,2575,2576,7,8,0,0,2576,2577,7,19,0,0,2577,540,1,0,0, + 0,2578,2579,7,8,0,0,2579,2580,7,12,0,0,2580,2581,7,4,0,0,2581,2582, + 7,2,0,0,2582,2583,7,13,0,0,2583,2584,7,2,0,0,2584,2585,7,7,0,0,2585, + 2586,7,20,0,0,2586,542,1,0,0,0,2587,2588,7,8,0,0,2588,2589,7,12, + 0,0,2589,2590,7,4,0,0,2590,2591,7,7,0,0,2591,2592,7,0,0,0,2592,2593, + 7,4,0,0,2593,2594,7,16,0,0,2594,2595,7,8,0,0,2595,2596,7,2,0,0,2596, + 2597,7,19,0,0,2597,2598,7,7,0,0,2598,544,1,0,0,0,2599,2600,7,8,0, + 0,2600,2601,7,12,0,0,2601,2602,7,2,0,0,2602,2603,7,10,0,0,2603,546, + 1,0,0,0,2604,2605,7,8,0,0,2605,2606,7,12,0,0,2606,2607,7,17,0,0, + 2607,2608,7,6,0,0,2608,548,1,0,0,0,2609,2610,7,8,0,0,2610,2611,7, + 12,0,0,2611,2612,7,17,0,0,2612,2613,7,7,0,0,2613,2614,7,16,0,0,2614, + 2615,7,4,0,0,2615,2616,7,8,0,0,2616,2617,7,6,0,0,2617,550,1,0,0, + 0,2618,2619,7,8,0,0,2619,2620,7,12,0,0,2620,2621,7,14,0,0,2621,2622, + 5,95,0,0,2622,2623,7,16,0,0,2623,2624,7,4,0,0,2624,2625,7,0,0,0, + 2625,2626,7,8,0,0,2626,552,1,0,0,0,2627,2628,7,8,0,0,2628,2629,7, + 14,0,0,2629,2630,7,3,0,0,2630,2631,7,6,0,0,2631,554,1,0,0,0,2632, + 2633,7,17,0,0,2633,2634,7,6,0,0,2634,2635,7,0,0,0,2635,2636,7,16, + 0,0,2636,2637,7,4,0,0,2637,2638,7,3,0,0,2638,2639,7,6,0,0,2639,556, + 1,0,0,0,2640,2641,7,17,0,0,2641,2642,7,7,0,0,2642,2643,7,5,0,0,2643, + 2644,7,19,0,0,2644,2645,7,17,0,0,2645,2646,7,7,0,0,2646,2647,7,9, + 0,0,2647,2648,7,6,0,0,2648,2649,7,9,0,0,2649,558,1,0,0,0,2650,2651, + 7,17,0,0,2651,2652,7,7,0,0,2652,2653,7,16,0,0,2653,2654,7,19,0,0, + 2654,2655,7,10,0,0,2655,2656,7,10,0,0,2656,2657,7,2,0,0,2657,2658, + 7,8,0,0,2658,2659,7,8,0,0,2659,2660,7,6,0,0,2660,2661,7,9,0,0,2661, + 560,1,0,0,0,2662,2663,7,17,0,0,2663,2664,7,7,0,0,2664,2665,7,16, + 0,0,2665,2666,7,19,0,0,2666,2667,7,7,0,0,2667,2668,7,9,0,0,2668, + 2669,7,2,0,0,2669,2670,7,8,0,0,2670,2671,7,2,0,0,2671,2672,7,19, + 0,0,2672,2673,7,7,0,0,2673,2674,7,4,0,0,2674,2675,7,13,0,0,2675, + 562,1,0,0,0,2676,2677,7,17,0,0,2677,2678,7,7,0,0,2678,2679,7,2,0, + 0,2679,2680,7,19,0,0,2680,2681,7,7,0,0,2681,564,1,0,0,0,2682,2683, + 7,17,0,0,2683,2684,7,7,0,0,2684,2685,7,2,0,0,2685,2686,7,25,0,0, + 2686,2687,7,17,0,0,2687,2688,7,6,0,0,2688,566,1,0,0,0,2689,2690, + 7,17,0,0,2690,2691,7,7,0,0,2691,2692,7,1,0,0,2692,2693,7,7,0,0,2693, + 2694,7,19,0,0,2694,2695,7,21,0,0,2695,2696,7,7,0,0,2696,568,1,0, + 0,0,2697,2698,7,17,0,0,2698,2699,7,7,0,0,2699,2700,7,10,0,0,2700, + 2701,7,4,0,0,2701,2702,7,8,0,0,2702,2703,7,16,0,0,2703,2704,7,18, + 0,0,2704,2705,7,6,0,0,2705,2706,7,9,0,0,2706,570,1,0,0,0,2707,2708, + 7,17,0,0,2708,2709,7,7,0,0,2709,2710,7,7,0,0,2710,2711,7,6,0,0,2711, + 2712,7,0,0,0,2712,2713,7,8,0,0,2713,572,1,0,0,0,2714,2715,7,17,0, + 0,2715,2716,7,7,0,0,2716,2717,7,8,0,0,2717,2718,7,2,0,0,2718,2719, + 7,13,0,0,2719,574,1,0,0,0,2720,2721,7,17,0,0,2721,2722,7,3,0,0,2722, + 2723,7,9,0,0,2723,2724,7,4,0,0,2724,2725,7,8,0,0,2725,2726,7,6,0, + 0,2726,576,1,0,0,0,2727,2728,7,17,0,0,2728,2729,7,0,0,0,2729,2730, + 7,6,0,0,2730,578,1,0,0,0,2731,2732,7,17,0,0,2732,2733,7,0,0,0,2733, + 2734,7,6,0,0,2734,2735,7,12,0,0,2735,580,1,0,0,0,2736,2737,7,17, + 0,0,2737,2738,7,0,0,0,2738,2739,7,2,0,0,2739,2740,7,7,0,0,2740,2741, + 7,20,0,0,2741,582,1,0,0,0,2742,2743,7,17,0,0,2743,2744,7,8,0,0,2744, + 2745,7,11,0,0,2745,2746,5,49,0,0,2746,2747,5,54,0,0,2747,584,1,0, + 0,0,2748,2749,7,17,0,0,2749,2750,7,8,0,0,2750,2751,7,11,0,0,2751, + 2752,5,51,0,0,2752,2753,5,50,0,0,2753,586,1,0,0,0,2754,2755,7,17, + 0,0,2755,2756,7,8,0,0,2756,2757,7,11,0,0,2757,2758,5,56,0,0,2758, + 588,1,0,0,0,2759,2760,7,23,0,0,2760,2761,7,4,0,0,2761,2762,7,13, + 0,0,2762,2763,7,2,0,0,2763,2764,7,9,0,0,2764,2765,7,4,0,0,2765,2766, + 7,8,0,0,2766,2767,7,6,0,0,2767,590,1,0,0,0,2768,2769,7,23,0,0,2769, + 2770,7,4,0,0,2770,2771,7,13,0,0,2771,2772,7,17,0,0,2772,2773,7,6, + 0,0,2773,592,1,0,0,0,2774,2775,7,23,0,0,2775,2776,7,4,0,0,2776,2777, + 7,13,0,0,2777,2778,7,17,0,0,2778,2779,7,6,0,0,2779,2780,7,0,0,0, + 2780,594,1,0,0,0,2781,2782,7,23,0,0,2782,2783,7,6,0,0,2783,2784, + 7,12,0,0,2784,2785,7,5,0,0,2785,2786,7,19,0,0,2786,2787,7,0,0,0, + 2787,2788,7,6,0,0,2788,596,1,0,0,0,2789,2790,7,23,0,0,2790,2791, + 7,6,0,0,2791,2792,7,12,0,0,2792,2793,7,0,0,0,2793,2794,7,2,0,0,2794, + 2795,7,19,0,0,2795,2796,7,7,0,0,2796,598,1,0,0,0,2797,2798,7,23, + 0,0,2798,2799,7,2,0,0,2799,2800,7,6,0,0,2800,2801,7,21,0,0,2801, + 600,1,0,0,0,2802,2803,7,21,0,0,2803,2804,7,18,0,0,2804,2805,7,6, + 0,0,2805,2806,7,7,0,0,2806,602,1,0,0,0,2807,2808,7,21,0,0,2808,2809, + 7,18,0,0,2809,2810,7,6,0,0,2810,2811,7,12,0,0,2811,2812,7,6,0,0, + 2812,604,1,0,0,0,2813,2814,7,21,0,0,2814,2815,7,18,0,0,2815,2816, + 7,2,0,0,2816,2817,7,13,0,0,2817,2818,7,6,0,0,2818,606,1,0,0,0,2819, + 2820,7,21,0,0,2820,2821,7,2,0,0,2821,2822,7,7,0,0,2822,2823,7,9, + 0,0,2823,2824,7,19,0,0,2824,2825,7,21,0,0,2825,608,1,0,0,0,2826, + 2827,7,21,0,0,2827,2828,7,2,0,0,2828,2829,7,8,0,0,2829,2830,7,18, + 0,0,2830,610,1,0,0,0,2831,2832,7,21,0,0,2832,2833,7,2,0,0,2833,2834, + 7,8,0,0,2834,2835,7,18,0,0,2835,2836,7,2,0,0,2836,2837,7,7,0,0,2837, + 612,1,0,0,0,2838,2839,7,21,0,0,2839,2840,7,2,0,0,2840,2841,7,8,0, + 0,2841,2842,7,18,0,0,2842,2843,7,19,0,0,2843,2844,7,17,0,0,2844, + 2845,7,8,0,0,2845,614,1,0,0,0,2846,2847,7,21,0,0,2847,2848,7,19, + 0,0,2848,2849,7,12,0,0,2849,2850,7,1,0,0,2850,616,1,0,0,0,2851,2852, + 7,21,0,0,2852,2853,7,12,0,0,2853,2854,7,4,0,0,2854,2855,7,3,0,0, + 2855,2856,7,3,0,0,2856,2857,7,6,0,0,2857,2858,7,12,0,0,2858,618, + 1,0,0,0,2859,2860,7,21,0,0,2860,2861,7,12,0,0,2861,2862,7,2,0,0, + 2862,2863,7,8,0,0,2863,2864,7,6,0,0,2864,620,1,0,0,0,2865,2866,7, + 14,0,0,2866,2867,7,6,0,0,2867,2868,7,4,0,0,2868,2869,7,12,0,0,2869, + 622,1,0,0,0,2870,2871,7,15,0,0,2871,2872,7,19,0,0,2872,2873,7,7, + 0,0,2873,2874,7,6,0,0,2874,624,1,0,0,0,2875,2876,5,61,0,0,2876,626, + 1,0,0,0,2877,2878,5,60,0,0,2878,2882,5,62,0,0,2879,2880,5,33,0,0, + 2880,2882,5,61,0,0,2881,2877,1,0,0,0,2881,2879,1,0,0,0,2882,628, + 1,0,0,0,2883,2884,5,60,0,0,2884,630,1,0,0,0,2885,2886,5,60,0,0,2886, + 2887,5,61,0,0,2887,632,1,0,0,0,2888,2889,5,62,0,0,2889,634,1,0,0, + 0,2890,2891,5,62,0,0,2891,2892,5,61,0,0,2892,636,1,0,0,0,2893,2894, + 5,43,0,0,2894,638,1,0,0,0,2895,2896,5,45,0,0,2896,640,1,0,0,0,2897, + 2898,5,42,0,0,2898,642,1,0,0,0,2899,2900,5,47,0,0,2900,644,1,0,0, + 0,2901,2902,5,37,0,0,2902,646,1,0,0,0,2903,2904,5,124,0,0,2904,2905, + 5,124,0,0,2905,648,1,0,0,0,2906,2907,5,63,0,0,2907,650,1,0,0,0,2908, + 2909,5,59,0,0,2909,652,1,0,0,0,2910,2916,5,39,0,0,2911,2915,8,26, + 0,0,2912,2913,5,39,0,0,2913,2915,5,39,0,0,2914,2911,1,0,0,0,2914, + 2912,1,0,0,0,2915,2918,1,0,0,0,2916,2914,1,0,0,0,2916,2917,1,0,0, + 0,2917,2919,1,0,0,0,2918,2916,1,0,0,0,2919,2920,5,39,0,0,2920,654, + 1,0,0,0,2921,2922,7,17,0,0,2922,2923,5,38,0,0,2923,2924,5,39,0,0, + 2924,2930,1,0,0,0,2925,2929,8,26,0,0,2926,2927,5,39,0,0,2927,2929, + 5,39,0,0,2928,2925,1,0,0,0,2928,2926,1,0,0,0,2929,2932,1,0,0,0,2930, + 2928,1,0,0,0,2930,2931,1,0,0,0,2931,2933,1,0,0,0,2932,2930,1,0,0, + 0,2933,2934,5,39,0,0,2934,656,1,0,0,0,2935,2936,7,22,0,0,2936,2937, + 5,39,0,0,2937,2941,1,0,0,0,2938,2940,8,26,0,0,2939,2938,1,0,0,0, + 2940,2943,1,0,0,0,2941,2939,1,0,0,0,2941,2942,1,0,0,0,2942,2944, + 1,0,0,0,2943,2941,1,0,0,0,2944,2945,5,39,0,0,2945,658,1,0,0,0,2946, + 2951,3,673,336,0,2947,2951,3,675,337,0,2948,2951,3,677,338,0,2949, + 2951,3,679,339,0,2950,2946,1,0,0,0,2950,2947,1,0,0,0,2950,2948,1, + 0,0,0,2950,2949,1,0,0,0,2951,660,1,0,0,0,2952,2953,3,673,336,0,2953, + 2955,5,46,0,0,2954,2956,3,673,336,0,2955,2954,1,0,0,0,2955,2956, + 1,0,0,0,2956,2960,1,0,0,0,2957,2958,5,46,0,0,2958,2960,3,673,336, + 0,2959,2952,1,0,0,0,2959,2957,1,0,0,0,2960,662,1,0,0,0,2961,2963, + 3,683,341,0,2962,2961,1,0,0,0,2963,2964,1,0,0,0,2964,2962,1,0,0, + 0,2964,2965,1,0,0,0,2965,2973,1,0,0,0,2966,2970,5,46,0,0,2967,2969, + 3,683,341,0,2968,2967,1,0,0,0,2969,2972,1,0,0,0,2970,2968,1,0,0, + 0,2970,2971,1,0,0,0,2971,2974,1,0,0,0,2972,2970,1,0,0,0,2973,2966, + 1,0,0,0,2973,2974,1,0,0,0,2974,2975,1,0,0,0,2975,2976,3,681,340, + 0,2976,2986,1,0,0,0,2977,2979,5,46,0,0,2978,2980,3,683,341,0,2979, + 2978,1,0,0,0,2980,2981,1,0,0,0,2981,2979,1,0,0,0,2981,2982,1,0,0, + 0,2982,2983,1,0,0,0,2983,2984,3,681,340,0,2984,2986,1,0,0,0,2985, + 2962,1,0,0,0,2985,2977,1,0,0,0,2986,664,1,0,0,0,2987,2990,3,685, + 342,0,2988,2990,5,95,0,0,2989,2987,1,0,0,0,2989,2988,1,0,0,0,2990, + 2996,1,0,0,0,2991,2995,3,685,342,0,2992,2995,3,683,341,0,2993,2995, + 5,95,0,0,2994,2991,1,0,0,0,2994,2992,1,0,0,0,2994,2993,1,0,0,0,2995, + 2998,1,0,0,0,2996,2994,1,0,0,0,2996,2997,1,0,0,0,2997,666,1,0,0, + 0,2998,2996,1,0,0,0,2999,3003,3,683,341,0,3000,3004,3,685,342,0, + 3001,3004,3,683,341,0,3002,3004,5,95,0,0,3003,3000,1,0,0,0,3003, + 3001,1,0,0,0,3003,3002,1,0,0,0,3004,3005,1,0,0,0,3005,3003,1,0,0, + 0,3005,3006,1,0,0,0,3006,668,1,0,0,0,3007,3013,5,34,0,0,3008,3012, + 8,27,0,0,3009,3010,5,34,0,0,3010,3012,5,34,0,0,3011,3008,1,0,0,0, + 3011,3009,1,0,0,0,3012,3015,1,0,0,0,3013,3011,1,0,0,0,3013,3014, + 1,0,0,0,3014,3016,1,0,0,0,3015,3013,1,0,0,0,3016,3017,5,34,0,0,3017, + 670,1,0,0,0,3018,3024,5,96,0,0,3019,3023,8,28,0,0,3020,3021,5,96, + 0,0,3021,3023,5,96,0,0,3022,3019,1,0,0,0,3022,3020,1,0,0,0,3023, + 3026,1,0,0,0,3024,3022,1,0,0,0,3024,3025,1,0,0,0,3025,3027,1,0,0, + 0,3026,3024,1,0,0,0,3027,3028,5,96,0,0,3028,672,1,0,0,0,3029,3036, + 3,683,341,0,3030,3032,5,95,0,0,3031,3030,1,0,0,0,3031,3032,1,0,0, + 0,3032,3033,1,0,0,0,3033,3035,3,683,341,0,3034,3031,1,0,0,0,3035, + 3038,1,0,0,0,3036,3034,1,0,0,0,3036,3037,1,0,0,0,3037,674,1,0,0, + 0,3038,3036,1,0,0,0,3039,3040,5,48,0,0,3040,3041,7,22,0,0,3041,3049, + 1,0,0,0,3042,3044,5,95,0,0,3043,3042,1,0,0,0,3043,3044,1,0,0,0,3044, + 3047,1,0,0,0,3045,3048,3,683,341,0,3046,3048,7,29,0,0,3047,3045, + 1,0,0,0,3047,3046,1,0,0,0,3048,3050,1,0,0,0,3049,3043,1,0,0,0,3050, + 3051,1,0,0,0,3051,3049,1,0,0,0,3051,3052,1,0,0,0,3052,676,1,0,0, + 0,3053,3054,5,48,0,0,3054,3055,7,19,0,0,3055,3060,1,0,0,0,3056,3058, + 5,95,0,0,3057,3056,1,0,0,0,3057,3058,1,0,0,0,3058,3059,1,0,0,0,3059, + 3061,7,30,0,0,3060,3057,1,0,0,0,3061,3062,1,0,0,0,3062,3060,1,0, + 0,0,3062,3063,1,0,0,0,3063,678,1,0,0,0,3064,3065,5,48,0,0,3065,3066, + 7,5,0,0,3066,3071,1,0,0,0,3067,3069,5,95,0,0,3068,3067,1,0,0,0,3068, + 3069,1,0,0,0,3069,3070,1,0,0,0,3070,3072,7,31,0,0,3071,3068,1,0, + 0,0,3072,3073,1,0,0,0,3073,3071,1,0,0,0,3073,3074,1,0,0,0,3074,680, + 1,0,0,0,3075,3077,7,6,0,0,3076,3078,7,32,0,0,3077,3076,1,0,0,0,3077, + 3078,1,0,0,0,3078,3080,1,0,0,0,3079,3081,3,683,341,0,3080,3079,1, + 0,0,0,3081,3082,1,0,0,0,3082,3080,1,0,0,0,3082,3083,1,0,0,0,3083, + 682,1,0,0,0,3084,3085,7,33,0,0,3085,684,1,0,0,0,3086,3087,7,34,0, + 0,3087,686,1,0,0,0,3088,3089,5,45,0,0,3089,3090,5,45,0,0,3090,3094, + 1,0,0,0,3091,3093,8,35,0,0,3092,3091,1,0,0,0,3093,3096,1,0,0,0,3094, + 3092,1,0,0,0,3094,3095,1,0,0,0,3095,3098,1,0,0,0,3096,3094,1,0,0, + 0,3097,3099,5,13,0,0,3098,3097,1,0,0,0,3098,3099,1,0,0,0,3099,3101, + 1,0,0,0,3100,3102,5,10,0,0,3101,3100,1,0,0,0,3101,3102,1,0,0,0,3102, + 3103,1,0,0,0,3103,3104,6,343,0,0,3104,688,1,0,0,0,3105,3106,5,47, + 0,0,3106,3107,5,42,0,0,3107,3111,1,0,0,0,3108,3110,9,0,0,0,3109, + 3108,1,0,0,0,3110,3113,1,0,0,0,3111,3112,1,0,0,0,3111,3109,1,0,0, + 0,3112,3114,1,0,0,0,3113,3111,1,0,0,0,3114,3115,5,42,0,0,3115,3116, + 5,47,0,0,3116,3117,1,0,0,0,3117,3118,6,344,0,0,3118,690,1,0,0,0, + 3119,3120,7,36,0,0,3120,3121,1,0,0,0,3121,3122,6,345,0,0,3122,692, + 1,0,0,0,3123,3124,9,0,0,0,3124,694,1,0,0,0,39,0,2881,2914,2916,2928, + 2930,2941,2950,2955,2959,2964,2970,2973,2981,2985,2989,2994,2996, + 3003,3005,3011,3013,3022,3024,3031,3036,3043,3047,3051,3057,3062, + 3068,3073,3077,3082,3094,3098,3101,3111,1,0,1,0 ]; private static __ATN: antlr.ATN; diff --git a/src/lib/trino/TrinoSqlListener.ts b/src/lib/trino/TrinoSqlListener.ts index a81240f0..93c9c77e 100644 --- a/src/lib/trino/TrinoSqlListener.ts +++ b/src/lib/trino/TrinoSqlListener.ts @@ -227,6 +227,7 @@ import { NullLiteralContext } from "./TrinoSqlParser.js"; import { RowConstructorContext } from "./TrinoSqlParser.js"; import { SubscriptContext } from "./TrinoSqlParser.js"; import { JsonExistsContext } from "./TrinoSqlParser.js"; +import { CoalesceContext } from "./TrinoSqlParser.js"; import { CurrentPathContext } from "./TrinoSqlParser.js"; import { SubqueryExpressionContext } from "./TrinoSqlParser.js"; import { BinaryLiteralContext } from "./TrinoSqlParser.js"; @@ -2897,6 +2898,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitJsonExists?: (ctx: JsonExistsContext) => void; + /** + * Enter a parse tree produced by the `coalesce` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCoalesce?: (ctx: CoalesceContext) => void; + /** + * Exit a parse tree produced by the `coalesce` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCoalesce?: (ctx: CoalesceContext) => void; /** * Enter a parse tree produced by the `currentPath` * labeled alternative in `TrinoSqlParser.primaryExpression`. diff --git a/src/lib/trino/TrinoSqlParser.ts b/src/lib/trino/TrinoSqlParser.ts index f83c1af0..cb7fdead 100644 --- a/src/lib/trino/TrinoSqlParser.ts +++ b/src/lib/trino/TrinoSqlParser.ts @@ -60,303 +60,304 @@ export class TrinoSqlParser extends SQLParserBase { public static readonly KW_CAST = 41; public static readonly KW_CATALOG = 42; public static readonly KW_CATALOGS = 43; - public static readonly KW_COLUMN = 44; - public static readonly KW_COLUMNS = 45; - public static readonly KW_COMMENT = 46; - public static readonly KW_COMMIT = 47; - public static readonly KW_COMMITTED = 48; - public static readonly KW_CONDITIONAL = 49; - public static readonly KW_CONSTRAINT = 50; - public static readonly KW_COUNT = 51; - public static readonly KW_COPARTITION = 52; - public static readonly KW_CREATE = 53; - public static readonly KW_CROSS = 54; - public static readonly KW_CUBE = 55; - public static readonly KW_CURRENT = 56; - public static readonly KW_CURRENT_CATALOG = 57; - public static readonly KW_CURRENT_DATE = 58; - public static readonly KW_CURRENT_PATH = 59; - public static readonly KW_CURRENT_ROLE = 60; - public static readonly KW_CURRENT_SCHEMA = 61; - public static readonly KW_CURRENT_TIME = 62; - public static readonly KW_CURRENT_TIMESTAMP = 63; - public static readonly KW_CURRENT_USER = 64; - public static readonly KW_DATA = 65; - public static readonly KW_DATE = 66; - public static readonly KW_DAY = 67; - public static readonly KW_DEALLOCATE = 68; - public static readonly KW_DECLARE = 69; - public static readonly KW_DEFAULT = 70; - public static readonly KW_DEFINE = 71; - public static readonly KW_DEFINER = 72; - public static readonly KW_DELETE = 73; - public static readonly KW_DENY = 74; - public static readonly KW_DESC = 75; - public static readonly KW_DESCRIBE = 76; - public static readonly KW_DESCRIPTOR = 77; - public static readonly KW_DETERMINISTIC = 78; - public static readonly KW_DISTINCT = 79; - public static readonly KW_DISTRIBUTED = 80; - public static readonly KW_DO = 81; - public static readonly KW_DOUBLE = 82; - public static readonly KW_DROP = 83; - public static readonly KW_ELSE = 84; - public static readonly KW_EMPTY = 85; - public static readonly KW_ELSEIF = 86; - public static readonly KW_ENCODING = 87; - public static readonly KW_END = 88; - public static readonly KW_ERROR = 89; - public static readonly KW_ESCAPE = 90; - public static readonly KW_EXCEPT = 91; - public static readonly KW_EXCLUDING = 92; - public static readonly KW_EXECUTE = 93; - public static readonly KW_EXISTS = 94; - public static readonly KW_EXPLAIN = 95; - public static readonly KW_EXTRACT = 96; - public static readonly KW_FALSE = 97; - public static readonly KW_FETCH = 98; - public static readonly KW_FILTER = 99; - public static readonly KW_FINAL = 100; - public static readonly KW_FIRST = 101; - public static readonly KW_FOLLOWING = 102; - public static readonly KW_FOR = 103; - public static readonly KW_FORMAT = 104; - public static readonly KW_FROM = 105; - public static readonly KW_FULL = 106; - public static readonly KW_FUNCTION = 107; - public static readonly KW_FUNCTIONS = 108; - public static readonly KW_GRACE = 109; - public static readonly KW_GRANT = 110; - public static readonly KW_GRANTED = 111; - public static readonly KW_GRANTS = 112; - public static readonly KW_GRAPHVIZ = 113; - public static readonly KW_GROUP = 114; - public static readonly KW_GROUPING = 115; - public static readonly KW_GROUPS = 116; - public static readonly KW_HAVING = 117; - public static readonly KW_HOUR = 118; - public static readonly KW_IF = 119; - public static readonly KW_IGNORE = 120; - public static readonly KW_IMMEDIATE = 121; - public static readonly KW_IN = 122; - public static readonly KW_INCLUDING = 123; - public static readonly KW_INITIAL = 124; - public static readonly KW_INNER = 125; - public static readonly KW_INPUT = 126; - public static readonly KW_INSERT = 127; - public static readonly KW_INTERSECT = 128; - public static readonly KW_INTERVAL = 129; - public static readonly KW_INTO = 130; - public static readonly KW_INVOKER = 131; - public static readonly KW_IO = 132; - public static readonly KW_IS = 133; - public static readonly KW_ISOLATION = 134; - public static readonly KW_ITERATE = 135; - public static readonly KW_JOIN = 136; - public static readonly KW_JSON = 137; - public static readonly KW_JSON_ARRAY = 138; - public static readonly KW_JSON_EXISTS = 139; - public static readonly KW_JSON_OBJECT = 140; - public static readonly KW_JSON_QUERY = 141; - public static readonly KW_JSON_TABLE = 142; - public static readonly KW_JSON_VALUE = 143; - public static readonly KW_KEEP = 144; - public static readonly KW_KEY = 145; - public static readonly KW_KEYS = 146; - public static readonly KW_LANGUAGE = 147; - public static readonly KW_LAST = 148; - public static readonly KW_LATERAL = 149; - public static readonly KW_LEADING = 150; - public static readonly KW_LEAVE = 151; - public static readonly KW_LEFT = 152; - public static readonly KW_LEVEL = 153; - public static readonly KW_LIKE = 154; - public static readonly KW_LIMIT = 155; - public static readonly KW_LISTAGG = 156; - public static readonly KW_LOCAL = 157; - public static readonly KW_LOCALTIME = 158; - public static readonly KW_LOCALTIMESTAMP = 159; - public static readonly KW_LOGICAL = 160; - public static readonly KW_LOOP = 161; - public static readonly KW_MAP = 162; - public static readonly KW_MATCH = 163; - public static readonly KW_MATCHED = 164; - public static readonly KW_MATCHES = 165; - public static readonly KW_MATCH_RECOGNIZE = 166; - public static readonly KW_MATERIALIZED = 167; - public static readonly KW_MEASURES = 168; - public static readonly KW_MERGE = 169; - public static readonly KW_MINUTE = 170; - public static readonly KW_MONTH = 171; - public static readonly KW_NATURAL = 172; - public static readonly KW_NESTED = 173; - public static readonly KW_NEXT = 174; - public static readonly KW_NFC = 175; - public static readonly KW_NFD = 176; - public static readonly KW_NFKC = 177; - public static readonly KW_NFKD = 178; - public static readonly KW_NO = 179; - public static readonly KW_NONE = 180; - public static readonly KW_NORMALIZE = 181; - public static readonly KW_NOT = 182; - public static readonly KW_NULL = 183; - public static readonly KW_NULLIF = 184; - public static readonly KW_NULLS = 185; - public static readonly KW_OBJECT = 186; - public static readonly KW_OF = 187; - public static readonly KW_OFFSET = 188; - public static readonly KW_OMIT = 189; - public static readonly KW_ON = 190; - public static readonly KW_ONE = 191; - public static readonly KW_ONLY = 192; - public static readonly KW_OPTION = 193; - public static readonly KW_OR = 194; - public static readonly KW_ORDER = 195; - public static readonly KW_ORDINALITY = 196; - public static readonly KW_OUTER = 197; - public static readonly KW_OUTPUT = 198; - public static readonly KW_OVER = 199; - public static readonly KW_OVERFLOW = 200; - public static readonly KW_PARTITION = 201; - public static readonly KW_PARTITIONS = 202; - public static readonly KW_PASSING = 203; - public static readonly KW_PAST = 204; - public static readonly KW_PATH = 205; - public static readonly KW_PATTERN = 206; - public static readonly KW_PER = 207; - public static readonly KW_PERIOD = 208; - public static readonly KW_PERMUTE = 209; - public static readonly KW_PLAN = 210; - public static readonly KW_POSITION = 211; - public static readonly KW_PRECEDING = 212; - public static readonly KW_PRECISION = 213; - public static readonly KW_PREPARE = 214; - public static readonly KW_PRIVILEGES = 215; - public static readonly KW_PROPERTIES = 216; - public static readonly KW_PRUNE = 217; - public static readonly KW_QUOTES = 218; - public static readonly KW_RANGE = 219; - public static readonly KW_READ = 220; - public static readonly KW_RECURSIVE = 221; - public static readonly KW_REFRESH = 222; - public static readonly KW_RENAME = 223; - public static readonly KW_REPEAT = 224; - public static readonly KW_REPEATABLE = 225; - public static readonly KW_REPLACE = 226; - public static readonly KW_RESET = 227; - public static readonly KW_RESPECT = 228; - public static readonly KW_RESTRICT = 229; - public static readonly KW_RETURN = 230; - public static readonly KW_RETURNING = 231; - public static readonly KW_RETURNS = 232; - public static readonly KW_REVOKE = 233; - public static readonly KW_RIGHT = 234; - public static readonly KW_ROLE = 235; - public static readonly KW_ROLES = 236; - public static readonly KW_ROLLBACK = 237; - public static readonly KW_ROLLUP = 238; - public static readonly KW_ROW = 239; - public static readonly KW_ROWS = 240; - public static readonly KW_RUNNING = 241; - public static readonly KW_SCALAR = 242; - public static readonly KW_SCHEMA = 243; - public static readonly KW_SCHEMAS = 244; - public static readonly KW_SECOND = 245; - public static readonly KW_SECURITY = 246; - public static readonly KW_SEEK = 247; - public static readonly KW_SELECT = 248; - public static readonly KW_SERIALIZABLE = 249; - public static readonly KW_SESSION = 250; - public static readonly KW_SET = 251; - public static readonly KW_SETS = 252; - public static readonly KW_SHOW = 253; - public static readonly KW_SOME = 254; - public static readonly KW_START = 255; - public static readonly KW_STATS = 256; - public static readonly KW_SUBSET = 257; - public static readonly KW_SUBSTRING = 258; - public static readonly KW_SYSTEM = 259; - public static readonly KW_TABLE = 260; - public static readonly KW_TABLES = 261; - public static readonly KW_TABLESAMPLE = 262; - public static readonly KW_TEXT = 263; - public static readonly KW_TEXT_STRING = 264; - public static readonly KW_THEN = 265; - public static readonly KW_TIES = 266; - public static readonly KW_TIME = 267; - public static readonly KW_TIMESTAMP = 268; - public static readonly KW_TO = 269; - public static readonly KW_TRAILING = 270; - public static readonly KW_TRANSACTION = 271; - public static readonly KW_TRIM = 272; - public static readonly KW_TRUE = 273; - public static readonly KW_TRUNCATE = 274; - public static readonly KW_TRY_CAST = 275; - public static readonly KW_TYPE = 276; - public static readonly KW_UESCAPE = 277; - public static readonly KW_UNBOUNDED = 278; - public static readonly KW_UNCOMMITTED = 279; - public static readonly KW_UNCONDITIONAL = 280; - public static readonly KW_UNION = 281; - public static readonly KW_UNIQUE = 282; - public static readonly KW_UNKNOWN = 283; - public static readonly KW_UNMATCHED = 284; - public static readonly KW_UNNEST = 285; - public static readonly KW_UNTIL = 286; - public static readonly KW_UPDATE = 287; - public static readonly KW_USE = 288; - public static readonly KW_USER = 289; - public static readonly KW_USING = 290; - public static readonly KW_UTF16 = 291; - public static readonly KW_UTF32 = 292; - public static readonly KW_UTF8 = 293; - public static readonly KW_VALIDATE = 294; - public static readonly KW_VALUE = 295; - public static readonly KW_VALUES = 296; - public static readonly KW_VERBOSE = 297; - public static readonly KW_VERSION = 298; - public static readonly KW_VIEW = 299; - public static readonly KW_WHEN = 300; - public static readonly KW_WHERE = 301; - public static readonly KW_WHILE = 302; - public static readonly KW_WINDOW = 303; - public static readonly KW_WITH = 304; - public static readonly KW_WITHIN = 305; - public static readonly KW_WITHOUT = 306; - public static readonly KW_WORK = 307; - public static readonly KW_WRAPPER = 308; - public static readonly KW_WRITE = 309; - public static readonly KW_YEAR = 310; - public static readonly KW_ZONE = 311; - public static readonly EQ = 312; - public static readonly NEQ = 313; - public static readonly LT = 314; - public static readonly LTE = 315; - public static readonly GT = 316; - public static readonly GTE = 317; - public static readonly PLUS = 318; - public static readonly MINUS = 319; - public static readonly ASTERISK = 320; - public static readonly SLASH = 321; - public static readonly PERCENT = 322; - public static readonly CONCAT = 323; - public static readonly QUESTION_MARK = 324; - public static readonly SEMICOLON = 325; - public static readonly STRING = 326; - public static readonly UNICODE_STRING = 327; - public static readonly BINARY_LITERAL = 328; - public static readonly INTEGER_VALUE = 329; - public static readonly DECIMAL_VALUE = 330; - public static readonly DOUBLE_VALUE = 331; - public static readonly IDENTIFIER = 332; - public static readonly DIGIT_IDENTIFIER = 333; - public static readonly QUOTED_IDENTIFIER = 334; - public static readonly BACKQUOTED_IDENTIFIER = 335; - public static readonly LINE_COMMENT = 336; - public static readonly BRACKETED_COMMENT = 337; - public static readonly WHITE_SPACE = 338; - public static readonly UNRECOGNIZED = 339; - public static readonly DELIMITER = 340; + public static readonly KW_COALESCE = 44; + public static readonly KW_COLUMN = 45; + public static readonly KW_COLUMNS = 46; + public static readonly KW_COMMENT = 47; + public static readonly KW_COMMIT = 48; + public static readonly KW_COMMITTED = 49; + public static readonly KW_CONDITIONAL = 50; + public static readonly KW_CONSTRAINT = 51; + public static readonly KW_COUNT = 52; + public static readonly KW_COPARTITION = 53; + public static readonly KW_CREATE = 54; + public static readonly KW_CROSS = 55; + public static readonly KW_CUBE = 56; + public static readonly KW_CURRENT = 57; + public static readonly KW_CURRENT_CATALOG = 58; + public static readonly KW_CURRENT_DATE = 59; + public static readonly KW_CURRENT_PATH = 60; + public static readonly KW_CURRENT_ROLE = 61; + public static readonly KW_CURRENT_SCHEMA = 62; + public static readonly KW_CURRENT_TIME = 63; + public static readonly KW_CURRENT_TIMESTAMP = 64; + public static readonly KW_CURRENT_USER = 65; + public static readonly KW_DATA = 66; + public static readonly KW_DATE = 67; + public static readonly KW_DAY = 68; + public static readonly KW_DEALLOCATE = 69; + public static readonly KW_DECLARE = 70; + public static readonly KW_DEFAULT = 71; + public static readonly KW_DEFINE = 72; + public static readonly KW_DEFINER = 73; + public static readonly KW_DELETE = 74; + public static readonly KW_DENY = 75; + public static readonly KW_DESC = 76; + public static readonly KW_DESCRIBE = 77; + public static readonly KW_DESCRIPTOR = 78; + public static readonly KW_DETERMINISTIC = 79; + public static readonly KW_DISTINCT = 80; + public static readonly KW_DISTRIBUTED = 81; + public static readonly KW_DO = 82; + public static readonly KW_DOUBLE = 83; + public static readonly KW_DROP = 84; + public static readonly KW_ELSE = 85; + public static readonly KW_EMPTY = 86; + public static readonly KW_ELSEIF = 87; + public static readonly KW_ENCODING = 88; + public static readonly KW_END = 89; + public static readonly KW_ERROR = 90; + public static readonly KW_ESCAPE = 91; + public static readonly KW_EXCEPT = 92; + public static readonly KW_EXCLUDING = 93; + public static readonly KW_EXECUTE = 94; + public static readonly KW_EXISTS = 95; + public static readonly KW_EXPLAIN = 96; + public static readonly KW_EXTRACT = 97; + public static readonly KW_FALSE = 98; + public static readonly KW_FETCH = 99; + public static readonly KW_FILTER = 100; + public static readonly KW_FINAL = 101; + public static readonly KW_FIRST = 102; + public static readonly KW_FOLLOWING = 103; + public static readonly KW_FOR = 104; + public static readonly KW_FORMAT = 105; + public static readonly KW_FROM = 106; + public static readonly KW_FULL = 107; + public static readonly KW_FUNCTION = 108; + public static readonly KW_FUNCTIONS = 109; + public static readonly KW_GRACE = 110; + public static readonly KW_GRANT = 111; + public static readonly KW_GRANTED = 112; + public static readonly KW_GRANTS = 113; + public static readonly KW_GRAPHVIZ = 114; + public static readonly KW_GROUP = 115; + public static readonly KW_GROUPING = 116; + public static readonly KW_GROUPS = 117; + public static readonly KW_HAVING = 118; + public static readonly KW_HOUR = 119; + public static readonly KW_IF = 120; + public static readonly KW_IGNORE = 121; + public static readonly KW_IMMEDIATE = 122; + public static readonly KW_IN = 123; + public static readonly KW_INCLUDING = 124; + public static readonly KW_INITIAL = 125; + public static readonly KW_INNER = 126; + public static readonly KW_INPUT = 127; + public static readonly KW_INSERT = 128; + public static readonly KW_INTERSECT = 129; + public static readonly KW_INTERVAL = 130; + public static readonly KW_INTO = 131; + public static readonly KW_INVOKER = 132; + public static readonly KW_IO = 133; + public static readonly KW_IS = 134; + public static readonly KW_ISOLATION = 135; + public static readonly KW_ITERATE = 136; + public static readonly KW_JOIN = 137; + public static readonly KW_JSON = 138; + public static readonly KW_JSON_ARRAY = 139; + public static readonly KW_JSON_EXISTS = 140; + public static readonly KW_JSON_OBJECT = 141; + public static readonly KW_JSON_QUERY = 142; + public static readonly KW_JSON_TABLE = 143; + public static readonly KW_JSON_VALUE = 144; + public static readonly KW_KEEP = 145; + public static readonly KW_KEY = 146; + public static readonly KW_KEYS = 147; + public static readonly KW_LANGUAGE = 148; + public static readonly KW_LAST = 149; + public static readonly KW_LATERAL = 150; + public static readonly KW_LEADING = 151; + public static readonly KW_LEAVE = 152; + public static readonly KW_LEFT = 153; + public static readonly KW_LEVEL = 154; + public static readonly KW_LIKE = 155; + public static readonly KW_LIMIT = 156; + public static readonly KW_LISTAGG = 157; + public static readonly KW_LOCAL = 158; + public static readonly KW_LOCALTIME = 159; + public static readonly KW_LOCALTIMESTAMP = 160; + public static readonly KW_LOGICAL = 161; + public static readonly KW_LOOP = 162; + public static readonly KW_MAP = 163; + public static readonly KW_MATCH = 164; + public static readonly KW_MATCHED = 165; + public static readonly KW_MATCHES = 166; + public static readonly KW_MATCH_RECOGNIZE = 167; + public static readonly KW_MATERIALIZED = 168; + public static readonly KW_MEASURES = 169; + public static readonly KW_MERGE = 170; + public static readonly KW_MINUTE = 171; + public static readonly KW_MONTH = 172; + public static readonly KW_NATURAL = 173; + public static readonly KW_NESTED = 174; + public static readonly KW_NEXT = 175; + public static readonly KW_NFC = 176; + public static readonly KW_NFD = 177; + public static readonly KW_NFKC = 178; + public static readonly KW_NFKD = 179; + public static readonly KW_NO = 180; + public static readonly KW_NONE = 181; + public static readonly KW_NORMALIZE = 182; + public static readonly KW_NOT = 183; + public static readonly KW_NULL = 184; + public static readonly KW_NULLIF = 185; + public static readonly KW_NULLS = 186; + public static readonly KW_OBJECT = 187; + public static readonly KW_OF = 188; + public static readonly KW_OFFSET = 189; + public static readonly KW_OMIT = 190; + public static readonly KW_ON = 191; + public static readonly KW_ONE = 192; + public static readonly KW_ONLY = 193; + public static readonly KW_OPTION = 194; + public static readonly KW_OR = 195; + public static readonly KW_ORDER = 196; + public static readonly KW_ORDINALITY = 197; + public static readonly KW_OUTER = 198; + public static readonly KW_OUTPUT = 199; + public static readonly KW_OVER = 200; + public static readonly KW_OVERFLOW = 201; + public static readonly KW_PARTITION = 202; + public static readonly KW_PARTITIONS = 203; + public static readonly KW_PASSING = 204; + public static readonly KW_PAST = 205; + public static readonly KW_PATH = 206; + public static readonly KW_PATTERN = 207; + public static readonly KW_PER = 208; + public static readonly KW_PERIOD = 209; + public static readonly KW_PERMUTE = 210; + public static readonly KW_PLAN = 211; + public static readonly KW_POSITION = 212; + public static readonly KW_PRECEDING = 213; + public static readonly KW_PRECISION = 214; + public static readonly KW_PREPARE = 215; + public static readonly KW_PRIVILEGES = 216; + public static readonly KW_PROPERTIES = 217; + public static readonly KW_PRUNE = 218; + public static readonly KW_QUOTES = 219; + public static readonly KW_RANGE = 220; + public static readonly KW_READ = 221; + public static readonly KW_RECURSIVE = 222; + public static readonly KW_REFRESH = 223; + public static readonly KW_RENAME = 224; + public static readonly KW_REPEAT = 225; + public static readonly KW_REPEATABLE = 226; + public static readonly KW_REPLACE = 227; + public static readonly KW_RESET = 228; + public static readonly KW_RESPECT = 229; + public static readonly KW_RESTRICT = 230; + public static readonly KW_RETURN = 231; + public static readonly KW_RETURNING = 232; + public static readonly KW_RETURNS = 233; + public static readonly KW_REVOKE = 234; + public static readonly KW_RIGHT = 235; + public static readonly KW_ROLE = 236; + public static readonly KW_ROLES = 237; + public static readonly KW_ROLLBACK = 238; + public static readonly KW_ROLLUP = 239; + public static readonly KW_ROW = 240; + public static readonly KW_ROWS = 241; + public static readonly KW_RUNNING = 242; + public static readonly KW_SCALAR = 243; + public static readonly KW_SCHEMA = 244; + public static readonly KW_SCHEMAS = 245; + public static readonly KW_SECOND = 246; + public static readonly KW_SECURITY = 247; + public static readonly KW_SEEK = 248; + public static readonly KW_SELECT = 249; + public static readonly KW_SERIALIZABLE = 250; + public static readonly KW_SESSION = 251; + public static readonly KW_SET = 252; + public static readonly KW_SETS = 253; + public static readonly KW_SHOW = 254; + public static readonly KW_SOME = 255; + public static readonly KW_START = 256; + public static readonly KW_STATS = 257; + public static readonly KW_SUBSET = 258; + public static readonly KW_SUBSTRING = 259; + public static readonly KW_SYSTEM = 260; + public static readonly KW_TABLE = 261; + public static readonly KW_TABLES = 262; + public static readonly KW_TABLESAMPLE = 263; + public static readonly KW_TEXT = 264; + public static readonly KW_TEXT_STRING = 265; + public static readonly KW_THEN = 266; + public static readonly KW_TIES = 267; + public static readonly KW_TIME = 268; + public static readonly KW_TIMESTAMP = 269; + public static readonly KW_TO = 270; + public static readonly KW_TRAILING = 271; + public static readonly KW_TRANSACTION = 272; + public static readonly KW_TRIM = 273; + public static readonly KW_TRUE = 274; + public static readonly KW_TRUNCATE = 275; + public static readonly KW_TRY_CAST = 276; + public static readonly KW_TYPE = 277; + public static readonly KW_UESCAPE = 278; + public static readonly KW_UNBOUNDED = 279; + public static readonly KW_UNCOMMITTED = 280; + public static readonly KW_UNCONDITIONAL = 281; + public static readonly KW_UNION = 282; + public static readonly KW_UNIQUE = 283; + public static readonly KW_UNKNOWN = 284; + public static readonly KW_UNMATCHED = 285; + public static readonly KW_UNNEST = 286; + public static readonly KW_UNTIL = 287; + public static readonly KW_UPDATE = 288; + public static readonly KW_USE = 289; + public static readonly KW_USER = 290; + public static readonly KW_USING = 291; + public static readonly KW_UTF16 = 292; + public static readonly KW_UTF32 = 293; + public static readonly KW_UTF8 = 294; + public static readonly KW_VALIDATE = 295; + public static readonly KW_VALUE = 296; + public static readonly KW_VALUES = 297; + public static readonly KW_VERBOSE = 298; + public static readonly KW_VERSION = 299; + public static readonly KW_VIEW = 300; + public static readonly KW_WHEN = 301; + public static readonly KW_WHERE = 302; + public static readonly KW_WHILE = 303; + public static readonly KW_WINDOW = 304; + public static readonly KW_WITH = 305; + public static readonly KW_WITHIN = 306; + public static readonly KW_WITHOUT = 307; + public static readonly KW_WORK = 308; + public static readonly KW_WRAPPER = 309; + public static readonly KW_WRITE = 310; + public static readonly KW_YEAR = 311; + public static readonly KW_ZONE = 312; + public static readonly EQ = 313; + public static readonly NEQ = 314; + public static readonly LT = 315; + public static readonly LTE = 316; + public static readonly GT = 317; + public static readonly GTE = 318; + public static readonly PLUS = 319; + public static readonly MINUS = 320; + public static readonly ASTERISK = 321; + public static readonly SLASH = 322; + public static readonly PERCENT = 323; + public static readonly CONCAT = 324; + public static readonly QUESTION_MARK = 325; + public static readonly SEMICOLON = 326; + public static readonly STRING = 327; + public static readonly UNICODE_STRING = 328; + public static readonly BINARY_LITERAL = 329; + public static readonly INTEGER_VALUE = 330; + public static readonly DECIMAL_VALUE = 331; + public static readonly DOUBLE_VALUE = 332; + public static readonly IDENTIFIER = 333; + public static readonly DIGIT_IDENTIFIER = 334; + public static readonly QUOTED_IDENTIFIER = 335; + public static readonly BACKQUOTED_IDENTIFIER = 336; + public static readonly LINE_COMMENT = 337; + public static readonly BRACKETED_COMMENT = 338; + public static readonly WHITE_SPACE = 339; + public static readonly UNRECOGNIZED = 340; + public static readonly DELIMITER = 341; public static readonly RULE_program = 0; public static readonly RULE_statements = 1; public static readonly RULE_singleStatement = 2; @@ -520,45 +521,45 @@ export class TrinoSqlParser extends SQLParserBase { "'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", "'BEGIN'", "'BERNOULLI'", "'BETWEEN'", "'BOTH'", "'BY'", "'CALL'", "'CALLED'", "'CASCADE'", "'CASE'", "'CAST'", "'CATALOG'", "'CATALOGS'", - "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", - "'CONDITIONAL'", "'CONSTRAINT'", "'COUNT'", "'COPARTITION'", "'CREATE'", - "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", - "'CURRENT_PATH'", "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", - "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", - "'DEALLOCATE'", "'DECLARE'", "'DEFAULT'", "'DEFINE'", "'DEFINER'", - "'DELETE'", "'DENY'", "'DESC'", "'DESCRIBE'", "'DESCRIPTOR'", "'DETERMINISTIC'", - "'DISTINCT'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", "'DROP'", "'ELSE'", - "'EMPTY'", "'ELSEIF'", "'ENCODING'", "'END'", "'ERROR'", "'ESCAPE'", - "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", "'EXPLAIN'", - "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", "'FIRST'", - "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTION'", - "'FUNCTIONS'", "'GRACE'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'GRAPHVIZ'", - "'GROUP'", "'GROUPING'", "'GROUPS'", "'HAVING'", "'HOUR'", "'IF'", - "'IGNORE'", "'IMMEDIATE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", - "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", - "'IO'", "'IS'", "'ISOLATION'", "'ITERATE'", "'JOIN'", "'JSON'", - "'JSON_ARRAY'", "'JSON_EXISTS'", "'JSON_OBJECT'", "'JSON_QUERY'", - "'JSON_TABLE'", "'JSON_VALUE'", "'KEEP'", "'KEY'", "'KEYS'", "'LANGUAGE'", - "'LAST'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", "'LEVEL'", - "'LIKE'", "'LIMIT'", "'LISTAGG'", "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", - "'LOGICAL'", "'LOOP'", "'MAP'", "'MATCH'", "'MATCHED'", "'MATCHES'", - "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", "'MERGE'", - "'MINUTE'", "'MONTH'", "'NATURAL'", "'NESTED'", "'NEXT'", "'NFC'", - "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NONE'", "'NORMALIZE'", "'NOT'", - "'NULL'", "'NULLIF'", "'NULLS'", "'OBJECT'", "'OF'", "'OFFSET'", - "'OMIT'", "'ON'", "'ONE'", "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", - "'ORDINALITY'", "'OUTER'", "'OUTPUT'", "'OVER'", "'OVERFLOW'", "'PARTITION'", - "'PARTITIONS'", "'PASSING'", "'PAST'", "'PATH'", "'PATTERN'", "'PER'", - "'PERIOD'", "'PERMUTE'", "'PLAN'", "'POSITION'", "'PRECEDING'", - "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'PRUNE'", - "'QUOTES'", "'RANGE'", "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", - "'REPEAT'", "'REPEATABLE'", "'REPLACE'", "'RESET'", "'RESPECT'", - "'RESTRICT'", "'RETURN'", "'RETURNING'", "'RETURNS'", "'REVOKE'", - "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", - "'ROWS'", "'RUNNING'", "'SCALAR'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", - "'SECURITY'", "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", - "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", - "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'COALESCE'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", + "'COMMITTED'", "'CONDITIONAL'", "'CONSTRAINT'", "'COUNT'", "'COPARTITION'", + "'CREATE'", "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_CATALOG'", + "'CURRENT_DATE'", "'CURRENT_PATH'", "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", + "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", + "'DATE'", "'DAY'", "'DEALLOCATE'", "'DECLARE'", "'DEFAULT'", "'DEFINE'", + "'DEFINER'", "'DELETE'", "'DENY'", "'DESC'", "'DESCRIBE'", "'DESCRIPTOR'", + "'DETERMINISTIC'", "'DISTINCT'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", + "'DROP'", "'ELSE'", "'EMPTY'", "'ELSEIF'", "'ENCODING'", "'END'", + "'ERROR'", "'ESCAPE'", "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", + "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", + "'FIRST'", "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", + "'FUNCTION'", "'FUNCTIONS'", "'GRACE'", "'GRANT'", "'GRANTED'", + "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", "'GROUPING'", "'GROUPS'", "'HAVING'", + "'HOUR'", "'IF'", "'IGNORE'", "'IMMEDIATE'", "'IN'", "'INCLUDING'", + "'INITIAL'", "'INNER'", "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", + "'INTO'", "'INVOKER'", "'IO'", "'IS'", "'ISOLATION'", "'ITERATE'", + "'JOIN'", "'JSON'", "'JSON_ARRAY'", "'JSON_EXISTS'", "'JSON_OBJECT'", + "'JSON_QUERY'", "'JSON_TABLE'", "'JSON_VALUE'", "'KEEP'", "'KEY'", + "'KEYS'", "'LANGUAGE'", "'LAST'", "'LATERAL'", "'LEADING'", "'LEAVE'", + "'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LISTAGG'", "'LOCAL'", + "'LOCALTIME'", "'LOCALTIMESTAMP'", "'LOGICAL'", "'LOOP'", "'MAP'", + "'MATCH'", "'MATCHED'", "'MATCHES'", "'MATCH_RECOGNIZE'", "'MATERIALIZED'", + "'MEASURES'", "'MERGE'", "'MINUTE'", "'MONTH'", "'NATURAL'", "'NESTED'", + "'NEXT'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NONE'", + "'NORMALIZE'", "'NOT'", "'NULL'", "'NULLIF'", "'NULLS'", "'OBJECT'", + "'OF'", "'OFFSET'", "'OMIT'", "'ON'", "'ONE'", "'ONLY'", "'OPTION'", + "'OR'", "'ORDER'", "'ORDINALITY'", "'OUTER'", "'OUTPUT'", "'OVER'", + "'OVERFLOW'", "'PARTITION'", "'PARTITIONS'", "'PASSING'", "'PAST'", + "'PATH'", "'PATTERN'", "'PER'", "'PERIOD'", "'PERMUTE'", "'PLAN'", + "'POSITION'", "'PRECEDING'", "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", + "'PROPERTIES'", "'PRUNE'", "'QUOTES'", "'RANGE'", "'READ'", "'RECURSIVE'", + "'REFRESH'", "'RENAME'", "'REPEAT'", "'REPEATABLE'", "'REPLACE'", + "'RESET'", "'RESPECT'", "'RESTRICT'", "'RETURN'", "'RETURNING'", + "'RETURNS'", "'REVOKE'", "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", + "'ROLLUP'", "'ROW'", "'ROWS'", "'RUNNING'", "'SCALAR'", "'SCHEMA'", + "'SCHEMAS'", "'SECOND'", "'SECURITY'", "'SEEK'", "'SELECT'", "'SERIALIZABLE'", + "'SESSION'", "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'START'", "'STATS'", + "'SUBSET'", "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TEXT'", "'STRING'", "'THEN'", "'TIES'", "'TIME'", "'TIMESTAMP'", "'TO'", "'TRAILING'", "'TRANSACTION'", "'TRIM'", "'TRUE'", "'TRUNCATE'", "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", @@ -578,8 +579,8 @@ export class TrinoSqlParser extends SQLParserBase { "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BEGIN", "KW_BERNOULLI", "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", "KW_CALLED", "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", - "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", - "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", + "KW_COALESCE", "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", + "KW_COMMITTED", "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", "KW_CREATE", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", @@ -701,7 +702,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 25165826) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 2147550721) !== 0) || ((((_la - 73)) & ~0x1F) === 0 && ((1 << (_la - 73)) & 5243919) !== 0) || _la === 110 || _la === 127 || _la === 169 || ((((_la - 214)) & ~0x1F) === 0 && ((1 << (_la - 214)) & 8921345) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 67113129) !== 0) || ((((_la - 287)) & ~0x1F) === 0 && ((1 << (_la - 287)) & 131587) !== 0)) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 25165826) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 134145) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 167805409) !== 0) || _la === 111 || _la === 128 || _la === 170 || ((((_la - 215)) & ~0x1F) === 0 && ((1 << (_la - 215)) & 8921345) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 67113129) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 131587) !== 0)) { { { this.state = 310; @@ -766,7 +767,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 325) { + if (_la === 326) { { this.state = 321; this.match(TrinoSqlParser.SEMICOLON); @@ -801,7 +802,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 326; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 325) { + if (_la === 326) { { this.state = 325; this.match(TrinoSqlParser.SEMICOLON); @@ -836,7 +837,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 325) { + if (_la === 326) { { this.state = 329; this.match(TrinoSqlParser.SEMICOLON); @@ -871,7 +872,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 334; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 325) { + if (_la === 326) { { this.state = 333; this.match(TrinoSqlParser.SEMICOLON); @@ -906,7 +907,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 338; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 325) { + if (_la === 326) { { this.state = 337; this.match(TrinoSqlParser.SEMICOLON); @@ -1072,11 +1073,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 376; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 39 || _la === 229) { + if (_la === 39 || _la === 230) { { this.state = 375; _la = this.tokenStream.LA(1); - if(!(_la === 39 || _la === 229)) { + if(!(_la === 39 || _la === 230)) { this.errorHandler.recoverInline(this); } else { @@ -1163,11 +1164,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 402; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 39 || _la === 229) { + if (_la === 39 || _la === 230) { { this.state = 401; _la = this.tokenStream.LA(1); - if(!(_la === 39 || _la === 229)) { + if(!(_la === 39 || _la === 230)) { this.errorHandler.recoverInline(this); } else { @@ -1224,7 +1225,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 194) { + if (_la === 195) { { this.state = 419; this.match(TrinoSqlParser.KW_OR); @@ -1264,7 +1265,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 435; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 46) { + if (_la === 47) { { this.state = 433; this.match(TrinoSqlParser.KW_COMMENT); @@ -1276,7 +1277,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 439; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 304) { + if (_la === 305) { { this.state = 437; this.match(TrinoSqlParser.KW_WITH); @@ -1317,7 +1318,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 451; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 179) { + if (_la === 180) { { this.state = 450; this.match(TrinoSqlParser.KW_NO); @@ -1340,7 +1341,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 459; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 194) { + if (_la === 195) { { this.state = 457; this.match(TrinoSqlParser.KW_OR); @@ -1476,7 +1477,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 505; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 301) { + if (_la === 302) { { this.state = 504; this.whereClause(); @@ -1898,7 +1899,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 653; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3728211947) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 2781797343) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 3082285823) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 4253015917) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 3758094335) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & 4024434665) !== 0) || ((((_la - 226)) & ~0x1F) === 0 && ((1 << (_la - 226)) & 4286569983) !== 0) || ((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & 4008705783) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 1618962301) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 4093) !== 0)) { { this.state = 645; this.callArgument(); @@ -1929,7 +1930,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 659; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 301) { + if (_la === 302) { { this.state = 658; this.whereClause(); @@ -1969,7 +1970,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 670; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 194) { + if (_la === 195) { { this.state = 668; this.match(TrinoSqlParser.KW_OR); @@ -2001,7 +2002,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 109) { + if (_la === 110) { { this.state = 680; this.match(TrinoSqlParser.KW_GRACE); @@ -2015,7 +2016,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 687; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 46) { + if (_la === 47) { { this.state = 685; this.match(TrinoSqlParser.KW_COMMENT); @@ -2027,7 +2028,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 691; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 304) { + if (_la === 305) { { this.state = 689; this.match(TrinoSqlParser.KW_WITH); @@ -2051,7 +2052,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 194) { + if (_la === 195) { { this.state = 697; this.match(TrinoSqlParser.KW_OR); @@ -2067,7 +2068,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 705; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 46) { + if (_la === 47) { { this.state = 703; this.match(TrinoSqlParser.KW_COMMENT); @@ -2079,13 +2080,13 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 709; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 246) { + if (_la === 247) { { this.state = 707; this.match(TrinoSqlParser.KW_SECURITY); this.state = 708; _la = this.tokenStream.LA(1); - if(!(_la === 72 || _la === 131)) { + if(!(_la === 73 || _la === 132)) { this.errorHandler.recoverInline(this); } else { @@ -2098,7 +2099,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 713; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 304) { + if (_la === 305) { { this.state = 711; this.match(TrinoSqlParser.KW_WITH); @@ -2278,7 +2279,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 782; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3728211947) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 2781797343) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 3082285823) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 4253015917) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 3758094335) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & 4024434665) !== 0) || ((((_la - 226)) & ~0x1F) === 0 && ((1 << (_la - 226)) & 4286569983) !== 0) || ((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & 4008705783) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 1618962301) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 4093) !== 0)) { { this.state = 774; this.callArgument(); @@ -2314,7 +2315,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 789; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 194) { + if (_la === 195) { { this.state = 787; this.match(TrinoSqlParser.KW_OR); @@ -2378,7 +2379,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 809; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 123) { { this.state = 807; this.match(TrinoSqlParser.KW_IN); @@ -2402,7 +2403,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 816; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 123) { { this.state = 814; this.match(TrinoSqlParser.KW_IN); @@ -2474,7 +2475,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 844; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 111) { + if (_la === 112) { { this.state = 841; this.match(TrinoSqlParser.KW_GRANTED); @@ -2488,7 +2489,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 848; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 123) { { this.state = 846; this.match(TrinoSqlParser.KW_IN); @@ -2626,7 +2627,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 898; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 111) { + if (_la === 112) { { this.state = 895; this.match(TrinoSqlParser.KW_GRANTED); @@ -2640,7 +2641,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 902; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 123) { { this.state = 900; this.match(TrinoSqlParser.KW_IN); @@ -2800,7 +2801,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 954; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 123) { { this.state = 952; this.match(TrinoSqlParser.KW_IN); @@ -2822,7 +2823,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 960; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 190) { + if (_la === 191) { { this.state = 958; this.match(TrinoSqlParser.KW_ON); @@ -2884,7 +2885,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 980; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 297) { + if (_la === 298) { { this.state = 979; this.match(TrinoSqlParser.KW_VERBOSE); @@ -2978,11 +2979,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1008; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 122) { + if (_la === 106 || _la === 123) { { this.state = 1006; _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 122)) { + if(!(_la === 106 || _la === 123)) { this.errorHandler.recoverInline(this); } else { @@ -2997,7 +2998,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1016; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 154) { + if (_la === 155) { { this.state = 1010; this.match(TrinoSqlParser.KW_LIKE); @@ -3006,7 +3007,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1014; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 90) { + if (_la === 91) { { this.state = 1012; this.match(TrinoSqlParser.KW_ESCAPE); @@ -3031,11 +3032,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 122) { + if (_la === 106 || _la === 123) { { this.state = 1020; _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 122)) { + if(!(_la === 106 || _la === 123)) { this.errorHandler.recoverInline(this); } else { @@ -3050,7 +3051,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1030; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 154) { + if (_la === 155) { { this.state = 1024; this.match(TrinoSqlParser.KW_LIKE); @@ -3059,7 +3060,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1028; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 90) { + if (_la === 91) { { this.state = 1026; this.match(TrinoSqlParser.KW_ESCAPE); @@ -3084,7 +3085,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1040; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 154) { + if (_la === 155) { { this.state = 1034; this.match(TrinoSqlParser.KW_LIKE); @@ -3093,7 +3094,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1038; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 90) { + if (_la === 91) { { this.state = 1036; this.match(TrinoSqlParser.KW_ESCAPE); @@ -3117,7 +3118,7 @@ export class TrinoSqlParser extends SQLParserBase { this.match(TrinoSqlParser.KW_COLUMNS); this.state = 1044; _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 122)) { + if(!(_la === 106 || _la === 123)) { this.errorHandler.recoverInline(this); } else { @@ -3129,7 +3130,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1052; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 154) { + if (_la === 155) { { this.state = 1046; this.match(TrinoSqlParser.KW_LIKE); @@ -3138,7 +3139,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1050; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 90) { + if (_la === 91) { { this.state = 1048; this.match(TrinoSqlParser.KW_ESCAPE); @@ -3193,7 +3194,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1067; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 56) { + if (_la === 57) { { this.state = 1066; this.match(TrinoSqlParser.KW_CURRENT); @@ -3205,11 +3206,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1072; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 122) { + if (_la === 106 || _la === 123) { { this.state = 1070; _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 122)) { + if(!(_la === 106 || _la === 123)) { this.errorHandler.recoverInline(this); } else { @@ -3236,11 +3237,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1079; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 122) { + if (_la === 106 || _la === 123) { { this.state = 1077; _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 122)) { + if(!(_la === 106 || _la === 123)) { this.errorHandler.recoverInline(this); } else { @@ -3285,11 +3286,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1089; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 122) { + if (_la === 106 || _la === 123) { { this.state = 1087; _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 122)) { + if(!(_la === 106 || _la === 123)) { this.errorHandler.recoverInline(this); } else { @@ -3304,7 +3305,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1097; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 154) { + if (_la === 155) { { this.state = 1091; this.match(TrinoSqlParser.KW_LIKE); @@ -3313,7 +3314,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1095; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 90) { + if (_la === 91) { { this.state = 1093; this.match(TrinoSqlParser.KW_ESCAPE); @@ -3338,7 +3339,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1107; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 154) { + if (_la === 155) { { this.state = 1101; this.match(TrinoSqlParser.KW_LIKE); @@ -3347,7 +3348,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1105; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 90) { + if (_la === 91) { { this.state = 1103; this.match(TrinoSqlParser.KW_ESCAPE); @@ -3426,7 +3427,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 134 || _la === 220) { + if (_la === 135 || _la === 221) { { this.state = 1127; this.transactionMode(); @@ -3460,7 +3461,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1139; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 307) { + if (_la === 308) { { this.state = 1138; this.match(TrinoSqlParser.KW_WORK); @@ -3478,7 +3479,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1143; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 307) { + if (_la === 308) { { this.state = 1142; this.match(TrinoSqlParser.KW_WORK); @@ -3524,7 +3525,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1164; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 290) { + if (_la === 291) { { this.state = 1155; this.match(TrinoSqlParser.KW_USING); @@ -3564,7 +3565,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1178; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 290) { + if (_la === 291) { { this.state = 1169; this.match(TrinoSqlParser.KW_USING); @@ -3686,7 +3687,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1208; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 301) { + if (_la === 302) { { this.state = 1207; this.whereClause(); @@ -3708,7 +3709,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1217; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282056543) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282056543) !== 0) || ((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 3069640845) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 4240329075) !== 0) || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 2171416041) !== 0) || ((((_la - 146)) & ~0x1F) === 0 && ((1 << (_la - 146)) & 4160722303) !== 0) || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4293517199) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 3724537823) !== 0) || ((((_la - 242)) & ~0x1F) === 0 && ((1 << (_la - 242)) & 2130182015) !== 0) || ((((_la - 275)) & ~0x1F) === 0 && ((1 << (_la - 275)) & 3015636855) !== 0) || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1006633023) !== 0)) { { this.state = 1214; this.errorHandler.sync(this); @@ -3746,7 +3747,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1226; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 300); + } while (_la === 301); } break; case 85: @@ -3885,7 +3886,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1255; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 304) { + if (_la === 305) { { this.state = 1254; this.with_(); @@ -3922,7 +3923,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1261; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 221) { + if (_la === 222) { { this.state = 1260; this.match(TrinoSqlParser.KW_RECURSIVE); @@ -3989,6 +3990,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CASCADE: case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COALESCE: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: @@ -4232,7 +4234,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1279; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 182) { + if (_la === 183) { { this.state = 1277; this.match(TrinoSqlParser.KW_NOT); @@ -4295,12 +4297,12 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 92 || _la === 123) { + if (_la === 93 || _la === 124) { { this.state = 1291; localContext._optionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 92 || _la === 123)) { + if(!(_la === 93 || _la === 124)) { localContext._optionType = this.errorHandler.recoverInline(this); } else { @@ -4476,7 +4478,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1326; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 195) { + if (_la === 196) { { this.state = 1316; this.match(TrinoSqlParser.KW_ORDER); @@ -4506,7 +4508,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1333; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 188) { + if (_la === 189) { { this.state = 1328; this.match(TrinoSqlParser.KW_OFFSET); @@ -4515,11 +4517,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1331; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 239 || _la === 240) { + if (_la === 240 || _la === 241) { { this.state = 1330; _la = this.tokenStream.LA(1); - if(!(_la === 239 || _la === 240)) { + if(!(_la === 240 || _la === 241)) { this.errorHandler.recoverInline(this); } else { @@ -4552,7 +4554,7 @@ export class TrinoSqlParser extends SQLParserBase { this.match(TrinoSqlParser.KW_FETCH); this.state = 1338; _la = this.tokenStream.LA(1); - if(!(_la === 101 || _la === 174)) { + if(!(_la === 102 || _la === 175)) { this.errorHandler.recoverInline(this); } else { @@ -4562,7 +4564,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1340; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 324 || _la === 329) { + if (_la === 325 || _la === 330) { { this.state = 1339; localContext._fetchFirst = this.rowCount(); @@ -4571,7 +4573,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1342; _la = this.tokenStream.LA(1); - if(!(_la === 239 || _la === 240)) { + if(!(_la === 240 || _la === 241)) { this.errorHandler.recoverInline(this); } else { @@ -4706,7 +4708,7 @@ export class TrinoSqlParser extends SQLParserBase { { this.state = 1354; _la = this.tokenStream.LA(1); - if(!(_la === 324 || _la === 329)) { + if(!(_la === 325 || _la === 330)) { this.errorHandler.recoverInline(this); } else { @@ -4784,7 +4786,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1362; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 22 || _la === 79) { + if (_la === 22 || _la === 80) { { this.state = 1361; this.setQuantifier(); @@ -4807,7 +4809,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1366; (localContext as SetOperationContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 91 || _la === 281)) { + if(!(_la === 92 || _la === 282)) { (localContext as SetOperationContext)._operator = this.errorHandler.recoverInline(this); } else { @@ -4817,7 +4819,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1368; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 22 || _la === 79) { + if (_la === 22 || _la === 80) { { this.state = 1367; this.setQuantifier(); @@ -4966,7 +4968,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1398; localContext._ordering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 29 || _la === 75)) { + if(!(_la === 29 || _la === 76)) { localContext._ordering = this.errorHandler.recoverInline(this); } else { @@ -4979,14 +4981,14 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1403; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 185) { + if (_la === 186) { { this.state = 1401; this.match(TrinoSqlParser.KW_NULLS); this.state = 1402; localContext._nullOrdering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 101 || _la === 148)) { + if(!(_la === 102 || _la === 149)) { localContext._nullOrdering = this.errorHandler.recoverInline(this); } else { @@ -5602,7 +5604,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1548; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 201) { + if (_la === 202) { { this.state = 1545; this.match(TrinoSqlParser.KW_PARTITION); @@ -5616,7 +5618,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1560; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 195) { + if (_la === 196) { { this.state = 1550; this.match(TrinoSqlParser.KW_ORDER); @@ -5646,7 +5648,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1563; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 116 || _la === 168 || _la === 219 || _la === 240) { + if (_la === 117 || _la === 169 || _la === 220 || _la === 241) { { this.state = 1562; this.windowFrame(); @@ -5721,7 +5723,7 @@ export class TrinoSqlParser extends SQLParserBase { { this.state = 1574; _la = this.tokenStream.LA(1); - if(!(_la === 22 || _la === 79)) { + if(!(_la === 22 || _la === 80)) { this.errorHandler.recoverInline(this); } else { @@ -5969,7 +5971,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 125) { + if (_la === 126) { { this.state = 1620; this.match(TrinoSqlParser.KW_INNER); @@ -5986,7 +5988,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1625; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 197) { + if (_la === 198) { { this.state = 1624; this.match(TrinoSqlParser.KW_OUTER); @@ -6003,7 +6005,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1629; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 197) { + if (_la === 198) { { this.state = 1628; this.match(TrinoSqlParser.KW_OUTER); @@ -6020,7 +6022,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1633; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 197) { + if (_la === 198) { { this.state = 1632; this.match(TrinoSqlParser.KW_OUTER); @@ -6162,7 +6164,7 @@ export class TrinoSqlParser extends SQLParserBase { { this.state = 1662; _la = this.tokenStream.LA(1); - if(!(_la === 33 || _la === 259)) { + if(!(_la === 33 || _la === 260)) { this.errorHandler.recoverInline(this); } else { @@ -6194,7 +6196,7 @@ export class TrinoSqlParser extends SQLParserBase { { this.state = 1664; _la = this.tokenStream.LA(1); - if(!(_la === 35 || _la === 150 || _la === 270)) { + if(!(_la === 35 || _la === 151 || _la === 271)) { this.errorHandler.recoverInline(this); } else { @@ -6240,7 +6242,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1669; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 326 || _la === 327) { + if (_la === 327 || _la === 328) { { this.state = 1668; this.string_(); @@ -6333,7 +6335,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1686; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 201) { + if (_la === 202) { { this.state = 1683; this.match(TrinoSqlParser.KW_PARTITION); @@ -6347,7 +6349,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1698; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 195) { + if (_la === 196) { { this.state = 1688; this.match(TrinoSqlParser.KW_ORDER); @@ -6377,7 +6379,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1709; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 168) { + if (_la === 169) { { this.state = 1700; this.match(TrinoSqlParser.KW_MEASURES); @@ -6405,7 +6407,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1712; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 22 || _la === 191) { + if (_la === 22 || _la === 192) { { this.state = 1711; this.rowsPerMatch(); @@ -6429,11 +6431,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1720; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 124 || _la === 247) { + if (_la === 125 || _la === 248) { { this.state = 1719; _la = this.tokenStream.LA(1); - if(!(_la === 124 || _la === 247)) { + if(!(_la === 125 || _la === 248)) { this.errorHandler.recoverInline(this); } else { @@ -6454,7 +6456,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1735; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 257) { + if (_la === 258) { { this.state = 1726; this.match(TrinoSqlParser.KW_SUBSET); @@ -6613,7 +6615,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1771; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 189 || _la === 253 || _la === 304) { + if (_la === 190 || _la === 254 || _la === 305) { { this.state = 1770; this.emptyMatchHandling(); @@ -7240,11 +7242,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1934; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 85 || _la === 89) { + if (_la === 86 || _la === 90) { { this.state = 1931; _la = this.tokenStream.LA(1); - if(!(_la === 85 || _la === 89)) { + if(!(_la === 86 || _la === 90)) { this.errorHandler.recoverInline(this); } else { @@ -7309,7 +7311,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 205) { + if (_la === 206) { { this.state = 1946; this.match(TrinoSqlParser.KW_PATH); @@ -7335,7 +7337,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1960; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 70 || _la === 89 || _la === 183) { + if (_la === 71 || _la === 90 || _la === 184) { { this.state = 1956; (localContext as ValueColumnContext)._errorBehavior = this.jsonValueBehavior(); @@ -7363,7 +7365,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1968; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 205) { + if (_la === 206) { { this.state = 1966; this.match(TrinoSqlParser.KW_PATH); @@ -7375,7 +7377,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1973; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 304 || _la === 306) { + if (_la === 305 || _la === 307) { { this.state = 1970; this.jsonQueryWrapperBehavior(); @@ -7387,11 +7389,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1982; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 144 || _la === 189) { + if (_la === 145 || _la === 190) { { this.state = 1975; _la = this.tokenStream.LA(1); - if(!(_la === 144 || _la === 189)) { + if(!(_la === 145 || _la === 190)) { this.errorHandler.recoverInline(this); } else { @@ -7403,7 +7405,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1980; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 190) { + if (_la === 191) { { this.state = 1977; this.match(TrinoSqlParser.KW_ON); @@ -7434,7 +7436,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1994; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 85 || _la === 89 || _la === 183) { + if (_la === 86 || _la === 90 || _la === 184) { { this.state = 1990; (localContext as QueryColumnContext)._errorBehavior = this.jsonQueryBehavior(); @@ -7456,7 +7458,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 1998; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 205) { + if (_la === 206) { { this.state = 1997; this.match(TrinoSqlParser.KW_PATH); @@ -7543,7 +7545,7 @@ export class TrinoSqlParser extends SQLParserBase { this.jsonTablePathName(); this.state = 2021; _la = this.tokenStream.LA(1); - if(!(_la === 125 || _la === 197)) { + if(!(_la === 126 || _la === 198)) { this.errorHandler.recoverInline(this); } else { @@ -7567,7 +7569,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2031; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 281) { + while (_la === 282) { { { this.state = 2027; @@ -7595,7 +7597,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 54) { + while (_la === 55) { { { this.state = 2037; @@ -7676,6 +7678,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CASCADE: case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COALESCE: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: @@ -7923,7 +7926,7 @@ export class TrinoSqlParser extends SQLParserBase { { this.state = 2055; _la = this.tokenStream.LA(1); - if(!(_la === 125 || _la === 197)) { + if(!(_la === 126 || _la === 198)) { this.errorHandler.recoverInline(this); } else { @@ -7939,7 +7942,7 @@ export class TrinoSqlParser extends SQLParserBase { this.match(TrinoSqlParser.T__2); this.state = 2057; _la = this.tokenStream.LA(1); - if(!(_la === 54 || _la === 281)) { + if(!(_la === 55 || _la === 282)) { this.errorHandler.recoverInline(this); } else { @@ -7957,7 +7960,7 @@ export class TrinoSqlParser extends SQLParserBase { { this.state = 2060; _la = this.tokenStream.LA(1); - if(!(_la === 54 || _la === 281)) { + if(!(_la === 55 || _la === 282)) { this.errorHandler.recoverInline(this); } else { @@ -7973,7 +7976,7 @@ export class TrinoSqlParser extends SQLParserBase { this.match(TrinoSqlParser.T__2); this.state = 2062; _la = this.tokenStream.LA(1); - if(!(_la === 125 || _la === 197)) { + if(!(_la === 126 || _la === 198)) { this.errorHandler.recoverInline(this); } else { @@ -8043,7 +8046,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2088; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 52) { + if (_la === 53) { { this.state = 2079; this.match(TrinoSqlParser.KW_COPARTITION); @@ -8154,7 +8157,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2113; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 201) { + if (_la === 202) { { this.state = 2103; this.match(TrinoSqlParser.KW_PARTITION); @@ -8170,7 +8173,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2107; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3728211947) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 2781797343) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 3082285823) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 4253015917) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 3758094335) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & 4024434665) !== 0) || ((((_la - 226)) & ~0x1F) === 0 && ((1 << (_la - 226)) & 4286569983) !== 0) || ((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & 4008705783) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 1618962301) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 4093) !== 0)) { { this.state = 2106; this.partitionBy(); @@ -8225,7 +8228,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2139; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 195) { + if (_la === 196) { { this.state = 2123; this.match(TrinoSqlParser.KW_ORDER); @@ -8482,7 +8485,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2191; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 3069640845) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 4240329075) !== 0) || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 2171416041) !== 0) || ((((_la - 146)) & ~0x1F) === 0 && ((1 << (_la - 146)) & 4160722303) !== 0) || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4293517199) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 3724537823) !== 0) || ((((_la - 242)) & ~0x1F) === 0 && ((1 << (_la - 242)) & 2130182015) !== 0) || ((((_la - 275)) & ~0x1F) === 0 && ((1 << (_la - 275)) & 3015636855) !== 0) || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1006633023) !== 0)) { { this.state = 2190; this.type_(0); @@ -8621,6 +8624,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CAST: case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COALESCE: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: @@ -8990,7 +8994,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2238; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 182) { + if (_la === 183) { { this.state = 2237; this.match(TrinoSqlParser.KW_NOT); @@ -9014,7 +9018,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2246; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 182) { + if (_la === 183) { { this.state = 2245; this.match(TrinoSqlParser.KW_NOT); @@ -9054,7 +9058,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2261; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 182) { + if (_la === 183) { { this.state = 2260; this.match(TrinoSqlParser.KW_NOT); @@ -9078,7 +9082,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2269; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 182) { + if (_la === 183) { { this.state = 2268; this.match(TrinoSqlParser.KW_NOT); @@ -9112,7 +9116,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2279; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 182) { + if (_la === 183) { { this.state = 2278; this.match(TrinoSqlParser.KW_NOT); @@ -9132,7 +9136,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2284; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 182) { + if (_la === 183) { { this.state = 2283; this.match(TrinoSqlParser.KW_NOT); @@ -9203,7 +9207,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2293; (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 318 || _la === 319)) { + if(!(_la === 319 || _la === 320)) { (localContext as ArithmeticUnaryContext)._operator = this.errorHandler.recoverInline(this); } else { @@ -9241,7 +9245,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2298; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(((((_la - 320)) & ~0x1F) === 0 && ((1 << (_la - 320)) & 7) !== 0))) { + if(!(((((_la - 321)) & ~0x1F) === 0 && ((1 << (_la - 321)) & 7) !== 0))) { (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); } else { @@ -9264,7 +9268,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2301; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 318 || _la === 319)) { + if(!(_la === 319 || _la === 320)) { (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); } else { @@ -9346,9 +9350,9 @@ export class TrinoSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2767; + this.state = 2779; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 357, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 358, this.context) ) { case 1: { localContext = new NullLiteralContext(localContext); @@ -9552,7 +9556,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2370; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 190) { + if (_la === 191) { { this.state = 2367; this.match(TrinoSqlParser.KW_ON); @@ -9631,7 +9635,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2399; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 3069640845) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 4240329075) !== 0) || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 2171416041) !== 0) || ((((_la - 146)) & ~0x1F) === 0 && ((1 << (_la - 146)) & 4160722303) !== 0) || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4293517199) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 3724537823) !== 0) || ((((_la - 242)) & ~0x1F) === 0 && ((1 << (_la - 242)) & 2130182015) !== 0) || ((((_la - 275)) & ~0x1F) === 0 && ((1 << (_la - 275)) & 3015636855) !== 0) || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1006633023) !== 0)) { { this.state = 2396; (localContext as FunctionCallContext)._label = this.identifier(); @@ -9688,7 +9692,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538415087) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3728211947) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 2781862879) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 3082285823) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 4253015917) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 3758094335) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & 4024434665) !== 0) || ((((_la - 226)) & ~0x1F) === 0 && ((1 << (_la - 226)) & 4286569983) !== 0) || ((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & 4008705783) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 1618962301) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 4093) !== 0)) { { this.state = 2415; this.errorHandler.sync(this); @@ -9724,7 +9728,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2437; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 195) { + if (_la === 196) { { this.state = 2427; this.match(TrinoSqlParser.KW_ORDER); @@ -9771,7 +9775,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2444; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 120 || _la === 228) { + if (_la === 121 || _la === 229) { { this.state = 2443; this.nullTreatment(); @@ -9819,7 +9823,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2465; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 3069640845) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 4240329075) !== 0) || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 2171416041) !== 0) || ((((_la - 146)) & ~0x1F) === 0 && ((1 << (_la - 146)) & 4160722303) !== 0) || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4293517199) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 3724537823) !== 0) || ((((_la - 242)) & ~0x1F) === 0 && ((1 << (_la - 242)) & 2130182015) !== 0) || ((((_la - 275)) & ~0x1F) === 0 && ((1 << (_la - 275)) & 3015636855) !== 0) || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1006633023) !== 0)) { { this.state = 2457; this.identifier(); @@ -9900,11 +9904,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 300); + } while (_la === 301); this.state = 2488; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 84) { + if (_la === 85) { { this.state = 2486; this.match(TrinoSqlParser.KW_ELSE); @@ -9937,11 +9941,11 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2496; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 300); + } while (_la === 301); this.state = 2500; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 84) { + if (_la === 85) { { this.state = 2498; this.match(TrinoSqlParser.KW_ELSE); @@ -10004,7 +10008,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2528; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3728211947) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 2781797343) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 3082285823) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 4253015917) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 3758094335) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & 4024434665) !== 0) || ((((_la - 226)) & ~0x1F) === 0 && ((1 << (_la - 226)) & 4286569983) !== 0) || ((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & 4008705783) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 1618962301) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 4093) !== 0)) { { this.state = 2520; this.expression(); @@ -10204,7 +10208,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2567; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3755997183) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 3728211947) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 2781797343) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 3082285823) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 4253015917) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 3755997183) !== 0) || ((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & 4024434665) !== 0) || ((((_la - 226)) & ~0x1F) === 0 && ((1 << (_la - 226)) & 4286569983) !== 0) || ((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & 4008705783) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 1618962301) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 4093) !== 0)) { { this.state = 2566; (localContext as TrimContext)._trimChar = this.valueExpression(0); @@ -10259,7 +10263,7 @@ export class TrinoSqlParser extends SQLParserBase { this.state = 2589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 103) { + if (_la === 104) { { this.state = 2587; this.match(TrinoSqlParser.KW_FOR); @@ -10320,168 +10324,199 @@ export class TrinoSqlParser extends SQLParserBase { break; case 41: { - localContext = new ParenthesizedExpressionContext(localContext); + localContext = new CoalesceContext(localContext); this.context = localContext; previousContext = localContext; this.state = 2609; - this.match(TrinoSqlParser.T__0); + this.match(TrinoSqlParser.KW_COALESCE); this.state = 2610; - this.expression(); + this.match(TrinoSqlParser.T__0); this.state = 2611; + this.expression(); + this.state = 2616; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2612; + this.match(TrinoSqlParser.T__2); + this.state = 2613; + this.expression(); + } + } + this.state = 2618; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2619; this.match(TrinoSqlParser.T__1); } break; case 42: + { + localContext = new ParenthesizedExpressionContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2621; + this.match(TrinoSqlParser.T__0); + this.state = 2622; + this.expression(); + this.state = 2623; + this.match(TrinoSqlParser.T__1); + } + break; + case 43: { localContext = new GroupingOperationContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2613; + this.state = 2625; this.match(TrinoSqlParser.KW_GROUPING); - this.state = 2614; + this.state = 2626; this.match(TrinoSqlParser.T__0); - this.state = 2623; + this.state = 2635; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 3069640845) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 4240329075) !== 0) || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 2171416041) !== 0) || ((((_la - 146)) & ~0x1F) === 0 && ((1 << (_la - 146)) & 4160722303) !== 0) || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4293517199) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 3724537823) !== 0) || ((((_la - 242)) & ~0x1F) === 0 && ((1 << (_la - 242)) & 2130182015) !== 0) || ((((_la - 275)) & ~0x1F) === 0 && ((1 << (_la - 275)) & 3015636855) !== 0) || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1006633023) !== 0)) { { - this.state = 2615; + this.state = 2627; this.qualifiedName(); - this.state = 2620; + this.state = 2632; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2616; + this.state = 2628; this.match(TrinoSqlParser.T__2); - this.state = 2617; + this.state = 2629; this.qualifiedName(); } } - this.state = 2622; + this.state = 2634; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2625; + this.state = 2637; this.match(TrinoSqlParser.T__1); } break; - case 43: + case 44: { localContext = new JsonExistsContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2626; + this.state = 2638; this.match(TrinoSqlParser.KW_JSON_EXISTS); - this.state = 2627; + this.state = 2639; this.match(TrinoSqlParser.T__0); - this.state = 2628; + this.state = 2640; this.jsonPathInvocation(); - this.state = 2633; + this.state = 2645; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 89 || _la === 97 || _la === 273 || _la === 283) { + if (_la === 90 || _la === 98 || _la === 274 || _la === 284) { { - this.state = 2629; + this.state = 2641; this.jsonExistsErrorBehavior(); - this.state = 2630; + this.state = 2642; this.match(TrinoSqlParser.KW_ON); - this.state = 2631; + this.state = 2643; this.match(TrinoSqlParser.KW_ERROR); } } - this.state = 2635; + this.state = 2647; this.match(TrinoSqlParser.T__1); } break; - case 44: + case 45: { localContext = new JsonValueContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2637; + this.state = 2649; this.match(TrinoSqlParser.KW_JSON_VALUE); - this.state = 2638; + this.state = 2650; this.match(TrinoSqlParser.T__0); - this.state = 2639; + this.state = 2651; this.jsonPathInvocation(); - this.state = 2642; + this.state = 2654; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 231) { + if (_la === 232) { { - this.state = 2640; + this.state = 2652; this.match(TrinoSqlParser.KW_RETURNING); - this.state = 2641; + this.state = 2653; this.type_(0); } } - this.state = 2648; + this.state = 2660; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 335, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 336, this.context) ) { case 1: { - this.state = 2644; + this.state = 2656; (localContext as JsonValueContext)._emptyBehavior = this.jsonValueBehavior(); - this.state = 2645; + this.state = 2657; this.match(TrinoSqlParser.KW_ON); - this.state = 2646; + this.state = 2658; this.match(TrinoSqlParser.KW_EMPTY); } break; } - this.state = 2654; + this.state = 2666; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 70 || _la === 89 || _la === 183) { + if (_la === 71 || _la === 90 || _la === 184) { { - this.state = 2650; + this.state = 2662; (localContext as JsonValueContext)._errorBehavior = this.jsonValueBehavior(); - this.state = 2651; + this.state = 2663; this.match(TrinoSqlParser.KW_ON); - this.state = 2652; + this.state = 2664; this.match(TrinoSqlParser.KW_ERROR); } } - this.state = 2656; + this.state = 2668; this.match(TrinoSqlParser.T__1); } break; - case 45: + case 46: { localContext = new JsonQueryContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2658; + this.state = 2670; this.match(TrinoSqlParser.KW_JSON_QUERY); - this.state = 2659; + this.state = 2671; this.match(TrinoSqlParser.T__0); - this.state = 2660; + this.state = 2672; this.jsonPathInvocation(); - this.state = 2667; + this.state = 2679; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 231) { + if (_la === 232) { { - this.state = 2661; + this.state = 2673; this.match(TrinoSqlParser.KW_RETURNING); - this.state = 2662; + this.state = 2674; this.type_(0); - this.state = 2665; + this.state = 2677; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 104) { + if (_la === 105) { { - this.state = 2663; + this.state = 2675; this.match(TrinoSqlParser.KW_FORMAT); - this.state = 2664; + this.state = 2676; this.jsonRepresentation(); } } @@ -10489,44 +10524,44 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 2672; + this.state = 2684; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 304 || _la === 306) { + if (_la === 305 || _la === 307) { { - this.state = 2669; + this.state = 2681; this.jsonQueryWrapperBehavior(); - this.state = 2670; + this.state = 2682; this.match(TrinoSqlParser.KW_WRAPPER); } } - this.state = 2681; + this.state = 2693; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 144 || _la === 189) { + if (_la === 145 || _la === 190) { { - this.state = 2674; + this.state = 2686; _la = this.tokenStream.LA(1); - if(!(_la === 144 || _la === 189)) { + if(!(_la === 145 || _la === 190)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2675; + this.state = 2687; this.match(TrinoSqlParser.KW_QUOTES); - this.state = 2679; + this.state = 2691; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 190) { + if (_la === 191) { { - this.state = 2676; + this.state = 2688; this.match(TrinoSqlParser.KW_ON); - this.state = 2677; + this.state = 2689; this.match(TrinoSqlParser.KW_SCALAR); - this.state = 2678; + this.state = 2690; this.match(TrinoSqlParser.KW_TEXT_STRING); } } @@ -10534,90 +10569,90 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 2687; + this.state = 2699; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 342, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 343, this.context) ) { case 1: { - this.state = 2683; + this.state = 2695; (localContext as JsonQueryContext)._emptyBehavior = this.jsonQueryBehavior(); - this.state = 2684; + this.state = 2696; this.match(TrinoSqlParser.KW_ON); - this.state = 2685; + this.state = 2697; this.match(TrinoSqlParser.KW_EMPTY); } break; } - this.state = 2693; + this.state = 2705; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 85 || _la === 89 || _la === 183) { + if (_la === 86 || _la === 90 || _la === 184) { { - this.state = 2689; + this.state = 2701; (localContext as JsonQueryContext)._errorBehavior = this.jsonQueryBehavior(); - this.state = 2690; + this.state = 2702; this.match(TrinoSqlParser.KW_ON); - this.state = 2691; + this.state = 2703; this.match(TrinoSqlParser.KW_ERROR); } } - this.state = 2695; + this.state = 2707; this.match(TrinoSqlParser.T__1); } break; - case 46: + case 47: { localContext = new JsonObjectContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2697; + this.state = 2709; this.match(TrinoSqlParser.KW_JSON_OBJECT); - this.state = 2698; + this.state = 2710; this.match(TrinoSqlParser.T__0); - this.state = 2727; + this.state = 2739; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 349, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 350, this.context) ) { case 1: { - this.state = 2699; + this.state = 2711; this.jsonObjectMember(); - this.state = 2704; + this.state = 2716; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2700; + this.state = 2712; this.match(TrinoSqlParser.T__2); - this.state = 2701; + this.state = 2713; this.jsonObjectMember(); } } - this.state = 2706; + this.state = 2718; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2713; + this.state = 2725; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_NULL: { - this.state = 2707; + this.state = 2719; this.match(TrinoSqlParser.KW_NULL); - this.state = 2708; + this.state = 2720; this.match(TrinoSqlParser.KW_ON); - this.state = 2709; + this.state = 2721; this.match(TrinoSqlParser.KW_NULL); } break; case TrinoSqlParser.KW_ABSENT: { - this.state = 2710; + this.state = 2722; this.match(TrinoSqlParser.KW_ABSENT); - this.state = 2711; + this.state = 2723; this.match(TrinoSqlParser.KW_ON); - this.state = 2712; + this.state = 2724; this.match(TrinoSqlParser.KW_NULL); } break; @@ -10629,21 +10664,21 @@ export class TrinoSqlParser extends SQLParserBase { default: break; } - this.state = 2725; + this.state = 2737; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_WITH: { - this.state = 2715; + this.state = 2727; this.match(TrinoSqlParser.KW_WITH); - this.state = 2716; + this.state = 2728; this.match(TrinoSqlParser.KW_UNIQUE); - this.state = 2718; + this.state = 2730; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 146) { + if (_la === 147) { { - this.state = 2717; + this.state = 2729; this.match(TrinoSqlParser.KW_KEYS); } } @@ -10652,16 +10687,16 @@ export class TrinoSqlParser extends SQLParserBase { break; case TrinoSqlParser.KW_WITHOUT: { - this.state = 2720; + this.state = 2732; this.match(TrinoSqlParser.KW_WITHOUT); - this.state = 2721; + this.state = 2733; this.match(TrinoSqlParser.KW_UNIQUE); - this.state = 2723; + this.state = 2735; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 146) { + if (_la === 147) { { - this.state = 2722; + this.state = 2734; this.match(TrinoSqlParser.KW_KEYS); } } @@ -10677,23 +10712,23 @@ export class TrinoSqlParser extends SQLParserBase { } break; } - this.state = 2735; + this.state = 2747; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 231) { + if (_la === 232) { { - this.state = 2729; + this.state = 2741; this.match(TrinoSqlParser.KW_RETURNING); - this.state = 2730; + this.state = 2742; this.type_(0); - this.state = 2733; + this.state = 2745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 104) { + if (_la === 105) { { - this.state = 2731; + this.state = 2743; this.match(TrinoSqlParser.KW_FORMAT); - this.state = 2732; + this.state = 2744; this.jsonRepresentation(); } } @@ -10701,62 +10736,62 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 2737; + this.state = 2749; this.match(TrinoSqlParser.T__1); } break; - case 47: + case 48: { localContext = new JsonArrayContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2738; + this.state = 2750; this.match(TrinoSqlParser.KW_JSON_ARRAY); - this.state = 2739; + this.state = 2751; this.match(TrinoSqlParser.T__0); - this.state = 2756; + this.state = 2768; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 354, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 355, this.context) ) { case 1: { - this.state = 2740; + this.state = 2752; this.jsonValueExpression(); - this.state = 2745; + this.state = 2757; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2741; + this.state = 2753; this.match(TrinoSqlParser.T__2); - this.state = 2742; + this.state = 2754; this.jsonValueExpression(); } } - this.state = 2747; + this.state = 2759; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2754; + this.state = 2766; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_NULL: { - this.state = 2748; + this.state = 2760; this.match(TrinoSqlParser.KW_NULL); - this.state = 2749; + this.state = 2761; this.match(TrinoSqlParser.KW_ON); - this.state = 2750; + this.state = 2762; this.match(TrinoSqlParser.KW_NULL); } break; case TrinoSqlParser.KW_ABSENT: { - this.state = 2751; + this.state = 2763; this.match(TrinoSqlParser.KW_ABSENT); - this.state = 2752; + this.state = 2764; this.match(TrinoSqlParser.KW_ON); - this.state = 2753; + this.state = 2765; this.match(TrinoSqlParser.KW_NULL); } break; @@ -10769,23 +10804,23 @@ export class TrinoSqlParser extends SQLParserBase { } break; } - this.state = 2764; + this.state = 2776; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 231) { + if (_la === 232) { { - this.state = 2758; + this.state = 2770; this.match(TrinoSqlParser.KW_RETURNING); - this.state = 2759; + this.state = 2771; this.type_(0); - this.state = 2762; + this.state = 2774; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 104) { + if (_la === 105) { { - this.state = 2760; + this.state = 2772; this.match(TrinoSqlParser.KW_FORMAT); - this.state = 2761; + this.state = 2773; this.jsonRepresentation(); } } @@ -10793,15 +10828,15 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 2766; + this.state = 2778; this.match(TrinoSqlParser.T__1); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2779; + this.state = 2791; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 359, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 360, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -10809,23 +10844,23 @@ export class TrinoSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2777; + this.state = 2789; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 358, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 359, this.context) ) { case 1: { localContext = new SubscriptContext(new PrimaryExpressionContext(parentContext, parentState)); (localContext as SubscriptContext)._value = previousContext; this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); - this.state = 2769; - if (!(this.precpred(this.context, 24))) { - throw this.createFailedPredicateException("this.precpred(this.context, 24)"); + this.state = 2781; + if (!(this.precpred(this.context, 25))) { + throw this.createFailedPredicateException("this.precpred(this.context, 25)"); } - this.state = 2770; + this.state = 2782; this.match(TrinoSqlParser.T__7); - this.state = 2771; + this.state = 2783; (localContext as SubscriptContext)._index = this.valueExpression(0); - this.state = 2772; + this.state = 2784; this.match(TrinoSqlParser.T__8); } break; @@ -10834,22 +10869,22 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new DereferenceContext(new PrimaryExpressionContext(parentContext, parentState)); (localContext as DereferenceContext)._base = previousContext; this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); - this.state = 2774; - if (!(this.precpred(this.context, 22))) { - throw this.createFailedPredicateException("this.precpred(this.context, 22)"); + this.state = 2786; + if (!(this.precpred(this.context, 23))) { + throw this.createFailedPredicateException("this.precpred(this.context, 23)"); } - this.state = 2775; + this.state = 2787; this.match(TrinoSqlParser.T__3); - this.state = 2776; + this.state = 2788; (localContext as DereferenceContext)._fieldName = this.identifier(); } break; } } } - this.state = 2781; + this.state = 2793; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 359, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 360, this.context); } } } @@ -10874,46 +10909,46 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2782; + this.state = 2794; this.jsonValueExpression(); - this.state = 2783; + this.state = 2795; this.match(TrinoSqlParser.T__2); - this.state = 2784; + this.state = 2796; localContext._path = this.string_(); - this.state = 2787; + this.state = 2799; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 28) { { - this.state = 2785; + this.state = 2797; this.match(TrinoSqlParser.KW_AS); - this.state = 2786; + this.state = 2798; localContext._pathName = this.identifier(); } } - this.state = 2798; + this.state = 2810; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 203) { + if (_la === 204) { { - this.state = 2789; + this.state = 2801; this.match(TrinoSqlParser.KW_PASSING); - this.state = 2790; + this.state = 2802; this.jsonArgument(); - this.state = 2795; + this.state = 2807; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2791; + this.state = 2803; this.match(TrinoSqlParser.T__2); - this.state = 2792; + this.state = 2804; this.jsonArgument(); } } - this.state = 2797; + this.state = 2809; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -10943,16 +10978,16 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2800; + this.state = 2812; this.expression(); - this.state = 2803; + this.state = 2815; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 104) { + if (_la === 105) { { - this.state = 2801; + this.state = 2813; this.match(TrinoSqlParser.KW_FORMAT); - this.state = 2802; + this.state = 2814; this.jsonRepresentation(); } } @@ -10980,18 +11015,18 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2805; + this.state = 2817; this.match(TrinoSqlParser.KW_JSON); - this.state = 2808; + this.state = 2820; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 87) { + if (_la === 88) { { - this.state = 2806; + this.state = 2818; this.match(TrinoSqlParser.KW_ENCODING); - this.state = 2807; + this.state = 2819; _la = this.tokenStream.LA(1); - if(!(((((_la - 291)) & ~0x1F) === 0 && ((1 << (_la - 291)) & 7) !== 0))) { + if(!(((((_la - 292)) & ~0x1F) === 0 && ((1 << (_la - 292)) & 7) !== 0))) { this.errorHandler.recoverInline(this); } else { @@ -11023,11 +11058,11 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2810; + this.state = 2822; this.jsonValueExpression(); - this.state = 2811; + this.state = 2823; this.match(TrinoSqlParser.KW_AS); - this.state = 2812; + this.state = 2824; this.identifier(); } } @@ -11052,9 +11087,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2814; + this.state = 2826; _la = this.tokenStream.LA(1); - if(!(_la === 89 || _la === 97 || _la === 273 || _la === 283)) { + if(!(_la === 90 || _la === 98 || _la === 274 || _la === 284)) { this.errorHandler.recoverInline(this); } else { @@ -11081,29 +11116,29 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new JsonValueBehaviorContext(this.context, this.state); this.enterRule(localContext, 162, TrinoSqlParser.RULE_jsonValueBehavior); try { - this.state = 2820; + this.state = 2832; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ERROR: this.enterOuterAlt(localContext, 1); { - this.state = 2816; + this.state = 2828; this.match(TrinoSqlParser.KW_ERROR); } break; case TrinoSqlParser.KW_NULL: this.enterOuterAlt(localContext, 2); { - this.state = 2817; + this.state = 2829; this.match(TrinoSqlParser.KW_NULL); } break; case TrinoSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 3); { - this.state = 2818; + this.state = 2830; this.match(TrinoSqlParser.KW_DEFAULT); - this.state = 2819; + this.state = 2831; this.expression(); } break; @@ -11130,20 +11165,20 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 164, TrinoSqlParser.RULE_jsonQueryWrapperBehavior); let _la: number; try { - this.state = 2833; + this.state = 2845; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_WITHOUT: this.enterOuterAlt(localContext, 1); { - this.state = 2822; + this.state = 2834; this.match(TrinoSqlParser.KW_WITHOUT); - this.state = 2824; + this.state = 2836; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 27) { { - this.state = 2823; + this.state = 2835; this.match(TrinoSqlParser.KW_ARRAY); } } @@ -11153,16 +11188,16 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_WITH: this.enterOuterAlt(localContext, 2); { - this.state = 2826; + this.state = 2838; this.match(TrinoSqlParser.KW_WITH); - this.state = 2828; + this.state = 2840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 49 || _la === 280) { + if (_la === 50 || _la === 281) { { - this.state = 2827; + this.state = 2839; _la = this.tokenStream.LA(1); - if(!(_la === 49 || _la === 280)) { + if(!(_la === 50 || _la === 281)) { this.errorHandler.recoverInline(this); } else { @@ -11172,12 +11207,12 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 2831; + this.state = 2843; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 27) { { - this.state = 2830; + this.state = 2842; this.match(TrinoSqlParser.KW_ARRAY); } } @@ -11206,38 +11241,38 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new JsonQueryBehaviorContext(this.context, this.state); this.enterRule(localContext, 166, TrinoSqlParser.RULE_jsonQueryBehavior); try { - this.state = 2841; + this.state = 2853; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 370, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 371, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2835; + this.state = 2847; this.match(TrinoSqlParser.KW_ERROR); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2836; + this.state = 2848; this.match(TrinoSqlParser.KW_NULL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2837; + this.state = 2849; this.match(TrinoSqlParser.KW_EMPTY); - this.state = 2838; + this.state = 2850; this.match(TrinoSqlParser.KW_ARRAY); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2839; + this.state = 2851; this.match(TrinoSqlParser.KW_EMPTY); - this.state = 2840; + this.state = 2852; this.match(TrinoSqlParser.KW_OBJECT); } break; @@ -11261,38 +11296,38 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new JsonObjectMemberContext(this.context, this.state); this.enterRule(localContext, 168, TrinoSqlParser.RULE_jsonObjectMember); try { - this.state = 2854; + this.state = 2866; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 372, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 373, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2844; + this.state = 2856; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 371, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 372, this.context) ) { case 1: { - this.state = 2843; + this.state = 2855; this.match(TrinoSqlParser.KW_KEY); } break; } - this.state = 2846; + this.state = 2858; this.expression(); - this.state = 2847; + this.state = 2859; this.match(TrinoSqlParser.KW_VALUE); - this.state = 2848; + this.state = 2860; this.jsonValueExpression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2850; + this.state = 2862; this.expression(); - this.state = 2851; + this.state = 2863; this.match(TrinoSqlParser.T__9); - this.state = 2852; + this.state = 2864; this.jsonValueExpression(); } break; @@ -11319,9 +11354,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2856; + this.state = 2868; _la = this.tokenStream.LA(1); - if(!(_la === 100 || _la === 241)) { + if(!(_la === 101 || _la === 242)) { this.errorHandler.recoverInline(this); } else { @@ -11348,24 +11383,24 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new NullTreatmentContext(this.context, this.state); this.enterRule(localContext, 172, TrinoSqlParser.RULE_nullTreatment); try { - this.state = 2862; + this.state = 2874; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_IGNORE: this.enterOuterAlt(localContext, 1); { - this.state = 2858; + this.state = 2870; this.match(TrinoSqlParser.KW_IGNORE); - this.state = 2859; + this.state = 2871; this.match(TrinoSqlParser.KW_NULLS); } break; case TrinoSqlParser.KW_RESPECT: this.enterOuterAlt(localContext, 2); { - this.state = 2860; + this.state = 2872; this.match(TrinoSqlParser.KW_RESPECT); - this.state = 2861; + this.state = 2873; this.match(TrinoSqlParser.KW_NULLS); } break; @@ -11391,14 +11426,14 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new StringContext(this.context, this.state); this.enterRule(localContext, 174, TrinoSqlParser.RULE_string); try { - this.state = 2870; + this.state = 2882; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.STRING: localContext = new BasicStringLiteralContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2864; + this.state = 2876; this.match(TrinoSqlParser.STRING); } break; @@ -11406,16 +11441,16 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new UnicodeStringLiteralContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2865; + this.state = 2877; this.match(TrinoSqlParser.UNICODE_STRING); - this.state = 2868; + this.state = 2880; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 374, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 375, this.context) ) { case 1: { - this.state = 2866; + this.state = 2878; this.match(TrinoSqlParser.KW_UESCAPE); - this.state = 2867; + this.state = 2879; this.match(TrinoSqlParser.STRING); } break; @@ -11444,18 +11479,18 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new TimeZoneSpecifierContext(this.context, this.state); this.enterRule(localContext, 176, TrinoSqlParser.RULE_timeZoneSpecifier); try { - this.state = 2878; + this.state = 2890; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 376, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 377, this.context) ) { case 1: localContext = new TimeZoneIntervalContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2872; + this.state = 2884; this.match(TrinoSqlParser.KW_TIME); - this.state = 2873; + this.state = 2885; this.match(TrinoSqlParser.KW_ZONE); - this.state = 2874; + this.state = 2886; this.interval(); } break; @@ -11463,11 +11498,11 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new TimeZoneStringContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2875; + this.state = 2887; this.match(TrinoSqlParser.KW_TIME); - this.state = 2876; + this.state = 2888; this.match(TrinoSqlParser.KW_ZONE); - this.state = 2877; + this.state = 2889; this.string_(); } break; @@ -11494,9 +11529,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2880; + this.state = 2892; _la = this.tokenStream.LA(1); - if(!(((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 63) !== 0))) { + if(!(((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 63) !== 0))) { this.errorHandler.recoverInline(this); } else { @@ -11526,9 +11561,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2882; + this.state = 2894; _la = this.tokenStream.LA(1); - if(!(_la === 22 || _la === 26 || _la === 254)) { + if(!(_la === 22 || _la === 26 || _la === 255)) { this.errorHandler.recoverInline(this); } else { @@ -11558,9 +11593,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2884; + this.state = 2896; _la = this.tokenStream.LA(1); - if(!(_la === 97 || _la === 273)) { + if(!(_la === 98 || _la === 274)) { this.errorHandler.recoverInline(this); } else { @@ -11590,17 +11625,17 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2886; + this.state = 2898; this.match(TrinoSqlParser.KW_INTERVAL); - this.state = 2888; + this.state = 2900; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 318 || _la === 319) { + if (_la === 319 || _la === 320) { { - this.state = 2887; + this.state = 2899; localContext._sign = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 318 || _la === 319)) { + if(!(_la === 319 || _la === 320)) { localContext._sign = this.errorHandler.recoverInline(this); } else { @@ -11610,18 +11645,18 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 2890; + this.state = 2902; this.string_(); - this.state = 2891; + this.state = 2903; localContext._from_ = this.intervalField(); - this.state = 2894; + this.state = 2906; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 378, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 379, this.context) ) { case 1: { - this.state = 2892; + this.state = 2904; this.match(TrinoSqlParser.KW_TO); - this.state = 2893; + this.state = 2905; localContext._to = this.intervalField(); } break; @@ -11649,9 +11684,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2896; + this.state = 2908; _la = this.tokenStream.LA(1); - if(!(_la === 67 || _la === 118 || _la === 170 || _la === 171 || _la === 245 || _la === 310)) { + if(!(_la === 68 || _la === 119 || _la === 171 || _la === 172 || _la === 246 || _la === 311)) { this.errorHandler.recoverInline(this); } else { @@ -11681,9 +11716,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2898; + this.state = 2910; _la = this.tokenStream.LA(1); - if(!(((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 15) !== 0))) { + if(!(((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 15) !== 0))) { this.errorHandler.recoverInline(this); } else { @@ -11725,38 +11760,38 @@ export class TrinoSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2971; + this.state = 2983; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 387, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 388, this.context) ) { case 1: { localContext = new RowTypeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2901; + this.state = 2913; this.match(TrinoSqlParser.KW_ROW); - this.state = 2902; + this.state = 2914; this.match(TrinoSqlParser.T__0); - this.state = 2903; + this.state = 2915; this.rowField(); - this.state = 2908; + this.state = 2920; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2904; + this.state = 2916; this.match(TrinoSqlParser.T__2); - this.state = 2905; + this.state = 2917; this.rowField(); } } - this.state = 2910; + this.state = 2922; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2911; + this.state = 2923; this.match(TrinoSqlParser.T__1); } break; @@ -11765,18 +11800,18 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new IntervalTypeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2913; + this.state = 2925; this.match(TrinoSqlParser.KW_INTERVAL); - this.state = 2914; + this.state = 2926; (localContext as IntervalTypeContext)._from_ = this.intervalField(); - this.state = 2917; + this.state = 2929; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 381, this.context) ) { case 1: { - this.state = 2915; + this.state = 2927; this.match(TrinoSqlParser.KW_TO); - this.state = 2916; + this.state = 2928; (localContext as IntervalTypeContext)._to = this.intervalField(); } break; @@ -11788,39 +11823,39 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new DateTimeTypeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2919; + this.state = 2931; (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); - this.state = 2924; + this.state = 2936; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 381, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 382, this.context) ) { case 1: { - this.state = 2920; + this.state = 2932; this.match(TrinoSqlParser.T__0); - this.state = 2921; + this.state = 2933; (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2922; + this.state = 2934; this.match(TrinoSqlParser.T__1); } break; } - this.state = 2929; + this.state = 2941; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 382, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 383, this.context) ) { case 1: { - this.state = 2926; + this.state = 2938; _la = this.tokenStream.LA(1); - if(!(_la === 304 || _la === 306)) { + if(!(_la === 305 || _la === 307)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2927; + this.state = 2939; this.match(TrinoSqlParser.KW_TIME); - this.state = 2928; + this.state = 2940; this.match(TrinoSqlParser.KW_ZONE); } break; @@ -11832,39 +11867,39 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new TimeTypeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2931; + this.state = 2943; (localContext as TimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); - this.state = 2936; + this.state = 2948; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 383, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { case 1: { - this.state = 2932; + this.state = 2944; this.match(TrinoSqlParser.T__0); - this.state = 2933; + this.state = 2945; (localContext as TimeTypeContext)._precision = this.typeParameter(); - this.state = 2934; + this.state = 2946; this.match(TrinoSqlParser.T__1); } break; } - this.state = 2941; + this.state = 2953; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 385, this.context) ) { case 1: { - this.state = 2938; + this.state = 2950; _la = this.tokenStream.LA(1); - if(!(_la === 304 || _la === 306)) { + if(!(_la === 305 || _la === 307)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2939; + this.state = 2951; this.match(TrinoSqlParser.KW_TIME); - this.state = 2940; + this.state = 2952; this.match(TrinoSqlParser.KW_ZONE); } break; @@ -11876,9 +11911,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new DoublePrecisionTypeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2943; + this.state = 2955; this.match(TrinoSqlParser.KW_DOUBLE); - this.state = 2944; + this.state = 2956; this.match(TrinoSqlParser.KW_PRECISION); } break; @@ -11887,13 +11922,13 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new LegacyArrayTypeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2945; + this.state = 2957; this.match(TrinoSqlParser.KW_ARRAY); - this.state = 2946; + this.state = 2958; this.match(TrinoSqlParser.LT); - this.state = 2947; + this.state = 2959; this.type_(0); - this.state = 2948; + this.state = 2960; this.match(TrinoSqlParser.GT); } break; @@ -11902,17 +11937,17 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new LegacyMapTypeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2950; + this.state = 2962; this.match(TrinoSqlParser.KW_MAP); - this.state = 2951; + this.state = 2963; this.match(TrinoSqlParser.LT); - this.state = 2952; + this.state = 2964; (localContext as LegacyMapTypeContext)._keyType = this.type_(0); - this.state = 2953; + this.state = 2965; this.match(TrinoSqlParser.T__2); - this.state = 2954; + this.state = 2966; (localContext as LegacyMapTypeContext)._valueType = this.type_(0); - this.state = 2955; + this.state = 2967; this.match(TrinoSqlParser.GT); } break; @@ -11921,34 +11956,34 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new GenericTypeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2957; - this.identifier(); this.state = 2969; + this.identifier(); + this.state = 2981; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 386, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 387, this.context) ) { case 1: { - this.state = 2958; + this.state = 2970; this.match(TrinoSqlParser.T__0); - this.state = 2959; + this.state = 2971; this.typeParameter(); - this.state = 2964; + this.state = 2976; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2960; + this.state = 2972; this.match(TrinoSqlParser.T__2); - this.state = 2961; + this.state = 2973; this.typeParameter(); } } - this.state = 2966; + this.state = 2978; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2967; + this.state = 2979; this.match(TrinoSqlParser.T__1); } break; @@ -11957,9 +11992,9 @@ export class TrinoSqlParser extends SQLParserBase { break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2982; + this.state = 2994; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 389, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 390, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -11970,22 +12005,22 @@ export class TrinoSqlParser extends SQLParserBase { { localContext = new ArrayTypeContext(new TypeContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_type); - this.state = 2973; + this.state = 2985; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2974; + this.state = 2986; this.match(TrinoSqlParser.KW_ARRAY); - this.state = 2978; + this.state = 2990; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 388, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 389, this.context) ) { case 1: { - this.state = 2975; + this.state = 2987; this.match(TrinoSqlParser.T__7); - this.state = 2976; + this.state = 2988; this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 2977; + this.state = 2989; this.match(TrinoSqlParser.T__8); } break; @@ -11993,9 +12028,9 @@ export class TrinoSqlParser extends SQLParserBase { } } } - this.state = 2984; + this.state = 2996; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 389, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 390, this.context); } } } @@ -12017,22 +12052,22 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new RowFieldContext(this.context, this.state); this.enterRule(localContext, 192, TrinoSqlParser.RULE_rowField); try { - this.state = 2989; + this.state = 3001; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 390, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 391, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2985; + this.state = 2997; this.type_(0); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2986; + this.state = 2998; this.identifier(); - this.state = 2987; + this.state = 2999; this.type_(0); } break; @@ -12056,13 +12091,13 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new TypeParameterContext(this.context, this.state); this.enterRule(localContext, 194, TrinoSqlParser.RULE_typeParameter); try { - this.state = 2993; + this.state = 3005; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.INTEGER_VALUE: this.enterOuterAlt(localContext, 1); { - this.state = 2991; + this.state = 3003; this.match(TrinoSqlParser.INTEGER_VALUE); } break; @@ -12085,6 +12120,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CASCADE: case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COALESCE: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: @@ -12285,7 +12321,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.BACKQUOTED_IDENTIFIER: this.enterOuterAlt(localContext, 2); { - this.state = 2992; + this.state = 3004; this.type_(0); } break; @@ -12313,13 +12349,13 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2995; + this.state = 3007; this.match(TrinoSqlParser.KW_WHEN); - this.state = 2996; + this.state = 3008; localContext._condition = this.expression(); - this.state = 2997; + this.state = 3009; this.match(TrinoSqlParser.KW_THEN); - this.state = 2998; + this.state = 3010; localContext._result = this.expression(); } } @@ -12343,13 +12379,13 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3000; + this.state = 3012; this.match(TrinoSqlParser.KW_FILTER); - this.state = 3001; + this.state = 3013; this.match(TrinoSqlParser.T__0); - this.state = 3002; + this.state = 3014; this.whereClause(); - this.state = 3003; + this.state = 3015; this.match(TrinoSqlParser.T__1); } } @@ -12372,62 +12408,62 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 200, TrinoSqlParser.RULE_mergeCase); let _la: number; try { - this.state = 3069; + this.state = 3081; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 400, this.context) ) { case 1: localContext = new MergeUpdateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3005; + this.state = 3017; this.match(TrinoSqlParser.KW_WHEN); - this.state = 3006; + this.state = 3018; this.match(TrinoSqlParser.KW_MATCHED); - this.state = 3009; + this.state = 3021; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 25) { { - this.state = 3007; + this.state = 3019; this.match(TrinoSqlParser.KW_AND); - this.state = 3008; + this.state = 3020; (localContext as MergeUpdateContext)._condition = this.expression(); } } - this.state = 3011; + this.state = 3023; this.match(TrinoSqlParser.KW_THEN); - this.state = 3012; + this.state = 3024; this.match(TrinoSqlParser.KW_UPDATE); - this.state = 3013; + this.state = 3025; this.match(TrinoSqlParser.KW_SET); - this.state = 3014; + this.state = 3026; (localContext as MergeUpdateContext)._identifier = this.identifier(); (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); - this.state = 3015; + this.state = 3027; this.match(TrinoSqlParser.EQ); - this.state = 3016; + this.state = 3028; (localContext as MergeUpdateContext)._expression = this.expression(); (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); - this.state = 3024; + this.state = 3036; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3017; + this.state = 3029; this.match(TrinoSqlParser.T__2); - this.state = 3018; + this.state = 3030; (localContext as MergeUpdateContext)._identifier = this.identifier(); (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); - this.state = 3019; + this.state = 3031; this.match(TrinoSqlParser.EQ); - this.state = 3020; + this.state = 3032; (localContext as MergeUpdateContext)._expression = this.expression(); (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); } } - this.state = 3026; + this.state = 3038; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -12437,25 +12473,25 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new MergeDeleteContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3027; + this.state = 3039; this.match(TrinoSqlParser.KW_WHEN); - this.state = 3028; + this.state = 3040; this.match(TrinoSqlParser.KW_MATCHED); - this.state = 3031; + this.state = 3043; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 25) { { - this.state = 3029; + this.state = 3041; this.match(TrinoSqlParser.KW_AND); - this.state = 3030; + this.state = 3042; (localContext as MergeDeleteContext)._condition = this.expression(); } } - this.state = 3033; + this.state = 3045; this.match(TrinoSqlParser.KW_THEN); - this.state = 3034; + this.state = 3046; this.match(TrinoSqlParser.KW_DELETE); } break; @@ -12463,85 +12499,85 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new MergeInsertContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3035; + this.state = 3047; this.match(TrinoSqlParser.KW_WHEN); - this.state = 3036; + this.state = 3048; this.match(TrinoSqlParser.KW_NOT); - this.state = 3037; + this.state = 3049; this.match(TrinoSqlParser.KW_MATCHED); - this.state = 3040; + this.state = 3052; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 25) { { - this.state = 3038; + this.state = 3050; this.match(TrinoSqlParser.KW_AND); - this.state = 3039; + this.state = 3051; (localContext as MergeInsertContext)._condition = this.expression(); } } - this.state = 3042; + this.state = 3054; this.match(TrinoSqlParser.KW_THEN); - this.state = 3043; - this.match(TrinoSqlParser.KW_INSERT); this.state = 3055; + this.match(TrinoSqlParser.KW_INSERT); + this.state = 3067; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 1) { { - this.state = 3044; + this.state = 3056; this.match(TrinoSqlParser.T__0); - this.state = 3045; + this.state = 3057; (localContext as MergeInsertContext)._identifier = this.identifier(); (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); - this.state = 3050; + this.state = 3062; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3046; + this.state = 3058; this.match(TrinoSqlParser.T__2); - this.state = 3047; + this.state = 3059; (localContext as MergeInsertContext)._identifier = this.identifier(); (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); } } - this.state = 3052; + this.state = 3064; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3053; + this.state = 3065; this.match(TrinoSqlParser.T__1); } } - this.state = 3057; + this.state = 3069; this.match(TrinoSqlParser.KW_VALUES); - this.state = 3058; + this.state = 3070; this.match(TrinoSqlParser.T__0); - this.state = 3059; + this.state = 3071; (localContext as MergeInsertContext)._expression = this.expression(); (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); - this.state = 3064; + this.state = 3076; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3060; + this.state = 3072; this.match(TrinoSqlParser.T__2); - this.state = 3061; + this.state = 3073; (localContext as MergeInsertContext)._expression = this.expression(); (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); } } - this.state = 3066; + this.state = 3078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3067; + this.state = 3079; this.match(TrinoSqlParser.T__1); } break; @@ -12567,9 +12603,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3071; + this.state = 3083; this.match(TrinoSqlParser.KW_OVER); - this.state = 3077; + this.state = 3089; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ABSENT: @@ -12591,6 +12627,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CASCADE: case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COALESCE: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: @@ -12790,17 +12827,17 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: { - this.state = 3072; + this.state = 3084; localContext._windowName = this.identifier(); } break; case TrinoSqlParser.T__0: { - this.state = 3073; + this.state = 3085; this.match(TrinoSqlParser.T__0); - this.state = 3074; + this.state = 3086; this.windowSpecification(); - this.state = 3075; + this.state = 3087; this.match(TrinoSqlParser.T__1); } break; @@ -12830,58 +12867,58 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3088; + this.state = 3100; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 168) { + if (_la === 169) { { - this.state = 3079; + this.state = 3091; this.match(TrinoSqlParser.KW_MEASURES); - this.state = 3080; + this.state = 3092; this.measureDefinition(); - this.state = 3085; + this.state = 3097; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3081; + this.state = 3093; this.match(TrinoSqlParser.T__2); - this.state = 3082; + this.state = 3094; this.measureDefinition(); } } - this.state = 3087; + this.state = 3099; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 3090; + this.state = 3102; this.frameExtent(); - this.state = 3094; + this.state = 3106; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 21) { { - this.state = 3091; + this.state = 3103; this.match(TrinoSqlParser.KW_AFTER); - this.state = 3092; + this.state = 3104; this.match(TrinoSqlParser.KW_MATCH); - this.state = 3093; + this.state = 3105; this.skipTo(); } } - this.state = 3097; + this.state = 3109; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 124 || _la === 247) { + if (_la === 125 || _la === 248) { { - this.state = 3096; + this.state = 3108; _la = this.tokenStream.LA(1); - if(!(_la === 124 || _la === 247)) { + if(!(_la === 125 || _la === 248)) { this.errorHandler.recoverInline(this); } else { @@ -12891,72 +12928,72 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 3104; + this.state = 3116; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 206) { + if (_la === 207) { { - this.state = 3099; + this.state = 3111; this.match(TrinoSqlParser.KW_PATTERN); - this.state = 3100; + this.state = 3112; this.match(TrinoSqlParser.T__0); - this.state = 3101; + this.state = 3113; this.rowPattern(0); - this.state = 3102; + this.state = 3114; this.match(TrinoSqlParser.T__1); } } - this.state = 3115; + this.state = 3127; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 257) { + if (_la === 258) { { - this.state = 3106; + this.state = 3118; this.match(TrinoSqlParser.KW_SUBSET); - this.state = 3107; + this.state = 3119; this.subsetDefinition(); - this.state = 3112; + this.state = 3124; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3108; + this.state = 3120; this.match(TrinoSqlParser.T__2); - this.state = 3109; + this.state = 3121; this.subsetDefinition(); } } - this.state = 3114; + this.state = 3126; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 3126; + this.state = 3138; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 71) { + if (_la === 72) { { - this.state = 3117; + this.state = 3129; this.match(TrinoSqlParser.KW_DEFINE); - this.state = 3118; + this.state = 3130; this.variableDefinition(); - this.state = 3123; + this.state = 3135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3119; + this.state = 3131; this.match(TrinoSqlParser.T__2); - this.state = 3120; + this.state = 3132; this.variableDefinition(); } } - this.state = 3125; + this.state = 3137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -12983,78 +13020,78 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new FrameExtentContext(this.context, this.state); this.enterRule(localContext, 206, TrinoSqlParser.RULE_frameExtent); try { - this.state = 3152; + this.state = 3164; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 410, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 411, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3128; + this.state = 3140; localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); - this.state = 3129; + this.state = 3141; localContext._start = this.frameBound(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3130; + this.state = 3142; localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); - this.state = 3131; + this.state = 3143; localContext._start = this.frameBound(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3132; + this.state = 3144; localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); - this.state = 3133; + this.state = 3145; localContext._start = this.frameBound(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3134; + this.state = 3146; localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); - this.state = 3135; + this.state = 3147; this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 3136; + this.state = 3148; localContext._start = this.frameBound(); - this.state = 3137; + this.state = 3149; this.match(TrinoSqlParser.KW_AND); - this.state = 3138; + this.state = 3150; localContext._end = this.frameBound(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3140; + this.state = 3152; localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); - this.state = 3141; + this.state = 3153; this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 3142; + this.state = 3154; localContext._start = this.frameBound(); - this.state = 3143; + this.state = 3155; this.match(TrinoSqlParser.KW_AND); - this.state = 3144; + this.state = 3156; localContext._end = this.frameBound(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3146; + this.state = 3158; localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); - this.state = 3147; + this.state = 3159; this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 3148; + this.state = 3160; localContext._start = this.frameBound(); - this.state = 3149; + this.state = 3161; this.match(TrinoSqlParser.KW_AND); - this.state = 3150; + this.state = 3162; localContext._end = this.frameBound(); } break; @@ -13079,16 +13116,16 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 208, TrinoSqlParser.RULE_frameBound); let _la: number; try { - this.state = 3163; + this.state = 3175; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 411, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 412, this.context) ) { case 1: localContext = new UnboundedFrameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3154; + this.state = 3166; this.match(TrinoSqlParser.KW_UNBOUNDED); - this.state = 3155; + this.state = 3167; (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_PRECEDING); } break; @@ -13096,9 +13133,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new UnboundedFrameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3156; + this.state = 3168; this.match(TrinoSqlParser.KW_UNBOUNDED); - this.state = 3157; + this.state = 3169; (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_FOLLOWING); } break; @@ -13106,9 +13143,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new CurrentRowBoundContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3158; + this.state = 3170; this.match(TrinoSqlParser.KW_CURRENT); - this.state = 3159; + this.state = 3171; this.match(TrinoSqlParser.KW_ROW); } break; @@ -13116,12 +13153,12 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new BoundedFrameContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 3160; + this.state = 3172; this.expression(); - this.state = 3161; + this.state = 3173; (localContext as BoundedFrameContext)._boundType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 102 || _la === 212)) { + if(!(_la === 103 || _la === 213)) { (localContext as BoundedFrameContext)._boundType = this.errorHandler.recoverInline(this); } else { @@ -13169,23 +13206,23 @@ export class TrinoSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 3166; + this.state = 3178; this.patternPrimary(); - this.state = 3168; + this.state = 3180; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 412, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 413, this.context) ) { case 1: { - this.state = 3167; + this.state = 3179; this.patternQuantifier(); } break; } } this.context!.stop = this.tokenStream.LT(-1); - this.state = 3177; + this.state = 3189; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 414, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 415, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -13193,18 +13230,18 @@ export class TrinoSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 3175; + this.state = 3187; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 413, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 414, this.context) ) { case 1: { localContext = new PatternConcatenationContext(new RowPatternContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); - this.state = 3170; + this.state = 3182; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 3171; + this.state = 3183; this.rowPattern(3); } break; @@ -13212,22 +13249,22 @@ export class TrinoSqlParser extends SQLParserBase { { localContext = new PatternAlternationContext(new RowPatternContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); - this.state = 3172; + this.state = 3184; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 3173; + this.state = 3185; this.match(TrinoSqlParser.T__10); - this.state = 3174; + this.state = 3186; this.rowPattern(2); } break; } } } - this.state = 3179; + this.state = 3191; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 414, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 415, this.context); } } } @@ -13250,14 +13287,14 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 212, TrinoSqlParser.RULE_patternPrimary); let _la: number; try { - this.state = 3205; + this.state = 3217; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 416, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 417, this.context) ) { case 1: localContext = new PatternVariableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3180; + this.state = 3192; this.identifier(); } break; @@ -13265,9 +13302,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new EmptyPatternContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3181; + this.state = 3193; this.match(TrinoSqlParser.T__0); - this.state = 3182; + this.state = 3194; this.match(TrinoSqlParser.T__1); } break; @@ -13275,29 +13312,29 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new PatternPermutationContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3183; + this.state = 3195; this.match(TrinoSqlParser.KW_PERMUTE); - this.state = 3184; + this.state = 3196; this.match(TrinoSqlParser.T__0); - this.state = 3185; + this.state = 3197; this.rowPattern(0); - this.state = 3190; + this.state = 3202; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3186; + this.state = 3198; this.match(TrinoSqlParser.T__2); - this.state = 3187; + this.state = 3199; this.rowPattern(0); } } - this.state = 3192; + this.state = 3204; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3193; + this.state = 3205; this.match(TrinoSqlParser.T__1); } break; @@ -13305,11 +13342,11 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new GroupedPatternContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 3195; + this.state = 3207; this.match(TrinoSqlParser.T__0); - this.state = 3196; + this.state = 3208; this.rowPattern(0); - this.state = 3197; + this.state = 3209; this.match(TrinoSqlParser.T__1); } break; @@ -13317,7 +13354,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new PartitionStartAnchorContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 3199; + this.state = 3211; this.match(TrinoSqlParser.T__11); } break; @@ -13325,7 +13362,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new PartitionEndAnchorContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 3200; + this.state = 3212; this.match(TrinoSqlParser.T__12); } break; @@ -13333,11 +13370,11 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new ExcludedPatternContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 3201; + this.state = 3213; this.match(TrinoSqlParser.T__13); - this.state = 3202; + this.state = 3214; this.rowPattern(0); - this.state = 3203; + this.state = 3215; this.match(TrinoSqlParser.T__14); } break; @@ -13362,21 +13399,21 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 214, TrinoSqlParser.RULE_patternQuantifier); let _la: number; try { - this.state = 3237; + this.state = 3249; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 425, this.context) ) { case 1: localContext = new ZeroOrMoreQuantifierContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3207; + this.state = 3219; this.match(TrinoSqlParser.ASTERISK); - this.state = 3209; + this.state = 3221; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 417, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 418, this.context) ) { case 1: { - this.state = 3208; + this.state = 3220; (localContext as ZeroOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -13387,14 +13424,14 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new OneOrMoreQuantifierContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3211; + this.state = 3223; this.match(TrinoSqlParser.PLUS); - this.state = 3213; + this.state = 3225; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 418, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 419, this.context) ) { case 1: { - this.state = 3212; + this.state = 3224; (localContext as OneOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -13405,14 +13442,14 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new ZeroOrOneQuantifierContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3215; + this.state = 3227; this.match(TrinoSqlParser.QUESTION_MARK); - this.state = 3217; + this.state = 3229; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 419, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { case 1: { - this.state = 3216; + this.state = 3228; (localContext as ZeroOrOneQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -13423,18 +13460,18 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new RangeQuantifierContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 3219; + this.state = 3231; this.match(TrinoSqlParser.T__15); - this.state = 3220; + this.state = 3232; (localContext as RangeQuantifierContext)._exactly = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 3221; + this.state = 3233; this.match(TrinoSqlParser.T__16); - this.state = 3223; + this.state = 3235; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 421, this.context) ) { case 1: { - this.state = 3222; + this.state = 3234; (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -13445,38 +13482,38 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new RangeQuantifierContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 3225; + this.state = 3237; this.match(TrinoSqlParser.T__15); - this.state = 3227; + this.state = 3239; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 329) { + if (_la === 330) { { - this.state = 3226; + this.state = 3238; (localContext as RangeQuantifierContext)._atLeast = this.match(TrinoSqlParser.INTEGER_VALUE); } } - this.state = 3229; + this.state = 3241; this.match(TrinoSqlParser.T__2); - this.state = 3231; + this.state = 3243; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 329) { + if (_la === 330) { { - this.state = 3230; + this.state = 3242; (localContext as RangeQuantifierContext)._atMost = this.match(TrinoSqlParser.INTEGER_VALUE); } } - this.state = 3233; + this.state = 3245; this.match(TrinoSqlParser.T__16); - this.state = 3235; + this.state = 3247; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 423, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { case 1: { - this.state = 3234; + this.state = 3246; (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); } break; @@ -13505,11 +13542,11 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3239; + this.state = 3251; this.identifier(); - this.state = 3240; + this.state = 3252; this.match(TrinoSqlParser.EQ); - this.state = 3241; + this.state = 3253; this.expression(); } } @@ -13532,19 +13569,19 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 218, TrinoSqlParser.RULE_explainOption); let _la: number; try { - this.state = 3247; + this.state = 3259; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_FORMAT: localContext = new ExplainFormatContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3243; + this.state = 3255; this.match(TrinoSqlParser.KW_FORMAT); - this.state = 3244; + this.state = 3256; (localContext as ExplainFormatContext)._value = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 113 || _la === 137 || _la === 263)) { + if(!(_la === 114 || _la === 138 || _la === 264)) { (localContext as ExplainFormatContext)._value = this.errorHandler.recoverInline(this); } else { @@ -13557,12 +13594,12 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new ExplainTypeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3245; + this.state = 3257; this.match(TrinoSqlParser.KW_TYPE); - this.state = 3246; + this.state = 3258; (localContext as ExplainTypeContext)._value = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 80 || _la === 132 || _la === 160 || _la === 294)) { + if(!(_la === 81 || _la === 133 || _la === 161 || _la === 295)) { (localContext as ExplainTypeContext)._value = this.errorHandler.recoverInline(this); } else { @@ -13594,18 +13631,18 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 220, TrinoSqlParser.RULE_transactionMode); let _la: number; try { - this.state = 3254; + this.state = 3266; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ISOLATION: localContext = new IsolationLevelContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3249; + this.state = 3261; this.match(TrinoSqlParser.KW_ISOLATION); - this.state = 3250; + this.state = 3262; this.match(TrinoSqlParser.KW_LEVEL); - this.state = 3251; + this.state = 3263; this.levelOfIsolation(); } break; @@ -13613,12 +13650,12 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new TransactionAccessModeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3252; + this.state = 3264; this.match(TrinoSqlParser.KW_READ); - this.state = 3253; + this.state = 3265; (localContext as TransactionAccessModeContext)._accessMode = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 192 || _la === 309)) { + if(!(_la === 193 || _la === 310)) { (localContext as TransactionAccessModeContext)._accessMode = this.errorHandler.recoverInline(this); } else { @@ -13649,16 +13686,16 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new LevelOfIsolationContext(this.context, this.state); this.enterRule(localContext, 222, TrinoSqlParser.RULE_levelOfIsolation); try { - this.state = 3263; + this.state = 3275; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 428, this.context) ) { case 1: localContext = new ReadUncommittedContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3256; + this.state = 3268; this.match(TrinoSqlParser.KW_READ); - this.state = 3257; + this.state = 3269; this.match(TrinoSqlParser.KW_UNCOMMITTED); } break; @@ -13666,9 +13703,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new ReadCommittedContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3258; + this.state = 3270; this.match(TrinoSqlParser.KW_READ); - this.state = 3259; + this.state = 3271; this.match(TrinoSqlParser.KW_COMMITTED); } break; @@ -13676,9 +13713,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new RepeatableReadContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3260; + this.state = 3272; this.match(TrinoSqlParser.KW_REPEATABLE); - this.state = 3261; + this.state = 3273; this.match(TrinoSqlParser.KW_READ); } break; @@ -13686,7 +13723,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SerializableContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 3262; + this.state = 3274; this.match(TrinoSqlParser.KW_SERIALIZABLE); } break; @@ -13710,14 +13747,14 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new CallArgumentContext(this.context, this.state); this.enterRule(localContext, 224, TrinoSqlParser.RULE_callArgument); try { - this.state = 3270; + this.state = 3282; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 428, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 429, this.context) ) { case 1: localContext = new PositionalArgumentContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3265; + this.state = 3277; this.expression(); } break; @@ -13725,11 +13762,11 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new NamedArgumentContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3266; + this.state = 3278; this.identifier(); - this.state = 3267; + this.state = 3279; this.match(TrinoSqlParser.T__5); - this.state = 3268; + this.state = 3280; this.expression(); } break; @@ -13753,18 +13790,18 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new PathElementContext(this.context, this.state); this.enterRule(localContext, 226, TrinoSqlParser.RULE_pathElement); try { - this.state = 3277; + this.state = 3289; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 429, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 430, this.context) ) { case 1: localContext = new QualifiedArgumentContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3272; + this.state = 3284; this.identifier(); - this.state = 3273; + this.state = 3285; this.match(TrinoSqlParser.T__3); - this.state = 3274; + this.state = 3286; this.identifier(); } break; @@ -13772,7 +13809,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new UnqualifiedArgumentContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3276; + this.state = 3288; this.identifier(); } break; @@ -13799,21 +13836,21 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3279; + this.state = 3291; this.pathElement(); - this.state = 3284; + this.state = 3296; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3280; + this.state = 3292; this.match(TrinoSqlParser.T__2); - this.state = 3281; + this.state = 3293; this.pathElement(); } } - this.state = 3286; + this.state = 3298; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -13840,29 +13877,29 @@ export class TrinoSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3287; + this.state = 3299; this.match(TrinoSqlParser.KW_FUNCTION); - this.state = 3288; + this.state = 3300; this.functionDeclaration(); - this.state = 3289; + this.state = 3301; this.returnsClause(); - this.state = 3293; + this.state = 3305; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 431, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 432, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3290; + this.state = 3302; this.routineCharacteristic(); } } } - this.state = 3295; + this.state = 3307; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 431, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 432, this.context); } - this.state = 3296; + this.state = 3308; this.controlStatement(); } } @@ -13887,37 +13924,37 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3298; + this.state = 3310; this.functionNameCreate(); - this.state = 3299; + this.state = 3311; this.match(TrinoSqlParser.T__0); - this.state = 3308; + this.state = 3320; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 3069640845) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 4240329075) !== 0) || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 2171416041) !== 0) || ((((_la - 146)) & ~0x1F) === 0 && ((1 << (_la - 146)) & 4160722303) !== 0) || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4293517199) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 3724537823) !== 0) || ((((_la - 242)) & ~0x1F) === 0 && ((1 << (_la - 242)) & 2130182015) !== 0) || ((((_la - 275)) & ~0x1F) === 0 && ((1 << (_la - 275)) & 3015636855) !== 0) || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1006633023) !== 0)) { { - this.state = 3300; + this.state = 3312; this.parameterDeclaration(); - this.state = 3305; + this.state = 3317; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3301; + this.state = 3313; this.match(TrinoSqlParser.T__2); - this.state = 3302; + this.state = 3314; this.parameterDeclaration(); } } - this.state = 3307; + this.state = 3319; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 3310; + this.state = 3322; this.match(TrinoSqlParser.T__1); } } @@ -13942,37 +13979,37 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3312; + this.state = 3324; this.functionName(); - this.state = 3313; + this.state = 3325; this.match(TrinoSqlParser.T__0); - this.state = 3322; + this.state = 3334; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 3069640845) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 4240329075) !== 0) || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 2171416041) !== 0) || ((((_la - 146)) & ~0x1F) === 0 && ((1 << (_la - 146)) & 4160722303) !== 0) || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4293517199) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 3724537823) !== 0) || ((((_la - 242)) & ~0x1F) === 0 && ((1 << (_la - 242)) & 2130182015) !== 0) || ((((_la - 275)) & ~0x1F) === 0 && ((1 << (_la - 275)) & 3015636855) !== 0) || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1006633023) !== 0)) { { - this.state = 3314; + this.state = 3326; this.parameterDeclaration(); - this.state = 3319; + this.state = 3331; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3315; + this.state = 3327; this.match(TrinoSqlParser.T__2); - this.state = 3316; + this.state = 3328; this.parameterDeclaration(); } } - this.state = 3321; + this.state = 3333; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 3324; + this.state = 3336; this.match(TrinoSqlParser.T__1); } } @@ -13996,17 +14033,17 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3327; + this.state = 3339; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 436, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 437, this.context) ) { case 1: { - this.state = 3326; + this.state = 3338; this.identifier(); } break; } - this.state = 3329; + this.state = 3341; this.type_(0); } } @@ -14030,9 +14067,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3331; + this.state = 3343; this.match(TrinoSqlParser.KW_RETURNS); - this.state = 3332; + this.state = 3344; this.type_(0); } } @@ -14055,16 +14092,16 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 240, TrinoSqlParser.RULE_routineCharacteristic); let _la: number; try { - this.state = 3353; + this.state = 3365; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_LANGUAGE: localContext = new LanguageCharacteristicContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3334; + this.state = 3346; this.match(TrinoSqlParser.KW_LANGUAGE); - this.state = 3335; + this.state = 3347; this.identifier(); } break; @@ -14073,17 +14110,17 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new DeterministicCharacteristicContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3337; + this.state = 3349; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 182) { + if (_la === 183) { { - this.state = 3336; + this.state = 3348; this.match(TrinoSqlParser.KW_NOT); } } - this.state = 3339; + this.state = 3351; this.match(TrinoSqlParser.KW_DETERMINISTIC); } break; @@ -14091,15 +14128,15 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new ReturnsNullOnNullInputCharacteristicContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3340; + this.state = 3352; this.match(TrinoSqlParser.KW_RETURNS); - this.state = 3341; + this.state = 3353; this.match(TrinoSqlParser.KW_NULL); - this.state = 3342; + this.state = 3354; this.match(TrinoSqlParser.KW_ON); - this.state = 3343; + this.state = 3355; this.match(TrinoSqlParser.KW_NULL); - this.state = 3344; + this.state = 3356; this.match(TrinoSqlParser.KW_INPUT); } break; @@ -14107,13 +14144,13 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new CalledOnNullInputCharacteristicContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 3345; + this.state = 3357; this.match(TrinoSqlParser.KW_CALLED); - this.state = 3346; + this.state = 3358; this.match(TrinoSqlParser.KW_ON); - this.state = 3347; + this.state = 3359; this.match(TrinoSqlParser.KW_NULL); - this.state = 3348; + this.state = 3360; this.match(TrinoSqlParser.KW_INPUT); } break; @@ -14121,11 +14158,11 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SecurityCharacteristicContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 3349; + this.state = 3361; this.match(TrinoSqlParser.KW_SECURITY); - this.state = 3350; + this.state = 3362; _la = this.tokenStream.LA(1); - if(!(_la === 72 || _la === 131)) { + if(!(_la === 73 || _la === 132)) { this.errorHandler.recoverInline(this); } else { @@ -14138,9 +14175,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new CommentCharacteristicContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 3351; + this.state = 3363; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 3352; + this.state = 3364; this.string_(); } break; @@ -14168,16 +14205,16 @@ export class TrinoSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 3454; + this.state = 3466; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 450, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 451, this.context) ) { case 1: localContext = new ReturnStatementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3355; + this.state = 3367; this.match(TrinoSqlParser.KW_RETURN); - this.state = 3356; + this.state = 3368; this.valueExpression(0); } break; @@ -14185,13 +14222,13 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new AssignmentStatementContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3357; + this.state = 3369; this.match(TrinoSqlParser.KW_SET); - this.state = 3358; + this.state = 3370; this.identifier(); - this.state = 3359; + this.state = 3371; this.match(TrinoSqlParser.EQ); - this.state = 3360; + this.state = 3372; this.expression(); } break; @@ -14199,37 +14236,37 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SimpleCaseStatementContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3362; + this.state = 3374; this.match(TrinoSqlParser.KW_CASE); - this.state = 3363; + this.state = 3375; this.expression(); - this.state = 3365; + this.state = 3377; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3364; + this.state = 3376; this.caseStatementWhenClause(); } } - this.state = 3367; + this.state = 3379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 300); - this.state = 3370; + } while (_la === 301); + this.state = 3382; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 84) { + if (_la === 85) { { - this.state = 3369; + this.state = 3381; this.elseClause(); } } - this.state = 3372; + this.state = 3384; this.match(TrinoSqlParser.KW_END); - this.state = 3373; + this.state = 3385; this.match(TrinoSqlParser.KW_CASE); } break; @@ -14237,35 +14274,35 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SearchedCaseStatementContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 3375; + this.state = 3387; this.match(TrinoSqlParser.KW_CASE); - this.state = 3377; + this.state = 3389; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3376; + this.state = 3388; this.caseStatementWhenClause(); } } - this.state = 3379; + this.state = 3391; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 300); - this.state = 3382; + } while (_la === 301); + this.state = 3394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 84) { + if (_la === 85) { { - this.state = 3381; + this.state = 3393; this.elseClause(); } } - this.state = 3384; + this.state = 3396; this.match(TrinoSqlParser.KW_END); - this.state = 3385; + this.state = 3397; this.match(TrinoSqlParser.KW_CASE); } break; @@ -14273,41 +14310,41 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new IfStatementContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 3387; + this.state = 3399; this.match(TrinoSqlParser.KW_IF); - this.state = 3388; + this.state = 3400; this.expression(); - this.state = 3389; + this.state = 3401; this.match(TrinoSqlParser.KW_THEN); - this.state = 3390; + this.state = 3402; this.sqlStatementList(); - this.state = 3394; + this.state = 3406; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 86) { + while (_la === 87) { { { - this.state = 3391; + this.state = 3403; this.elseIfClause(); } } - this.state = 3396; + this.state = 3408; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3398; + this.state = 3410; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 84) { + if (_la === 85) { { - this.state = 3397; + this.state = 3409; this.elseClause(); } } - this.state = 3400; + this.state = 3412; this.match(TrinoSqlParser.KW_END); - this.state = 3401; + this.state = 3413; this.match(TrinoSqlParser.KW_IF); } break; @@ -14315,9 +14352,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new IterateStatementContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 3403; + this.state = 3415; this.match(TrinoSqlParser.KW_ITERATE); - this.state = 3404; + this.state = 3416; this.identifier(); } break; @@ -14325,9 +14362,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new LeaveStatementContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 3405; + this.state = 3417; this.match(TrinoSqlParser.KW_LEAVE); - this.state = 3406; + this.state = 3418; this.identifier(); } break; @@ -14335,37 +14372,37 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new CompoundStatementContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 3407; + this.state = 3419; this.match(TrinoSqlParser.KW_BEGIN); - this.state = 3413; + this.state = 3425; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 445, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 446, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3408; + this.state = 3420; this.variableDeclaration(); - this.state = 3409; + this.state = 3421; this.match(TrinoSqlParser.SEMICOLON); } } } - this.state = 3415; + this.state = 3427; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 445, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 446, this.context); } - this.state = 3417; + this.state = 3429; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4286249823) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4286249823) !== 0) || ((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 3069640845) !== 0) || ((((_la - 82)) & ~0x1F) === 0 && ((1 << (_la - 82)) & 4240329075) !== 0) || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 2171416041) !== 0) || ((((_la - 146)) & ~0x1F) === 0 && ((1 << (_la - 146)) & 4160722303) !== 0) || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 4293517199) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 3724537823) !== 0) || ((((_la - 242)) & ~0x1F) === 0 && ((1 << (_la - 242)) & 2130182015) !== 0) || ((((_la - 275)) & ~0x1F) === 0 && ((1 << (_la - 275)) & 3015636855) !== 0) || ((((_la - 307)) & ~0x1F) === 0 && ((1 << (_la - 307)) & 1006633023) !== 0)) { { - this.state = 3416; + this.state = 3428; this.sqlStatementList(); } } - this.state = 3419; + this.state = 3431; this.match(TrinoSqlParser.KW_END); } break; @@ -14373,25 +14410,25 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new LoopStatementContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 3423; + this.state = 3435; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 447, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 448, this.context) ) { case 1: { - this.state = 3420; + this.state = 3432; (localContext as LoopStatementContext)._label = this.identifier(); - this.state = 3421; + this.state = 3433; this.match(TrinoSqlParser.T__9); } break; } - this.state = 3425; + this.state = 3437; this.match(TrinoSqlParser.KW_LOOP); - this.state = 3426; + this.state = 3438; this.sqlStatementList(); - this.state = 3427; + this.state = 3439; this.match(TrinoSqlParser.KW_END); - this.state = 3428; + this.state = 3440; this.match(TrinoSqlParser.KW_LOOP); } break; @@ -14399,29 +14436,29 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new WhileStatementContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 3433; + this.state = 3445; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 448, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 449, this.context) ) { case 1: { - this.state = 3430; + this.state = 3442; (localContext as WhileStatementContext)._label = this.identifier(); - this.state = 3431; + this.state = 3443; this.match(TrinoSqlParser.T__9); } break; } - this.state = 3435; + this.state = 3447; this.match(TrinoSqlParser.KW_WHILE); - this.state = 3436; + this.state = 3448; this.expression(); - this.state = 3437; + this.state = 3449; this.match(TrinoSqlParser.KW_DO); - this.state = 3438; + this.state = 3450; this.sqlStatementList(); - this.state = 3439; + this.state = 3451; this.match(TrinoSqlParser.KW_END); - this.state = 3440; + this.state = 3452; this.match(TrinoSqlParser.KW_WHILE); } break; @@ -14429,29 +14466,29 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new RepeatStatementContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 3445; + this.state = 3457; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 449, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 450, this.context) ) { case 1: { - this.state = 3442; + this.state = 3454; (localContext as RepeatStatementContext)._label = this.identifier(); - this.state = 3443; + this.state = 3455; this.match(TrinoSqlParser.T__9); } break; } - this.state = 3447; + this.state = 3459; this.match(TrinoSqlParser.KW_REPEAT); - this.state = 3448; + this.state = 3460; this.sqlStatementList(); - this.state = 3449; + this.state = 3461; this.match(TrinoSqlParser.KW_UNTIL); - this.state = 3450; + this.state = 3462; this.expression(); - this.state = 3451; + this.state = 3463; this.match(TrinoSqlParser.KW_END); - this.state = 3452; + this.state = 3464; this.match(TrinoSqlParser.KW_REPEAT); } break; @@ -14477,13 +14514,13 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3456; + this.state = 3468; this.match(TrinoSqlParser.KW_WHEN); - this.state = 3457; + this.state = 3469; this.expression(); - this.state = 3458; + this.state = 3470; this.match(TrinoSqlParser.KW_THEN); - this.state = 3459; + this.state = 3471; this.sqlStatementList(); } } @@ -14507,13 +14544,13 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3461; + this.state = 3473; this.match(TrinoSqlParser.KW_ELSEIF); - this.state = 3462; + this.state = 3474; this.expression(); - this.state = 3463; + this.state = 3475; this.match(TrinoSqlParser.KW_THEN); - this.state = 3464; + this.state = 3476; this.sqlStatementList(); } } @@ -14537,9 +14574,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3466; + this.state = 3478; this.match(TrinoSqlParser.KW_ELSE); - this.state = 3467; + this.state = 3479; this.sqlStatementList(); } } @@ -14564,36 +14601,36 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3469; + this.state = 3481; this.match(TrinoSqlParser.KW_DECLARE); - this.state = 3470; + this.state = 3482; this.identifier(); - this.state = 3475; + this.state = 3487; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3471; + this.state = 3483; this.match(TrinoSqlParser.T__2); - this.state = 3472; + this.state = 3484; this.identifier(); } } - this.state = 3477; + this.state = 3489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3478; + this.state = 3490; this.type_(0); - this.state = 3481; + this.state = 3493; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 70) { + if (_la === 71) { { - this.state = 3479; + this.state = 3491; this.match(TrinoSqlParser.KW_DEFAULT); - this.state = 3480; + this.state = 3492; this.valueExpression(0); } } @@ -14621,7 +14658,7 @@ export class TrinoSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3486; + this.state = 3498; this.errorHandler.sync(this); alternative = 1; do { @@ -14629,9 +14666,9 @@ export class TrinoSqlParser extends SQLParserBase { case 1: { { - this.state = 3483; + this.state = 3495; this.controlStatement(); - this.state = 3484; + this.state = 3496; this.match(TrinoSqlParser.SEMICOLON); } } @@ -14639,9 +14676,9 @@ export class TrinoSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3488; + this.state = 3500; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 453, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -14663,48 +14700,48 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new PrivilegeContext(this.context, this.state); this.enterRule(localContext, 254, TrinoSqlParser.RULE_privilege); try { - this.state = 3496; + this.state = 3508; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 454, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3490; + this.state = 3502; this.match(TrinoSqlParser.KW_CREATE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3491; + this.state = 3503; this.match(TrinoSqlParser.KW_SELECT); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3492; + this.state = 3504; this.match(TrinoSqlParser.KW_DELETE); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3493; + this.state = 3505; this.match(TrinoSqlParser.KW_INSERT); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3494; + this.state = 3506; this.match(TrinoSqlParser.KW_UPDATE); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3495; + this.state = 3507; this.identifier(); } break; @@ -14728,27 +14765,27 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new EntityKindContext(this.context, this.state); this.enterRule(localContext, 256, TrinoSqlParser.RULE_entityKind); try { - this.state = 3501; + this.state = 3513; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 456, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3498; + this.state = 3510; this.match(TrinoSqlParser.KW_TABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3499; + this.state = 3511; this.match(TrinoSqlParser.KW_SCHEMA); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3500; + this.state = 3512; this.identifier(); } break; @@ -14774,17 +14811,17 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3504; + this.state = 3516; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 456, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 457, this.context) ) { case 1: { - this.state = 3503; + this.state = 3515; this.entityKind(); } break; } - this.state = 3506; + this.state = 3518; this.qualifiedName(); } } @@ -14806,20 +14843,20 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new TableOrViewNameContext(this.context, this.state); this.enterRule(localContext, 260, TrinoSqlParser.RULE_tableOrViewName); try { - this.state = 3510; + this.state = 3522; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 457, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3508; + this.state = 3520; this.tableRef(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3509; + this.state = 3521; this.viewRef(); } break; @@ -14843,39 +14880,39 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new TableRefContext(this.context, this.state); this.enterRule(localContext, 262, TrinoSqlParser.RULE_tableRef); try { - this.state = 3523; + this.state = 3535; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 459, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3512; + this.state = 3524; localContext._table = this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3513; + this.state = 3525; localContext._schema = this.identifier(); - this.state = 3514; + this.state = 3526; this.match(TrinoSqlParser.T__3); - this.state = 3515; + this.state = 3527; localContext._table = this.identifier(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3517; + this.state = 3529; localContext._catalog = this.identifier(); - this.state = 3518; + this.state = 3530; this.match(TrinoSqlParser.T__3); - this.state = 3519; + this.state = 3531; localContext._schema = this.identifier(); - this.state = 3520; + this.state = 3532; this.match(TrinoSqlParser.T__3); - this.state = 3521; + this.state = 3533; localContext._table = this.identifier(); } break; @@ -14899,39 +14936,39 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new TableNameCreateContext(this.context, this.state); this.enterRule(localContext, 264, TrinoSqlParser.RULE_tableNameCreate); try { - this.state = 3536; + this.state = 3548; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 459, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3525; + this.state = 3537; localContext._table = this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3526; + this.state = 3538; localContext._schema = this.identifier(); - this.state = 3527; + this.state = 3539; this.match(TrinoSqlParser.T__3); - this.state = 3528; + this.state = 3540; localContext._table = this.identifier(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3530; + this.state = 3542; localContext._catalog = this.identifier(); - this.state = 3531; + this.state = 3543; this.match(TrinoSqlParser.T__3); - this.state = 3532; + this.state = 3544; localContext._schema = this.identifier(); - this.state = 3533; + this.state = 3545; this.match(TrinoSqlParser.T__3); - this.state = 3534; + this.state = 3546; localContext._table = this.identifier(); } break; @@ -14955,39 +14992,39 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new ViewRefContext(this.context, this.state); this.enterRule(localContext, 266, TrinoSqlParser.RULE_viewRef); try { - this.state = 3549; + this.state = 3561; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 461, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3538; + this.state = 3550; localContext._view = this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3539; + this.state = 3551; localContext._schema = this.identifier(); - this.state = 3540; + this.state = 3552; this.match(TrinoSqlParser.T__3); - this.state = 3541; + this.state = 3553; localContext._view = this.identifier(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3543; + this.state = 3555; localContext._catalog = this.identifier(); - this.state = 3544; + this.state = 3556; this.match(TrinoSqlParser.T__3); - this.state = 3545; + this.state = 3557; localContext._schema = this.identifier(); - this.state = 3546; + this.state = 3558; this.match(TrinoSqlParser.T__3); - this.state = 3547; + this.state = 3559; localContext._view = this.identifier(); } break; @@ -15011,39 +15048,39 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new ViewNameCreateContext(this.context, this.state); this.enterRule(localContext, 268, TrinoSqlParser.RULE_viewNameCreate); try { - this.state = 3562; + this.state = 3574; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 461, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 462, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3551; + this.state = 3563; localContext._view = this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3552; + this.state = 3564; localContext._schema = this.identifier(); - this.state = 3553; + this.state = 3565; this.match(TrinoSqlParser.T__3); - this.state = 3554; + this.state = 3566; localContext._view = this.identifier(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3556; + this.state = 3568; localContext._catalog = this.identifier(); - this.state = 3557; + this.state = 3569; this.match(TrinoSqlParser.T__3); - this.state = 3558; + this.state = 3570; localContext._schema = this.identifier(); - this.state = 3559; + this.state = 3571; this.match(TrinoSqlParser.T__3); - this.state = 3560; + this.state = 3572; localContext._view = this.identifier(); } break; @@ -15067,24 +15104,24 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new SchemaRefContext(this.context, this.state); this.enterRule(localContext, 270, TrinoSqlParser.RULE_schemaRef); try { - this.state = 3569; + this.state = 3581; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 462, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 463, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3564; + this.state = 3576; localContext._schema = this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3565; + this.state = 3577; localContext._catalog = this.identifier(); - this.state = 3566; + this.state = 3578; this.match(TrinoSqlParser.T__3); - this.state = 3567; + this.state = 3579; localContext._schema = this.identifier(); } break; @@ -15108,24 +15145,24 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new SchemaNameCreateContext(this.context, this.state); this.enterRule(localContext, 272, TrinoSqlParser.RULE_schemaNameCreate); try { - this.state = 3576; + this.state = 3588; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 463, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3571; + this.state = 3583; localContext._schema = this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3572; + this.state = 3584; localContext._catalog = this.identifier(); - this.state = 3573; + this.state = 3585; this.match(TrinoSqlParser.T__3); - this.state = 3574; + this.state = 3586; localContext._schema = this.identifier(); } break; @@ -15151,7 +15188,7 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3578; + this.state = 3590; localContext._catalog = this.identifier(); } } @@ -15175,7 +15212,7 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3580; + this.state = 3592; localContext._catalog = this.identifier(); } } @@ -15199,7 +15236,7 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3582; + this.state = 3594; this.qualifiedName(); } } @@ -15223,7 +15260,7 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3584; + this.state = 3596; this.qualifiedName(); } } @@ -15245,20 +15282,20 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new ColumnRefContext(this.context, this.state); this.enterRule(localContext, 282, TrinoSqlParser.RULE_columnRef); try { - this.state = 3588; + this.state = 3600; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3586; + this.state = 3598; this.qualifiedName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3587; + this.state = 3599; if (!(this.shouldMatchEmpty())) { throw this.createFailedPredicateException("this.shouldMatchEmpty()"); } @@ -15286,7 +15323,7 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3590; + this.state = 3602; this.qualifiedName(); } } @@ -15310,7 +15347,7 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3592; + this.state = 3604; this.identifier(); } } @@ -15335,25 +15372,25 @@ export class TrinoSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3594; + this.state = 3606; this.identifier(); - this.state = 3599; + this.state = 3611; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 465, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 466, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3595; + this.state = 3607; this.match(TrinoSqlParser.T__3); - this.state = 3596; + this.state = 3608; this.identifier(); } } } - this.state = 3601; + this.state = 3613; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 465, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 466, this.context); } } } @@ -15377,15 +15414,15 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3602; + this.state = 3614; this.match(TrinoSqlParser.KW_FOR); - this.state = 3603; + this.state = 3615; this.rangeType(); - this.state = 3604; + this.state = 3616; this.match(TrinoSqlParser.KW_AS); - this.state = 3605; + this.state = 3617; this.match(TrinoSqlParser.KW_OF); - this.state = 3606; + this.state = 3618; localContext._end = this.valueExpression(0); } } @@ -15410,9 +15447,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3608; + this.state = 3620; _la = this.tokenStream.LA(1); - if(!(_la === 268 || _la === 298)) { + if(!(_la === 269 || _la === 299)) { this.errorHandler.recoverInline(this); } else { @@ -15439,7 +15476,7 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new GrantorContext(this.context, this.state); this.enterRule(localContext, 294, TrinoSqlParser.RULE_grantor); try { - this.state = 3613; + this.state = 3625; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ABSENT: @@ -15461,6 +15498,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CASCADE: case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COALESCE: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: @@ -15662,7 +15700,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SpecifiedPrincipalContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3610; + this.state = 3622; this.principal(); } break; @@ -15670,7 +15708,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new CurrentUserGrantorContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3611; + this.state = 3623; this.match(TrinoSqlParser.KW_CURRENT_USER); } break; @@ -15678,7 +15716,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new CurrentRoleGrantorContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3612; + this.state = 3624; this.match(TrinoSqlParser.KW_CURRENT_ROLE); } break; @@ -15704,14 +15742,14 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new PrincipalContext(this.context, this.state); this.enterRule(localContext, 296, TrinoSqlParser.RULE_principal); try { - this.state = 3620; + this.state = 3632; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 467, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { case 1: localContext = new UnspecifiedPrincipalContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3615; + this.state = 3627; this.identifier(); } break; @@ -15719,9 +15757,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new UserPrincipalContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3616; + this.state = 3628; this.match(TrinoSqlParser.KW_USER); - this.state = 3617; + this.state = 3629; this.identifier(); } break; @@ -15729,9 +15767,9 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new RolePrincipalContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3618; + this.state = 3630; this.match(TrinoSqlParser.KW_ROLE); - this.state = 3619; + this.state = 3631; this.identifier(); } break; @@ -15758,21 +15796,21 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3622; + this.state = 3634; this.identifier(); - this.state = 3627; + this.state = 3639; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 3623; + this.state = 3635; this.match(TrinoSqlParser.T__2); - this.state = 3624; + this.state = 3636; this.identifier(); } } - this.state = 3629; + this.state = 3641; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -15796,55 +15834,55 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new PrivilegeOrRoleContext(this.context, this.state); this.enterRule(localContext, 300, TrinoSqlParser.RULE_privilegeOrRole); try { - this.state = 3637; + this.state = 3649; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 470, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3630; + this.state = 3642; this.match(TrinoSqlParser.KW_CREATE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3631; + this.state = 3643; this.match(TrinoSqlParser.KW_SELECT); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3632; + this.state = 3644; this.match(TrinoSqlParser.KW_DELETE); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3633; + this.state = 3645; this.match(TrinoSqlParser.KW_INSERT); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3634; + this.state = 3646; this.match(TrinoSqlParser.KW_UPDATE); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3635; + this.state = 3647; this.match(TrinoSqlParser.KW_EXECUTE); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 3636; + this.state = 3648; this.identifier(); } break; @@ -15868,14 +15906,14 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new IdentifierContext(this.context, this.state); this.enterRule(localContext, 302, TrinoSqlParser.RULE_identifier); try { - this.state = 3644; + this.state = 3656; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.IDENTIFIER: localContext = new UnquotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3639; + this.state = 3651; this.match(TrinoSqlParser.IDENTIFIER); } break; @@ -15883,7 +15921,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new QuotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3640; + this.state = 3652; this.match(TrinoSqlParser.QUOTED_IDENTIFIER); } break; @@ -15906,6 +15944,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CASCADE: case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COALESCE: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: @@ -16103,7 +16142,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new UnquotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3641; + this.state = 3653; this.nonReserved(); } break; @@ -16111,7 +16150,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new BackQuotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 3642; + this.state = 3654; this.match(TrinoSqlParser.BACKQUOTED_IDENTIFIER); } break; @@ -16119,7 +16158,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new DigitIdentifierContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 3643; + this.state = 3655; this.match(TrinoSqlParser.DIGIT_IDENTIFIER); } break; @@ -16146,24 +16185,24 @@ export class TrinoSqlParser extends SQLParserBase { this.enterRule(localContext, 304, TrinoSqlParser.RULE_number); let _la: number; try { - this.state = 3658; + this.state = 3670; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 474, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 475, this.context) ) { case 1: localContext = new DecimalLiteralContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3647; + this.state = 3659; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 319) { + if (_la === 320) { { - this.state = 3646; + this.state = 3658; this.match(TrinoSqlParser.MINUS); } } - this.state = 3649; + this.state = 3661; this.match(TrinoSqlParser.DECIMAL_VALUE); } break; @@ -16171,17 +16210,17 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new DoubleLiteralContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3651; + this.state = 3663; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 319) { + if (_la === 320) { { - this.state = 3650; + this.state = 3662; this.match(TrinoSqlParser.MINUS); } } - this.state = 3653; + this.state = 3665; this.match(TrinoSqlParser.DOUBLE_VALUE); } break; @@ -16189,17 +16228,17 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new IntegerLiteralContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3655; + this.state = 3667; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 319) { + if (_la === 320) { { - this.state = 3654; + this.state = 3666; this.match(TrinoSqlParser.MINUS); } } - this.state = 3657; + this.state = 3669; this.match(TrinoSqlParser.INTEGER_VALUE); } break; @@ -16223,7 +16262,7 @@ export class TrinoSqlParser extends SQLParserBase { let localContext = new AuthorizationUserContext(this.context, this.state); this.enterRule(localContext, 306, TrinoSqlParser.RULE_authorizationUser); try { - this.state = 3662; + this.state = 3674; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ABSENT: @@ -16245,6 +16284,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CASCADE: case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COALESCE: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: @@ -16446,7 +16486,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new IdentifierUserContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3660; + this.state = 3672; this.identifier(); } break; @@ -16455,7 +16495,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new StringUserContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3661; + this.state = 3673; this.string_(); } break; @@ -16484,9 +16524,9 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3664; + this.state = 3676; _la = this.tokenStream.LA(1); - if(!(((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326656) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 37223659) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 1232320247) !== 0) || ((((_la - 99)) & ~0x1F) === 0 && ((1 << (_la - 99)) & 2532638303) !== 0) || ((((_la - 132)) & ~0x1F) === 0 && ((1 << (_la - 132)) & 3848265819) !== 0) || ((((_la - 164)) & ~0x1F) === 0 && ((1 << (_la - 164)) & 2011430399) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4261150717) !== 0) || ((((_la - 229)) & ~0x1F) === 0 && ((1 << (_la - 229)) & 4293917631) !== 0) || ((((_la - 262)) & ~0x1F) === 0 && ((1 << (_la - 262)) & 3740198895) !== 0) || ((((_la - 294)) & ~0x1F) === 0 && ((1 << (_la - 294)) & 521847) !== 0))) { this.errorHandler.recoverInline(this); } else { @@ -16572,9 +16612,9 @@ export class TrinoSqlParser extends SQLParserBase { private primaryExpression_sempred(localContext: PrimaryExpressionContext | null, predIndex: number): boolean { switch (predIndex) { case 9: - return this.precpred(this.context, 24); + return this.precpred(this.context, 25); case 10: - return this.precpred(this.context, 22); + return this.precpred(this.context, 23); } return true; } @@ -16603,7 +16643,7 @@ export class TrinoSqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,340,3667,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, + 4,1,341,3679,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6, 7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7, 13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2, 20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7, @@ -16822,464 +16862,466 @@ export class TrinoSqlParser extends SQLParserBase { 3,75,2571,8,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75, 1,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,2590,8,75,1,75,1,75,1,75, 1,75,1,75,1,75,1,75,3,75,2599,8,75,1,75,1,75,1,75,1,75,1,75,1,75, - 1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,5,75, - 2619,8,75,10,75,12,75,2622,9,75,3,75,2624,8,75,1,75,1,75,1,75,1, - 75,1,75,1,75,1,75,1,75,3,75,2634,8,75,1,75,1,75,1,75,1,75,1,75,1, - 75,1,75,3,75,2643,8,75,1,75,1,75,1,75,1,75,3,75,2649,8,75,1,75,1, - 75,1,75,1,75,3,75,2655,8,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1, - 75,1,75,3,75,2666,8,75,3,75,2668,8,75,1,75,1,75,1,75,3,75,2673,8, - 75,1,75,1,75,1,75,1,75,1,75,3,75,2680,8,75,3,75,2682,8,75,1,75,1, - 75,1,75,1,75,3,75,2688,8,75,1,75,1,75,1,75,1,75,3,75,2694,8,75,1, - 75,1,75,1,75,1,75,1,75,1,75,1,75,5,75,2703,8,75,10,75,12,75,2706, - 9,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,2714,8,75,1,75,1,75,1,75, - 3,75,2719,8,75,1,75,1,75,1,75,3,75,2724,8,75,3,75,2726,8,75,3,75, - 2728,8,75,1,75,1,75,1,75,1,75,3,75,2734,8,75,3,75,2736,8,75,1,75, - 1,75,1,75,1,75,1,75,1,75,5,75,2744,8,75,10,75,12,75,2747,9,75,1, - 75,1,75,1,75,1,75,1,75,1,75,3,75,2755,8,75,3,75,2757,8,75,1,75,1, - 75,1,75,1,75,3,75,2763,8,75,3,75,2765,8,75,1,75,3,75,2768,8,75,1, - 75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,5,75,2778,8,75,10,75,12,75, - 2781,9,75,1,76,1,76,1,76,1,76,1,76,3,76,2788,8,76,1,76,1,76,1,76, - 1,76,5,76,2794,8,76,10,76,12,76,2797,9,76,3,76,2799,8,76,1,77,1, - 77,1,77,3,77,2804,8,77,1,78,1,78,1,78,3,78,2809,8,78,1,79,1,79,1, - 79,1,79,1,80,1,80,1,81,1,81,1,81,1,81,3,81,2821,8,81,1,82,1,82,3, - 82,2825,8,82,1,82,1,82,3,82,2829,8,82,1,82,3,82,2832,8,82,3,82,2834, - 8,82,1,83,1,83,1,83,1,83,1,83,1,83,3,83,2842,8,83,1,84,3,84,2845, - 8,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,2855,8,84,1,85, - 1,85,1,86,1,86,1,86,1,86,3,86,2863,8,86,1,87,1,87,1,87,1,87,3,87, - 2869,8,87,3,87,2871,8,87,1,88,1,88,1,88,1,88,1,88,1,88,3,88,2879, - 8,88,1,89,1,89,1,90,1,90,1,91,1,91,1,92,1,92,3,92,2889,8,92,1,92, - 1,92,1,92,1,92,3,92,2895,8,92,1,93,1,93,1,94,1,94,1,95,1,95,1,95, - 1,95,1,95,1,95,5,95,2907,8,95,10,95,12,95,2910,9,95,1,95,1,95,1, - 95,1,95,1,95,1,95,3,95,2918,8,95,1,95,1,95,1,95,1,95,1,95,3,95,2925, - 8,95,1,95,1,95,1,95,3,95,2930,8,95,1,95,1,95,1,95,1,95,1,95,3,95, - 2937,8,95,1,95,1,95,1,95,3,95,2942,8,95,1,95,1,95,1,95,1,95,1,95, + 1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,5,75,2615,8,75,10,75,12, + 75,2618,9,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1, + 75,5,75,2631,8,75,10,75,12,75,2634,9,75,3,75,2636,8,75,1,75,1,75, + 1,75,1,75,1,75,1,75,1,75,1,75,3,75,2646,8,75,1,75,1,75,1,75,1,75, + 1,75,1,75,1,75,3,75,2655,8,75,1,75,1,75,1,75,1,75,3,75,2661,8,75, + 1,75,1,75,1,75,1,75,3,75,2667,8,75,1,75,1,75,1,75,1,75,1,75,1,75, + 1,75,1,75,1,75,3,75,2678,8,75,3,75,2680,8,75,1,75,1,75,1,75,3,75, + 2685,8,75,1,75,1,75,1,75,1,75,1,75,3,75,2692,8,75,3,75,2694,8,75, + 1,75,1,75,1,75,1,75,3,75,2700,8,75,1,75,1,75,1,75,1,75,3,75,2706, + 8,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,5,75,2715,8,75,10,75,12, + 75,2718,9,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,2726,8,75,1,75,1, + 75,1,75,3,75,2731,8,75,1,75,1,75,1,75,3,75,2736,8,75,3,75,2738,8, + 75,3,75,2740,8,75,1,75,1,75,1,75,1,75,3,75,2746,8,75,3,75,2748,8, + 75,1,75,1,75,1,75,1,75,1,75,1,75,5,75,2756,8,75,10,75,12,75,2759, + 9,75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,2767,8,75,3,75,2769,8,75, + 1,75,1,75,1,75,1,75,3,75,2775,8,75,3,75,2777,8,75,1,75,3,75,2780, + 8,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,5,75,2790,8,75,10,75, + 12,75,2793,9,75,1,76,1,76,1,76,1,76,1,76,3,76,2800,8,76,1,76,1,76, + 1,76,1,76,5,76,2806,8,76,10,76,12,76,2809,9,76,3,76,2811,8,76,1, + 77,1,77,1,77,3,77,2816,8,77,1,78,1,78,1,78,3,78,2821,8,78,1,79,1, + 79,1,79,1,79,1,80,1,80,1,81,1,81,1,81,1,81,3,81,2833,8,81,1,82,1, + 82,3,82,2837,8,82,1,82,1,82,3,82,2841,8,82,1,82,3,82,2844,8,82,3, + 82,2846,8,82,1,83,1,83,1,83,1,83,1,83,1,83,3,83,2854,8,83,1,84,3, + 84,2857,8,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,3,84,2867,8, + 84,1,85,1,85,1,86,1,86,1,86,1,86,3,86,2875,8,86,1,87,1,87,1,87,1, + 87,3,87,2881,8,87,3,87,2883,8,87,1,88,1,88,1,88,1,88,1,88,1,88,3, + 88,2891,8,88,1,89,1,89,1,90,1,90,1,91,1,91,1,92,1,92,3,92,2901,8, + 92,1,92,1,92,1,92,1,92,3,92,2907,8,92,1,93,1,93,1,94,1,94,1,95,1, + 95,1,95,1,95,1,95,1,95,5,95,2919,8,95,10,95,12,95,2922,9,95,1,95, + 1,95,1,95,1,95,1,95,1,95,3,95,2930,8,95,1,95,1,95,1,95,1,95,1,95, + 3,95,2937,8,95,1,95,1,95,1,95,3,95,2942,8,95,1,95,1,95,1,95,1,95, + 1,95,3,95,2949,8,95,1,95,1,95,1,95,3,95,2954,8,95,1,95,1,95,1,95, 1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95,1,95, - 1,95,5,95,2963,8,95,10,95,12,95,2966,9,95,1,95,1,95,3,95,2970,8, - 95,3,95,2972,8,95,1,95,1,95,1,95,1,95,1,95,3,95,2979,8,95,5,95,2981, - 8,95,10,95,12,95,2984,9,95,1,96,1,96,1,96,1,96,3,96,2990,8,96,1, - 97,1,97,3,97,2994,8,97,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1, - 99,1,99,1,100,1,100,1,100,1,100,3,100,3010,8,100,1,100,1,100,1,100, - 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,5,100,3023,8,100, - 10,100,12,100,3026,9,100,1,100,1,100,1,100,1,100,3,100,3032,8,100, - 1,100,1,100,1,100,1,100,1,100,1,100,1,100,3,100,3041,8,100,1,100, - 1,100,1,100,1,100,1,100,1,100,5,100,3049,8,100,10,100,12,100,3052, - 9,100,1,100,1,100,3,100,3056,8,100,1,100,1,100,1,100,1,100,1,100, - 5,100,3063,8,100,10,100,12,100,3066,9,100,1,100,1,100,3,100,3070, - 8,100,1,101,1,101,1,101,1,101,1,101,1,101,3,101,3078,8,101,1,102, - 1,102,1,102,1,102,5,102,3084,8,102,10,102,12,102,3087,9,102,3,102, - 3089,8,102,1,102,1,102,1,102,1,102,3,102,3095,8,102,1,102,3,102, - 3098,8,102,1,102,1,102,1,102,1,102,1,102,3,102,3105,8,102,1,102, - 1,102,1,102,1,102,5,102,3111,8,102,10,102,12,102,3114,9,102,3,102, - 3116,8,102,1,102,1,102,1,102,1,102,5,102,3122,8,102,10,102,12,102, - 3125,9,102,3,102,3127,8,102,1,103,1,103,1,103,1,103,1,103,1,103, + 1,95,1,95,1,95,5,95,2975,8,95,10,95,12,95,2978,9,95,1,95,1,95,3, + 95,2982,8,95,3,95,2984,8,95,1,95,1,95,1,95,1,95,1,95,3,95,2991,8, + 95,5,95,2993,8,95,10,95,12,95,2996,9,95,1,96,1,96,1,96,1,96,3,96, + 3002,8,96,1,97,1,97,3,97,3006,8,97,1,98,1,98,1,98,1,98,1,98,1,99, + 1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,3,100,3022,8,100,1,100, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,5,100, + 3035,8,100,10,100,12,100,3038,9,100,1,100,1,100,1,100,1,100,3,100, + 3044,8,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,3,100,3053, + 8,100,1,100,1,100,1,100,1,100,1,100,1,100,5,100,3061,8,100,10,100, + 12,100,3064,9,100,1,100,1,100,3,100,3068,8,100,1,100,1,100,1,100, + 1,100,1,100,5,100,3075,8,100,10,100,12,100,3078,9,100,1,100,1,100, + 3,100,3082,8,100,1,101,1,101,1,101,1,101,1,101,1,101,3,101,3090, + 8,101,1,102,1,102,1,102,1,102,5,102,3096,8,102,10,102,12,102,3099, + 9,102,3,102,3101,8,102,1,102,1,102,1,102,1,102,3,102,3107,8,102, + 1,102,3,102,3110,8,102,1,102,1,102,1,102,1,102,1,102,3,102,3117, + 8,102,1,102,1,102,1,102,1,102,5,102,3123,8,102,10,102,12,102,3126, + 9,102,3,102,3128,8,102,1,102,1,102,1,102,1,102,5,102,3134,8,102, + 10,102,12,102,3137,9,102,3,102,3139,8,102,1,103,1,103,1,103,1,103, 1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, - 1,103,1,103,1,103,1,103,1,103,1,103,1,103,3,103,3153,8,103,1,104, - 1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,3,104,3164,8,104, - 1,105,1,105,1,105,3,105,3169,8,105,1,105,1,105,1,105,1,105,1,105, - 5,105,3176,8,105,10,105,12,105,3179,9,105,1,106,1,106,1,106,1,106, - 1,106,1,106,1,106,1,106,5,106,3189,8,106,10,106,12,106,3192,9,106, - 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, - 1,106,3,106,3206,8,106,1,107,1,107,3,107,3210,8,107,1,107,1,107, - 3,107,3214,8,107,1,107,1,107,3,107,3218,8,107,1,107,1,107,1,107, - 1,107,3,107,3224,8,107,1,107,1,107,3,107,3228,8,107,1,107,1,107, - 3,107,3232,8,107,1,107,1,107,3,107,3236,8,107,3,107,3238,8,107,1, - 108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,3,109,3248,8,109,1, - 110,1,110,1,110,1,110,1,110,3,110,3255,8,110,1,111,1,111,1,111,1, - 111,1,111,1,111,1,111,3,111,3264,8,111,1,112,1,112,1,112,1,112,1, - 112,3,112,3271,8,112,1,113,1,113,1,113,1,113,1,113,3,113,3278,8, - 113,1,114,1,114,1,114,5,114,3283,8,114,10,114,12,114,3286,9,114, - 1,115,1,115,1,115,1,115,5,115,3292,8,115,10,115,12,115,3295,9,115, - 1,115,1,115,1,116,1,116,1,116,1,116,1,116,5,116,3304,8,116,10,116, - 12,116,3307,9,116,3,116,3309,8,116,1,116,1,116,1,117,1,117,1,117, - 1,117,1,117,5,117,3318,8,117,10,117,12,117,3321,9,117,3,117,3323, - 8,117,1,117,1,117,1,118,3,118,3328,8,118,1,118,1,118,1,119,1,119, - 1,119,1,120,1,120,1,120,3,120,3338,8,120,1,120,1,120,1,120,1,120, - 1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,3,120, - 3354,8,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, - 1,121,4,121,3366,8,121,11,121,12,121,3367,1,121,3,121,3371,8,121, - 1,121,1,121,1,121,1,121,1,121,4,121,3378,8,121,11,121,12,121,3379, - 1,121,3,121,3383,8,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, - 1,121,5,121,3393,8,121,10,121,12,121,3396,9,121,1,121,3,121,3399, - 8,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, - 1,121,5,121,3412,8,121,10,121,12,121,3415,9,121,1,121,3,121,3418, - 8,121,1,121,1,121,1,121,1,121,3,121,3424,8,121,1,121,1,121,1,121, - 1,121,1,121,1,121,1,121,1,121,3,121,3434,8,121,1,121,1,121,1,121, + 1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,3,103,3165, + 8,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,3,104, + 3176,8,104,1,105,1,105,1,105,3,105,3181,8,105,1,105,1,105,1,105, + 1,105,1,105,5,105,3188,8,105,10,105,12,105,3191,9,105,1,106,1,106, + 1,106,1,106,1,106,1,106,1,106,1,106,5,106,3201,8,106,10,106,12,106, + 3204,9,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,3,106,3218,8,106,1,107,1,107,3,107,3222,8,107, + 1,107,1,107,3,107,3226,8,107,1,107,1,107,3,107,3230,8,107,1,107, + 1,107,1,107,1,107,3,107,3236,8,107,1,107,1,107,3,107,3240,8,107, + 1,107,1,107,3,107,3244,8,107,1,107,1,107,3,107,3248,8,107,3,107, + 3250,8,107,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,3,109, + 3260,8,109,1,110,1,110,1,110,1,110,1,110,3,110,3267,8,110,1,111, + 1,111,1,111,1,111,1,111,1,111,1,111,3,111,3276,8,111,1,112,1,112, + 1,112,1,112,1,112,3,112,3283,8,112,1,113,1,113,1,113,1,113,1,113, + 3,113,3290,8,113,1,114,1,114,1,114,5,114,3295,8,114,10,114,12,114, + 3298,9,114,1,115,1,115,1,115,1,115,5,115,3304,8,115,10,115,12,115, + 3307,9,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,5,116,3316, + 8,116,10,116,12,116,3319,9,116,3,116,3321,8,116,1,116,1,116,1,117, + 1,117,1,117,1,117,1,117,5,117,3330,8,117,10,117,12,117,3333,9,117, + 3,117,3335,8,117,1,117,1,117,1,118,3,118,3340,8,118,1,118,1,118, + 1,119,1,119,1,119,1,120,1,120,1,120,3,120,3350,8,120,1,120,1,120, + 1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120, + 1,120,3,120,3366,8,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121, + 1,121,1,121,1,121,4,121,3378,8,121,11,121,12,121,3379,1,121,3,121, + 3383,8,121,1,121,1,121,1,121,1,121,1,121,4,121,3390,8,121,11,121, + 12,121,3391,1,121,3,121,3395,8,121,1,121,1,121,1,121,1,121,1,121, + 1,121,1,121,1,121,5,121,3405,8,121,10,121,12,121,3408,9,121,1,121, + 3,121,3411,8,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, + 1,121,1,121,1,121,5,121,3424,8,121,10,121,12,121,3427,9,121,1,121, + 3,121,3430,8,121,1,121,1,121,1,121,1,121,3,121,3436,8,121,1,121, 1,121,1,121,1,121,1,121,1,121,1,121,1,121,3,121,3446,8,121,1,121, - 1,121,1,121,1,121,1,121,1,121,1,121,3,121,3455,8,121,1,122,1,122, - 1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124, - 1,125,1,125,1,125,1,125,5,125,3474,8,125,10,125,12,125,3477,9,125, - 1,125,1,125,1,125,3,125,3482,8,125,1,126,1,126,1,126,4,126,3487, - 8,126,11,126,12,126,3488,1,127,1,127,1,127,1,127,1,127,1,127,3,127, - 3497,8,127,1,128,1,128,1,128,3,128,3502,8,128,1,129,3,129,3505,8, - 129,1,129,1,129,1,130,1,130,3,130,3511,8,130,1,131,1,131,1,131,1, - 131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,3,131,3524,8,131,1, - 132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, - 3,132,3537,8,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,3,133,3550,8,133,1,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,134,1,134,3,134,3563,8,134,1,135,1,135, - 1,135,1,135,1,135,3,135,3570,8,135,1,136,1,136,1,136,1,136,1,136, - 3,136,3577,8,136,1,137,1,137,1,138,1,138,1,139,1,139,1,140,1,140, - 1,141,1,141,3,141,3589,8,141,1,142,1,142,1,143,1,143,1,144,1,144, - 1,144,5,144,3598,8,144,10,144,12,144,3601,9,144,1,145,1,145,1,145, - 1,145,1,145,1,145,1,146,1,146,1,147,1,147,1,147,3,147,3614,8,147, - 1,148,1,148,1,148,1,148,1,148,3,148,3621,8,148,1,149,1,149,1,149, - 5,149,3626,8,149,10,149,12,149,3629,9,149,1,150,1,150,1,150,1,150, - 1,150,1,150,1,150,3,150,3638,8,150,1,151,1,151,1,151,1,151,1,151, - 3,151,3645,8,151,1,152,3,152,3648,8,152,1,152,1,152,3,152,3652,8, - 152,1,152,1,152,3,152,3656,8,152,1,152,3,152,3659,8,152,1,153,1, - 153,3,153,3663,8,153,1,154,1,154,1,154,0,7,46,78,144,148,150,190, - 210,155,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40, - 42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84, - 86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120, - 122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152, - 154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184, - 186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216, - 218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248, - 250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280, - 282,284,286,288,290,292,294,296,298,300,302,304,306,308,0,36,2,0, - 39,39,229,229,2,0,72,72,131,131,2,0,105,105,122,122,2,0,92,92,123, - 123,1,0,239,240,2,0,101,101,174,174,2,0,324,324,329,329,2,0,91,91, - 281,281,2,0,29,29,75,75,2,0,101,101,148,148,2,0,22,22,79,79,2,0, - 33,33,259,259,3,0,35,35,150,150,270,270,2,0,124,124,247,247,2,0, - 85,85,89,89,2,0,144,144,189,189,2,0,125,125,197,197,2,0,54,54,281, - 281,1,0,318,319,1,0,320,322,1,0,291,293,4,0,89,89,97,97,273,273, - 283,283,2,0,49,49,280,280,2,0,100,100,241,241,1,0,312,317,3,0,22, - 22,26,26,254,254,2,0,97,97,273,273,5,0,67,67,118,118,170,171,245, - 245,310,310,1,0,175,178,2,0,304,304,306,306,2,0,102,102,212,212, - 3,0,113,113,137,137,263,263,4,0,80,80,132,132,160,160,294,294,2, - 0,192,192,309,309,2,0,268,268,298,298,54,0,18,22,24,24,26,27,29, - 33,35,35,37,39,42,49,51,52,56,56,65,67,69,72,74,75,77,78,80,82,85, - 87,89,89,92,92,95,95,98,102,104,104,107,113,116,116,118,121,123, - 124,126,126,129,129,131,132,134,135,137,137,144,151,153,153,155, - 155,157,157,160,171,173,180,184,189,191,193,196,196,198,213,215, - 220,222,233,235,237,239,247,249,259,261,264,266,271,274,276,278, - 280,282,284,286,289,291,295,297,299,302,303,305,311,4212,0,313,1, - 0,0,0,2,318,1,0,0,0,4,320,1,0,0,0,6,324,1,0,0,0,8,328,1,0,0,0,10, - 332,1,0,0,0,12,336,1,0,0,0,14,340,1,0,0,0,16,1238,1,0,0,0,18,1241, - 1,0,0,0,20,1245,1,0,0,0,22,1255,1,0,0,0,24,1259,1,0,0,0,26,1273, - 1,0,0,0,28,1275,1,0,0,0,30,1289,1,0,0,0,32,1295,1,0,0,0,34,1299, - 1,0,0,0,36,1307,1,0,0,0,38,1313,1,0,0,0,40,1315,1,0,0,0,42,1352, - 1,0,0,0,44,1354,1,0,0,0,46,1356,1,0,0,0,48,1392,1,0,0,0,50,1396, - 1,0,0,0,52,1405,1,0,0,0,54,1450,1,0,0,0,56,1453,1,0,0,0,58,1457, - 1,0,0,0,60,1467,1,0,0,0,62,1515,1,0,0,0,64,1530,1,0,0,0,66,1534, - 1,0,0,0,68,1536,1,0,0,0,70,1543,1,0,0,0,72,1565,1,0,0,0,74,1574, - 1,0,0,0,76,1594,1,0,0,0,78,1596,1,0,0,0,80,1635,1,0,0,0,82,1651, - 1,0,0,0,84,1653,1,0,0,0,86,1662,1,0,0,0,88,1664,1,0,0,0,90,1672, - 1,0,0,0,92,1678,1,0,0,0,94,1680,1,0,0,0,96,1758,1,0,0,0,98,1773, - 1,0,0,0,100,1784,1,0,0,0,102,1805,1,0,0,0,104,1807,1,0,0,0,106,1820, - 1,0,0,0,108,1824,1,0,0,0,110,1834,1,0,0,0,112,1845,1,0,0,0,114,1856, - 1,0,0,0,116,1938,1,0,0,0,118,2017,1,0,0,0,120,2044,1,0,0,0,122,2046, - 1,0,0,0,124,2053,1,0,0,0,126,2065,1,0,0,0,128,2067,1,0,0,0,130,2095, - 1,0,0,0,132,2102,1,0,0,0,134,2167,1,0,0,0,136,2187,1,0,0,0,138,2189, - 1,0,0,0,140,2193,1,0,0,0,142,2206,1,0,0,0,144,2215,1,0,0,0,146,2289, - 1,0,0,0,148,2295,1,0,0,0,150,2767,1,0,0,0,152,2782,1,0,0,0,154,2800, - 1,0,0,0,156,2805,1,0,0,0,158,2810,1,0,0,0,160,2814,1,0,0,0,162,2820, - 1,0,0,0,164,2833,1,0,0,0,166,2841,1,0,0,0,168,2854,1,0,0,0,170,2856, - 1,0,0,0,172,2862,1,0,0,0,174,2870,1,0,0,0,176,2878,1,0,0,0,178,2880, - 1,0,0,0,180,2882,1,0,0,0,182,2884,1,0,0,0,184,2886,1,0,0,0,186,2896, - 1,0,0,0,188,2898,1,0,0,0,190,2971,1,0,0,0,192,2989,1,0,0,0,194,2993, - 1,0,0,0,196,2995,1,0,0,0,198,3000,1,0,0,0,200,3069,1,0,0,0,202,3071, - 1,0,0,0,204,3088,1,0,0,0,206,3152,1,0,0,0,208,3163,1,0,0,0,210,3165, - 1,0,0,0,212,3205,1,0,0,0,214,3237,1,0,0,0,216,3239,1,0,0,0,218,3247, - 1,0,0,0,220,3254,1,0,0,0,222,3263,1,0,0,0,224,3270,1,0,0,0,226,3277, - 1,0,0,0,228,3279,1,0,0,0,230,3287,1,0,0,0,232,3298,1,0,0,0,234,3312, - 1,0,0,0,236,3327,1,0,0,0,238,3331,1,0,0,0,240,3353,1,0,0,0,242,3454, - 1,0,0,0,244,3456,1,0,0,0,246,3461,1,0,0,0,248,3466,1,0,0,0,250,3469, - 1,0,0,0,252,3486,1,0,0,0,254,3496,1,0,0,0,256,3501,1,0,0,0,258,3504, - 1,0,0,0,260,3510,1,0,0,0,262,3523,1,0,0,0,264,3536,1,0,0,0,266,3549, - 1,0,0,0,268,3562,1,0,0,0,270,3569,1,0,0,0,272,3576,1,0,0,0,274,3578, - 1,0,0,0,276,3580,1,0,0,0,278,3582,1,0,0,0,280,3584,1,0,0,0,282,3588, - 1,0,0,0,284,3590,1,0,0,0,286,3592,1,0,0,0,288,3594,1,0,0,0,290,3602, - 1,0,0,0,292,3608,1,0,0,0,294,3613,1,0,0,0,296,3620,1,0,0,0,298,3622, - 1,0,0,0,300,3637,1,0,0,0,302,3644,1,0,0,0,304,3658,1,0,0,0,306,3662, - 1,0,0,0,308,3664,1,0,0,0,310,312,3,2,1,0,311,310,1,0,0,0,312,315, - 1,0,0,0,313,311,1,0,0,0,313,314,1,0,0,0,314,316,1,0,0,0,315,313, - 1,0,0,0,316,317,5,0,0,1,317,1,1,0,0,0,318,319,3,4,2,0,319,3,1,0, - 0,0,320,322,3,16,8,0,321,323,5,325,0,0,322,321,1,0,0,0,322,323,1, - 0,0,0,323,5,1,0,0,0,324,326,3,142,71,0,325,327,5,325,0,0,326,325, - 1,0,0,0,326,327,1,0,0,0,327,7,1,0,0,0,328,330,3,228,114,0,329,331, - 5,325,0,0,330,329,1,0,0,0,330,331,1,0,0,0,331,9,1,0,0,0,332,334, - 3,190,95,0,333,335,5,325,0,0,334,333,1,0,0,0,334,335,1,0,0,0,335, - 11,1,0,0,0,336,338,3,210,105,0,337,339,5,325,0,0,338,337,1,0,0,0, - 338,339,1,0,0,0,339,13,1,0,0,0,340,341,3,230,115,0,341,342,5,0,0, - 1,342,15,1,0,0,0,343,1239,3,18,9,0,344,345,5,288,0,0,345,1239,3, - 270,135,0,346,347,5,53,0,0,347,351,5,42,0,0,348,349,5,119,0,0,349, - 350,5,182,0,0,350,352,5,94,0,0,351,348,1,0,0,0,351,352,1,0,0,0,352, - 353,1,0,0,0,353,354,3,276,138,0,354,355,5,290,0,0,355,358,3,302, - 151,0,356,357,5,46,0,0,357,359,3,174,87,0,358,356,1,0,0,0,358,359, - 1,0,0,0,359,362,1,0,0,0,360,361,5,31,0,0,361,363,3,296,148,0,362, - 360,1,0,0,0,362,363,1,0,0,0,363,366,1,0,0,0,364,365,5,304,0,0,365, - 367,3,32,16,0,366,364,1,0,0,0,366,367,1,0,0,0,367,1239,1,0,0,0,368, - 369,5,83,0,0,369,372,5,42,0,0,370,371,5,119,0,0,371,373,5,94,0,0, - 372,370,1,0,0,0,372,373,1,0,0,0,373,374,1,0,0,0,374,376,3,274,137, - 0,375,377,7,0,0,0,376,375,1,0,0,0,376,377,1,0,0,0,377,1239,1,0,0, - 0,378,379,5,53,0,0,379,383,5,243,0,0,380,381,5,119,0,0,381,382,5, - 182,0,0,382,384,5,94,0,0,383,380,1,0,0,0,383,384,1,0,0,0,384,385, - 1,0,0,0,385,388,3,272,136,0,386,387,5,31,0,0,387,389,3,296,148,0, - 388,386,1,0,0,0,388,389,1,0,0,0,389,392,1,0,0,0,390,391,5,304,0, - 0,391,393,3,32,16,0,392,390,1,0,0,0,392,393,1,0,0,0,393,1239,1,0, - 0,0,394,395,5,83,0,0,395,398,5,243,0,0,396,397,5,119,0,0,397,399, - 5,94,0,0,398,396,1,0,0,0,398,399,1,0,0,0,399,400,1,0,0,0,400,402, - 3,270,135,0,401,403,7,0,0,0,402,401,1,0,0,0,402,403,1,0,0,0,403, - 1239,1,0,0,0,404,405,5,23,0,0,405,406,5,243,0,0,406,407,3,270,135, - 0,407,408,5,223,0,0,408,409,5,269,0,0,409,410,3,272,136,0,410,1239, - 1,0,0,0,411,412,5,23,0,0,412,413,5,243,0,0,413,414,3,270,135,0,414, - 415,5,251,0,0,415,416,5,31,0,0,416,417,3,296,148,0,417,1239,1,0, - 0,0,418,421,5,53,0,0,419,420,5,194,0,0,420,422,5,226,0,0,421,419, - 1,0,0,0,421,422,1,0,0,0,422,423,1,0,0,0,423,427,5,260,0,0,424,425, - 5,119,0,0,425,426,5,182,0,0,426,428,5,94,0,0,427,424,1,0,0,0,427, - 428,1,0,0,0,428,429,1,0,0,0,429,431,3,264,132,0,430,432,3,110,55, - 0,431,430,1,0,0,0,431,432,1,0,0,0,432,435,1,0,0,0,433,434,5,46,0, - 0,434,436,3,174,87,0,435,433,1,0,0,0,435,436,1,0,0,0,436,439,1,0, - 0,0,437,438,5,304,0,0,438,440,3,32,16,0,439,437,1,0,0,0,439,440, - 1,0,0,0,440,441,1,0,0,0,441,447,5,28,0,0,442,448,3,18,9,0,443,444, - 5,1,0,0,444,445,3,18,9,0,445,446,5,2,0,0,446,448,1,0,0,0,447,442, - 1,0,0,0,447,443,1,0,0,0,448,454,1,0,0,0,449,451,5,304,0,0,450,452, - 5,179,0,0,451,450,1,0,0,0,451,452,1,0,0,0,452,453,1,0,0,0,453,455, - 5,65,0,0,454,449,1,0,0,0,454,455,1,0,0,0,455,1239,1,0,0,0,456,459, - 5,53,0,0,457,458,5,194,0,0,458,460,5,226,0,0,459,457,1,0,0,0,459, - 460,1,0,0,0,460,461,1,0,0,0,461,465,5,260,0,0,462,463,5,119,0,0, - 463,464,5,182,0,0,464,466,5,94,0,0,465,462,1,0,0,0,465,466,1,0,0, - 0,466,467,1,0,0,0,467,468,3,264,132,0,468,469,5,1,0,0,469,474,3, - 26,13,0,470,471,5,3,0,0,471,473,3,26,13,0,472,470,1,0,0,0,473,476, - 1,0,0,0,474,472,1,0,0,0,474,475,1,0,0,0,475,477,1,0,0,0,476,474, - 1,0,0,0,477,480,5,2,0,0,478,479,5,46,0,0,479,481,3,174,87,0,480, - 478,1,0,0,0,480,481,1,0,0,0,481,484,1,0,0,0,482,483,5,304,0,0,483, - 485,3,32,16,0,484,482,1,0,0,0,484,485,1,0,0,0,485,1239,1,0,0,0,486, - 487,5,83,0,0,487,490,5,260,0,0,488,489,5,119,0,0,489,491,5,94,0, - 0,490,488,1,0,0,0,490,491,1,0,0,0,491,492,1,0,0,0,492,1239,3,262, - 131,0,493,494,5,127,0,0,494,495,5,130,0,0,495,497,3,262,131,0,496, - 498,3,112,56,0,497,496,1,0,0,0,497,498,1,0,0,0,498,499,1,0,0,0,499, - 500,3,18,9,0,500,1239,1,0,0,0,501,502,5,73,0,0,502,503,5,105,0,0, - 503,505,3,262,131,0,504,506,3,54,27,0,505,504,1,0,0,0,505,506,1, - 0,0,0,506,1239,1,0,0,0,507,508,5,274,0,0,508,509,5,260,0,0,509,1239, - 3,262,131,0,510,511,5,46,0,0,511,512,5,190,0,0,512,513,5,260,0,0, - 513,514,3,262,131,0,514,517,5,133,0,0,515,518,3,174,87,0,516,518, - 5,183,0,0,517,515,1,0,0,0,517,516,1,0,0,0,518,1239,1,0,0,0,519,520, - 5,46,0,0,520,521,5,190,0,0,521,522,5,299,0,0,522,523,3,266,133,0, - 523,526,5,133,0,0,524,527,3,174,87,0,525,527,5,183,0,0,526,524,1, - 0,0,0,526,525,1,0,0,0,527,1239,1,0,0,0,528,529,5,46,0,0,529,530, - 5,190,0,0,530,531,5,44,0,0,531,532,3,282,141,0,532,535,5,133,0,0, - 533,536,3,174,87,0,534,536,5,183,0,0,535,533,1,0,0,0,535,534,1,0, - 0,0,536,1239,1,0,0,0,537,538,5,23,0,0,538,541,5,260,0,0,539,540, - 5,119,0,0,540,542,5,94,0,0,541,539,1,0,0,0,541,542,1,0,0,0,542,543, - 1,0,0,0,543,544,3,262,131,0,544,545,5,223,0,0,545,546,5,269,0,0, - 546,547,3,264,132,0,547,1239,1,0,0,0,548,549,5,23,0,0,549,552,5, - 260,0,0,550,551,5,119,0,0,551,553,5,94,0,0,552,550,1,0,0,0,552,553, - 1,0,0,0,553,554,1,0,0,0,554,555,3,262,131,0,555,556,5,19,0,0,556, - 560,5,44,0,0,557,558,5,119,0,0,558,559,5,182,0,0,559,561,5,94,0, - 0,560,557,1,0,0,0,560,561,1,0,0,0,561,562,1,0,0,0,562,563,3,28,14, - 0,563,1239,1,0,0,0,564,565,5,23,0,0,565,568,5,260,0,0,566,567,5, - 119,0,0,567,569,5,94,0,0,568,566,1,0,0,0,568,569,1,0,0,0,569,570, - 1,0,0,0,570,571,3,262,131,0,571,572,5,223,0,0,572,575,5,44,0,0,573, - 574,5,119,0,0,574,576,5,94,0,0,575,573,1,0,0,0,575,576,1,0,0,0,576, - 577,1,0,0,0,577,578,3,282,141,0,578,579,5,269,0,0,579,580,3,286, - 143,0,580,1239,1,0,0,0,581,582,5,23,0,0,582,585,5,260,0,0,583,584, - 5,119,0,0,584,586,5,94,0,0,585,583,1,0,0,0,585,586,1,0,0,0,586,587, - 1,0,0,0,587,588,3,262,131,0,588,589,5,83,0,0,589,592,5,44,0,0,590, - 591,5,119,0,0,591,593,5,94,0,0,592,590,1,0,0,0,592,593,1,0,0,0,593, - 594,1,0,0,0,594,595,3,282,141,0,595,1239,1,0,0,0,596,597,5,23,0, - 0,597,600,5,260,0,0,598,599,5,119,0,0,599,601,5,94,0,0,600,598,1, - 0,0,0,600,601,1,0,0,0,601,602,1,0,0,0,602,603,3,262,131,0,603,604, - 5,23,0,0,604,605,5,44,0,0,605,606,3,282,141,0,606,607,5,251,0,0, - 607,608,5,65,0,0,608,609,5,276,0,0,609,610,3,190,95,0,610,1239,1, - 0,0,0,611,612,5,23,0,0,612,615,5,260,0,0,613,614,5,119,0,0,614,616, - 5,94,0,0,615,613,1,0,0,0,615,616,1,0,0,0,616,617,1,0,0,0,617,618, - 3,262,131,0,618,619,5,23,0,0,619,620,5,44,0,0,620,621,3,282,141, - 0,621,622,5,83,0,0,622,623,5,182,0,0,623,624,5,183,0,0,624,1239, - 1,0,0,0,625,626,5,23,0,0,626,627,5,260,0,0,627,628,3,262,131,0,628, - 629,5,251,0,0,629,630,5,31,0,0,630,631,3,296,148,0,631,1239,1,0, - 0,0,632,633,5,23,0,0,633,634,5,260,0,0,634,635,3,262,131,0,635,636, - 5,251,0,0,636,637,5,216,0,0,637,638,3,34,17,0,638,1239,1,0,0,0,639, - 640,5,23,0,0,640,641,5,260,0,0,641,642,3,262,131,0,642,643,5,93, - 0,0,643,656,3,278,139,0,644,653,5,1,0,0,645,650,3,224,112,0,646, - 647,5,3,0,0,647,649,3,224,112,0,648,646,1,0,0,0,649,652,1,0,0,0, - 650,648,1,0,0,0,650,651,1,0,0,0,651,654,1,0,0,0,652,650,1,0,0,0, - 653,645,1,0,0,0,653,654,1,0,0,0,654,655,1,0,0,0,655,657,5,2,0,0, - 656,644,1,0,0,0,656,657,1,0,0,0,657,659,1,0,0,0,658,660,3,54,27, - 0,659,658,1,0,0,0,659,660,1,0,0,0,660,1239,1,0,0,0,661,662,5,24, - 0,0,662,665,3,262,131,0,663,664,5,304,0,0,664,666,3,32,16,0,665, - 663,1,0,0,0,665,666,1,0,0,0,666,1239,1,0,0,0,667,670,5,53,0,0,668, - 669,5,194,0,0,669,671,5,226,0,0,670,668,1,0,0,0,670,671,1,0,0,0, - 671,672,1,0,0,0,672,673,5,167,0,0,673,677,5,299,0,0,674,675,5,119, - 0,0,675,676,5,182,0,0,676,678,5,94,0,0,677,674,1,0,0,0,677,678,1, - 0,0,0,678,679,1,0,0,0,679,683,3,268,134,0,680,681,5,109,0,0,681, - 682,5,208,0,0,682,684,3,184,92,0,683,680,1,0,0,0,683,684,1,0,0,0, - 684,687,1,0,0,0,685,686,5,46,0,0,686,688,3,174,87,0,687,685,1,0, - 0,0,687,688,1,0,0,0,688,691,1,0,0,0,689,690,5,304,0,0,690,692,3, - 32,16,0,691,689,1,0,0,0,691,692,1,0,0,0,692,693,1,0,0,0,693,694, - 5,28,0,0,694,695,3,18,9,0,695,1239,1,0,0,0,696,699,5,53,0,0,697, - 698,5,194,0,0,698,700,5,226,0,0,699,697,1,0,0,0,699,700,1,0,0,0, - 700,701,1,0,0,0,701,702,5,299,0,0,702,705,3,268,134,0,703,704,5, - 46,0,0,704,706,3,174,87,0,705,703,1,0,0,0,705,706,1,0,0,0,706,709, - 1,0,0,0,707,708,5,246,0,0,708,710,7,1,0,0,709,707,1,0,0,0,709,710, - 1,0,0,0,710,713,1,0,0,0,711,712,5,304,0,0,712,714,3,32,16,0,713, - 711,1,0,0,0,713,714,1,0,0,0,714,715,1,0,0,0,715,716,5,28,0,0,716, - 717,3,18,9,0,717,1239,1,0,0,0,718,719,5,222,0,0,719,720,5,167,0, - 0,720,721,5,299,0,0,721,1239,3,266,133,0,722,723,5,83,0,0,723,724, - 5,167,0,0,724,727,5,299,0,0,725,726,5,119,0,0,726,728,5,94,0,0,727, - 725,1,0,0,0,727,728,1,0,0,0,728,729,1,0,0,0,729,1239,3,266,133,0, - 730,731,5,23,0,0,731,732,5,167,0,0,732,735,5,299,0,0,733,734,5,119, - 0,0,734,736,5,94,0,0,735,733,1,0,0,0,735,736,1,0,0,0,736,737,1,0, - 0,0,737,738,3,266,133,0,738,739,5,223,0,0,739,740,5,269,0,0,740, - 741,3,268,134,0,741,1239,1,0,0,0,742,743,5,23,0,0,743,744,5,167, - 0,0,744,745,5,299,0,0,745,746,3,266,133,0,746,747,5,251,0,0,747, - 748,5,216,0,0,748,749,3,34,17,0,749,1239,1,0,0,0,750,751,5,83,0, - 0,751,754,5,299,0,0,752,753,5,119,0,0,753,755,5,94,0,0,754,752,1, - 0,0,0,754,755,1,0,0,0,755,756,1,0,0,0,756,1239,3,266,133,0,757,758, - 5,23,0,0,758,759,5,299,0,0,759,760,3,266,133,0,760,761,5,223,0,0, - 761,762,5,269,0,0,762,763,3,268,134,0,763,1239,1,0,0,0,764,765,5, - 23,0,0,765,766,5,299,0,0,766,767,3,266,133,0,767,768,5,251,0,0,768, - 769,5,31,0,0,769,770,3,296,148,0,770,1239,1,0,0,0,771,772,5,37,0, - 0,772,773,3,278,139,0,773,782,5,1,0,0,774,779,3,224,112,0,775,776, - 5,3,0,0,776,778,3,224,112,0,777,775,1,0,0,0,778,781,1,0,0,0,779, - 777,1,0,0,0,779,780,1,0,0,0,780,783,1,0,0,0,781,779,1,0,0,0,782, - 774,1,0,0,0,782,783,1,0,0,0,783,784,1,0,0,0,784,785,5,2,0,0,785, - 1239,1,0,0,0,786,789,5,53,0,0,787,788,5,194,0,0,788,790,5,226,0, - 0,789,787,1,0,0,0,789,790,1,0,0,0,790,791,1,0,0,0,791,1239,3,230, - 115,0,792,793,5,83,0,0,793,796,5,107,0,0,794,795,5,119,0,0,795,797, - 5,94,0,0,796,794,1,0,0,0,796,797,1,0,0,0,797,798,1,0,0,0,798,1239, - 3,234,117,0,799,800,5,53,0,0,800,801,5,235,0,0,801,805,3,302,151, - 0,802,803,5,304,0,0,803,804,5,20,0,0,804,806,3,294,147,0,805,802, - 1,0,0,0,805,806,1,0,0,0,806,809,1,0,0,0,807,808,5,122,0,0,808,810, - 3,274,137,0,809,807,1,0,0,0,809,810,1,0,0,0,810,1239,1,0,0,0,811, - 812,5,83,0,0,812,813,5,235,0,0,813,816,3,302,151,0,814,815,5,122, - 0,0,815,817,3,274,137,0,816,814,1,0,0,0,816,817,1,0,0,0,817,1239, - 1,0,0,0,818,819,5,110,0,0,819,824,3,300,150,0,820,821,5,3,0,0,821, - 823,3,300,150,0,822,820,1,0,0,0,823,826,1,0,0,0,824,822,1,0,0,0, - 824,825,1,0,0,0,825,827,1,0,0,0,826,824,1,0,0,0,827,828,5,269,0, - 0,828,833,3,296,148,0,829,830,5,3,0,0,830,832,3,296,148,0,831,829, - 1,0,0,0,832,835,1,0,0,0,833,831,1,0,0,0,833,834,1,0,0,0,834,839, - 1,0,0,0,835,833,1,0,0,0,836,837,5,304,0,0,837,838,5,20,0,0,838,840, - 5,193,0,0,839,836,1,0,0,0,839,840,1,0,0,0,840,844,1,0,0,0,841,842, - 5,111,0,0,842,843,5,36,0,0,843,845,3,294,147,0,844,841,1,0,0,0,844, - 845,1,0,0,0,845,848,1,0,0,0,846,847,5,122,0,0,847,849,3,274,137, - 0,848,846,1,0,0,0,848,849,1,0,0,0,849,1239,1,0,0,0,850,861,5,110, - 0,0,851,856,3,300,150,0,852,853,5,3,0,0,853,855,3,300,150,0,854, - 852,1,0,0,0,855,858,1,0,0,0,856,854,1,0,0,0,856,857,1,0,0,0,857, - 862,1,0,0,0,858,856,1,0,0,0,859,860,5,22,0,0,860,862,5,215,0,0,861, - 851,1,0,0,0,861,859,1,0,0,0,862,863,1,0,0,0,863,864,5,190,0,0,864, - 865,3,258,129,0,865,866,5,269,0,0,866,870,3,296,148,0,867,868,5, - 304,0,0,868,869,5,110,0,0,869,871,5,193,0,0,870,867,1,0,0,0,870, - 871,1,0,0,0,871,1239,1,0,0,0,872,876,5,233,0,0,873,874,5,20,0,0, - 874,875,5,193,0,0,875,877,5,103,0,0,876,873,1,0,0,0,876,877,1,0, - 0,0,877,878,1,0,0,0,878,883,3,300,150,0,879,880,5,3,0,0,880,882, - 3,300,150,0,881,879,1,0,0,0,882,885,1,0,0,0,883,881,1,0,0,0,883, - 884,1,0,0,0,884,886,1,0,0,0,885,883,1,0,0,0,886,887,5,105,0,0,887, - 892,3,296,148,0,888,889,5,3,0,0,889,891,3,296,148,0,890,888,1,0, - 0,0,891,894,1,0,0,0,892,890,1,0,0,0,892,893,1,0,0,0,893,898,1,0, - 0,0,894,892,1,0,0,0,895,896,5,111,0,0,896,897,5,36,0,0,897,899,3, - 294,147,0,898,895,1,0,0,0,898,899,1,0,0,0,899,902,1,0,0,0,900,901, - 5,122,0,0,901,903,3,274,137,0,902,900,1,0,0,0,902,903,1,0,0,0,903, - 1239,1,0,0,0,904,908,5,233,0,0,905,906,5,110,0,0,906,907,5,193,0, - 0,907,909,5,103,0,0,908,905,1,0,0,0,908,909,1,0,0,0,909,920,1,0, + 1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,3,121,3458, + 8,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,3,121,3467,8,121, + 1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,124, + 1,124,1,124,1,125,1,125,1,125,1,125,5,125,3486,8,125,10,125,12,125, + 3489,9,125,1,125,1,125,1,125,3,125,3494,8,125,1,126,1,126,1,126, + 4,126,3499,8,126,11,126,12,126,3500,1,127,1,127,1,127,1,127,1,127, + 1,127,3,127,3509,8,127,1,128,1,128,1,128,3,128,3514,8,128,1,129, + 3,129,3517,8,129,1,129,1,129,1,130,1,130,3,130,3523,8,130,1,131, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,3,131, + 3536,8,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132, + 1,132,1,132,3,132,3549,8,132,1,133,1,133,1,133,1,133,1,133,1,133, + 1,133,1,133,1,133,1,133,1,133,3,133,3562,8,133,1,134,1,134,1,134, + 1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,3,134,3575,8,134, + 1,135,1,135,1,135,1,135,1,135,3,135,3582,8,135,1,136,1,136,1,136, + 1,136,1,136,3,136,3589,8,136,1,137,1,137,1,138,1,138,1,139,1,139, + 1,140,1,140,1,141,1,141,3,141,3601,8,141,1,142,1,142,1,143,1,143, + 1,144,1,144,1,144,5,144,3610,8,144,10,144,12,144,3613,9,144,1,145, + 1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,147,1,147,1,147,3,147, + 3626,8,147,1,148,1,148,1,148,1,148,1,148,3,148,3633,8,148,1,149, + 1,149,1,149,5,149,3638,8,149,10,149,12,149,3641,9,149,1,150,1,150, + 1,150,1,150,1,150,1,150,1,150,3,150,3650,8,150,1,151,1,151,1,151, + 1,151,1,151,3,151,3657,8,151,1,152,3,152,3660,8,152,1,152,1,152, + 3,152,3664,8,152,1,152,1,152,3,152,3668,8,152,1,152,3,152,3671,8, + 152,1,153,1,153,3,153,3675,8,153,1,154,1,154,1,154,0,7,46,78,144, + 148,150,190,210,155,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32, + 34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76, + 78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114, + 116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146, + 148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178, + 180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210, + 212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242, + 244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274, + 276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306, + 308,0,36,2,0,39,39,230,230,2,0,73,73,132,132,2,0,106,106,123,123, + 2,0,93,93,124,124,1,0,240,241,2,0,102,102,175,175,2,0,325,325,330, + 330,2,0,92,92,282,282,2,0,29,29,76,76,2,0,102,102,149,149,2,0,22, + 22,80,80,2,0,33,33,260,260,3,0,35,35,151,151,271,271,2,0,125,125, + 248,248,2,0,86,86,90,90,2,0,145,145,190,190,2,0,126,126,198,198, + 2,0,55,55,282,282,1,0,319,320,1,0,321,323,1,0,292,294,4,0,90,90, + 98,98,274,274,284,284,2,0,50,50,281,281,2,0,101,101,242,242,1,0, + 313,318,3,0,22,22,26,26,255,255,2,0,98,98,274,274,5,0,68,68,119, + 119,171,172,246,246,311,311,1,0,176,179,2,0,305,305,307,307,2,0, + 103,103,213,213,3,0,114,114,138,138,264,264,4,0,81,81,133,133,161, + 161,295,295,2,0,193,193,310,310,2,0,269,269,299,299,54,0,18,22,24, + 24,26,27,29,33,35,35,37,39,42,50,52,53,57,57,66,68,70,73,75,76,78, + 79,81,83,86,88,90,90,93,93,96,96,99,103,105,105,108,114,117,117, + 119,122,124,125,127,127,130,130,132,133,135,136,138,138,145,152, + 154,154,156,156,158,158,161,172,174,181,185,190,192,194,197,197, + 199,214,216,221,223,234,236,238,240,248,250,260,262,265,267,272, + 275,277,279,281,283,285,287,290,292,296,298,300,303,304,306,312, + 4226,0,313,1,0,0,0,2,318,1,0,0,0,4,320,1,0,0,0,6,324,1,0,0,0,8,328, + 1,0,0,0,10,332,1,0,0,0,12,336,1,0,0,0,14,340,1,0,0,0,16,1238,1,0, + 0,0,18,1241,1,0,0,0,20,1245,1,0,0,0,22,1255,1,0,0,0,24,1259,1,0, + 0,0,26,1273,1,0,0,0,28,1275,1,0,0,0,30,1289,1,0,0,0,32,1295,1,0, + 0,0,34,1299,1,0,0,0,36,1307,1,0,0,0,38,1313,1,0,0,0,40,1315,1,0, + 0,0,42,1352,1,0,0,0,44,1354,1,0,0,0,46,1356,1,0,0,0,48,1392,1,0, + 0,0,50,1396,1,0,0,0,52,1405,1,0,0,0,54,1450,1,0,0,0,56,1453,1,0, + 0,0,58,1457,1,0,0,0,60,1467,1,0,0,0,62,1515,1,0,0,0,64,1530,1,0, + 0,0,66,1534,1,0,0,0,68,1536,1,0,0,0,70,1543,1,0,0,0,72,1565,1,0, + 0,0,74,1574,1,0,0,0,76,1594,1,0,0,0,78,1596,1,0,0,0,80,1635,1,0, + 0,0,82,1651,1,0,0,0,84,1653,1,0,0,0,86,1662,1,0,0,0,88,1664,1,0, + 0,0,90,1672,1,0,0,0,92,1678,1,0,0,0,94,1680,1,0,0,0,96,1758,1,0, + 0,0,98,1773,1,0,0,0,100,1784,1,0,0,0,102,1805,1,0,0,0,104,1807,1, + 0,0,0,106,1820,1,0,0,0,108,1824,1,0,0,0,110,1834,1,0,0,0,112,1845, + 1,0,0,0,114,1856,1,0,0,0,116,1938,1,0,0,0,118,2017,1,0,0,0,120,2044, + 1,0,0,0,122,2046,1,0,0,0,124,2053,1,0,0,0,126,2065,1,0,0,0,128,2067, + 1,0,0,0,130,2095,1,0,0,0,132,2102,1,0,0,0,134,2167,1,0,0,0,136,2187, + 1,0,0,0,138,2189,1,0,0,0,140,2193,1,0,0,0,142,2206,1,0,0,0,144,2215, + 1,0,0,0,146,2289,1,0,0,0,148,2295,1,0,0,0,150,2779,1,0,0,0,152,2794, + 1,0,0,0,154,2812,1,0,0,0,156,2817,1,0,0,0,158,2822,1,0,0,0,160,2826, + 1,0,0,0,162,2832,1,0,0,0,164,2845,1,0,0,0,166,2853,1,0,0,0,168,2866, + 1,0,0,0,170,2868,1,0,0,0,172,2874,1,0,0,0,174,2882,1,0,0,0,176,2890, + 1,0,0,0,178,2892,1,0,0,0,180,2894,1,0,0,0,182,2896,1,0,0,0,184,2898, + 1,0,0,0,186,2908,1,0,0,0,188,2910,1,0,0,0,190,2983,1,0,0,0,192,3001, + 1,0,0,0,194,3005,1,0,0,0,196,3007,1,0,0,0,198,3012,1,0,0,0,200,3081, + 1,0,0,0,202,3083,1,0,0,0,204,3100,1,0,0,0,206,3164,1,0,0,0,208,3175, + 1,0,0,0,210,3177,1,0,0,0,212,3217,1,0,0,0,214,3249,1,0,0,0,216,3251, + 1,0,0,0,218,3259,1,0,0,0,220,3266,1,0,0,0,222,3275,1,0,0,0,224,3282, + 1,0,0,0,226,3289,1,0,0,0,228,3291,1,0,0,0,230,3299,1,0,0,0,232,3310, + 1,0,0,0,234,3324,1,0,0,0,236,3339,1,0,0,0,238,3343,1,0,0,0,240,3365, + 1,0,0,0,242,3466,1,0,0,0,244,3468,1,0,0,0,246,3473,1,0,0,0,248,3478, + 1,0,0,0,250,3481,1,0,0,0,252,3498,1,0,0,0,254,3508,1,0,0,0,256,3513, + 1,0,0,0,258,3516,1,0,0,0,260,3522,1,0,0,0,262,3535,1,0,0,0,264,3548, + 1,0,0,0,266,3561,1,0,0,0,268,3574,1,0,0,0,270,3581,1,0,0,0,272,3588, + 1,0,0,0,274,3590,1,0,0,0,276,3592,1,0,0,0,278,3594,1,0,0,0,280,3596, + 1,0,0,0,282,3600,1,0,0,0,284,3602,1,0,0,0,286,3604,1,0,0,0,288,3606, + 1,0,0,0,290,3614,1,0,0,0,292,3620,1,0,0,0,294,3625,1,0,0,0,296,3632, + 1,0,0,0,298,3634,1,0,0,0,300,3649,1,0,0,0,302,3656,1,0,0,0,304,3670, + 1,0,0,0,306,3674,1,0,0,0,308,3676,1,0,0,0,310,312,3,2,1,0,311,310, + 1,0,0,0,312,315,1,0,0,0,313,311,1,0,0,0,313,314,1,0,0,0,314,316, + 1,0,0,0,315,313,1,0,0,0,316,317,5,0,0,1,317,1,1,0,0,0,318,319,3, + 4,2,0,319,3,1,0,0,0,320,322,3,16,8,0,321,323,5,326,0,0,322,321,1, + 0,0,0,322,323,1,0,0,0,323,5,1,0,0,0,324,326,3,142,71,0,325,327,5, + 326,0,0,326,325,1,0,0,0,326,327,1,0,0,0,327,7,1,0,0,0,328,330,3, + 228,114,0,329,331,5,326,0,0,330,329,1,0,0,0,330,331,1,0,0,0,331, + 9,1,0,0,0,332,334,3,190,95,0,333,335,5,326,0,0,334,333,1,0,0,0,334, + 335,1,0,0,0,335,11,1,0,0,0,336,338,3,210,105,0,337,339,5,326,0,0, + 338,337,1,0,0,0,338,339,1,0,0,0,339,13,1,0,0,0,340,341,3,230,115, + 0,341,342,5,0,0,1,342,15,1,0,0,0,343,1239,3,18,9,0,344,345,5,289, + 0,0,345,1239,3,270,135,0,346,347,5,54,0,0,347,351,5,42,0,0,348,349, + 5,120,0,0,349,350,5,183,0,0,350,352,5,95,0,0,351,348,1,0,0,0,351, + 352,1,0,0,0,352,353,1,0,0,0,353,354,3,276,138,0,354,355,5,291,0, + 0,355,358,3,302,151,0,356,357,5,47,0,0,357,359,3,174,87,0,358,356, + 1,0,0,0,358,359,1,0,0,0,359,362,1,0,0,0,360,361,5,31,0,0,361,363, + 3,296,148,0,362,360,1,0,0,0,362,363,1,0,0,0,363,366,1,0,0,0,364, + 365,5,305,0,0,365,367,3,32,16,0,366,364,1,0,0,0,366,367,1,0,0,0, + 367,1239,1,0,0,0,368,369,5,84,0,0,369,372,5,42,0,0,370,371,5,120, + 0,0,371,373,5,95,0,0,372,370,1,0,0,0,372,373,1,0,0,0,373,374,1,0, + 0,0,374,376,3,274,137,0,375,377,7,0,0,0,376,375,1,0,0,0,376,377, + 1,0,0,0,377,1239,1,0,0,0,378,379,5,54,0,0,379,383,5,244,0,0,380, + 381,5,120,0,0,381,382,5,183,0,0,382,384,5,95,0,0,383,380,1,0,0,0, + 383,384,1,0,0,0,384,385,1,0,0,0,385,388,3,272,136,0,386,387,5,31, + 0,0,387,389,3,296,148,0,388,386,1,0,0,0,388,389,1,0,0,0,389,392, + 1,0,0,0,390,391,5,305,0,0,391,393,3,32,16,0,392,390,1,0,0,0,392, + 393,1,0,0,0,393,1239,1,0,0,0,394,395,5,84,0,0,395,398,5,244,0,0, + 396,397,5,120,0,0,397,399,5,95,0,0,398,396,1,0,0,0,398,399,1,0,0, + 0,399,400,1,0,0,0,400,402,3,270,135,0,401,403,7,0,0,0,402,401,1, + 0,0,0,402,403,1,0,0,0,403,1239,1,0,0,0,404,405,5,23,0,0,405,406, + 5,244,0,0,406,407,3,270,135,0,407,408,5,224,0,0,408,409,5,270,0, + 0,409,410,3,272,136,0,410,1239,1,0,0,0,411,412,5,23,0,0,412,413, + 5,244,0,0,413,414,3,270,135,0,414,415,5,252,0,0,415,416,5,31,0,0, + 416,417,3,296,148,0,417,1239,1,0,0,0,418,421,5,54,0,0,419,420,5, + 195,0,0,420,422,5,227,0,0,421,419,1,0,0,0,421,422,1,0,0,0,422,423, + 1,0,0,0,423,427,5,261,0,0,424,425,5,120,0,0,425,426,5,183,0,0,426, + 428,5,95,0,0,427,424,1,0,0,0,427,428,1,0,0,0,428,429,1,0,0,0,429, + 431,3,264,132,0,430,432,3,110,55,0,431,430,1,0,0,0,431,432,1,0,0, + 0,432,435,1,0,0,0,433,434,5,47,0,0,434,436,3,174,87,0,435,433,1, + 0,0,0,435,436,1,0,0,0,436,439,1,0,0,0,437,438,5,305,0,0,438,440, + 3,32,16,0,439,437,1,0,0,0,439,440,1,0,0,0,440,441,1,0,0,0,441,447, + 5,28,0,0,442,448,3,18,9,0,443,444,5,1,0,0,444,445,3,18,9,0,445,446, + 5,2,0,0,446,448,1,0,0,0,447,442,1,0,0,0,447,443,1,0,0,0,448,454, + 1,0,0,0,449,451,5,305,0,0,450,452,5,180,0,0,451,450,1,0,0,0,451, + 452,1,0,0,0,452,453,1,0,0,0,453,455,5,66,0,0,454,449,1,0,0,0,454, + 455,1,0,0,0,455,1239,1,0,0,0,456,459,5,54,0,0,457,458,5,195,0,0, + 458,460,5,227,0,0,459,457,1,0,0,0,459,460,1,0,0,0,460,461,1,0,0, + 0,461,465,5,261,0,0,462,463,5,120,0,0,463,464,5,183,0,0,464,466, + 5,95,0,0,465,462,1,0,0,0,465,466,1,0,0,0,466,467,1,0,0,0,467,468, + 3,264,132,0,468,469,5,1,0,0,469,474,3,26,13,0,470,471,5,3,0,0,471, + 473,3,26,13,0,472,470,1,0,0,0,473,476,1,0,0,0,474,472,1,0,0,0,474, + 475,1,0,0,0,475,477,1,0,0,0,476,474,1,0,0,0,477,480,5,2,0,0,478, + 479,5,47,0,0,479,481,3,174,87,0,480,478,1,0,0,0,480,481,1,0,0,0, + 481,484,1,0,0,0,482,483,5,305,0,0,483,485,3,32,16,0,484,482,1,0, + 0,0,484,485,1,0,0,0,485,1239,1,0,0,0,486,487,5,84,0,0,487,490,5, + 261,0,0,488,489,5,120,0,0,489,491,5,95,0,0,490,488,1,0,0,0,490,491, + 1,0,0,0,491,492,1,0,0,0,492,1239,3,262,131,0,493,494,5,128,0,0,494, + 495,5,131,0,0,495,497,3,262,131,0,496,498,3,112,56,0,497,496,1,0, + 0,0,497,498,1,0,0,0,498,499,1,0,0,0,499,500,3,18,9,0,500,1239,1, + 0,0,0,501,502,5,74,0,0,502,503,5,106,0,0,503,505,3,262,131,0,504, + 506,3,54,27,0,505,504,1,0,0,0,505,506,1,0,0,0,506,1239,1,0,0,0,507, + 508,5,275,0,0,508,509,5,261,0,0,509,1239,3,262,131,0,510,511,5,47, + 0,0,511,512,5,191,0,0,512,513,5,261,0,0,513,514,3,262,131,0,514, + 517,5,134,0,0,515,518,3,174,87,0,516,518,5,184,0,0,517,515,1,0,0, + 0,517,516,1,0,0,0,518,1239,1,0,0,0,519,520,5,47,0,0,520,521,5,191, + 0,0,521,522,5,300,0,0,522,523,3,266,133,0,523,526,5,134,0,0,524, + 527,3,174,87,0,525,527,5,184,0,0,526,524,1,0,0,0,526,525,1,0,0,0, + 527,1239,1,0,0,0,528,529,5,47,0,0,529,530,5,191,0,0,530,531,5,45, + 0,0,531,532,3,282,141,0,532,535,5,134,0,0,533,536,3,174,87,0,534, + 536,5,184,0,0,535,533,1,0,0,0,535,534,1,0,0,0,536,1239,1,0,0,0,537, + 538,5,23,0,0,538,541,5,261,0,0,539,540,5,120,0,0,540,542,5,95,0, + 0,541,539,1,0,0,0,541,542,1,0,0,0,542,543,1,0,0,0,543,544,3,262, + 131,0,544,545,5,224,0,0,545,546,5,270,0,0,546,547,3,264,132,0,547, + 1239,1,0,0,0,548,549,5,23,0,0,549,552,5,261,0,0,550,551,5,120,0, + 0,551,553,5,95,0,0,552,550,1,0,0,0,552,553,1,0,0,0,553,554,1,0,0, + 0,554,555,3,262,131,0,555,556,5,19,0,0,556,560,5,45,0,0,557,558, + 5,120,0,0,558,559,5,183,0,0,559,561,5,95,0,0,560,557,1,0,0,0,560, + 561,1,0,0,0,561,562,1,0,0,0,562,563,3,28,14,0,563,1239,1,0,0,0,564, + 565,5,23,0,0,565,568,5,261,0,0,566,567,5,120,0,0,567,569,5,95,0, + 0,568,566,1,0,0,0,568,569,1,0,0,0,569,570,1,0,0,0,570,571,3,262, + 131,0,571,572,5,224,0,0,572,575,5,45,0,0,573,574,5,120,0,0,574,576, + 5,95,0,0,575,573,1,0,0,0,575,576,1,0,0,0,576,577,1,0,0,0,577,578, + 3,282,141,0,578,579,5,270,0,0,579,580,3,286,143,0,580,1239,1,0,0, + 0,581,582,5,23,0,0,582,585,5,261,0,0,583,584,5,120,0,0,584,586,5, + 95,0,0,585,583,1,0,0,0,585,586,1,0,0,0,586,587,1,0,0,0,587,588,3, + 262,131,0,588,589,5,84,0,0,589,592,5,45,0,0,590,591,5,120,0,0,591, + 593,5,95,0,0,592,590,1,0,0,0,592,593,1,0,0,0,593,594,1,0,0,0,594, + 595,3,282,141,0,595,1239,1,0,0,0,596,597,5,23,0,0,597,600,5,261, + 0,0,598,599,5,120,0,0,599,601,5,95,0,0,600,598,1,0,0,0,600,601,1, + 0,0,0,601,602,1,0,0,0,602,603,3,262,131,0,603,604,5,23,0,0,604,605, + 5,45,0,0,605,606,3,282,141,0,606,607,5,252,0,0,607,608,5,66,0,0, + 608,609,5,277,0,0,609,610,3,190,95,0,610,1239,1,0,0,0,611,612,5, + 23,0,0,612,615,5,261,0,0,613,614,5,120,0,0,614,616,5,95,0,0,615, + 613,1,0,0,0,615,616,1,0,0,0,616,617,1,0,0,0,617,618,3,262,131,0, + 618,619,5,23,0,0,619,620,5,45,0,0,620,621,3,282,141,0,621,622,5, + 84,0,0,622,623,5,183,0,0,623,624,5,184,0,0,624,1239,1,0,0,0,625, + 626,5,23,0,0,626,627,5,261,0,0,627,628,3,262,131,0,628,629,5,252, + 0,0,629,630,5,31,0,0,630,631,3,296,148,0,631,1239,1,0,0,0,632,633, + 5,23,0,0,633,634,5,261,0,0,634,635,3,262,131,0,635,636,5,252,0,0, + 636,637,5,217,0,0,637,638,3,34,17,0,638,1239,1,0,0,0,639,640,5,23, + 0,0,640,641,5,261,0,0,641,642,3,262,131,0,642,643,5,94,0,0,643,656, + 3,278,139,0,644,653,5,1,0,0,645,650,3,224,112,0,646,647,5,3,0,0, + 647,649,3,224,112,0,648,646,1,0,0,0,649,652,1,0,0,0,650,648,1,0, + 0,0,650,651,1,0,0,0,651,654,1,0,0,0,652,650,1,0,0,0,653,645,1,0, + 0,0,653,654,1,0,0,0,654,655,1,0,0,0,655,657,5,2,0,0,656,644,1,0, + 0,0,656,657,1,0,0,0,657,659,1,0,0,0,658,660,3,54,27,0,659,658,1, + 0,0,0,659,660,1,0,0,0,660,1239,1,0,0,0,661,662,5,24,0,0,662,665, + 3,262,131,0,663,664,5,305,0,0,664,666,3,32,16,0,665,663,1,0,0,0, + 665,666,1,0,0,0,666,1239,1,0,0,0,667,670,5,54,0,0,668,669,5,195, + 0,0,669,671,5,227,0,0,670,668,1,0,0,0,670,671,1,0,0,0,671,672,1, + 0,0,0,672,673,5,168,0,0,673,677,5,300,0,0,674,675,5,120,0,0,675, + 676,5,183,0,0,676,678,5,95,0,0,677,674,1,0,0,0,677,678,1,0,0,0,678, + 679,1,0,0,0,679,683,3,268,134,0,680,681,5,110,0,0,681,682,5,209, + 0,0,682,684,3,184,92,0,683,680,1,0,0,0,683,684,1,0,0,0,684,687,1, + 0,0,0,685,686,5,47,0,0,686,688,3,174,87,0,687,685,1,0,0,0,687,688, + 1,0,0,0,688,691,1,0,0,0,689,690,5,305,0,0,690,692,3,32,16,0,691, + 689,1,0,0,0,691,692,1,0,0,0,692,693,1,0,0,0,693,694,5,28,0,0,694, + 695,3,18,9,0,695,1239,1,0,0,0,696,699,5,54,0,0,697,698,5,195,0,0, + 698,700,5,227,0,0,699,697,1,0,0,0,699,700,1,0,0,0,700,701,1,0,0, + 0,701,702,5,300,0,0,702,705,3,268,134,0,703,704,5,47,0,0,704,706, + 3,174,87,0,705,703,1,0,0,0,705,706,1,0,0,0,706,709,1,0,0,0,707,708, + 5,247,0,0,708,710,7,1,0,0,709,707,1,0,0,0,709,710,1,0,0,0,710,713, + 1,0,0,0,711,712,5,305,0,0,712,714,3,32,16,0,713,711,1,0,0,0,713, + 714,1,0,0,0,714,715,1,0,0,0,715,716,5,28,0,0,716,717,3,18,9,0,717, + 1239,1,0,0,0,718,719,5,223,0,0,719,720,5,168,0,0,720,721,5,300,0, + 0,721,1239,3,266,133,0,722,723,5,84,0,0,723,724,5,168,0,0,724,727, + 5,300,0,0,725,726,5,120,0,0,726,728,5,95,0,0,727,725,1,0,0,0,727, + 728,1,0,0,0,728,729,1,0,0,0,729,1239,3,266,133,0,730,731,5,23,0, + 0,731,732,5,168,0,0,732,735,5,300,0,0,733,734,5,120,0,0,734,736, + 5,95,0,0,735,733,1,0,0,0,735,736,1,0,0,0,736,737,1,0,0,0,737,738, + 3,266,133,0,738,739,5,224,0,0,739,740,5,270,0,0,740,741,3,268,134, + 0,741,1239,1,0,0,0,742,743,5,23,0,0,743,744,5,168,0,0,744,745,5, + 300,0,0,745,746,3,266,133,0,746,747,5,252,0,0,747,748,5,217,0,0, + 748,749,3,34,17,0,749,1239,1,0,0,0,750,751,5,84,0,0,751,754,5,300, + 0,0,752,753,5,120,0,0,753,755,5,95,0,0,754,752,1,0,0,0,754,755,1, + 0,0,0,755,756,1,0,0,0,756,1239,3,266,133,0,757,758,5,23,0,0,758, + 759,5,300,0,0,759,760,3,266,133,0,760,761,5,224,0,0,761,762,5,270, + 0,0,762,763,3,268,134,0,763,1239,1,0,0,0,764,765,5,23,0,0,765,766, + 5,300,0,0,766,767,3,266,133,0,767,768,5,252,0,0,768,769,5,31,0,0, + 769,770,3,296,148,0,770,1239,1,0,0,0,771,772,5,37,0,0,772,773,3, + 278,139,0,773,782,5,1,0,0,774,779,3,224,112,0,775,776,5,3,0,0,776, + 778,3,224,112,0,777,775,1,0,0,0,778,781,1,0,0,0,779,777,1,0,0,0, + 779,780,1,0,0,0,780,783,1,0,0,0,781,779,1,0,0,0,782,774,1,0,0,0, + 782,783,1,0,0,0,783,784,1,0,0,0,784,785,5,2,0,0,785,1239,1,0,0,0, + 786,789,5,54,0,0,787,788,5,195,0,0,788,790,5,227,0,0,789,787,1,0, + 0,0,789,790,1,0,0,0,790,791,1,0,0,0,791,1239,3,230,115,0,792,793, + 5,84,0,0,793,796,5,108,0,0,794,795,5,120,0,0,795,797,5,95,0,0,796, + 794,1,0,0,0,796,797,1,0,0,0,797,798,1,0,0,0,798,1239,3,234,117,0, + 799,800,5,54,0,0,800,801,5,236,0,0,801,805,3,302,151,0,802,803,5, + 305,0,0,803,804,5,20,0,0,804,806,3,294,147,0,805,802,1,0,0,0,805, + 806,1,0,0,0,806,809,1,0,0,0,807,808,5,123,0,0,808,810,3,274,137, + 0,809,807,1,0,0,0,809,810,1,0,0,0,810,1239,1,0,0,0,811,812,5,84, + 0,0,812,813,5,236,0,0,813,816,3,302,151,0,814,815,5,123,0,0,815, + 817,3,274,137,0,816,814,1,0,0,0,816,817,1,0,0,0,817,1239,1,0,0,0, + 818,819,5,111,0,0,819,824,3,300,150,0,820,821,5,3,0,0,821,823,3, + 300,150,0,822,820,1,0,0,0,823,826,1,0,0,0,824,822,1,0,0,0,824,825, + 1,0,0,0,825,827,1,0,0,0,826,824,1,0,0,0,827,828,5,270,0,0,828,833, + 3,296,148,0,829,830,5,3,0,0,830,832,3,296,148,0,831,829,1,0,0,0, + 832,835,1,0,0,0,833,831,1,0,0,0,833,834,1,0,0,0,834,839,1,0,0,0, + 835,833,1,0,0,0,836,837,5,305,0,0,837,838,5,20,0,0,838,840,5,194, + 0,0,839,836,1,0,0,0,839,840,1,0,0,0,840,844,1,0,0,0,841,842,5,112, + 0,0,842,843,5,36,0,0,843,845,3,294,147,0,844,841,1,0,0,0,844,845, + 1,0,0,0,845,848,1,0,0,0,846,847,5,123,0,0,847,849,3,274,137,0,848, + 846,1,0,0,0,848,849,1,0,0,0,849,1239,1,0,0,0,850,861,5,111,0,0,851, + 856,3,300,150,0,852,853,5,3,0,0,853,855,3,300,150,0,854,852,1,0, + 0,0,855,858,1,0,0,0,856,854,1,0,0,0,856,857,1,0,0,0,857,862,1,0, + 0,0,858,856,1,0,0,0,859,860,5,22,0,0,860,862,5,216,0,0,861,851,1, + 0,0,0,861,859,1,0,0,0,862,863,1,0,0,0,863,864,5,191,0,0,864,865, + 3,258,129,0,865,866,5,270,0,0,866,870,3,296,148,0,867,868,5,305, + 0,0,868,869,5,111,0,0,869,871,5,194,0,0,870,867,1,0,0,0,870,871, + 1,0,0,0,871,1239,1,0,0,0,872,876,5,234,0,0,873,874,5,20,0,0,874, + 875,5,194,0,0,875,877,5,104,0,0,876,873,1,0,0,0,876,877,1,0,0,0, + 877,878,1,0,0,0,878,883,3,300,150,0,879,880,5,3,0,0,880,882,3,300, + 150,0,881,879,1,0,0,0,882,885,1,0,0,0,883,881,1,0,0,0,883,884,1, + 0,0,0,884,886,1,0,0,0,885,883,1,0,0,0,886,887,5,106,0,0,887,892, + 3,296,148,0,888,889,5,3,0,0,889,891,3,296,148,0,890,888,1,0,0,0, + 891,894,1,0,0,0,892,890,1,0,0,0,892,893,1,0,0,0,893,898,1,0,0,0, + 894,892,1,0,0,0,895,896,5,112,0,0,896,897,5,36,0,0,897,899,3,294, + 147,0,898,895,1,0,0,0,898,899,1,0,0,0,899,902,1,0,0,0,900,901,5, + 123,0,0,901,903,3,274,137,0,902,900,1,0,0,0,902,903,1,0,0,0,903, + 1239,1,0,0,0,904,908,5,234,0,0,905,906,5,111,0,0,906,907,5,194,0, + 0,907,909,5,104,0,0,908,905,1,0,0,0,908,909,1,0,0,0,909,920,1,0, 0,0,910,915,3,300,150,0,911,912,5,3,0,0,912,914,3,300,150,0,913, 911,1,0,0,0,914,917,1,0,0,0,915,913,1,0,0,0,915,916,1,0,0,0,916, - 921,1,0,0,0,917,915,1,0,0,0,918,919,5,22,0,0,919,921,5,215,0,0,920, - 910,1,0,0,0,920,918,1,0,0,0,921,922,1,0,0,0,922,923,5,190,0,0,923, - 924,3,258,129,0,924,925,5,105,0,0,925,926,3,296,148,0,926,1239,1, - 0,0,0,927,938,5,74,0,0,928,933,3,254,127,0,929,930,5,3,0,0,930,932, + 921,1,0,0,0,917,915,1,0,0,0,918,919,5,22,0,0,919,921,5,216,0,0,920, + 910,1,0,0,0,920,918,1,0,0,0,921,922,1,0,0,0,922,923,5,191,0,0,923, + 924,3,258,129,0,924,925,5,106,0,0,925,926,3,296,148,0,926,1239,1, + 0,0,0,927,938,5,75,0,0,928,933,3,254,127,0,929,930,5,3,0,0,930,932, 3,254,127,0,931,929,1,0,0,0,932,935,1,0,0,0,933,931,1,0,0,0,933, 934,1,0,0,0,934,939,1,0,0,0,935,933,1,0,0,0,936,937,5,22,0,0,937, - 939,5,215,0,0,938,928,1,0,0,0,938,936,1,0,0,0,939,940,1,0,0,0,940, - 941,5,190,0,0,941,942,3,258,129,0,942,943,5,269,0,0,943,944,3,296, - 148,0,944,1239,1,0,0,0,945,946,5,251,0,0,946,950,5,235,0,0,947,951, - 5,22,0,0,948,951,5,180,0,0,949,951,3,302,151,0,950,947,1,0,0,0,950, - 948,1,0,0,0,950,949,1,0,0,0,951,954,1,0,0,0,952,953,5,122,0,0,953, + 939,5,216,0,0,938,928,1,0,0,0,938,936,1,0,0,0,939,940,1,0,0,0,940, + 941,5,191,0,0,941,942,3,258,129,0,942,943,5,270,0,0,943,944,3,296, + 148,0,944,1239,1,0,0,0,945,946,5,252,0,0,946,950,5,236,0,0,947,951, + 5,22,0,0,948,951,5,181,0,0,949,951,3,302,151,0,950,947,1,0,0,0,950, + 948,1,0,0,0,950,949,1,0,0,0,951,954,1,0,0,0,952,953,5,123,0,0,953, 955,3,274,137,0,954,952,1,0,0,0,954,955,1,0,0,0,955,1239,1,0,0,0, - 956,957,5,253,0,0,957,960,5,112,0,0,958,959,5,190,0,0,959,961,3, + 956,957,5,254,0,0,957,960,5,113,0,0,958,959,5,191,0,0,959,961,3, 258,129,0,960,958,1,0,0,0,960,961,1,0,0,0,961,1239,1,0,0,0,962,974, - 5,95,0,0,963,964,5,1,0,0,964,969,3,218,109,0,965,966,5,3,0,0,966, + 5,96,0,0,963,964,5,1,0,0,964,969,3,218,109,0,965,966,5,3,0,0,966, 968,3,218,109,0,967,965,1,0,0,0,968,971,1,0,0,0,969,967,1,0,0,0, 969,970,1,0,0,0,970,972,1,0,0,0,971,969,1,0,0,0,972,973,5,2,0,0, 973,975,1,0,0,0,974,963,1,0,0,0,974,975,1,0,0,0,975,976,1,0,0,0, - 976,1239,3,16,8,0,977,978,5,95,0,0,978,980,5,24,0,0,979,981,5,297, + 976,1239,3,16,8,0,977,978,5,96,0,0,978,980,5,24,0,0,979,981,5,298, 0,0,980,979,1,0,0,0,980,981,1,0,0,0,981,982,1,0,0,0,982,1239,3,16, - 8,0,983,984,5,253,0,0,984,985,5,53,0,0,985,986,5,260,0,0,986,1239, - 3,262,131,0,987,988,5,253,0,0,988,989,5,53,0,0,989,990,5,243,0,0, - 990,1239,3,270,135,0,991,992,5,253,0,0,992,993,5,53,0,0,993,994, - 5,299,0,0,994,1239,3,266,133,0,995,996,5,253,0,0,996,997,5,53,0, - 0,997,998,5,167,0,0,998,999,5,299,0,0,999,1239,3,266,133,0,1000, - 1001,5,253,0,0,1001,1002,5,53,0,0,1002,1003,5,107,0,0,1003,1239, - 3,278,139,0,1004,1005,5,253,0,0,1005,1008,5,261,0,0,1006,1007,7, + 8,0,983,984,5,254,0,0,984,985,5,54,0,0,985,986,5,261,0,0,986,1239, + 3,262,131,0,987,988,5,254,0,0,988,989,5,54,0,0,989,990,5,244,0,0, + 990,1239,3,270,135,0,991,992,5,254,0,0,992,993,5,54,0,0,993,994, + 5,300,0,0,994,1239,3,266,133,0,995,996,5,254,0,0,996,997,5,54,0, + 0,997,998,5,168,0,0,998,999,5,300,0,0,999,1239,3,266,133,0,1000, + 1001,5,254,0,0,1001,1002,5,54,0,0,1002,1003,5,108,0,0,1003,1239, + 3,278,139,0,1004,1005,5,254,0,0,1005,1008,5,262,0,0,1006,1007,7, 2,0,0,1007,1009,3,270,135,0,1008,1006,1,0,0,0,1008,1009,1,0,0,0, - 1009,1016,1,0,0,0,1010,1011,5,154,0,0,1011,1014,3,174,87,0,1012, - 1013,5,90,0,0,1013,1015,3,174,87,0,1014,1012,1,0,0,0,1014,1015,1, + 1009,1016,1,0,0,0,1010,1011,5,155,0,0,1011,1014,3,174,87,0,1012, + 1013,5,91,0,0,1013,1015,3,174,87,0,1014,1012,1,0,0,0,1014,1015,1, 0,0,0,1015,1017,1,0,0,0,1016,1010,1,0,0,0,1016,1017,1,0,0,0,1017, - 1239,1,0,0,0,1018,1019,5,253,0,0,1019,1022,5,244,0,0,1020,1021,7, + 1239,1,0,0,0,1018,1019,5,254,0,0,1019,1022,5,245,0,0,1020,1021,7, 2,0,0,1021,1023,3,274,137,0,1022,1020,1,0,0,0,1022,1023,1,0,0,0, - 1023,1030,1,0,0,0,1024,1025,5,154,0,0,1025,1028,3,174,87,0,1026, - 1027,5,90,0,0,1027,1029,3,174,87,0,1028,1026,1,0,0,0,1028,1029,1, + 1023,1030,1,0,0,0,1024,1025,5,155,0,0,1025,1028,3,174,87,0,1026, + 1027,5,91,0,0,1027,1029,3,174,87,0,1028,1026,1,0,0,0,1028,1029,1, 0,0,0,1029,1031,1,0,0,0,1030,1024,1,0,0,0,1030,1031,1,0,0,0,1031, - 1239,1,0,0,0,1032,1033,5,253,0,0,1033,1040,5,43,0,0,1034,1035,5, - 154,0,0,1035,1038,3,174,87,0,1036,1037,5,90,0,0,1037,1039,3,174, + 1239,1,0,0,0,1032,1033,5,254,0,0,1033,1040,5,43,0,0,1034,1035,5, + 155,0,0,1035,1038,3,174,87,0,1036,1037,5,91,0,0,1037,1039,3,174, 87,0,1038,1036,1,0,0,0,1038,1039,1,0,0,0,1039,1041,1,0,0,0,1040, - 1034,1,0,0,0,1040,1041,1,0,0,0,1041,1239,1,0,0,0,1042,1043,5,253, - 0,0,1043,1044,5,45,0,0,1044,1045,7,2,0,0,1045,1052,3,260,130,0,1046, - 1047,5,154,0,0,1047,1050,3,174,87,0,1048,1049,5,90,0,0,1049,1051, + 1034,1,0,0,0,1040,1041,1,0,0,0,1041,1239,1,0,0,0,1042,1043,5,254, + 0,0,1043,1044,5,46,0,0,1044,1045,7,2,0,0,1045,1052,3,260,130,0,1046, + 1047,5,155,0,0,1047,1050,3,174,87,0,1048,1049,5,91,0,0,1049,1051, 3,174,87,0,1050,1048,1,0,0,0,1050,1051,1,0,0,0,1051,1053,1,0,0,0, 1052,1046,1,0,0,0,1052,1053,1,0,0,0,1053,1239,1,0,0,0,1054,1055, - 5,253,0,0,1055,1056,5,256,0,0,1056,1057,5,103,0,0,1057,1239,3,260, - 130,0,1058,1059,5,253,0,0,1059,1060,5,256,0,0,1060,1061,5,103,0, + 5,254,0,0,1055,1056,5,257,0,0,1056,1057,5,104,0,0,1057,1239,3,260, + 130,0,1058,1059,5,254,0,0,1059,1060,5,257,0,0,1060,1061,5,104,0, 0,1061,1062,5,1,0,0,1062,1063,3,18,9,0,1063,1064,5,2,0,0,1064,1239, - 1,0,0,0,1065,1067,5,253,0,0,1066,1068,5,56,0,0,1067,1066,1,0,0,0, - 1067,1068,1,0,0,0,1068,1069,1,0,0,0,1069,1072,5,236,0,0,1070,1071, + 1,0,0,0,1065,1067,5,254,0,0,1066,1068,5,57,0,0,1067,1066,1,0,0,0, + 1067,1068,1,0,0,0,1068,1069,1,0,0,0,1069,1072,5,237,0,0,1070,1071, 7,2,0,0,1071,1073,3,274,137,0,1072,1070,1,0,0,0,1072,1073,1,0,0, - 0,1073,1239,1,0,0,0,1074,1075,5,253,0,0,1075,1076,5,235,0,0,1076, - 1079,5,112,0,0,1077,1078,7,2,0,0,1078,1080,3,274,137,0,1079,1077, - 1,0,0,0,1079,1080,1,0,0,0,1080,1239,1,0,0,0,1081,1082,5,76,0,0,1082, - 1239,3,260,130,0,1083,1084,5,75,0,0,1084,1239,3,260,130,0,1085,1086, - 5,253,0,0,1086,1089,5,108,0,0,1087,1088,7,2,0,0,1088,1090,3,270, + 0,1073,1239,1,0,0,0,1074,1075,5,254,0,0,1075,1076,5,236,0,0,1076, + 1079,5,113,0,0,1077,1078,7,2,0,0,1078,1080,3,274,137,0,1079,1077, + 1,0,0,0,1079,1080,1,0,0,0,1080,1239,1,0,0,0,1081,1082,5,77,0,0,1082, + 1239,3,260,130,0,1083,1084,5,76,0,0,1084,1239,3,260,130,0,1085,1086, + 5,254,0,0,1086,1089,5,109,0,0,1087,1088,7,2,0,0,1088,1090,3,270, 135,0,1089,1087,1,0,0,0,1089,1090,1,0,0,0,1090,1097,1,0,0,0,1091, - 1092,5,154,0,0,1092,1095,3,174,87,0,1093,1094,5,90,0,0,1094,1096, + 1092,5,155,0,0,1092,1095,3,174,87,0,1093,1094,5,91,0,0,1094,1096, 3,174,87,0,1095,1093,1,0,0,0,1095,1096,1,0,0,0,1096,1098,1,0,0,0, 1097,1091,1,0,0,0,1097,1098,1,0,0,0,1098,1239,1,0,0,0,1099,1100, - 5,253,0,0,1100,1107,5,250,0,0,1101,1102,5,154,0,0,1102,1105,3,174, - 87,0,1103,1104,5,90,0,0,1104,1106,3,174,87,0,1105,1103,1,0,0,0,1105, + 5,254,0,0,1100,1107,5,251,0,0,1101,1102,5,155,0,0,1102,1105,3,174, + 87,0,1103,1104,5,91,0,0,1104,1106,3,174,87,0,1105,1103,1,0,0,0,1105, 1106,1,0,0,0,1106,1108,1,0,0,0,1107,1101,1,0,0,0,1107,1108,1,0,0, - 0,1108,1239,1,0,0,0,1109,1110,5,251,0,0,1110,1111,5,250,0,0,1111, - 1112,5,31,0,0,1112,1239,3,306,153,0,1113,1114,5,227,0,0,1114,1115, - 5,250,0,0,1115,1239,5,31,0,0,1116,1117,5,251,0,0,1117,1118,5,250, - 0,0,1118,1119,3,288,144,0,1119,1120,5,312,0,0,1120,1121,3,142,71, - 0,1121,1239,1,0,0,0,1122,1123,5,227,0,0,1123,1124,5,250,0,0,1124, - 1239,3,288,144,0,1125,1126,5,255,0,0,1126,1135,5,271,0,0,1127,1132, + 0,1108,1239,1,0,0,0,1109,1110,5,252,0,0,1110,1111,5,251,0,0,1111, + 1112,5,31,0,0,1112,1239,3,306,153,0,1113,1114,5,228,0,0,1114,1115, + 5,251,0,0,1115,1239,5,31,0,0,1116,1117,5,252,0,0,1117,1118,5,251, + 0,0,1118,1119,3,288,144,0,1119,1120,5,313,0,0,1120,1121,3,142,71, + 0,1121,1239,1,0,0,0,1122,1123,5,228,0,0,1123,1124,5,251,0,0,1124, + 1239,3,288,144,0,1125,1126,5,256,0,0,1126,1135,5,272,0,0,1127,1132, 3,220,110,0,1128,1129,5,3,0,0,1129,1131,3,220,110,0,1130,1128,1, 0,0,0,1131,1134,1,0,0,0,1132,1130,1,0,0,0,1132,1133,1,0,0,0,1133, 1136,1,0,0,0,1134,1132,1,0,0,0,1135,1127,1,0,0,0,1135,1136,1,0,0, - 0,1136,1239,1,0,0,0,1137,1139,5,47,0,0,1138,1140,5,307,0,0,1139, - 1138,1,0,0,0,1139,1140,1,0,0,0,1140,1239,1,0,0,0,1141,1143,5,237, - 0,0,1142,1144,5,307,0,0,1143,1142,1,0,0,0,1143,1144,1,0,0,0,1144, - 1239,1,0,0,0,1145,1146,5,214,0,0,1146,1147,3,302,151,0,1147,1148, - 5,105,0,0,1148,1149,3,16,8,0,1149,1239,1,0,0,0,1150,1151,5,68,0, - 0,1151,1152,5,214,0,0,1152,1239,3,302,151,0,1153,1154,5,93,0,0,1154, - 1164,3,302,151,0,1155,1156,5,290,0,0,1156,1161,3,142,71,0,1157,1158, + 0,1136,1239,1,0,0,0,1137,1139,5,48,0,0,1138,1140,5,308,0,0,1139, + 1138,1,0,0,0,1139,1140,1,0,0,0,1140,1239,1,0,0,0,1141,1143,5,238, + 0,0,1142,1144,5,308,0,0,1143,1142,1,0,0,0,1143,1144,1,0,0,0,1144, + 1239,1,0,0,0,1145,1146,5,215,0,0,1146,1147,3,302,151,0,1147,1148, + 5,106,0,0,1148,1149,3,16,8,0,1149,1239,1,0,0,0,1150,1151,5,69,0, + 0,1151,1152,5,215,0,0,1152,1239,3,302,151,0,1153,1154,5,94,0,0,1154, + 1164,3,302,151,0,1155,1156,5,291,0,0,1156,1161,3,142,71,0,1157,1158, 5,3,0,0,1158,1160,3,142,71,0,1159,1157,1,0,0,0,1160,1163,1,0,0,0, 1161,1159,1,0,0,0,1161,1162,1,0,0,0,1162,1165,1,0,0,0,1163,1161, 1,0,0,0,1164,1155,1,0,0,0,1164,1165,1,0,0,0,1165,1239,1,0,0,0,1166, - 1167,5,93,0,0,1167,1168,5,121,0,0,1168,1178,3,174,87,0,1169,1170, - 5,290,0,0,1170,1175,3,142,71,0,1171,1172,5,3,0,0,1172,1174,3,142, + 1167,5,94,0,0,1167,1168,5,122,0,0,1168,1178,3,174,87,0,1169,1170, + 5,291,0,0,1170,1175,3,142,71,0,1171,1172,5,3,0,0,1172,1174,3,142, 71,0,1173,1171,1,0,0,0,1174,1177,1,0,0,0,1175,1173,1,0,0,0,1175, 1176,1,0,0,0,1176,1179,1,0,0,0,1177,1175,1,0,0,0,1178,1169,1,0,0, - 0,1178,1179,1,0,0,0,1179,1239,1,0,0,0,1180,1181,5,76,0,0,1181,1182, - 5,126,0,0,1182,1239,3,302,151,0,1183,1184,5,76,0,0,1184,1185,5,198, - 0,0,1185,1239,3,302,151,0,1186,1187,5,251,0,0,1187,1188,5,205,0, - 0,1188,1239,3,228,114,0,1189,1190,5,251,0,0,1190,1191,5,267,0,0, - 1191,1194,5,311,0,0,1192,1195,5,157,0,0,1193,1195,3,142,71,0,1194, - 1192,1,0,0,0,1194,1193,1,0,0,0,1195,1239,1,0,0,0,1196,1197,5,287, - 0,0,1197,1198,3,262,131,0,1198,1199,5,251,0,0,1199,1204,3,216,108, + 0,1178,1179,1,0,0,0,1179,1239,1,0,0,0,1180,1181,5,77,0,0,1181,1182, + 5,127,0,0,1182,1239,3,302,151,0,1183,1184,5,77,0,0,1184,1185,5,199, + 0,0,1185,1239,3,302,151,0,1186,1187,5,252,0,0,1187,1188,5,206,0, + 0,1188,1239,3,228,114,0,1189,1190,5,252,0,0,1190,1191,5,268,0,0, + 1191,1194,5,312,0,0,1192,1195,5,158,0,0,1193,1195,3,142,71,0,1194, + 1192,1,0,0,0,1194,1193,1,0,0,0,1195,1239,1,0,0,0,1196,1197,5,288, + 0,0,1197,1198,3,262,131,0,1198,1199,5,252,0,0,1199,1204,3,216,108, 0,1200,1201,5,3,0,0,1201,1203,3,216,108,0,1202,1200,1,0,0,0,1203, 1206,1,0,0,0,1204,1202,1,0,0,0,1204,1205,1,0,0,0,1205,1208,1,0,0, 0,1206,1204,1,0,0,0,1207,1209,3,54,27,0,1208,1207,1,0,0,0,1208,1209, - 1,0,0,0,1209,1239,1,0,0,0,1210,1211,5,169,0,0,1211,1212,5,130,0, + 1,0,0,0,1209,1239,1,0,0,0,1210,1211,5,170,0,0,1211,1212,5,131,0, 0,1212,1217,3,262,131,0,1213,1215,5,28,0,0,1214,1213,1,0,0,0,1214, 1215,1,0,0,0,1215,1216,1,0,0,0,1216,1218,3,302,151,0,1217,1214,1, - 0,0,0,1217,1218,1,0,0,0,1218,1219,1,0,0,0,1219,1220,5,290,0,0,1220, - 1221,3,78,39,0,1221,1222,5,190,0,0,1222,1224,3,142,71,0,1223,1225, + 0,0,0,1217,1218,1,0,0,0,1218,1219,1,0,0,0,1219,1220,5,291,0,0,1220, + 1221,3,78,39,0,1221,1222,5,191,0,0,1222,1224,3,142,71,0,1223,1225, 3,200,100,0,1224,1223,1,0,0,0,1225,1226,1,0,0,0,1226,1224,1,0,0, - 0,1226,1227,1,0,0,0,1227,1239,1,0,0,0,1228,1229,5,253,0,0,1229,1230, - 5,46,0,0,1230,1231,5,190,0,0,1231,1232,5,260,0,0,1232,1239,3,262, - 131,0,1233,1234,5,253,0,0,1234,1235,5,46,0,0,1235,1236,5,190,0,0, - 1236,1237,5,44,0,0,1237,1239,3,282,141,0,1238,343,1,0,0,0,1238,344, + 0,1226,1227,1,0,0,0,1227,1239,1,0,0,0,1228,1229,5,254,0,0,1229,1230, + 5,47,0,0,1230,1231,5,191,0,0,1231,1232,5,261,0,0,1232,1239,3,262, + 131,0,1233,1234,5,254,0,0,1234,1235,5,47,0,0,1235,1236,5,191,0,0, + 1236,1237,5,45,0,0,1237,1239,3,282,141,0,1238,343,1,0,0,0,1238,344, 1,0,0,0,1238,346,1,0,0,0,1238,368,1,0,0,0,1238,378,1,0,0,0,1238, 394,1,0,0,0,1238,404,1,0,0,0,1238,411,1,0,0,0,1238,418,1,0,0,0,1238, 456,1,0,0,0,1238,486,1,0,0,0,1238,493,1,0,0,0,1238,501,1,0,0,0,1238, @@ -17304,52 +17346,52 @@ export class TrinoSqlParser extends SQLParserBase { 1,0,0,0,1238,1210,1,0,0,0,1238,1228,1,0,0,0,1238,1233,1,0,0,0,1239, 17,1,0,0,0,1240,1242,3,20,10,0,1241,1240,1,0,0,0,1241,1242,1,0,0, 0,1242,1243,1,0,0,0,1243,1244,3,22,11,0,1244,19,1,0,0,0,1245,1246, - 5,304,0,0,1246,1251,3,230,115,0,1247,1248,5,3,0,0,1248,1250,3,230, + 5,305,0,0,1246,1251,3,230,115,0,1247,1248,5,3,0,0,1248,1250,3,230, 115,0,1249,1247,1,0,0,0,1250,1253,1,0,0,0,1251,1249,1,0,0,0,1251, 1252,1,0,0,0,1252,21,1,0,0,0,1253,1251,1,0,0,0,1254,1256,3,24,12, 0,1255,1254,1,0,0,0,1255,1256,1,0,0,0,1256,1257,1,0,0,0,1257,1258, - 3,40,20,0,1258,23,1,0,0,0,1259,1261,5,304,0,0,1260,1262,5,221,0, + 3,40,20,0,1258,23,1,0,0,0,1259,1261,5,305,0,0,1260,1262,5,222,0, 0,1261,1260,1,0,0,0,1261,1262,1,0,0,0,1262,1263,1,0,0,0,1263,1268, 3,72,36,0,1264,1265,5,3,0,0,1265,1267,3,72,36,0,1266,1264,1,0,0, 0,1267,1270,1,0,0,0,1268,1266,1,0,0,0,1268,1269,1,0,0,0,1269,25, 1,0,0,0,1270,1268,1,0,0,0,1271,1274,3,28,14,0,1272,1274,3,30,15, 0,1273,1271,1,0,0,0,1273,1272,1,0,0,0,1274,27,1,0,0,0,1275,1276, - 3,286,143,0,1276,1279,3,190,95,0,1277,1278,5,182,0,0,1278,1280,5, - 183,0,0,1279,1277,1,0,0,0,1279,1280,1,0,0,0,1280,1283,1,0,0,0,1281, - 1282,5,46,0,0,1282,1284,3,174,87,0,1283,1281,1,0,0,0,1283,1284,1, - 0,0,0,1284,1287,1,0,0,0,1285,1286,5,304,0,0,1286,1288,3,32,16,0, + 3,286,143,0,1276,1279,3,190,95,0,1277,1278,5,183,0,0,1278,1280,5, + 184,0,0,1279,1277,1,0,0,0,1279,1280,1,0,0,0,1280,1283,1,0,0,0,1281, + 1282,5,47,0,0,1282,1284,3,174,87,0,1283,1281,1,0,0,0,1283,1284,1, + 0,0,0,1284,1287,1,0,0,0,1285,1286,5,305,0,0,1286,1288,3,32,16,0, 1287,1285,1,0,0,0,1287,1288,1,0,0,0,1288,29,1,0,0,0,1289,1290,5, - 154,0,0,1290,1293,3,262,131,0,1291,1292,7,3,0,0,1292,1294,5,216, + 155,0,0,1290,1293,3,262,131,0,1291,1292,7,3,0,0,1292,1294,5,217, 0,0,1293,1291,1,0,0,0,1293,1294,1,0,0,0,1294,31,1,0,0,0,1295,1296, 5,1,0,0,1296,1297,3,34,17,0,1297,1298,5,2,0,0,1298,33,1,0,0,0,1299, 1304,3,36,18,0,1300,1301,5,3,0,0,1301,1303,3,36,18,0,1302,1300,1, 0,0,0,1303,1306,1,0,0,0,1304,1302,1,0,0,0,1304,1305,1,0,0,0,1305, - 35,1,0,0,0,1306,1304,1,0,0,0,1307,1308,3,302,151,0,1308,1309,5,312, - 0,0,1309,1310,3,38,19,0,1310,37,1,0,0,0,1311,1314,5,70,0,0,1312, + 35,1,0,0,0,1306,1304,1,0,0,0,1307,1308,3,302,151,0,1308,1309,5,313, + 0,0,1309,1310,3,38,19,0,1310,37,1,0,0,0,1311,1314,5,71,0,0,1312, 1314,3,142,71,0,1313,1311,1,0,0,0,1313,1312,1,0,0,0,1314,39,1,0, - 0,0,1315,1326,3,46,23,0,1316,1317,5,195,0,0,1317,1318,5,36,0,0,1318, + 0,0,1315,1326,3,46,23,0,1316,1317,5,196,0,0,1317,1318,5,36,0,0,1318, 1323,3,50,25,0,1319,1320,5,3,0,0,1320,1322,3,50,25,0,1321,1319,1, 0,0,0,1322,1325,1,0,0,0,1323,1321,1,0,0,0,1323,1324,1,0,0,0,1324, 1327,1,0,0,0,1325,1323,1,0,0,0,1326,1316,1,0,0,0,1326,1327,1,0,0, - 0,1327,1333,1,0,0,0,1328,1329,5,188,0,0,1329,1331,3,44,22,0,1330, + 0,1327,1333,1,0,0,0,1328,1329,5,189,0,0,1329,1331,3,44,22,0,1330, 1332,7,4,0,0,1331,1330,1,0,0,0,1331,1332,1,0,0,0,1332,1334,1,0,0, 0,1333,1328,1,0,0,0,1333,1334,1,0,0,0,1334,1348,1,0,0,0,1335,1336, - 5,155,0,0,1336,1349,3,42,21,0,1337,1338,5,98,0,0,1338,1340,7,5,0, + 5,156,0,0,1336,1349,3,42,21,0,1337,1338,5,99,0,0,1338,1340,7,5,0, 0,1339,1341,3,44,22,0,1340,1339,1,0,0,0,1340,1341,1,0,0,0,1341,1342, - 1,0,0,0,1342,1346,7,4,0,0,1343,1347,5,192,0,0,1344,1345,5,304,0, - 0,1345,1347,5,266,0,0,1346,1343,1,0,0,0,1346,1344,1,0,0,0,1347,1349, + 1,0,0,0,1342,1346,7,4,0,0,1343,1347,5,193,0,0,1344,1345,5,305,0, + 0,1345,1347,5,267,0,0,1346,1343,1,0,0,0,1346,1344,1,0,0,0,1347,1349, 1,0,0,0,1348,1335,1,0,0,0,1348,1337,1,0,0,0,1348,1349,1,0,0,0,1349, 41,1,0,0,0,1350,1353,5,22,0,0,1351,1353,3,44,22,0,1352,1350,1,0, 0,0,1352,1351,1,0,0,0,1353,43,1,0,0,0,1354,1355,7,6,0,0,1355,45, 1,0,0,0,1356,1357,6,23,-1,0,1357,1358,3,48,24,0,1358,1373,1,0,0, - 0,1359,1360,10,2,0,0,1360,1362,5,128,0,0,1361,1363,3,74,37,0,1362, + 0,1359,1360,10,2,0,0,1360,1362,5,129,0,0,1361,1363,3,74,37,0,1362, 1361,1,0,0,0,1362,1363,1,0,0,0,1363,1364,1,0,0,0,1364,1372,3,46, 23,3,1365,1366,10,1,0,0,1366,1368,7,7,0,0,1367,1369,3,74,37,0,1368, 1367,1,0,0,0,1368,1369,1,0,0,0,1369,1370,1,0,0,0,1370,1372,3,46, 23,2,1371,1359,1,0,0,0,1371,1365,1,0,0,0,1372,1375,1,0,0,0,1373, 1371,1,0,0,0,1373,1374,1,0,0,0,1374,47,1,0,0,0,1375,1373,1,0,0,0, - 1376,1393,3,52,26,0,1377,1378,5,260,0,0,1378,1393,3,262,131,0,1379, - 1380,5,296,0,0,1380,1385,3,142,71,0,1381,1382,5,3,0,0,1382,1384, + 1376,1393,3,52,26,0,1377,1378,5,261,0,0,1378,1393,3,262,131,0,1379, + 1380,5,297,0,0,1380,1385,3,142,71,0,1381,1382,5,3,0,0,1382,1384, 3,142,71,0,1383,1381,1,0,0,0,1384,1387,1,0,0,0,1385,1383,1,0,0,0, 1385,1386,1,0,0,0,1386,1393,1,0,0,0,1387,1385,1,0,0,0,1388,1389, 5,1,0,0,1389,1390,3,40,20,0,1390,1391,5,2,0,0,1391,1393,1,0,0,0, @@ -17357,40 +17399,40 @@ export class TrinoSqlParser extends SQLParserBase { 1,0,0,0,1393,49,1,0,0,0,1394,1397,3,282,141,0,1395,1397,3,142,71, 0,1396,1394,1,0,0,0,1396,1395,1,0,0,0,1397,1399,1,0,0,0,1398,1400, 7,8,0,0,1399,1398,1,0,0,0,1399,1400,1,0,0,0,1400,1403,1,0,0,0,1401, - 1402,5,185,0,0,1402,1404,7,9,0,0,1403,1401,1,0,0,0,1403,1404,1,0, - 0,0,1404,51,1,0,0,0,1405,1407,5,248,0,0,1406,1408,3,74,37,0,1407, + 1402,5,186,0,0,1402,1404,7,9,0,0,1403,1401,1,0,0,0,1403,1404,1,0, + 0,0,1404,51,1,0,0,0,1405,1407,5,249,0,0,1406,1408,3,74,37,0,1407, 1406,1,0,0,0,1407,1408,1,0,0,0,1408,1409,1,0,0,0,1409,1414,3,76, 38,0,1410,1411,5,3,0,0,1411,1413,3,76,38,0,1412,1410,1,0,0,0,1413, 1416,1,0,0,0,1414,1412,1,0,0,0,1414,1415,1,0,0,0,1415,1426,1,0,0, - 0,1416,1414,1,0,0,0,1417,1418,5,105,0,0,1418,1423,3,78,39,0,1419, + 0,1416,1414,1,0,0,0,1417,1418,5,106,0,0,1418,1423,3,78,39,0,1419, 1420,5,3,0,0,1420,1422,3,78,39,0,1421,1419,1,0,0,0,1422,1425,1,0, 0,0,1423,1421,1,0,0,0,1423,1424,1,0,0,0,1424,1427,1,0,0,0,1425,1423, 1,0,0,0,1426,1417,1,0,0,0,1426,1427,1,0,0,0,1427,1429,1,0,0,0,1428, 1430,3,54,27,0,1429,1428,1,0,0,0,1429,1430,1,0,0,0,1430,1434,1,0, - 0,0,1431,1432,5,114,0,0,1432,1433,5,36,0,0,1433,1435,3,58,29,0,1434, + 0,0,1431,1432,5,115,0,0,1432,1433,5,36,0,0,1433,1435,3,58,29,0,1434, 1431,1,0,0,0,1434,1435,1,0,0,0,1435,1437,1,0,0,0,1436,1438,3,56, 28,0,1437,1436,1,0,0,0,1437,1438,1,0,0,0,1438,1448,1,0,0,0,1439, - 1440,5,303,0,0,1440,1445,3,68,34,0,1441,1442,5,3,0,0,1442,1444,3, + 1440,5,304,0,0,1440,1445,3,68,34,0,1441,1442,5,3,0,0,1442,1444,3, 68,34,0,1443,1441,1,0,0,0,1444,1447,1,0,0,0,1445,1443,1,0,0,0,1445, 1446,1,0,0,0,1446,1449,1,0,0,0,1447,1445,1,0,0,0,1448,1439,1,0,0, - 0,1448,1449,1,0,0,0,1449,53,1,0,0,0,1450,1451,5,301,0,0,1451,1452, - 3,144,72,0,1452,55,1,0,0,0,1453,1454,5,117,0,0,1454,1455,3,144,72, + 0,1448,1449,1,0,0,0,1449,53,1,0,0,0,1450,1451,5,302,0,0,1451,1452, + 3,144,72,0,1452,55,1,0,0,0,1453,1454,5,118,0,0,1454,1455,3,144,72, 0,1455,57,1,0,0,0,1456,1458,3,74,37,0,1457,1456,1,0,0,0,1457,1458, 1,0,0,0,1458,1459,1,0,0,0,1459,1464,3,62,31,0,1460,1461,5,3,0,0, 1461,1463,3,62,31,0,1462,1460,1,0,0,0,1463,1466,1,0,0,0,1464,1462, 1,0,0,0,1464,1465,1,0,0,0,1465,59,1,0,0,0,1466,1464,1,0,0,0,1467, 1472,3,142,71,0,1468,1469,5,3,0,0,1469,1471,3,142,71,0,1470,1468, 1,0,0,0,1471,1474,1,0,0,0,1472,1470,1,0,0,0,1472,1473,1,0,0,0,1473, - 61,1,0,0,0,1474,1472,1,0,0,0,1475,1516,3,64,32,0,1476,1477,5,238, + 61,1,0,0,0,1474,1472,1,0,0,0,1475,1516,3,64,32,0,1476,1477,5,239, 0,0,1477,1486,5,1,0,0,1478,1483,3,64,32,0,1479,1480,5,3,0,0,1480, 1482,3,64,32,0,1481,1479,1,0,0,0,1482,1485,1,0,0,0,1483,1481,1,0, 0,0,1483,1484,1,0,0,0,1484,1487,1,0,0,0,1485,1483,1,0,0,0,1486,1478, 1,0,0,0,1486,1487,1,0,0,0,1487,1488,1,0,0,0,1488,1516,5,2,0,0,1489, - 1490,5,55,0,0,1490,1499,5,1,0,0,1491,1496,3,64,32,0,1492,1493,5, + 1490,5,56,0,0,1490,1499,5,1,0,0,1491,1496,3,64,32,0,1492,1493,5, 3,0,0,1493,1495,3,64,32,0,1494,1492,1,0,0,0,1495,1498,1,0,0,0,1496, 1494,1,0,0,0,1496,1497,1,0,0,0,1497,1500,1,0,0,0,1498,1496,1,0,0, 0,1499,1491,1,0,0,0,1499,1500,1,0,0,0,1500,1501,1,0,0,0,1501,1516, - 5,2,0,0,1502,1503,5,115,0,0,1503,1504,5,252,0,0,1504,1505,5,1,0, + 5,2,0,0,1502,1503,5,116,0,0,1503,1504,5,253,0,0,1504,1505,5,1,0, 0,1505,1510,3,64,32,0,1506,1507,5,3,0,0,1507,1509,3,64,32,0,1508, 1506,1,0,0,0,1509,1512,1,0,0,0,1510,1508,1,0,0,0,1510,1511,1,0,0, 0,1511,1513,1,0,0,0,1512,1510,1,0,0,0,1513,1514,5,2,0,0,1514,1516, @@ -17404,9 +17446,9 @@ export class TrinoSqlParser extends SQLParserBase { 0,1534,1532,1,0,0,0,1534,1533,1,0,0,0,1535,67,1,0,0,0,1536,1537, 3,302,151,0,1537,1538,5,28,0,0,1538,1539,5,1,0,0,1539,1540,3,70, 35,0,1540,1541,5,2,0,0,1541,69,1,0,0,0,1542,1544,3,302,151,0,1543, - 1542,1,0,0,0,1543,1544,1,0,0,0,1544,1548,1,0,0,0,1545,1546,5,201, + 1542,1,0,0,0,1543,1544,1,0,0,0,1544,1548,1,0,0,0,1545,1546,5,202, 0,0,1546,1547,5,36,0,0,1547,1549,3,60,30,0,1548,1545,1,0,0,0,1548, - 1549,1,0,0,0,1549,1560,1,0,0,0,1550,1551,5,195,0,0,1551,1552,5,36, + 1549,1,0,0,0,1549,1560,1,0,0,0,1550,1551,5,196,0,0,1551,1552,5,36, 0,0,1552,1557,3,50,25,0,1553,1554,5,3,0,0,1554,1556,3,50,25,0,1555, 1553,1,0,0,0,1556,1559,1,0,0,0,1557,1555,1,0,0,0,1557,1558,1,0,0, 0,1558,1561,1,0,0,0,1559,1557,1,0,0,0,1560,1550,1,0,0,0,1560,1561, @@ -17419,58 +17461,58 @@ export class TrinoSqlParser extends SQLParserBase { 1,0,0,0,1579,1584,1,0,0,0,1580,1582,5,28,0,0,1581,1580,1,0,0,0,1581, 1582,1,0,0,0,1582,1583,1,0,0,0,1583,1585,3,302,151,0,1584,1581,1, 0,0,0,1584,1585,1,0,0,0,1585,1595,1,0,0,0,1586,1587,3,150,75,0,1587, - 1588,5,4,0,0,1588,1591,5,320,0,0,1589,1590,5,28,0,0,1590,1592,3, + 1588,5,4,0,0,1588,1591,5,321,0,0,1589,1590,5,28,0,0,1590,1592,3, 114,57,0,1591,1589,1,0,0,0,1591,1592,1,0,0,0,1592,1595,1,0,0,0,1593, - 1595,5,320,0,0,1594,1578,1,0,0,0,1594,1586,1,0,0,0,1594,1593,1,0, + 1595,5,321,0,0,1594,1578,1,0,0,0,1594,1586,1,0,0,0,1594,1593,1,0, 0,0,1595,77,1,0,0,0,1596,1597,6,39,-1,0,1597,1598,3,84,42,0,1598, - 1617,1,0,0,0,1599,1613,10,2,0,0,1600,1601,5,54,0,0,1601,1602,5,136, - 0,0,1602,1614,3,84,42,0,1603,1604,3,80,40,0,1604,1605,5,136,0,0, + 1617,1,0,0,0,1599,1613,10,2,0,0,1600,1601,5,55,0,0,1601,1602,5,137, + 0,0,1602,1614,3,84,42,0,1603,1604,3,80,40,0,1604,1605,5,137,0,0, 1605,1606,3,78,39,0,1606,1607,3,82,41,0,1607,1614,1,0,0,0,1608,1609, - 5,172,0,0,1609,1610,3,80,40,0,1610,1611,5,136,0,0,1611,1612,3,84, + 5,173,0,0,1609,1610,3,80,40,0,1610,1611,5,137,0,0,1611,1612,3,84, 42,0,1612,1614,1,0,0,0,1613,1600,1,0,0,0,1613,1603,1,0,0,0,1613, 1608,1,0,0,0,1614,1616,1,0,0,0,1615,1599,1,0,0,0,1616,1619,1,0,0, 0,1617,1615,1,0,0,0,1617,1618,1,0,0,0,1618,79,1,0,0,0,1619,1617, - 1,0,0,0,1620,1622,5,125,0,0,1621,1620,1,0,0,0,1621,1622,1,0,0,0, - 1622,1636,1,0,0,0,1623,1625,5,152,0,0,1624,1626,5,197,0,0,1625,1624, - 1,0,0,0,1625,1626,1,0,0,0,1626,1636,1,0,0,0,1627,1629,5,234,0,0, - 1628,1630,5,197,0,0,1629,1628,1,0,0,0,1629,1630,1,0,0,0,1630,1636, - 1,0,0,0,1631,1633,5,106,0,0,1632,1634,5,197,0,0,1633,1632,1,0,0, + 1,0,0,0,1620,1622,5,126,0,0,1621,1620,1,0,0,0,1621,1622,1,0,0,0, + 1622,1636,1,0,0,0,1623,1625,5,153,0,0,1624,1626,5,198,0,0,1625,1624, + 1,0,0,0,1625,1626,1,0,0,0,1626,1636,1,0,0,0,1627,1629,5,235,0,0, + 1628,1630,5,198,0,0,1629,1628,1,0,0,0,1629,1630,1,0,0,0,1630,1636, + 1,0,0,0,1631,1633,5,107,0,0,1632,1634,5,198,0,0,1633,1632,1,0,0, 0,1633,1634,1,0,0,0,1634,1636,1,0,0,0,1635,1621,1,0,0,0,1635,1623, 1,0,0,0,1635,1627,1,0,0,0,1635,1631,1,0,0,0,1636,81,1,0,0,0,1637, - 1638,5,190,0,0,1638,1652,3,144,72,0,1639,1640,5,290,0,0,1640,1641, + 1638,5,191,0,0,1638,1652,3,144,72,0,1639,1640,5,291,0,0,1640,1641, 5,1,0,0,1641,1646,3,302,151,0,1642,1643,5,3,0,0,1643,1645,3,302, 151,0,1644,1642,1,0,0,0,1645,1648,1,0,0,0,1646,1644,1,0,0,0,1646, 1647,1,0,0,0,1647,1649,1,0,0,0,1648,1646,1,0,0,0,1649,1650,5,2,0, 0,1650,1652,1,0,0,0,1651,1637,1,0,0,0,1651,1639,1,0,0,0,1652,83, - 1,0,0,0,1653,1660,3,94,47,0,1654,1655,5,262,0,0,1655,1656,3,86,43, + 1,0,0,0,1653,1660,3,94,47,0,1654,1655,5,263,0,0,1655,1656,3,86,43, 0,1656,1657,5,1,0,0,1657,1658,3,142,71,0,1658,1659,5,2,0,0,1659, 1661,1,0,0,0,1660,1654,1,0,0,0,1660,1661,1,0,0,0,1661,85,1,0,0,0, 1662,1663,7,11,0,0,1663,87,1,0,0,0,1664,1665,7,12,0,0,1665,89,1, - 0,0,0,1666,1673,5,89,0,0,1667,1669,5,274,0,0,1668,1670,3,174,87, + 0,0,0,1666,1673,5,90,0,0,1667,1669,5,275,0,0,1668,1670,3,174,87, 0,1669,1668,1,0,0,0,1669,1670,1,0,0,0,1670,1671,1,0,0,0,1671,1673, 3,92,46,0,1672,1666,1,0,0,0,1672,1667,1,0,0,0,1673,91,1,0,0,0,1674, - 1675,5,304,0,0,1675,1679,5,51,0,0,1676,1677,5,306,0,0,1677,1679, - 5,51,0,0,1678,1674,1,0,0,0,1678,1676,1,0,0,0,1679,93,1,0,0,0,1680, - 1756,3,108,54,0,1681,1682,5,166,0,0,1682,1686,5,1,0,0,1683,1684, - 5,201,0,0,1684,1685,5,36,0,0,1685,1687,3,60,30,0,1686,1683,1,0,0, - 0,1686,1687,1,0,0,0,1687,1698,1,0,0,0,1688,1689,5,195,0,0,1689,1690, + 1675,5,305,0,0,1675,1679,5,52,0,0,1676,1677,5,307,0,0,1677,1679, + 5,52,0,0,1678,1674,1,0,0,0,1678,1676,1,0,0,0,1679,93,1,0,0,0,1680, + 1756,3,108,54,0,1681,1682,5,167,0,0,1682,1686,5,1,0,0,1683,1684, + 5,202,0,0,1684,1685,5,36,0,0,1685,1687,3,60,30,0,1686,1683,1,0,0, + 0,1686,1687,1,0,0,0,1687,1698,1,0,0,0,1688,1689,5,196,0,0,1689,1690, 5,36,0,0,1690,1695,3,50,25,0,1691,1692,5,3,0,0,1692,1694,3,50,25, 0,1693,1691,1,0,0,0,1694,1697,1,0,0,0,1695,1693,1,0,0,0,1695,1696, 1,0,0,0,1696,1699,1,0,0,0,1697,1695,1,0,0,0,1698,1688,1,0,0,0,1698, - 1699,1,0,0,0,1699,1709,1,0,0,0,1700,1701,5,168,0,0,1701,1706,3,96, + 1699,1,0,0,0,1699,1709,1,0,0,0,1700,1701,5,169,0,0,1701,1706,3,96, 48,0,1702,1703,5,3,0,0,1703,1705,3,96,48,0,1704,1702,1,0,0,0,1705, 1708,1,0,0,0,1706,1704,1,0,0,0,1706,1707,1,0,0,0,1707,1710,1,0,0, 0,1708,1706,1,0,0,0,1709,1700,1,0,0,0,1709,1710,1,0,0,0,1710,1712, 1,0,0,0,1711,1713,3,98,49,0,1712,1711,1,0,0,0,1712,1713,1,0,0,0, - 1713,1717,1,0,0,0,1714,1715,5,21,0,0,1715,1716,5,163,0,0,1716,1718, + 1713,1717,1,0,0,0,1714,1715,5,21,0,0,1715,1716,5,164,0,0,1716,1718, 3,102,51,0,1717,1714,1,0,0,0,1717,1718,1,0,0,0,1718,1720,1,0,0,0, 1719,1721,7,13,0,0,1720,1719,1,0,0,0,1720,1721,1,0,0,0,1721,1722, - 1,0,0,0,1722,1723,5,206,0,0,1723,1724,5,1,0,0,1724,1725,3,210,105, - 0,1725,1735,5,2,0,0,1726,1727,5,257,0,0,1727,1732,3,104,52,0,1728, + 1,0,0,0,1722,1723,5,207,0,0,1723,1724,5,1,0,0,1724,1725,3,210,105, + 0,1725,1735,5,2,0,0,1726,1727,5,258,0,0,1727,1732,3,104,52,0,1728, 1729,5,3,0,0,1729,1731,3,104,52,0,1730,1728,1,0,0,0,1731,1734,1, 0,0,0,1732,1730,1,0,0,0,1732,1733,1,0,0,0,1733,1736,1,0,0,0,1734, 1732,1,0,0,0,1735,1726,1,0,0,0,1735,1736,1,0,0,0,1736,1737,1,0,0, - 0,1737,1738,5,71,0,0,1738,1743,3,106,53,0,1739,1740,5,3,0,0,1740, + 0,1737,1738,5,72,0,0,1738,1743,3,106,53,0,1739,1740,5,3,0,0,1740, 1742,3,106,53,0,1741,1739,1,0,0,0,1742,1745,1,0,0,0,1743,1741,1, 0,0,0,1743,1744,1,0,0,0,1744,1746,1,0,0,0,1745,1743,1,0,0,0,1746, 1754,5,2,0,0,1747,1749,5,28,0,0,1748,1747,1,0,0,0,1748,1749,1,0, @@ -17478,23 +17520,23 @@ export class TrinoSqlParser extends SQLParserBase { 1752,1751,1,0,0,0,1752,1753,1,0,0,0,1753,1755,1,0,0,0,1754,1748, 1,0,0,0,1754,1755,1,0,0,0,1755,1757,1,0,0,0,1756,1681,1,0,0,0,1756, 1757,1,0,0,0,1757,95,1,0,0,0,1758,1759,3,142,71,0,1759,1760,5,28, - 0,0,1760,1761,3,302,151,0,1761,97,1,0,0,0,1762,1763,5,191,0,0,1763, - 1764,5,239,0,0,1764,1765,5,207,0,0,1765,1774,5,163,0,0,1766,1767, - 5,22,0,0,1767,1768,5,240,0,0,1768,1769,5,207,0,0,1769,1771,5,163, + 0,0,1760,1761,3,302,151,0,1761,97,1,0,0,0,1762,1763,5,192,0,0,1763, + 1764,5,240,0,0,1764,1765,5,208,0,0,1765,1774,5,164,0,0,1766,1767, + 5,22,0,0,1767,1768,5,241,0,0,1768,1769,5,208,0,0,1769,1771,5,164, 0,0,1770,1772,3,100,50,0,1771,1770,1,0,0,0,1771,1772,1,0,0,0,1772, 1774,1,0,0,0,1773,1762,1,0,0,0,1773,1766,1,0,0,0,1774,99,1,0,0,0, - 1775,1776,5,253,0,0,1776,1777,5,85,0,0,1777,1785,5,165,0,0,1778, - 1779,5,189,0,0,1779,1780,5,85,0,0,1780,1785,5,165,0,0,1781,1782, - 5,304,0,0,1782,1783,5,284,0,0,1783,1785,5,240,0,0,1784,1775,1,0, + 1775,1776,5,254,0,0,1776,1777,5,86,0,0,1777,1785,5,166,0,0,1778, + 1779,5,190,0,0,1779,1780,5,86,0,0,1780,1785,5,166,0,0,1781,1782, + 5,305,0,0,1782,1783,5,285,0,0,1783,1785,5,241,0,0,1784,1775,1,0, 0,0,1784,1778,1,0,0,0,1784,1781,1,0,0,0,1785,101,1,0,0,0,1786,1787, - 5,5,0,0,1787,1788,5,269,0,0,1788,1789,5,174,0,0,1789,1806,5,239, - 0,0,1790,1791,5,5,0,0,1791,1792,5,204,0,0,1792,1793,5,148,0,0,1793, - 1806,5,239,0,0,1794,1795,5,5,0,0,1795,1796,5,269,0,0,1796,1797,5, - 101,0,0,1797,1806,3,302,151,0,1798,1799,5,5,0,0,1799,1800,5,269, - 0,0,1800,1801,5,148,0,0,1801,1806,3,302,151,0,1802,1803,5,5,0,0, - 1803,1804,5,269,0,0,1804,1806,3,302,151,0,1805,1786,1,0,0,0,1805, + 5,5,0,0,1787,1788,5,270,0,0,1788,1789,5,175,0,0,1789,1806,5,240, + 0,0,1790,1791,5,5,0,0,1791,1792,5,205,0,0,1792,1793,5,149,0,0,1793, + 1806,5,240,0,0,1794,1795,5,5,0,0,1795,1796,5,270,0,0,1796,1797,5, + 102,0,0,1797,1806,3,302,151,0,1798,1799,5,5,0,0,1799,1800,5,270, + 0,0,1800,1801,5,149,0,0,1801,1806,3,302,151,0,1802,1803,5,5,0,0, + 1803,1804,5,270,0,0,1804,1806,3,302,151,0,1805,1786,1,0,0,0,1805, 1790,1,0,0,0,1805,1794,1,0,0,0,1805,1798,1,0,0,0,1805,1802,1,0,0, - 0,1806,103,1,0,0,0,1807,1808,3,302,151,0,1808,1809,5,312,0,0,1809, + 0,1806,103,1,0,0,0,1807,1808,3,302,151,0,1808,1809,5,313,0,0,1809, 1810,5,1,0,0,1810,1815,3,302,151,0,1811,1812,5,3,0,0,1812,1814,3, 302,151,0,1813,1811,1,0,0,0,1814,1817,1,0,0,0,1815,1813,1,0,0,0, 1815,1816,1,0,0,0,1816,1818,1,0,0,0,1817,1815,1,0,0,0,1818,1819, @@ -17516,62 +17558,62 @@ export class TrinoSqlParser extends SQLParserBase { 1,0,0,0,1865,1866,5,2,0,0,1866,115,1,0,0,0,1867,1869,3,260,130,0, 1868,1870,3,290,145,0,1869,1868,1,0,0,0,1869,1870,1,0,0,0,1870,1939, 1,0,0,0,1871,1872,5,1,0,0,1872,1873,3,22,11,0,1873,1874,5,2,0,0, - 1874,1939,1,0,0,0,1875,1876,5,285,0,0,1876,1877,5,1,0,0,1877,1882, + 1874,1939,1,0,0,0,1875,1876,5,286,0,0,1876,1877,5,1,0,0,1877,1882, 3,142,71,0,1878,1879,5,3,0,0,1879,1881,3,142,71,0,1880,1878,1,0, 0,0,1881,1884,1,0,0,0,1882,1880,1,0,0,0,1882,1883,1,0,0,0,1883,1885, - 1,0,0,0,1884,1882,1,0,0,0,1885,1888,5,2,0,0,1886,1887,5,304,0,0, - 1887,1889,5,196,0,0,1888,1886,1,0,0,0,1888,1889,1,0,0,0,1889,1939, - 1,0,0,0,1890,1891,5,149,0,0,1891,1892,5,1,0,0,1892,1893,3,22,11, - 0,1893,1894,5,2,0,0,1894,1939,1,0,0,0,1895,1896,5,260,0,0,1896,1897, + 1,0,0,0,1884,1882,1,0,0,0,1885,1888,5,2,0,0,1886,1887,5,305,0,0, + 1887,1889,5,197,0,0,1888,1886,1,0,0,0,1888,1889,1,0,0,0,1889,1939, + 1,0,0,0,1890,1891,5,150,0,0,1891,1892,5,1,0,0,1892,1893,3,22,11, + 0,1893,1894,5,2,0,0,1894,1939,1,0,0,0,1895,1896,5,261,0,0,1896,1897, 5,1,0,0,1897,1898,3,128,64,0,1898,1899,5,2,0,0,1899,1939,1,0,0,0, 1900,1901,5,1,0,0,1901,1902,3,78,39,0,1902,1903,5,2,0,0,1903,1939, - 1,0,0,0,1904,1905,5,142,0,0,1905,1906,5,1,0,0,1906,1907,3,152,76, - 0,1907,1908,5,45,0,0,1908,1909,5,1,0,0,1909,1914,3,118,59,0,1910, + 1,0,0,0,1904,1905,5,143,0,0,1905,1906,5,1,0,0,1906,1907,3,152,76, + 0,1907,1908,5,46,0,0,1908,1909,5,1,0,0,1909,1914,3,118,59,0,1910, 1911,5,3,0,0,1911,1913,3,118,59,0,1912,1910,1,0,0,0,1913,1916,1, 0,0,0,1914,1912,1,0,0,0,1914,1915,1,0,0,0,1915,1917,1,0,0,0,1916, - 1914,1,0,0,0,1917,1929,5,2,0,0,1918,1919,5,210,0,0,1919,1920,5,1, + 1914,1,0,0,0,1917,1929,5,2,0,0,1918,1919,5,211,0,0,1919,1920,5,1, 0,0,1920,1921,3,120,60,0,1921,1922,5,2,0,0,1922,1930,1,0,0,0,1923, - 1924,5,210,0,0,1924,1925,5,70,0,0,1925,1926,5,1,0,0,1926,1927,3, + 1924,5,211,0,0,1924,1925,5,71,0,0,1925,1926,5,1,0,0,1926,1927,3, 126,63,0,1927,1928,5,2,0,0,1928,1930,1,0,0,0,1929,1918,1,0,0,0,1929, 1923,1,0,0,0,1929,1930,1,0,0,0,1930,1934,1,0,0,0,1931,1932,7,14, - 0,0,1932,1933,5,190,0,0,1933,1935,5,89,0,0,1934,1931,1,0,0,0,1934, + 0,0,1932,1933,5,191,0,0,1933,1935,5,90,0,0,1934,1931,1,0,0,0,1934, 1935,1,0,0,0,1935,1936,1,0,0,0,1936,1937,5,2,0,0,1937,1939,1,0,0, 0,1938,1867,1,0,0,0,1938,1871,1,0,0,0,1938,1875,1,0,0,0,1938,1890, 1,0,0,0,1938,1895,1,0,0,0,1938,1900,1,0,0,0,1938,1904,1,0,0,0,1939, - 117,1,0,0,0,1940,1941,3,302,151,0,1941,1942,5,103,0,0,1942,1943, - 5,196,0,0,1943,2018,1,0,0,0,1944,1945,3,302,151,0,1945,1948,3,190, - 95,0,1946,1947,5,205,0,0,1947,1949,3,174,87,0,1948,1946,1,0,0,0, + 117,1,0,0,0,1940,1941,3,302,151,0,1941,1942,5,104,0,0,1942,1943, + 5,197,0,0,1943,2018,1,0,0,0,1944,1945,3,302,151,0,1945,1948,3,190, + 95,0,1946,1947,5,206,0,0,1947,1949,3,174,87,0,1948,1946,1,0,0,0, 1948,1949,1,0,0,0,1949,1954,1,0,0,0,1950,1951,3,162,81,0,1951,1952, - 5,190,0,0,1952,1953,5,85,0,0,1953,1955,1,0,0,0,1954,1950,1,0,0,0, + 5,191,0,0,1952,1953,5,86,0,0,1953,1955,1,0,0,0,1954,1950,1,0,0,0, 1954,1955,1,0,0,0,1955,1960,1,0,0,0,1956,1957,3,162,81,0,1957,1958, - 5,190,0,0,1958,1959,5,89,0,0,1959,1961,1,0,0,0,1960,1956,1,0,0,0, + 5,191,0,0,1958,1959,5,90,0,0,1959,1961,1,0,0,0,1960,1956,1,0,0,0, 1960,1961,1,0,0,0,1961,2018,1,0,0,0,1962,1963,3,302,151,0,1963,1964, - 3,190,95,0,1964,1965,5,104,0,0,1965,1968,3,156,78,0,1966,1967,5, - 205,0,0,1967,1969,3,174,87,0,1968,1966,1,0,0,0,1968,1969,1,0,0,0, - 1969,1973,1,0,0,0,1970,1971,3,164,82,0,1971,1972,5,308,0,0,1972, + 3,190,95,0,1964,1965,5,105,0,0,1965,1968,3,156,78,0,1966,1967,5, + 206,0,0,1967,1969,3,174,87,0,1968,1966,1,0,0,0,1968,1969,1,0,0,0, + 1969,1973,1,0,0,0,1970,1971,3,164,82,0,1971,1972,5,309,0,0,1972, 1974,1,0,0,0,1973,1970,1,0,0,0,1973,1974,1,0,0,0,1974,1982,1,0,0, - 0,1975,1976,7,15,0,0,1976,1980,5,218,0,0,1977,1978,5,190,0,0,1978, - 1979,5,242,0,0,1979,1981,5,264,0,0,1980,1977,1,0,0,0,1980,1981,1, + 0,1975,1976,7,15,0,0,1976,1980,5,219,0,0,1977,1978,5,191,0,0,1978, + 1979,5,243,0,0,1979,1981,5,265,0,0,1980,1977,1,0,0,0,1980,1981,1, 0,0,0,1981,1983,1,0,0,0,1982,1975,1,0,0,0,1982,1983,1,0,0,0,1983, - 1988,1,0,0,0,1984,1985,3,166,83,0,1985,1986,5,190,0,0,1986,1987, - 5,85,0,0,1987,1989,1,0,0,0,1988,1984,1,0,0,0,1988,1989,1,0,0,0,1989, - 1994,1,0,0,0,1990,1991,3,166,83,0,1991,1992,5,190,0,0,1992,1993, - 5,89,0,0,1993,1995,1,0,0,0,1994,1990,1,0,0,0,1994,1995,1,0,0,0,1995, - 2018,1,0,0,0,1996,1998,5,173,0,0,1997,1999,5,205,0,0,1998,1997,1, + 1988,1,0,0,0,1984,1985,3,166,83,0,1985,1986,5,191,0,0,1986,1987, + 5,86,0,0,1987,1989,1,0,0,0,1988,1984,1,0,0,0,1988,1989,1,0,0,0,1989, + 1994,1,0,0,0,1990,1991,3,166,83,0,1991,1992,5,191,0,0,1992,1993, + 5,90,0,0,1993,1995,1,0,0,0,1994,1990,1,0,0,0,1994,1995,1,0,0,0,1995, + 2018,1,0,0,0,1996,1998,5,174,0,0,1997,1999,5,206,0,0,1998,1997,1, 0,0,0,1998,1999,1,0,0,0,1999,2000,1,0,0,0,2000,2003,3,174,87,0,2001, 2002,5,28,0,0,2002,2004,3,302,151,0,2003,2001,1,0,0,0,2003,2004, - 1,0,0,0,2004,2005,1,0,0,0,2005,2006,5,45,0,0,2006,2007,5,1,0,0,2007, + 1,0,0,0,2004,2005,1,0,0,0,2005,2006,5,46,0,0,2006,2007,5,1,0,0,2007, 2012,3,118,59,0,2008,2009,5,3,0,0,2009,2011,3,118,59,0,2010,2008, 1,0,0,0,2011,2014,1,0,0,0,2012,2010,1,0,0,0,2012,2013,1,0,0,0,2013, 2015,1,0,0,0,2014,2012,1,0,0,0,2015,2016,5,2,0,0,2016,2018,1,0,0, 0,2017,1940,1,0,0,0,2017,1944,1,0,0,0,2017,1962,1,0,0,0,2017,1996, 1,0,0,0,2018,119,1,0,0,0,2019,2045,3,122,61,0,2020,2021,3,122,61, 0,2021,2022,7,16,0,0,2022,2023,3,124,62,0,2023,2045,1,0,0,0,2024, - 2025,3,124,62,0,2025,2026,5,281,0,0,2026,2031,3,124,62,0,2027,2028, - 5,281,0,0,2028,2030,3,124,62,0,2029,2027,1,0,0,0,2030,2033,1,0,0, + 2025,3,124,62,0,2025,2026,5,282,0,0,2026,2031,3,124,62,0,2027,2028, + 5,282,0,0,2028,2030,3,124,62,0,2029,2027,1,0,0,0,2030,2033,1,0,0, 0,2031,2029,1,0,0,0,2031,2032,1,0,0,0,2032,2045,1,0,0,0,2033,2031, - 1,0,0,0,2034,2035,3,124,62,0,2035,2036,5,54,0,0,2036,2041,3,124, - 62,0,2037,2038,5,54,0,0,2038,2040,3,124,62,0,2039,2037,1,0,0,0,2040, + 1,0,0,0,2034,2035,3,124,62,0,2035,2036,5,55,0,0,2036,2041,3,124, + 62,0,2037,2038,5,55,0,0,2038,2040,3,124,62,0,2039,2037,1,0,0,0,2040, 2043,1,0,0,0,2041,2039,1,0,0,0,2041,2042,1,0,0,0,2042,2045,1,0,0, 0,2043,2041,1,0,0,0,2044,2019,1,0,0,0,2044,2020,1,0,0,0,2044,2024, 1,0,0,0,2044,2034,1,0,0,0,2045,121,1,0,0,0,2046,2047,3,302,151,0, @@ -17585,7 +17627,7 @@ export class TrinoSqlParser extends SQLParserBase { 2068,2077,5,1,0,0,2069,2074,3,130,65,0,2070,2071,5,3,0,0,2071,2073, 3,130,65,0,2072,2070,1,0,0,0,2073,2076,1,0,0,0,2074,2072,1,0,0,0, 2074,2075,1,0,0,0,2075,2078,1,0,0,0,2076,2074,1,0,0,0,2077,2069, - 1,0,0,0,2077,2078,1,0,0,0,2078,2088,1,0,0,0,2079,2080,5,52,0,0,2080, + 1,0,0,0,2077,2078,1,0,0,0,2078,2088,1,0,0,0,2079,2080,5,53,0,0,2080, 2085,3,140,70,0,2081,2082,5,3,0,0,2082,2084,3,140,70,0,2083,2081, 1,0,0,0,2084,2087,1,0,0,0,2085,2083,1,0,0,0,2085,2086,1,0,0,0,2086, 2089,1,0,0,0,2087,2085,1,0,0,0,2088,2079,1,0,0,0,2088,2089,1,0,0, @@ -17594,34 +17636,34 @@ export class TrinoSqlParser extends SQLParserBase { 0,2095,2096,1,0,0,0,2096,2100,1,0,0,0,2097,2101,3,132,66,0,2098, 2101,3,136,68,0,2099,2101,3,142,71,0,2100,2097,1,0,0,0,2100,2098, 1,0,0,0,2100,2099,1,0,0,0,2101,131,1,0,0,0,2102,2113,3,134,67,0, - 2103,2104,5,201,0,0,2104,2111,5,36,0,0,2105,2107,5,1,0,0,2106,2108, + 2103,2104,5,202,0,0,2104,2111,5,36,0,0,2105,2107,5,1,0,0,2106,2108, 3,60,30,0,2107,2106,1,0,0,0,2107,2108,1,0,0,0,2108,2109,1,0,0,0, 2109,2112,5,2,0,0,2110,2112,3,142,71,0,2111,2105,1,0,0,0,2111,2110, 1,0,0,0,2112,2114,1,0,0,0,2113,2103,1,0,0,0,2113,2114,1,0,0,0,2114, - 2121,1,0,0,0,2115,2116,5,217,0,0,2116,2117,5,300,0,0,2117,2122,5, - 85,0,0,2118,2119,5,144,0,0,2119,2120,5,300,0,0,2120,2122,5,85,0, + 2121,1,0,0,0,2115,2116,5,218,0,0,2116,2117,5,301,0,0,2117,2122,5, + 86,0,0,2118,2119,5,145,0,0,2119,2120,5,301,0,0,2120,2122,5,86,0, 0,2121,2115,1,0,0,0,2121,2118,1,0,0,0,2121,2122,1,0,0,0,2122,2139, - 1,0,0,0,2123,2124,5,195,0,0,2124,2137,5,36,0,0,2125,2126,5,1,0,0, + 1,0,0,0,2123,2124,5,196,0,0,2124,2137,5,36,0,0,2125,2126,5,1,0,0, 2126,2131,3,50,25,0,2127,2128,5,3,0,0,2128,2130,3,50,25,0,2129,2127, 1,0,0,0,2130,2133,1,0,0,0,2131,2129,1,0,0,0,2131,2132,1,0,0,0,2132, 2134,1,0,0,0,2133,2131,1,0,0,0,2134,2135,5,2,0,0,2135,2138,1,0,0, 0,2136,2138,3,50,25,0,2137,2125,1,0,0,0,2137,2136,1,0,0,0,2138,2140, 1,0,0,0,2139,2123,1,0,0,0,2139,2140,1,0,0,0,2140,133,1,0,0,0,2141, - 2142,5,260,0,0,2142,2143,5,1,0,0,2143,2144,3,262,131,0,2144,2152, + 2142,5,261,0,0,2142,2143,5,1,0,0,2143,2144,3,262,131,0,2144,2152, 5,2,0,0,2145,2147,5,28,0,0,2146,2145,1,0,0,0,2146,2147,1,0,0,0,2147, 2148,1,0,0,0,2148,2150,3,302,151,0,2149,2151,3,114,57,0,2150,2149, 1,0,0,0,2150,2151,1,0,0,0,2151,2153,1,0,0,0,2152,2146,1,0,0,0,2152, - 2153,1,0,0,0,2153,2168,1,0,0,0,2154,2155,5,260,0,0,2155,2156,5,1, + 2153,1,0,0,0,2153,2168,1,0,0,0,2154,2155,5,261,0,0,2155,2156,5,1, 0,0,2156,2157,3,22,11,0,2157,2165,5,2,0,0,2158,2160,5,28,0,0,2159, 2158,1,0,0,0,2159,2160,1,0,0,0,2160,2161,1,0,0,0,2161,2163,3,302, 151,0,2162,2164,3,114,57,0,2163,2162,1,0,0,0,2163,2164,1,0,0,0,2164, 2166,1,0,0,0,2165,2159,1,0,0,0,2165,2166,1,0,0,0,2166,2168,1,0,0, 0,2167,2141,1,0,0,0,2167,2154,1,0,0,0,2168,135,1,0,0,0,2169,2170, - 5,77,0,0,2170,2171,5,1,0,0,2171,2176,3,138,69,0,2172,2173,5,3,0, + 5,78,0,0,2170,2171,5,1,0,0,2171,2176,3,138,69,0,2172,2173,5,3,0, 0,2173,2175,3,138,69,0,2174,2172,1,0,0,0,2175,2178,1,0,0,0,2176, 2174,1,0,0,0,2176,2177,1,0,0,0,2177,2179,1,0,0,0,2178,2176,1,0,0, 0,2179,2180,5,2,0,0,2180,2188,1,0,0,0,2181,2182,5,41,0,0,2182,2183, - 5,1,0,0,2183,2184,5,183,0,0,2184,2185,5,28,0,0,2185,2186,5,77,0, + 5,1,0,0,2183,2184,5,184,0,0,2184,2185,5,28,0,0,2185,2186,5,78,0, 0,2186,2188,5,2,0,0,2187,2169,1,0,0,0,2187,2181,1,0,0,0,2188,137, 1,0,0,0,2189,2191,3,302,151,0,2190,2192,3,190,95,0,2191,2190,1,0, 0,0,2191,2192,1,0,0,0,2192,139,1,0,0,0,2193,2194,5,1,0,0,2194,2195, @@ -17631,31 +17673,31 @@ export class TrinoSqlParser extends SQLParserBase { 1,0,0,0,2204,2205,5,2,0,0,2205,141,1,0,0,0,2206,2207,3,144,72,0, 2207,143,1,0,0,0,2208,2209,6,72,-1,0,2209,2211,3,148,74,0,2210,2212, 3,146,73,0,2211,2210,1,0,0,0,2211,2212,1,0,0,0,2212,2216,1,0,0,0, - 2213,2214,5,182,0,0,2214,2216,3,144,72,3,2215,2208,1,0,0,0,2215, + 2213,2214,5,183,0,0,2214,2216,3,144,72,3,2215,2208,1,0,0,0,2215, 2213,1,0,0,0,2216,2225,1,0,0,0,2217,2218,10,2,0,0,2218,2219,5,25, - 0,0,2219,2224,3,144,72,3,2220,2221,10,1,0,0,2221,2222,5,194,0,0, + 0,0,2219,2224,3,144,72,3,2220,2221,10,1,0,0,2221,2222,5,195,0,0, 2222,2224,3,144,72,2,2223,2217,1,0,0,0,2223,2220,1,0,0,0,2224,2227, 1,0,0,0,2225,2223,1,0,0,0,2225,2226,1,0,0,0,2226,145,1,0,0,0,2227, 2225,1,0,0,0,2228,2229,3,178,89,0,2229,2230,3,148,74,0,2230,2290, 1,0,0,0,2231,2232,3,178,89,0,2232,2233,3,180,90,0,2233,2234,5,1, 0,0,2234,2235,3,22,11,0,2235,2236,5,2,0,0,2236,2290,1,0,0,0,2237, - 2239,5,182,0,0,2238,2237,1,0,0,0,2238,2239,1,0,0,0,2239,2240,1,0, + 2239,5,183,0,0,2238,2237,1,0,0,0,2238,2239,1,0,0,0,2239,2240,1,0, 0,0,2240,2241,5,34,0,0,2241,2242,3,148,74,0,2242,2243,5,25,0,0,2243, - 2244,3,148,74,0,2244,2290,1,0,0,0,2245,2247,5,182,0,0,2246,2245, - 1,0,0,0,2246,2247,1,0,0,0,2247,2248,1,0,0,0,2248,2249,5,122,0,0, + 2244,3,148,74,0,2244,2290,1,0,0,0,2245,2247,5,183,0,0,2246,2245, + 1,0,0,0,2246,2247,1,0,0,0,2247,2248,1,0,0,0,2248,2249,5,123,0,0, 2249,2250,5,1,0,0,2250,2255,3,142,71,0,2251,2252,5,3,0,0,2252,2254, 3,142,71,0,2253,2251,1,0,0,0,2254,2257,1,0,0,0,2255,2253,1,0,0,0, 2255,2256,1,0,0,0,2256,2258,1,0,0,0,2257,2255,1,0,0,0,2258,2259, - 5,2,0,0,2259,2290,1,0,0,0,2260,2262,5,182,0,0,2261,2260,1,0,0,0, - 2261,2262,1,0,0,0,2262,2263,1,0,0,0,2263,2264,5,122,0,0,2264,2265, + 5,2,0,0,2259,2290,1,0,0,0,2260,2262,5,183,0,0,2261,2260,1,0,0,0, + 2261,2262,1,0,0,0,2262,2263,1,0,0,0,2263,2264,5,123,0,0,2264,2265, 5,1,0,0,2265,2266,3,22,11,0,2266,2267,5,2,0,0,2267,2290,1,0,0,0, - 2268,2270,5,182,0,0,2269,2268,1,0,0,0,2269,2270,1,0,0,0,2270,2271, - 1,0,0,0,2271,2272,5,154,0,0,2272,2275,3,148,74,0,2273,2274,5,90, + 2268,2270,5,183,0,0,2269,2268,1,0,0,0,2269,2270,1,0,0,0,2270,2271, + 1,0,0,0,2271,2272,5,155,0,0,2272,2275,3,148,74,0,2273,2274,5,91, 0,0,2274,2276,3,148,74,0,2275,2273,1,0,0,0,2275,2276,1,0,0,0,2276, - 2290,1,0,0,0,2277,2279,5,133,0,0,2278,2280,5,182,0,0,2279,2278,1, - 0,0,0,2279,2280,1,0,0,0,2280,2281,1,0,0,0,2281,2290,5,183,0,0,2282, - 2284,5,133,0,0,2283,2285,5,182,0,0,2284,2283,1,0,0,0,2284,2285,1, - 0,0,0,2285,2286,1,0,0,0,2286,2287,5,79,0,0,2287,2288,5,105,0,0,2288, + 2290,1,0,0,0,2277,2279,5,134,0,0,2278,2280,5,183,0,0,2279,2278,1, + 0,0,0,2279,2280,1,0,0,0,2280,2281,1,0,0,0,2281,2290,5,184,0,0,2282, + 2284,5,134,0,0,2283,2285,5,183,0,0,2284,2283,1,0,0,0,2284,2285,1, + 0,0,0,2285,2286,1,0,0,0,2286,2287,5,80,0,0,2287,2288,5,106,0,0,2288, 2290,3,148,74,0,2289,2228,1,0,0,0,2289,2231,1,0,0,0,2289,2238,1, 0,0,0,2289,2246,1,0,0,0,2289,2261,1,0,0,0,2289,2269,1,0,0,0,2289, 2277,1,0,0,0,2289,2282,1,0,0,0,2290,147,1,0,0,0,2291,2292,6,74,-1, @@ -17663,484 +17705,488 @@ export class TrinoSqlParser extends SQLParserBase { 2291,1,0,0,0,2295,2293,1,0,0,0,2296,2311,1,0,0,0,2297,2298,10,3, 0,0,2298,2299,7,19,0,0,2299,2310,3,148,74,4,2300,2301,10,2,0,0,2301, 2302,7,18,0,0,2302,2310,3,148,74,3,2303,2304,10,1,0,0,2304,2305, - 5,323,0,0,2305,2310,3,148,74,2,2306,2307,10,5,0,0,2307,2308,5,30, + 5,324,0,0,2305,2310,3,148,74,2,2306,2307,10,5,0,0,2307,2308,5,30, 0,0,2308,2310,3,176,88,0,2309,2297,1,0,0,0,2309,2300,1,0,0,0,2309, 2303,1,0,0,0,2309,2306,1,0,0,0,2310,2313,1,0,0,0,2311,2309,1,0,0, 0,2311,2312,1,0,0,0,2312,149,1,0,0,0,2313,2311,1,0,0,0,2314,2315, - 6,75,-1,0,2315,2768,5,183,0,0,2316,2768,3,184,92,0,2317,2318,3,302, - 151,0,2318,2319,3,174,87,0,2319,2768,1,0,0,0,2320,2321,5,82,0,0, - 2321,2322,5,213,0,0,2322,2768,3,174,87,0,2323,2768,3,304,152,0,2324, - 2768,3,182,91,0,2325,2768,3,174,87,0,2326,2768,5,328,0,0,2327,2768, - 5,324,0,0,2328,2329,5,211,0,0,2329,2330,5,1,0,0,2330,2331,3,148, - 74,0,2331,2332,5,122,0,0,2332,2333,3,148,74,0,2333,2334,5,2,0,0, - 2334,2768,1,0,0,0,2335,2336,5,1,0,0,2336,2339,3,142,71,0,2337,2338, + 6,75,-1,0,2315,2780,5,184,0,0,2316,2780,3,184,92,0,2317,2318,3,302, + 151,0,2318,2319,3,174,87,0,2319,2780,1,0,0,0,2320,2321,5,83,0,0, + 2321,2322,5,214,0,0,2322,2780,3,174,87,0,2323,2780,3,304,152,0,2324, + 2780,3,182,91,0,2325,2780,3,174,87,0,2326,2780,5,329,0,0,2327,2780, + 5,325,0,0,2328,2329,5,212,0,0,2329,2330,5,1,0,0,2330,2331,3,148, + 74,0,2331,2332,5,123,0,0,2332,2333,3,148,74,0,2333,2334,5,2,0,0, + 2334,2780,1,0,0,0,2335,2336,5,1,0,0,2336,2339,3,142,71,0,2337,2338, 5,3,0,0,2338,2340,3,142,71,0,2339,2337,1,0,0,0,2340,2341,1,0,0,0, 2341,2339,1,0,0,0,2341,2342,1,0,0,0,2342,2343,1,0,0,0,2343,2344, - 5,2,0,0,2344,2768,1,0,0,0,2345,2346,5,239,0,0,2346,2347,5,1,0,0, + 5,2,0,0,2344,2780,1,0,0,0,2345,2346,5,240,0,0,2346,2347,5,1,0,0, 2347,2352,3,142,71,0,2348,2349,5,3,0,0,2349,2351,3,142,71,0,2350, 2348,1,0,0,0,2351,2354,1,0,0,0,2352,2350,1,0,0,0,2352,2353,1,0,0, - 0,2353,2355,1,0,0,0,2354,2352,1,0,0,0,2355,2356,5,2,0,0,2356,2768, - 1,0,0,0,2357,2358,5,156,0,0,2358,2360,5,1,0,0,2359,2361,3,74,37, + 0,2353,2355,1,0,0,0,2354,2352,1,0,0,0,2355,2356,5,2,0,0,2356,2780, + 1,0,0,0,2357,2358,5,157,0,0,2358,2360,5,1,0,0,2359,2361,3,74,37, 0,2360,2359,1,0,0,0,2360,2361,1,0,0,0,2361,2362,1,0,0,0,2362,2365, 3,142,71,0,2363,2364,5,3,0,0,2364,2366,3,174,87,0,2365,2363,1,0, - 0,0,2365,2366,1,0,0,0,2366,2370,1,0,0,0,2367,2368,5,190,0,0,2368, - 2369,5,200,0,0,2369,2371,3,90,45,0,2370,2367,1,0,0,0,2370,2371,1, - 0,0,0,2371,2372,1,0,0,0,2372,2373,5,2,0,0,2373,2374,5,305,0,0,2374, - 2375,5,114,0,0,2375,2376,5,1,0,0,2376,2377,5,195,0,0,2377,2378,5, + 0,0,2365,2366,1,0,0,0,2366,2370,1,0,0,0,2367,2368,5,191,0,0,2368, + 2369,5,201,0,0,2369,2371,3,90,45,0,2370,2367,1,0,0,0,2370,2371,1, + 0,0,0,2371,2372,1,0,0,0,2372,2373,5,2,0,0,2373,2374,5,306,0,0,2374, + 2375,5,115,0,0,2375,2376,5,1,0,0,2376,2377,5,196,0,0,2377,2378,5, 36,0,0,2378,2383,3,50,25,0,2379,2380,5,3,0,0,2380,2382,3,50,25,0, 2381,2379,1,0,0,0,2382,2385,1,0,0,0,2383,2381,1,0,0,0,2383,2384, 1,0,0,0,2384,2386,1,0,0,0,2385,2383,1,0,0,0,2386,2387,5,2,0,0,2387, 2389,1,0,0,0,2388,2390,3,198,99,0,2389,2388,1,0,0,0,2389,2390,1, - 0,0,0,2390,2768,1,0,0,0,2391,2393,3,170,85,0,2392,2391,1,0,0,0,2392, + 0,0,0,2390,2780,1,0,0,0,2391,2393,3,170,85,0,2392,2391,1,0,0,0,2392, 2393,1,0,0,0,2393,2394,1,0,0,0,2394,2395,3,278,139,0,2395,2399,5, 1,0,0,2396,2397,3,302,151,0,2397,2398,5,4,0,0,2398,2400,1,0,0,0, 2399,2396,1,0,0,0,2399,2400,1,0,0,0,2400,2401,1,0,0,0,2401,2402, - 5,320,0,0,2402,2404,5,2,0,0,2403,2405,3,198,99,0,2404,2403,1,0,0, + 5,321,0,0,2402,2404,5,2,0,0,2403,2405,3,198,99,0,2404,2403,1,0,0, 0,2404,2405,1,0,0,0,2405,2407,1,0,0,0,2406,2408,3,202,101,0,2407, - 2406,1,0,0,0,2407,2408,1,0,0,0,2408,2768,1,0,0,0,2409,2411,3,170, + 2406,1,0,0,0,2407,2408,1,0,0,0,2408,2780,1,0,0,0,2409,2411,3,170, 85,0,2410,2409,1,0,0,0,2410,2411,1,0,0,0,2411,2412,1,0,0,0,2412, 2413,3,278,139,0,2413,2425,5,1,0,0,2414,2416,3,74,37,0,2415,2414, 1,0,0,0,2415,2416,1,0,0,0,2416,2417,1,0,0,0,2417,2422,3,142,71,0, 2418,2419,5,3,0,0,2419,2421,3,142,71,0,2420,2418,1,0,0,0,2421,2424, 1,0,0,0,2422,2420,1,0,0,0,2422,2423,1,0,0,0,2423,2426,1,0,0,0,2424, 2422,1,0,0,0,2425,2415,1,0,0,0,2425,2426,1,0,0,0,2426,2437,1,0,0, - 0,2427,2428,5,195,0,0,2428,2429,5,36,0,0,2429,2434,3,50,25,0,2430, + 0,2427,2428,5,196,0,0,2428,2429,5,36,0,0,2429,2434,3,50,25,0,2430, 2431,5,3,0,0,2431,2433,3,50,25,0,2432,2430,1,0,0,0,2433,2436,1,0, 0,0,2434,2432,1,0,0,0,2434,2435,1,0,0,0,2435,2438,1,0,0,0,2436,2434, 1,0,0,0,2437,2427,1,0,0,0,2437,2438,1,0,0,0,2438,2439,1,0,0,0,2439, 2441,5,2,0,0,2440,2442,3,198,99,0,2441,2440,1,0,0,0,2441,2442,1, 0,0,0,2442,2447,1,0,0,0,2443,2445,3,172,86,0,2444,2443,1,0,0,0,2444, 2445,1,0,0,0,2445,2446,1,0,0,0,2446,2448,3,202,101,0,2447,2444,1, - 0,0,0,2447,2448,1,0,0,0,2448,2768,1,0,0,0,2449,2450,3,302,151,0, - 2450,2451,3,202,101,0,2451,2768,1,0,0,0,2452,2453,3,302,151,0,2453, - 2454,5,7,0,0,2454,2455,3,142,71,0,2455,2768,1,0,0,0,2456,2465,5, + 0,0,0,2447,2448,1,0,0,0,2448,2780,1,0,0,0,2449,2450,3,302,151,0, + 2450,2451,3,202,101,0,2451,2780,1,0,0,0,2452,2453,3,302,151,0,2453, + 2454,5,7,0,0,2454,2455,3,142,71,0,2455,2780,1,0,0,0,2456,2465,5, 1,0,0,2457,2462,3,302,151,0,2458,2459,5,3,0,0,2459,2461,3,302,151, 0,2460,2458,1,0,0,0,2461,2464,1,0,0,0,2462,2460,1,0,0,0,2462,2463, 1,0,0,0,2463,2466,1,0,0,0,2464,2462,1,0,0,0,2465,2457,1,0,0,0,2465, 2466,1,0,0,0,2466,2467,1,0,0,0,2467,2468,5,2,0,0,2468,2469,5,7,0, - 0,2469,2768,3,142,71,0,2470,2471,5,1,0,0,2471,2472,3,22,11,0,2472, - 2473,5,2,0,0,2473,2768,1,0,0,0,2474,2475,5,94,0,0,2475,2476,5,1, - 0,0,2476,2477,3,22,11,0,2477,2478,5,2,0,0,2478,2768,1,0,0,0,2479, + 0,2469,2780,3,142,71,0,2470,2471,5,1,0,0,2471,2472,3,22,11,0,2472, + 2473,5,2,0,0,2473,2780,1,0,0,0,2474,2475,5,95,0,0,2475,2476,5,1, + 0,0,2476,2477,3,22,11,0,2477,2478,5,2,0,0,2478,2780,1,0,0,0,2479, 2480,5,40,0,0,2480,2482,3,142,71,0,2481,2483,3,196,98,0,2482,2481, 1,0,0,0,2483,2484,1,0,0,0,2484,2482,1,0,0,0,2484,2485,1,0,0,0,2485, - 2488,1,0,0,0,2486,2487,5,84,0,0,2487,2489,3,142,71,0,2488,2486,1, - 0,0,0,2488,2489,1,0,0,0,2489,2490,1,0,0,0,2490,2491,5,88,0,0,2491, - 2768,1,0,0,0,2492,2494,5,40,0,0,2493,2495,3,196,98,0,2494,2493,1, + 2488,1,0,0,0,2486,2487,5,85,0,0,2487,2489,3,142,71,0,2488,2486,1, + 0,0,0,2488,2489,1,0,0,0,2489,2490,1,0,0,0,2490,2491,5,89,0,0,2491, + 2780,1,0,0,0,2492,2494,5,40,0,0,2493,2495,3,196,98,0,2494,2493,1, 0,0,0,2495,2496,1,0,0,0,2496,2494,1,0,0,0,2496,2497,1,0,0,0,2497, - 2500,1,0,0,0,2498,2499,5,84,0,0,2499,2501,3,142,71,0,2500,2498,1, - 0,0,0,2500,2501,1,0,0,0,2501,2502,1,0,0,0,2502,2503,5,88,0,0,2503, - 2768,1,0,0,0,2504,2505,5,41,0,0,2505,2506,5,1,0,0,2506,2507,3,142, + 2500,1,0,0,0,2498,2499,5,85,0,0,2499,2501,3,142,71,0,2500,2498,1, + 0,0,0,2500,2501,1,0,0,0,2501,2502,1,0,0,0,2502,2503,5,89,0,0,2503, + 2780,1,0,0,0,2504,2505,5,41,0,0,2505,2506,5,1,0,0,2506,2507,3,142, 71,0,2507,2508,5,28,0,0,2508,2509,3,190,95,0,2509,2510,5,2,0,0,2510, - 2768,1,0,0,0,2511,2512,5,275,0,0,2512,2513,5,1,0,0,2513,2514,3,142, + 2780,1,0,0,0,2511,2512,5,276,0,0,2512,2513,5,1,0,0,2513,2514,3,142, 71,0,2514,2515,5,28,0,0,2515,2516,3,190,95,0,2516,2517,5,2,0,0,2517, - 2768,1,0,0,0,2518,2519,5,27,0,0,2519,2528,5,8,0,0,2520,2525,3,142, + 2780,1,0,0,0,2518,2519,5,27,0,0,2519,2528,5,8,0,0,2520,2525,3,142, 71,0,2521,2522,5,3,0,0,2522,2524,3,142,71,0,2523,2521,1,0,0,0,2524, 2527,1,0,0,0,2525,2523,1,0,0,0,2525,2526,1,0,0,0,2526,2529,1,0,0, 0,2527,2525,1,0,0,0,2528,2520,1,0,0,0,2528,2529,1,0,0,0,2529,2530, - 1,0,0,0,2530,2768,5,9,0,0,2531,2768,3,284,142,0,2532,2768,5,58,0, - 0,2533,2537,5,62,0,0,2534,2535,5,1,0,0,2535,2536,5,329,0,0,2536, - 2538,5,2,0,0,2537,2534,1,0,0,0,2537,2538,1,0,0,0,2538,2768,1,0,0, - 0,2539,2543,5,63,0,0,2540,2541,5,1,0,0,2541,2542,5,329,0,0,2542, - 2544,5,2,0,0,2543,2540,1,0,0,0,2543,2544,1,0,0,0,2544,2768,1,0,0, - 0,2545,2549,5,158,0,0,2546,2547,5,1,0,0,2547,2548,5,329,0,0,2548, - 2550,5,2,0,0,2549,2546,1,0,0,0,2549,2550,1,0,0,0,2550,2768,1,0,0, - 0,2551,2555,5,159,0,0,2552,2553,5,1,0,0,2553,2554,5,329,0,0,2554, - 2556,5,2,0,0,2555,2552,1,0,0,0,2555,2556,1,0,0,0,2556,2768,1,0,0, - 0,2557,2768,5,64,0,0,2558,2768,5,57,0,0,2559,2768,5,61,0,0,2560, - 2768,5,59,0,0,2561,2562,5,272,0,0,2562,2570,5,1,0,0,2563,2565,3, + 1,0,0,0,2530,2780,5,9,0,0,2531,2780,3,284,142,0,2532,2780,5,59,0, + 0,2533,2537,5,63,0,0,2534,2535,5,1,0,0,2535,2536,5,330,0,0,2536, + 2538,5,2,0,0,2537,2534,1,0,0,0,2537,2538,1,0,0,0,2538,2780,1,0,0, + 0,2539,2543,5,64,0,0,2540,2541,5,1,0,0,2541,2542,5,330,0,0,2542, + 2544,5,2,0,0,2543,2540,1,0,0,0,2543,2544,1,0,0,0,2544,2780,1,0,0, + 0,2545,2549,5,159,0,0,2546,2547,5,1,0,0,2547,2548,5,330,0,0,2548, + 2550,5,2,0,0,2549,2546,1,0,0,0,2549,2550,1,0,0,0,2550,2780,1,0,0, + 0,2551,2555,5,160,0,0,2552,2553,5,1,0,0,2553,2554,5,330,0,0,2554, + 2556,5,2,0,0,2555,2552,1,0,0,0,2555,2556,1,0,0,0,2556,2780,1,0,0, + 0,2557,2780,5,65,0,0,2558,2780,5,58,0,0,2559,2780,5,62,0,0,2560, + 2780,5,60,0,0,2561,2562,5,273,0,0,2562,2570,5,1,0,0,2563,2565,3, 88,44,0,2564,2563,1,0,0,0,2564,2565,1,0,0,0,2565,2567,1,0,0,0,2566, 2568,3,148,74,0,2567,2566,1,0,0,0,2567,2568,1,0,0,0,2568,2569,1, - 0,0,0,2569,2571,5,105,0,0,2570,2564,1,0,0,0,2570,2571,1,0,0,0,2571, - 2572,1,0,0,0,2572,2573,3,148,74,0,2573,2574,5,2,0,0,2574,2768,1, - 0,0,0,2575,2576,5,272,0,0,2576,2577,5,1,0,0,2577,2578,3,148,74,0, - 2578,2579,5,3,0,0,2579,2580,3,148,74,0,2580,2581,5,2,0,0,2581,2768, - 1,0,0,0,2582,2583,5,258,0,0,2583,2584,5,1,0,0,2584,2585,3,148,74, - 0,2585,2586,5,105,0,0,2586,2589,3,148,74,0,2587,2588,5,103,0,0,2588, + 0,0,0,2569,2571,5,106,0,0,2570,2564,1,0,0,0,2570,2571,1,0,0,0,2571, + 2572,1,0,0,0,2572,2573,3,148,74,0,2573,2574,5,2,0,0,2574,2780,1, + 0,0,0,2575,2576,5,273,0,0,2576,2577,5,1,0,0,2577,2578,3,148,74,0, + 2578,2579,5,3,0,0,2579,2580,3,148,74,0,2580,2581,5,2,0,0,2581,2780, + 1,0,0,0,2582,2583,5,259,0,0,2583,2584,5,1,0,0,2584,2585,3,148,74, + 0,2585,2586,5,106,0,0,2586,2589,3,148,74,0,2587,2588,5,104,0,0,2588, 2590,3,148,74,0,2589,2587,1,0,0,0,2589,2590,1,0,0,0,2590,2591,1, - 0,0,0,2591,2592,5,2,0,0,2592,2768,1,0,0,0,2593,2594,5,181,0,0,2594, + 0,0,0,2591,2592,5,2,0,0,2592,2780,1,0,0,0,2593,2594,5,182,0,0,2594, 2595,5,1,0,0,2595,2598,3,148,74,0,2596,2597,5,3,0,0,2597,2599,3, 188,94,0,2598,2596,1,0,0,0,2598,2599,1,0,0,0,2599,2600,1,0,0,0,2600, - 2601,5,2,0,0,2601,2768,1,0,0,0,2602,2603,5,96,0,0,2603,2604,5,1, - 0,0,2604,2605,3,302,151,0,2605,2606,5,105,0,0,2606,2607,3,148,74, - 0,2607,2608,5,2,0,0,2608,2768,1,0,0,0,2609,2610,5,1,0,0,2610,2611, - 3,142,71,0,2611,2612,5,2,0,0,2612,2768,1,0,0,0,2613,2614,5,115,0, - 0,2614,2623,5,1,0,0,2615,2620,3,288,144,0,2616,2617,5,3,0,0,2617, - 2619,3,288,144,0,2618,2616,1,0,0,0,2619,2622,1,0,0,0,2620,2618,1, - 0,0,0,2620,2621,1,0,0,0,2621,2624,1,0,0,0,2622,2620,1,0,0,0,2623, - 2615,1,0,0,0,2623,2624,1,0,0,0,2624,2625,1,0,0,0,2625,2768,5,2,0, - 0,2626,2627,5,139,0,0,2627,2628,5,1,0,0,2628,2633,3,152,76,0,2629, - 2630,3,160,80,0,2630,2631,5,190,0,0,2631,2632,5,89,0,0,2632,2634, - 1,0,0,0,2633,2629,1,0,0,0,2633,2634,1,0,0,0,2634,2635,1,0,0,0,2635, - 2636,5,2,0,0,2636,2768,1,0,0,0,2637,2638,5,143,0,0,2638,2639,5,1, - 0,0,2639,2642,3,152,76,0,2640,2641,5,231,0,0,2641,2643,3,190,95, - 0,2642,2640,1,0,0,0,2642,2643,1,0,0,0,2643,2648,1,0,0,0,2644,2645, - 3,162,81,0,2645,2646,5,190,0,0,2646,2647,5,85,0,0,2647,2649,1,0, - 0,0,2648,2644,1,0,0,0,2648,2649,1,0,0,0,2649,2654,1,0,0,0,2650,2651, - 3,162,81,0,2651,2652,5,190,0,0,2652,2653,5,89,0,0,2653,2655,1,0, - 0,0,2654,2650,1,0,0,0,2654,2655,1,0,0,0,2655,2656,1,0,0,0,2656,2657, - 5,2,0,0,2657,2768,1,0,0,0,2658,2659,5,141,0,0,2659,2660,5,1,0,0, - 2660,2667,3,152,76,0,2661,2662,5,231,0,0,2662,2665,3,190,95,0,2663, - 2664,5,104,0,0,2664,2666,3,156,78,0,2665,2663,1,0,0,0,2665,2666, - 1,0,0,0,2666,2668,1,0,0,0,2667,2661,1,0,0,0,2667,2668,1,0,0,0,2668, - 2672,1,0,0,0,2669,2670,3,164,82,0,2670,2671,5,308,0,0,2671,2673, - 1,0,0,0,2672,2669,1,0,0,0,2672,2673,1,0,0,0,2673,2681,1,0,0,0,2674, - 2675,7,15,0,0,2675,2679,5,218,0,0,2676,2677,5,190,0,0,2677,2678, - 5,242,0,0,2678,2680,5,264,0,0,2679,2676,1,0,0,0,2679,2680,1,0,0, - 0,2680,2682,1,0,0,0,2681,2674,1,0,0,0,2681,2682,1,0,0,0,2682,2687, - 1,0,0,0,2683,2684,3,166,83,0,2684,2685,5,190,0,0,2685,2686,5,85, - 0,0,2686,2688,1,0,0,0,2687,2683,1,0,0,0,2687,2688,1,0,0,0,2688,2693, - 1,0,0,0,2689,2690,3,166,83,0,2690,2691,5,190,0,0,2691,2692,5,89, - 0,0,2692,2694,1,0,0,0,2693,2689,1,0,0,0,2693,2694,1,0,0,0,2694,2695, - 1,0,0,0,2695,2696,5,2,0,0,2696,2768,1,0,0,0,2697,2698,5,140,0,0, - 2698,2727,5,1,0,0,2699,2704,3,168,84,0,2700,2701,5,3,0,0,2701,2703, - 3,168,84,0,2702,2700,1,0,0,0,2703,2706,1,0,0,0,2704,2702,1,0,0,0, - 2704,2705,1,0,0,0,2705,2713,1,0,0,0,2706,2704,1,0,0,0,2707,2708, - 5,183,0,0,2708,2709,5,190,0,0,2709,2714,5,183,0,0,2710,2711,5,18, - 0,0,2711,2712,5,190,0,0,2712,2714,5,183,0,0,2713,2707,1,0,0,0,2713, - 2710,1,0,0,0,2713,2714,1,0,0,0,2714,2725,1,0,0,0,2715,2716,5,304, - 0,0,2716,2718,5,282,0,0,2717,2719,5,146,0,0,2718,2717,1,0,0,0,2718, - 2719,1,0,0,0,2719,2726,1,0,0,0,2720,2721,5,306,0,0,2721,2723,5,282, - 0,0,2722,2724,5,146,0,0,2723,2722,1,0,0,0,2723,2724,1,0,0,0,2724, - 2726,1,0,0,0,2725,2715,1,0,0,0,2725,2720,1,0,0,0,2725,2726,1,0,0, - 0,2726,2728,1,0,0,0,2727,2699,1,0,0,0,2727,2728,1,0,0,0,2728,2735, - 1,0,0,0,2729,2730,5,231,0,0,2730,2733,3,190,95,0,2731,2732,5,104, - 0,0,2732,2734,3,156,78,0,2733,2731,1,0,0,0,2733,2734,1,0,0,0,2734, - 2736,1,0,0,0,2735,2729,1,0,0,0,2735,2736,1,0,0,0,2736,2737,1,0,0, - 0,2737,2768,5,2,0,0,2738,2739,5,138,0,0,2739,2756,5,1,0,0,2740,2745, - 3,154,77,0,2741,2742,5,3,0,0,2742,2744,3,154,77,0,2743,2741,1,0, - 0,0,2744,2747,1,0,0,0,2745,2743,1,0,0,0,2745,2746,1,0,0,0,2746,2754, - 1,0,0,0,2747,2745,1,0,0,0,2748,2749,5,183,0,0,2749,2750,5,190,0, - 0,2750,2755,5,183,0,0,2751,2752,5,18,0,0,2752,2753,5,190,0,0,2753, - 2755,5,183,0,0,2754,2748,1,0,0,0,2754,2751,1,0,0,0,2754,2755,1,0, - 0,0,2755,2757,1,0,0,0,2756,2740,1,0,0,0,2756,2757,1,0,0,0,2757,2764, - 1,0,0,0,2758,2759,5,231,0,0,2759,2762,3,190,95,0,2760,2761,5,104, - 0,0,2761,2763,3,156,78,0,2762,2760,1,0,0,0,2762,2763,1,0,0,0,2763, - 2765,1,0,0,0,2764,2758,1,0,0,0,2764,2765,1,0,0,0,2765,2766,1,0,0, - 0,2766,2768,5,2,0,0,2767,2314,1,0,0,0,2767,2316,1,0,0,0,2767,2317, - 1,0,0,0,2767,2320,1,0,0,0,2767,2323,1,0,0,0,2767,2324,1,0,0,0,2767, - 2325,1,0,0,0,2767,2326,1,0,0,0,2767,2327,1,0,0,0,2767,2328,1,0,0, - 0,2767,2335,1,0,0,0,2767,2345,1,0,0,0,2767,2357,1,0,0,0,2767,2392, - 1,0,0,0,2767,2410,1,0,0,0,2767,2449,1,0,0,0,2767,2452,1,0,0,0,2767, - 2456,1,0,0,0,2767,2470,1,0,0,0,2767,2474,1,0,0,0,2767,2479,1,0,0, - 0,2767,2492,1,0,0,0,2767,2504,1,0,0,0,2767,2511,1,0,0,0,2767,2518, - 1,0,0,0,2767,2531,1,0,0,0,2767,2532,1,0,0,0,2767,2533,1,0,0,0,2767, - 2539,1,0,0,0,2767,2545,1,0,0,0,2767,2551,1,0,0,0,2767,2557,1,0,0, - 0,2767,2558,1,0,0,0,2767,2559,1,0,0,0,2767,2560,1,0,0,0,2767,2561, - 1,0,0,0,2767,2575,1,0,0,0,2767,2582,1,0,0,0,2767,2593,1,0,0,0,2767, - 2602,1,0,0,0,2767,2609,1,0,0,0,2767,2613,1,0,0,0,2767,2626,1,0,0, - 0,2767,2637,1,0,0,0,2767,2658,1,0,0,0,2767,2697,1,0,0,0,2767,2738, - 1,0,0,0,2768,2779,1,0,0,0,2769,2770,10,24,0,0,2770,2771,5,8,0,0, - 2771,2772,3,148,74,0,2772,2773,5,9,0,0,2773,2778,1,0,0,0,2774,2775, - 10,22,0,0,2775,2776,5,4,0,0,2776,2778,3,302,151,0,2777,2769,1,0, - 0,0,2777,2774,1,0,0,0,2778,2781,1,0,0,0,2779,2777,1,0,0,0,2779,2780, - 1,0,0,0,2780,151,1,0,0,0,2781,2779,1,0,0,0,2782,2783,3,154,77,0, - 2783,2784,5,3,0,0,2784,2787,3,174,87,0,2785,2786,5,28,0,0,2786,2788, - 3,302,151,0,2787,2785,1,0,0,0,2787,2788,1,0,0,0,2788,2798,1,0,0, - 0,2789,2790,5,203,0,0,2790,2795,3,158,79,0,2791,2792,5,3,0,0,2792, - 2794,3,158,79,0,2793,2791,1,0,0,0,2794,2797,1,0,0,0,2795,2793,1, - 0,0,0,2795,2796,1,0,0,0,2796,2799,1,0,0,0,2797,2795,1,0,0,0,2798, - 2789,1,0,0,0,2798,2799,1,0,0,0,2799,153,1,0,0,0,2800,2803,3,142, - 71,0,2801,2802,5,104,0,0,2802,2804,3,156,78,0,2803,2801,1,0,0,0, - 2803,2804,1,0,0,0,2804,155,1,0,0,0,2805,2808,5,137,0,0,2806,2807, - 5,87,0,0,2807,2809,7,20,0,0,2808,2806,1,0,0,0,2808,2809,1,0,0,0, - 2809,157,1,0,0,0,2810,2811,3,154,77,0,2811,2812,5,28,0,0,2812,2813, - 3,302,151,0,2813,159,1,0,0,0,2814,2815,7,21,0,0,2815,161,1,0,0,0, - 2816,2821,5,89,0,0,2817,2821,5,183,0,0,2818,2819,5,70,0,0,2819,2821, - 3,142,71,0,2820,2816,1,0,0,0,2820,2817,1,0,0,0,2820,2818,1,0,0,0, - 2821,163,1,0,0,0,2822,2824,5,306,0,0,2823,2825,5,27,0,0,2824,2823, - 1,0,0,0,2824,2825,1,0,0,0,2825,2834,1,0,0,0,2826,2828,5,304,0,0, - 2827,2829,7,22,0,0,2828,2827,1,0,0,0,2828,2829,1,0,0,0,2829,2831, - 1,0,0,0,2830,2832,5,27,0,0,2831,2830,1,0,0,0,2831,2832,1,0,0,0,2832, - 2834,1,0,0,0,2833,2822,1,0,0,0,2833,2826,1,0,0,0,2834,165,1,0,0, - 0,2835,2842,5,89,0,0,2836,2842,5,183,0,0,2837,2838,5,85,0,0,2838, - 2842,5,27,0,0,2839,2840,5,85,0,0,2840,2842,5,186,0,0,2841,2835,1, - 0,0,0,2841,2836,1,0,0,0,2841,2837,1,0,0,0,2841,2839,1,0,0,0,2842, - 167,1,0,0,0,2843,2845,5,145,0,0,2844,2843,1,0,0,0,2844,2845,1,0, - 0,0,2845,2846,1,0,0,0,2846,2847,3,142,71,0,2847,2848,5,295,0,0,2848, - 2849,3,154,77,0,2849,2855,1,0,0,0,2850,2851,3,142,71,0,2851,2852, - 5,10,0,0,2852,2853,3,154,77,0,2853,2855,1,0,0,0,2854,2844,1,0,0, - 0,2854,2850,1,0,0,0,2855,169,1,0,0,0,2856,2857,7,23,0,0,2857,171, - 1,0,0,0,2858,2859,5,120,0,0,2859,2863,5,185,0,0,2860,2861,5,228, - 0,0,2861,2863,5,185,0,0,2862,2858,1,0,0,0,2862,2860,1,0,0,0,2863, - 173,1,0,0,0,2864,2871,5,326,0,0,2865,2868,5,327,0,0,2866,2867,5, - 277,0,0,2867,2869,5,326,0,0,2868,2866,1,0,0,0,2868,2869,1,0,0,0, - 2869,2871,1,0,0,0,2870,2864,1,0,0,0,2870,2865,1,0,0,0,2871,175,1, - 0,0,0,2872,2873,5,267,0,0,2873,2874,5,311,0,0,2874,2879,3,184,92, - 0,2875,2876,5,267,0,0,2876,2877,5,311,0,0,2877,2879,3,174,87,0,2878, - 2872,1,0,0,0,2878,2875,1,0,0,0,2879,177,1,0,0,0,2880,2881,7,24,0, - 0,2881,179,1,0,0,0,2882,2883,7,25,0,0,2883,181,1,0,0,0,2884,2885, - 7,26,0,0,2885,183,1,0,0,0,2886,2888,5,129,0,0,2887,2889,7,18,0,0, - 2888,2887,1,0,0,0,2888,2889,1,0,0,0,2889,2890,1,0,0,0,2890,2891, - 3,174,87,0,2891,2894,3,186,93,0,2892,2893,5,269,0,0,2893,2895,3, - 186,93,0,2894,2892,1,0,0,0,2894,2895,1,0,0,0,2895,185,1,0,0,0,2896, - 2897,7,27,0,0,2897,187,1,0,0,0,2898,2899,7,28,0,0,2899,189,1,0,0, - 0,2900,2901,6,95,-1,0,2901,2902,5,239,0,0,2902,2903,5,1,0,0,2903, - 2908,3,192,96,0,2904,2905,5,3,0,0,2905,2907,3,192,96,0,2906,2904, - 1,0,0,0,2907,2910,1,0,0,0,2908,2906,1,0,0,0,2908,2909,1,0,0,0,2909, - 2911,1,0,0,0,2910,2908,1,0,0,0,2911,2912,5,2,0,0,2912,2972,1,0,0, - 0,2913,2914,5,129,0,0,2914,2917,3,186,93,0,2915,2916,5,269,0,0,2916, - 2918,3,186,93,0,2917,2915,1,0,0,0,2917,2918,1,0,0,0,2918,2972,1, - 0,0,0,2919,2924,5,268,0,0,2920,2921,5,1,0,0,2921,2922,3,194,97,0, - 2922,2923,5,2,0,0,2923,2925,1,0,0,0,2924,2920,1,0,0,0,2924,2925, - 1,0,0,0,2925,2929,1,0,0,0,2926,2927,7,29,0,0,2927,2928,5,267,0,0, - 2928,2930,5,311,0,0,2929,2926,1,0,0,0,2929,2930,1,0,0,0,2930,2972, - 1,0,0,0,2931,2936,5,267,0,0,2932,2933,5,1,0,0,2933,2934,3,194,97, - 0,2934,2935,5,2,0,0,2935,2937,1,0,0,0,2936,2932,1,0,0,0,2936,2937, - 1,0,0,0,2937,2941,1,0,0,0,2938,2939,7,29,0,0,2939,2940,5,267,0,0, - 2940,2942,5,311,0,0,2941,2938,1,0,0,0,2941,2942,1,0,0,0,2942,2972, - 1,0,0,0,2943,2944,5,82,0,0,2944,2972,5,213,0,0,2945,2946,5,27,0, - 0,2946,2947,5,314,0,0,2947,2948,3,190,95,0,2948,2949,5,316,0,0,2949, - 2972,1,0,0,0,2950,2951,5,162,0,0,2951,2952,5,314,0,0,2952,2953,3, - 190,95,0,2953,2954,5,3,0,0,2954,2955,3,190,95,0,2955,2956,5,316, - 0,0,2956,2972,1,0,0,0,2957,2969,3,302,151,0,2958,2959,5,1,0,0,2959, - 2964,3,194,97,0,2960,2961,5,3,0,0,2961,2963,3,194,97,0,2962,2960, - 1,0,0,0,2963,2966,1,0,0,0,2964,2962,1,0,0,0,2964,2965,1,0,0,0,2965, - 2967,1,0,0,0,2966,2964,1,0,0,0,2967,2968,5,2,0,0,2968,2970,1,0,0, - 0,2969,2958,1,0,0,0,2969,2970,1,0,0,0,2970,2972,1,0,0,0,2971,2900, - 1,0,0,0,2971,2913,1,0,0,0,2971,2919,1,0,0,0,2971,2931,1,0,0,0,2971, - 2943,1,0,0,0,2971,2945,1,0,0,0,2971,2950,1,0,0,0,2971,2957,1,0,0, - 0,2972,2982,1,0,0,0,2973,2974,10,2,0,0,2974,2978,5,27,0,0,2975,2976, - 5,8,0,0,2976,2977,5,329,0,0,2977,2979,5,9,0,0,2978,2975,1,0,0,0, - 2978,2979,1,0,0,0,2979,2981,1,0,0,0,2980,2973,1,0,0,0,2981,2984, - 1,0,0,0,2982,2980,1,0,0,0,2982,2983,1,0,0,0,2983,191,1,0,0,0,2984, - 2982,1,0,0,0,2985,2990,3,190,95,0,2986,2987,3,302,151,0,2987,2988, - 3,190,95,0,2988,2990,1,0,0,0,2989,2985,1,0,0,0,2989,2986,1,0,0,0, - 2990,193,1,0,0,0,2991,2994,5,329,0,0,2992,2994,3,190,95,0,2993,2991, - 1,0,0,0,2993,2992,1,0,0,0,2994,195,1,0,0,0,2995,2996,5,300,0,0,2996, - 2997,3,142,71,0,2997,2998,5,265,0,0,2998,2999,3,142,71,0,2999,197, - 1,0,0,0,3000,3001,5,99,0,0,3001,3002,5,1,0,0,3002,3003,3,54,27,0, - 3003,3004,5,2,0,0,3004,199,1,0,0,0,3005,3006,5,300,0,0,3006,3009, - 5,164,0,0,3007,3008,5,25,0,0,3008,3010,3,142,71,0,3009,3007,1,0, - 0,0,3009,3010,1,0,0,0,3010,3011,1,0,0,0,3011,3012,5,265,0,0,3012, - 3013,5,287,0,0,3013,3014,5,251,0,0,3014,3015,3,302,151,0,3015,3016, - 5,312,0,0,3016,3024,3,142,71,0,3017,3018,5,3,0,0,3018,3019,3,302, - 151,0,3019,3020,5,312,0,0,3020,3021,3,142,71,0,3021,3023,1,0,0,0, - 3022,3017,1,0,0,0,3023,3026,1,0,0,0,3024,3022,1,0,0,0,3024,3025, - 1,0,0,0,3025,3070,1,0,0,0,3026,3024,1,0,0,0,3027,3028,5,300,0,0, - 3028,3031,5,164,0,0,3029,3030,5,25,0,0,3030,3032,3,142,71,0,3031, - 3029,1,0,0,0,3031,3032,1,0,0,0,3032,3033,1,0,0,0,3033,3034,5,265, - 0,0,3034,3070,5,73,0,0,3035,3036,5,300,0,0,3036,3037,5,182,0,0,3037, - 3040,5,164,0,0,3038,3039,5,25,0,0,3039,3041,3,142,71,0,3040,3038, - 1,0,0,0,3040,3041,1,0,0,0,3041,3042,1,0,0,0,3042,3043,5,265,0,0, - 3043,3055,5,127,0,0,3044,3045,5,1,0,0,3045,3050,3,302,151,0,3046, - 3047,5,3,0,0,3047,3049,3,302,151,0,3048,3046,1,0,0,0,3049,3052,1, - 0,0,0,3050,3048,1,0,0,0,3050,3051,1,0,0,0,3051,3053,1,0,0,0,3052, - 3050,1,0,0,0,3053,3054,5,2,0,0,3054,3056,1,0,0,0,3055,3044,1,0,0, - 0,3055,3056,1,0,0,0,3056,3057,1,0,0,0,3057,3058,5,296,0,0,3058,3059, - 5,1,0,0,3059,3064,3,142,71,0,3060,3061,5,3,0,0,3061,3063,3,142,71, - 0,3062,3060,1,0,0,0,3063,3066,1,0,0,0,3064,3062,1,0,0,0,3064,3065, - 1,0,0,0,3065,3067,1,0,0,0,3066,3064,1,0,0,0,3067,3068,5,2,0,0,3068, - 3070,1,0,0,0,3069,3005,1,0,0,0,3069,3027,1,0,0,0,3069,3035,1,0,0, - 0,3070,201,1,0,0,0,3071,3077,5,199,0,0,3072,3078,3,302,151,0,3073, - 3074,5,1,0,0,3074,3075,3,70,35,0,3075,3076,5,2,0,0,3076,3078,1,0, - 0,0,3077,3072,1,0,0,0,3077,3073,1,0,0,0,3078,203,1,0,0,0,3079,3080, - 5,168,0,0,3080,3085,3,96,48,0,3081,3082,5,3,0,0,3082,3084,3,96,48, - 0,3083,3081,1,0,0,0,3084,3087,1,0,0,0,3085,3083,1,0,0,0,3085,3086, - 1,0,0,0,3086,3089,1,0,0,0,3087,3085,1,0,0,0,3088,3079,1,0,0,0,3088, - 3089,1,0,0,0,3089,3090,1,0,0,0,3090,3094,3,206,103,0,3091,3092,5, - 21,0,0,3092,3093,5,163,0,0,3093,3095,3,102,51,0,3094,3091,1,0,0, - 0,3094,3095,1,0,0,0,3095,3097,1,0,0,0,3096,3098,7,13,0,0,3097,3096, - 1,0,0,0,3097,3098,1,0,0,0,3098,3104,1,0,0,0,3099,3100,5,206,0,0, - 3100,3101,5,1,0,0,3101,3102,3,210,105,0,3102,3103,5,2,0,0,3103,3105, - 1,0,0,0,3104,3099,1,0,0,0,3104,3105,1,0,0,0,3105,3115,1,0,0,0,3106, - 3107,5,257,0,0,3107,3112,3,104,52,0,3108,3109,5,3,0,0,3109,3111, - 3,104,52,0,3110,3108,1,0,0,0,3111,3114,1,0,0,0,3112,3110,1,0,0,0, - 3112,3113,1,0,0,0,3113,3116,1,0,0,0,3114,3112,1,0,0,0,3115,3106, - 1,0,0,0,3115,3116,1,0,0,0,3116,3126,1,0,0,0,3117,3118,5,71,0,0,3118, - 3123,3,106,53,0,3119,3120,5,3,0,0,3120,3122,3,106,53,0,3121,3119, - 1,0,0,0,3122,3125,1,0,0,0,3123,3121,1,0,0,0,3123,3124,1,0,0,0,3124, - 3127,1,0,0,0,3125,3123,1,0,0,0,3126,3117,1,0,0,0,3126,3127,1,0,0, - 0,3127,205,1,0,0,0,3128,3129,5,219,0,0,3129,3153,3,208,104,0,3130, - 3131,5,240,0,0,3131,3153,3,208,104,0,3132,3133,5,116,0,0,3133,3153, - 3,208,104,0,3134,3135,5,219,0,0,3135,3136,5,34,0,0,3136,3137,3,208, - 104,0,3137,3138,5,25,0,0,3138,3139,3,208,104,0,3139,3153,1,0,0,0, - 3140,3141,5,240,0,0,3141,3142,5,34,0,0,3142,3143,3,208,104,0,3143, - 3144,5,25,0,0,3144,3145,3,208,104,0,3145,3153,1,0,0,0,3146,3147, - 5,116,0,0,3147,3148,5,34,0,0,3148,3149,3,208,104,0,3149,3150,5,25, - 0,0,3150,3151,3,208,104,0,3151,3153,1,0,0,0,3152,3128,1,0,0,0,3152, - 3130,1,0,0,0,3152,3132,1,0,0,0,3152,3134,1,0,0,0,3152,3140,1,0,0, - 0,3152,3146,1,0,0,0,3153,207,1,0,0,0,3154,3155,5,278,0,0,3155,3164, - 5,212,0,0,3156,3157,5,278,0,0,3157,3164,5,102,0,0,3158,3159,5,56, - 0,0,3159,3164,5,239,0,0,3160,3161,3,142,71,0,3161,3162,7,30,0,0, - 3162,3164,1,0,0,0,3163,3154,1,0,0,0,3163,3156,1,0,0,0,3163,3158, - 1,0,0,0,3163,3160,1,0,0,0,3164,209,1,0,0,0,3165,3166,6,105,-1,0, - 3166,3168,3,212,106,0,3167,3169,3,214,107,0,3168,3167,1,0,0,0,3168, - 3169,1,0,0,0,3169,3177,1,0,0,0,3170,3171,10,2,0,0,3171,3176,3,210, - 105,3,3172,3173,10,1,0,0,3173,3174,5,11,0,0,3174,3176,3,210,105, - 2,3175,3170,1,0,0,0,3175,3172,1,0,0,0,3176,3179,1,0,0,0,3177,3175, - 1,0,0,0,3177,3178,1,0,0,0,3178,211,1,0,0,0,3179,3177,1,0,0,0,3180, - 3206,3,302,151,0,3181,3182,5,1,0,0,3182,3206,5,2,0,0,3183,3184,5, - 209,0,0,3184,3185,5,1,0,0,3185,3190,3,210,105,0,3186,3187,5,3,0, - 0,3187,3189,3,210,105,0,3188,3186,1,0,0,0,3189,3192,1,0,0,0,3190, - 3188,1,0,0,0,3190,3191,1,0,0,0,3191,3193,1,0,0,0,3192,3190,1,0,0, - 0,3193,3194,5,2,0,0,3194,3206,1,0,0,0,3195,3196,5,1,0,0,3196,3197, - 3,210,105,0,3197,3198,5,2,0,0,3198,3206,1,0,0,0,3199,3206,5,12,0, - 0,3200,3206,5,13,0,0,3201,3202,5,14,0,0,3202,3203,3,210,105,0,3203, - 3204,5,15,0,0,3204,3206,1,0,0,0,3205,3180,1,0,0,0,3205,3181,1,0, - 0,0,3205,3183,1,0,0,0,3205,3195,1,0,0,0,3205,3199,1,0,0,0,3205,3200, - 1,0,0,0,3205,3201,1,0,0,0,3206,213,1,0,0,0,3207,3209,5,320,0,0,3208, - 3210,5,324,0,0,3209,3208,1,0,0,0,3209,3210,1,0,0,0,3210,3238,1,0, - 0,0,3211,3213,5,318,0,0,3212,3214,5,324,0,0,3213,3212,1,0,0,0,3213, - 3214,1,0,0,0,3214,3238,1,0,0,0,3215,3217,5,324,0,0,3216,3218,5,324, - 0,0,3217,3216,1,0,0,0,3217,3218,1,0,0,0,3218,3238,1,0,0,0,3219,3220, - 5,16,0,0,3220,3221,5,329,0,0,3221,3223,5,17,0,0,3222,3224,5,324, - 0,0,3223,3222,1,0,0,0,3223,3224,1,0,0,0,3224,3238,1,0,0,0,3225,3227, - 5,16,0,0,3226,3228,5,329,0,0,3227,3226,1,0,0,0,3227,3228,1,0,0,0, - 3228,3229,1,0,0,0,3229,3231,5,3,0,0,3230,3232,5,329,0,0,3231,3230, - 1,0,0,0,3231,3232,1,0,0,0,3232,3233,1,0,0,0,3233,3235,5,17,0,0,3234, - 3236,5,324,0,0,3235,3234,1,0,0,0,3235,3236,1,0,0,0,3236,3238,1,0, - 0,0,3237,3207,1,0,0,0,3237,3211,1,0,0,0,3237,3215,1,0,0,0,3237,3219, - 1,0,0,0,3237,3225,1,0,0,0,3238,215,1,0,0,0,3239,3240,3,302,151,0, - 3240,3241,5,312,0,0,3241,3242,3,142,71,0,3242,217,1,0,0,0,3243,3244, - 5,104,0,0,3244,3248,7,31,0,0,3245,3246,5,276,0,0,3246,3248,7,32, - 0,0,3247,3243,1,0,0,0,3247,3245,1,0,0,0,3248,219,1,0,0,0,3249,3250, - 5,134,0,0,3250,3251,5,153,0,0,3251,3255,3,222,111,0,3252,3253,5, - 220,0,0,3253,3255,7,33,0,0,3254,3249,1,0,0,0,3254,3252,1,0,0,0,3255, - 221,1,0,0,0,3256,3257,5,220,0,0,3257,3264,5,279,0,0,3258,3259,5, - 220,0,0,3259,3264,5,48,0,0,3260,3261,5,225,0,0,3261,3264,5,220,0, - 0,3262,3264,5,249,0,0,3263,3256,1,0,0,0,3263,3258,1,0,0,0,3263,3260, - 1,0,0,0,3263,3262,1,0,0,0,3264,223,1,0,0,0,3265,3271,3,142,71,0, - 3266,3267,3,302,151,0,3267,3268,5,6,0,0,3268,3269,3,142,71,0,3269, - 3271,1,0,0,0,3270,3265,1,0,0,0,3270,3266,1,0,0,0,3271,225,1,0,0, - 0,3272,3273,3,302,151,0,3273,3274,5,4,0,0,3274,3275,3,302,151,0, - 3275,3278,1,0,0,0,3276,3278,3,302,151,0,3277,3272,1,0,0,0,3277,3276, - 1,0,0,0,3278,227,1,0,0,0,3279,3284,3,226,113,0,3280,3281,5,3,0,0, - 3281,3283,3,226,113,0,3282,3280,1,0,0,0,3283,3286,1,0,0,0,3284,3282, - 1,0,0,0,3284,3285,1,0,0,0,3285,229,1,0,0,0,3286,3284,1,0,0,0,3287, - 3288,5,107,0,0,3288,3289,3,232,116,0,3289,3293,3,238,119,0,3290, - 3292,3,240,120,0,3291,3290,1,0,0,0,3292,3295,1,0,0,0,3293,3291,1, - 0,0,0,3293,3294,1,0,0,0,3294,3296,1,0,0,0,3295,3293,1,0,0,0,3296, - 3297,3,242,121,0,3297,231,1,0,0,0,3298,3299,3,280,140,0,3299,3308, - 5,1,0,0,3300,3305,3,236,118,0,3301,3302,5,3,0,0,3302,3304,3,236, - 118,0,3303,3301,1,0,0,0,3304,3307,1,0,0,0,3305,3303,1,0,0,0,3305, - 3306,1,0,0,0,3306,3309,1,0,0,0,3307,3305,1,0,0,0,3308,3300,1,0,0, - 0,3308,3309,1,0,0,0,3309,3310,1,0,0,0,3310,3311,5,2,0,0,3311,233, - 1,0,0,0,3312,3313,3,278,139,0,3313,3322,5,1,0,0,3314,3319,3,236, - 118,0,3315,3316,5,3,0,0,3316,3318,3,236,118,0,3317,3315,1,0,0,0, - 3318,3321,1,0,0,0,3319,3317,1,0,0,0,3319,3320,1,0,0,0,3320,3323, - 1,0,0,0,3321,3319,1,0,0,0,3322,3314,1,0,0,0,3322,3323,1,0,0,0,3323, - 3324,1,0,0,0,3324,3325,5,2,0,0,3325,235,1,0,0,0,3326,3328,3,302, - 151,0,3327,3326,1,0,0,0,3327,3328,1,0,0,0,3328,3329,1,0,0,0,3329, - 3330,3,190,95,0,3330,237,1,0,0,0,3331,3332,5,232,0,0,3332,3333,3, - 190,95,0,3333,239,1,0,0,0,3334,3335,5,147,0,0,3335,3354,3,302,151, - 0,3336,3338,5,182,0,0,3337,3336,1,0,0,0,3337,3338,1,0,0,0,3338,3339, - 1,0,0,0,3339,3354,5,78,0,0,3340,3341,5,232,0,0,3341,3342,5,183,0, - 0,3342,3343,5,190,0,0,3343,3344,5,183,0,0,3344,3354,5,126,0,0,3345, - 3346,5,38,0,0,3346,3347,5,190,0,0,3347,3348,5,183,0,0,3348,3354, - 5,126,0,0,3349,3350,5,246,0,0,3350,3354,7,1,0,0,3351,3352,5,46,0, - 0,3352,3354,3,174,87,0,3353,3334,1,0,0,0,3353,3337,1,0,0,0,3353, - 3340,1,0,0,0,3353,3345,1,0,0,0,3353,3349,1,0,0,0,3353,3351,1,0,0, - 0,3354,241,1,0,0,0,3355,3356,5,230,0,0,3356,3455,3,148,74,0,3357, - 3358,5,251,0,0,3358,3359,3,302,151,0,3359,3360,5,312,0,0,3360,3361, - 3,142,71,0,3361,3455,1,0,0,0,3362,3363,5,40,0,0,3363,3365,3,142, - 71,0,3364,3366,3,244,122,0,3365,3364,1,0,0,0,3366,3367,1,0,0,0,3367, - 3365,1,0,0,0,3367,3368,1,0,0,0,3368,3370,1,0,0,0,3369,3371,3,248, - 124,0,3370,3369,1,0,0,0,3370,3371,1,0,0,0,3371,3372,1,0,0,0,3372, - 3373,5,88,0,0,3373,3374,5,40,0,0,3374,3455,1,0,0,0,3375,3377,5,40, - 0,0,3376,3378,3,244,122,0,3377,3376,1,0,0,0,3378,3379,1,0,0,0,3379, + 2601,5,2,0,0,2601,2780,1,0,0,0,2602,2603,5,97,0,0,2603,2604,5,1, + 0,0,2604,2605,3,302,151,0,2605,2606,5,106,0,0,2606,2607,3,148,74, + 0,2607,2608,5,2,0,0,2608,2780,1,0,0,0,2609,2610,5,44,0,0,2610,2611, + 5,1,0,0,2611,2616,3,142,71,0,2612,2613,5,3,0,0,2613,2615,3,142,71, + 0,2614,2612,1,0,0,0,2615,2618,1,0,0,0,2616,2614,1,0,0,0,2616,2617, + 1,0,0,0,2617,2619,1,0,0,0,2618,2616,1,0,0,0,2619,2620,5,2,0,0,2620, + 2780,1,0,0,0,2621,2622,5,1,0,0,2622,2623,3,142,71,0,2623,2624,5, + 2,0,0,2624,2780,1,0,0,0,2625,2626,5,116,0,0,2626,2635,5,1,0,0,2627, + 2632,3,288,144,0,2628,2629,5,3,0,0,2629,2631,3,288,144,0,2630,2628, + 1,0,0,0,2631,2634,1,0,0,0,2632,2630,1,0,0,0,2632,2633,1,0,0,0,2633, + 2636,1,0,0,0,2634,2632,1,0,0,0,2635,2627,1,0,0,0,2635,2636,1,0,0, + 0,2636,2637,1,0,0,0,2637,2780,5,2,0,0,2638,2639,5,140,0,0,2639,2640, + 5,1,0,0,2640,2645,3,152,76,0,2641,2642,3,160,80,0,2642,2643,5,191, + 0,0,2643,2644,5,90,0,0,2644,2646,1,0,0,0,2645,2641,1,0,0,0,2645, + 2646,1,0,0,0,2646,2647,1,0,0,0,2647,2648,5,2,0,0,2648,2780,1,0,0, + 0,2649,2650,5,144,0,0,2650,2651,5,1,0,0,2651,2654,3,152,76,0,2652, + 2653,5,232,0,0,2653,2655,3,190,95,0,2654,2652,1,0,0,0,2654,2655, + 1,0,0,0,2655,2660,1,0,0,0,2656,2657,3,162,81,0,2657,2658,5,191,0, + 0,2658,2659,5,86,0,0,2659,2661,1,0,0,0,2660,2656,1,0,0,0,2660,2661, + 1,0,0,0,2661,2666,1,0,0,0,2662,2663,3,162,81,0,2663,2664,5,191,0, + 0,2664,2665,5,90,0,0,2665,2667,1,0,0,0,2666,2662,1,0,0,0,2666,2667, + 1,0,0,0,2667,2668,1,0,0,0,2668,2669,5,2,0,0,2669,2780,1,0,0,0,2670, + 2671,5,142,0,0,2671,2672,5,1,0,0,2672,2679,3,152,76,0,2673,2674, + 5,232,0,0,2674,2677,3,190,95,0,2675,2676,5,105,0,0,2676,2678,3,156, + 78,0,2677,2675,1,0,0,0,2677,2678,1,0,0,0,2678,2680,1,0,0,0,2679, + 2673,1,0,0,0,2679,2680,1,0,0,0,2680,2684,1,0,0,0,2681,2682,3,164, + 82,0,2682,2683,5,309,0,0,2683,2685,1,0,0,0,2684,2681,1,0,0,0,2684, + 2685,1,0,0,0,2685,2693,1,0,0,0,2686,2687,7,15,0,0,2687,2691,5,219, + 0,0,2688,2689,5,191,0,0,2689,2690,5,243,0,0,2690,2692,5,265,0,0, + 2691,2688,1,0,0,0,2691,2692,1,0,0,0,2692,2694,1,0,0,0,2693,2686, + 1,0,0,0,2693,2694,1,0,0,0,2694,2699,1,0,0,0,2695,2696,3,166,83,0, + 2696,2697,5,191,0,0,2697,2698,5,86,0,0,2698,2700,1,0,0,0,2699,2695, + 1,0,0,0,2699,2700,1,0,0,0,2700,2705,1,0,0,0,2701,2702,3,166,83,0, + 2702,2703,5,191,0,0,2703,2704,5,90,0,0,2704,2706,1,0,0,0,2705,2701, + 1,0,0,0,2705,2706,1,0,0,0,2706,2707,1,0,0,0,2707,2708,5,2,0,0,2708, + 2780,1,0,0,0,2709,2710,5,141,0,0,2710,2739,5,1,0,0,2711,2716,3,168, + 84,0,2712,2713,5,3,0,0,2713,2715,3,168,84,0,2714,2712,1,0,0,0,2715, + 2718,1,0,0,0,2716,2714,1,0,0,0,2716,2717,1,0,0,0,2717,2725,1,0,0, + 0,2718,2716,1,0,0,0,2719,2720,5,184,0,0,2720,2721,5,191,0,0,2721, + 2726,5,184,0,0,2722,2723,5,18,0,0,2723,2724,5,191,0,0,2724,2726, + 5,184,0,0,2725,2719,1,0,0,0,2725,2722,1,0,0,0,2725,2726,1,0,0,0, + 2726,2737,1,0,0,0,2727,2728,5,305,0,0,2728,2730,5,283,0,0,2729,2731, + 5,147,0,0,2730,2729,1,0,0,0,2730,2731,1,0,0,0,2731,2738,1,0,0,0, + 2732,2733,5,307,0,0,2733,2735,5,283,0,0,2734,2736,5,147,0,0,2735, + 2734,1,0,0,0,2735,2736,1,0,0,0,2736,2738,1,0,0,0,2737,2727,1,0,0, + 0,2737,2732,1,0,0,0,2737,2738,1,0,0,0,2738,2740,1,0,0,0,2739,2711, + 1,0,0,0,2739,2740,1,0,0,0,2740,2747,1,0,0,0,2741,2742,5,232,0,0, + 2742,2745,3,190,95,0,2743,2744,5,105,0,0,2744,2746,3,156,78,0,2745, + 2743,1,0,0,0,2745,2746,1,0,0,0,2746,2748,1,0,0,0,2747,2741,1,0,0, + 0,2747,2748,1,0,0,0,2748,2749,1,0,0,0,2749,2780,5,2,0,0,2750,2751, + 5,139,0,0,2751,2768,5,1,0,0,2752,2757,3,154,77,0,2753,2754,5,3,0, + 0,2754,2756,3,154,77,0,2755,2753,1,0,0,0,2756,2759,1,0,0,0,2757, + 2755,1,0,0,0,2757,2758,1,0,0,0,2758,2766,1,0,0,0,2759,2757,1,0,0, + 0,2760,2761,5,184,0,0,2761,2762,5,191,0,0,2762,2767,5,184,0,0,2763, + 2764,5,18,0,0,2764,2765,5,191,0,0,2765,2767,5,184,0,0,2766,2760, + 1,0,0,0,2766,2763,1,0,0,0,2766,2767,1,0,0,0,2767,2769,1,0,0,0,2768, + 2752,1,0,0,0,2768,2769,1,0,0,0,2769,2776,1,0,0,0,2770,2771,5,232, + 0,0,2771,2774,3,190,95,0,2772,2773,5,105,0,0,2773,2775,3,156,78, + 0,2774,2772,1,0,0,0,2774,2775,1,0,0,0,2775,2777,1,0,0,0,2776,2770, + 1,0,0,0,2776,2777,1,0,0,0,2777,2778,1,0,0,0,2778,2780,5,2,0,0,2779, + 2314,1,0,0,0,2779,2316,1,0,0,0,2779,2317,1,0,0,0,2779,2320,1,0,0, + 0,2779,2323,1,0,0,0,2779,2324,1,0,0,0,2779,2325,1,0,0,0,2779,2326, + 1,0,0,0,2779,2327,1,0,0,0,2779,2328,1,0,0,0,2779,2335,1,0,0,0,2779, + 2345,1,0,0,0,2779,2357,1,0,0,0,2779,2392,1,0,0,0,2779,2410,1,0,0, + 0,2779,2449,1,0,0,0,2779,2452,1,0,0,0,2779,2456,1,0,0,0,2779,2470, + 1,0,0,0,2779,2474,1,0,0,0,2779,2479,1,0,0,0,2779,2492,1,0,0,0,2779, + 2504,1,0,0,0,2779,2511,1,0,0,0,2779,2518,1,0,0,0,2779,2531,1,0,0, + 0,2779,2532,1,0,0,0,2779,2533,1,0,0,0,2779,2539,1,0,0,0,2779,2545, + 1,0,0,0,2779,2551,1,0,0,0,2779,2557,1,0,0,0,2779,2558,1,0,0,0,2779, + 2559,1,0,0,0,2779,2560,1,0,0,0,2779,2561,1,0,0,0,2779,2575,1,0,0, + 0,2779,2582,1,0,0,0,2779,2593,1,0,0,0,2779,2602,1,0,0,0,2779,2609, + 1,0,0,0,2779,2621,1,0,0,0,2779,2625,1,0,0,0,2779,2638,1,0,0,0,2779, + 2649,1,0,0,0,2779,2670,1,0,0,0,2779,2709,1,0,0,0,2779,2750,1,0,0, + 0,2780,2791,1,0,0,0,2781,2782,10,25,0,0,2782,2783,5,8,0,0,2783,2784, + 3,148,74,0,2784,2785,5,9,0,0,2785,2790,1,0,0,0,2786,2787,10,23,0, + 0,2787,2788,5,4,0,0,2788,2790,3,302,151,0,2789,2781,1,0,0,0,2789, + 2786,1,0,0,0,2790,2793,1,0,0,0,2791,2789,1,0,0,0,2791,2792,1,0,0, + 0,2792,151,1,0,0,0,2793,2791,1,0,0,0,2794,2795,3,154,77,0,2795,2796, + 5,3,0,0,2796,2799,3,174,87,0,2797,2798,5,28,0,0,2798,2800,3,302, + 151,0,2799,2797,1,0,0,0,2799,2800,1,0,0,0,2800,2810,1,0,0,0,2801, + 2802,5,204,0,0,2802,2807,3,158,79,0,2803,2804,5,3,0,0,2804,2806, + 3,158,79,0,2805,2803,1,0,0,0,2806,2809,1,0,0,0,2807,2805,1,0,0,0, + 2807,2808,1,0,0,0,2808,2811,1,0,0,0,2809,2807,1,0,0,0,2810,2801, + 1,0,0,0,2810,2811,1,0,0,0,2811,153,1,0,0,0,2812,2815,3,142,71,0, + 2813,2814,5,105,0,0,2814,2816,3,156,78,0,2815,2813,1,0,0,0,2815, + 2816,1,0,0,0,2816,155,1,0,0,0,2817,2820,5,138,0,0,2818,2819,5,88, + 0,0,2819,2821,7,20,0,0,2820,2818,1,0,0,0,2820,2821,1,0,0,0,2821, + 157,1,0,0,0,2822,2823,3,154,77,0,2823,2824,5,28,0,0,2824,2825,3, + 302,151,0,2825,159,1,0,0,0,2826,2827,7,21,0,0,2827,161,1,0,0,0,2828, + 2833,5,90,0,0,2829,2833,5,184,0,0,2830,2831,5,71,0,0,2831,2833,3, + 142,71,0,2832,2828,1,0,0,0,2832,2829,1,0,0,0,2832,2830,1,0,0,0,2833, + 163,1,0,0,0,2834,2836,5,307,0,0,2835,2837,5,27,0,0,2836,2835,1,0, + 0,0,2836,2837,1,0,0,0,2837,2846,1,0,0,0,2838,2840,5,305,0,0,2839, + 2841,7,22,0,0,2840,2839,1,0,0,0,2840,2841,1,0,0,0,2841,2843,1,0, + 0,0,2842,2844,5,27,0,0,2843,2842,1,0,0,0,2843,2844,1,0,0,0,2844, + 2846,1,0,0,0,2845,2834,1,0,0,0,2845,2838,1,0,0,0,2846,165,1,0,0, + 0,2847,2854,5,90,0,0,2848,2854,5,184,0,0,2849,2850,5,86,0,0,2850, + 2854,5,27,0,0,2851,2852,5,86,0,0,2852,2854,5,187,0,0,2853,2847,1, + 0,0,0,2853,2848,1,0,0,0,2853,2849,1,0,0,0,2853,2851,1,0,0,0,2854, + 167,1,0,0,0,2855,2857,5,146,0,0,2856,2855,1,0,0,0,2856,2857,1,0, + 0,0,2857,2858,1,0,0,0,2858,2859,3,142,71,0,2859,2860,5,296,0,0,2860, + 2861,3,154,77,0,2861,2867,1,0,0,0,2862,2863,3,142,71,0,2863,2864, + 5,10,0,0,2864,2865,3,154,77,0,2865,2867,1,0,0,0,2866,2856,1,0,0, + 0,2866,2862,1,0,0,0,2867,169,1,0,0,0,2868,2869,7,23,0,0,2869,171, + 1,0,0,0,2870,2871,5,121,0,0,2871,2875,5,186,0,0,2872,2873,5,229, + 0,0,2873,2875,5,186,0,0,2874,2870,1,0,0,0,2874,2872,1,0,0,0,2875, + 173,1,0,0,0,2876,2883,5,327,0,0,2877,2880,5,328,0,0,2878,2879,5, + 278,0,0,2879,2881,5,327,0,0,2880,2878,1,0,0,0,2880,2881,1,0,0,0, + 2881,2883,1,0,0,0,2882,2876,1,0,0,0,2882,2877,1,0,0,0,2883,175,1, + 0,0,0,2884,2885,5,268,0,0,2885,2886,5,312,0,0,2886,2891,3,184,92, + 0,2887,2888,5,268,0,0,2888,2889,5,312,0,0,2889,2891,3,174,87,0,2890, + 2884,1,0,0,0,2890,2887,1,0,0,0,2891,177,1,0,0,0,2892,2893,7,24,0, + 0,2893,179,1,0,0,0,2894,2895,7,25,0,0,2895,181,1,0,0,0,2896,2897, + 7,26,0,0,2897,183,1,0,0,0,2898,2900,5,130,0,0,2899,2901,7,18,0,0, + 2900,2899,1,0,0,0,2900,2901,1,0,0,0,2901,2902,1,0,0,0,2902,2903, + 3,174,87,0,2903,2906,3,186,93,0,2904,2905,5,270,0,0,2905,2907,3, + 186,93,0,2906,2904,1,0,0,0,2906,2907,1,0,0,0,2907,185,1,0,0,0,2908, + 2909,7,27,0,0,2909,187,1,0,0,0,2910,2911,7,28,0,0,2911,189,1,0,0, + 0,2912,2913,6,95,-1,0,2913,2914,5,240,0,0,2914,2915,5,1,0,0,2915, + 2920,3,192,96,0,2916,2917,5,3,0,0,2917,2919,3,192,96,0,2918,2916, + 1,0,0,0,2919,2922,1,0,0,0,2920,2918,1,0,0,0,2920,2921,1,0,0,0,2921, + 2923,1,0,0,0,2922,2920,1,0,0,0,2923,2924,5,2,0,0,2924,2984,1,0,0, + 0,2925,2926,5,130,0,0,2926,2929,3,186,93,0,2927,2928,5,270,0,0,2928, + 2930,3,186,93,0,2929,2927,1,0,0,0,2929,2930,1,0,0,0,2930,2984,1, + 0,0,0,2931,2936,5,269,0,0,2932,2933,5,1,0,0,2933,2934,3,194,97,0, + 2934,2935,5,2,0,0,2935,2937,1,0,0,0,2936,2932,1,0,0,0,2936,2937, + 1,0,0,0,2937,2941,1,0,0,0,2938,2939,7,29,0,0,2939,2940,5,268,0,0, + 2940,2942,5,312,0,0,2941,2938,1,0,0,0,2941,2942,1,0,0,0,2942,2984, + 1,0,0,0,2943,2948,5,268,0,0,2944,2945,5,1,0,0,2945,2946,3,194,97, + 0,2946,2947,5,2,0,0,2947,2949,1,0,0,0,2948,2944,1,0,0,0,2948,2949, + 1,0,0,0,2949,2953,1,0,0,0,2950,2951,7,29,0,0,2951,2952,5,268,0,0, + 2952,2954,5,312,0,0,2953,2950,1,0,0,0,2953,2954,1,0,0,0,2954,2984, + 1,0,0,0,2955,2956,5,83,0,0,2956,2984,5,214,0,0,2957,2958,5,27,0, + 0,2958,2959,5,315,0,0,2959,2960,3,190,95,0,2960,2961,5,317,0,0,2961, + 2984,1,0,0,0,2962,2963,5,163,0,0,2963,2964,5,315,0,0,2964,2965,3, + 190,95,0,2965,2966,5,3,0,0,2966,2967,3,190,95,0,2967,2968,5,317, + 0,0,2968,2984,1,0,0,0,2969,2981,3,302,151,0,2970,2971,5,1,0,0,2971, + 2976,3,194,97,0,2972,2973,5,3,0,0,2973,2975,3,194,97,0,2974,2972, + 1,0,0,0,2975,2978,1,0,0,0,2976,2974,1,0,0,0,2976,2977,1,0,0,0,2977, + 2979,1,0,0,0,2978,2976,1,0,0,0,2979,2980,5,2,0,0,2980,2982,1,0,0, + 0,2981,2970,1,0,0,0,2981,2982,1,0,0,0,2982,2984,1,0,0,0,2983,2912, + 1,0,0,0,2983,2925,1,0,0,0,2983,2931,1,0,0,0,2983,2943,1,0,0,0,2983, + 2955,1,0,0,0,2983,2957,1,0,0,0,2983,2962,1,0,0,0,2983,2969,1,0,0, + 0,2984,2994,1,0,0,0,2985,2986,10,2,0,0,2986,2990,5,27,0,0,2987,2988, + 5,8,0,0,2988,2989,5,330,0,0,2989,2991,5,9,0,0,2990,2987,1,0,0,0, + 2990,2991,1,0,0,0,2991,2993,1,0,0,0,2992,2985,1,0,0,0,2993,2996, + 1,0,0,0,2994,2992,1,0,0,0,2994,2995,1,0,0,0,2995,191,1,0,0,0,2996, + 2994,1,0,0,0,2997,3002,3,190,95,0,2998,2999,3,302,151,0,2999,3000, + 3,190,95,0,3000,3002,1,0,0,0,3001,2997,1,0,0,0,3001,2998,1,0,0,0, + 3002,193,1,0,0,0,3003,3006,5,330,0,0,3004,3006,3,190,95,0,3005,3003, + 1,0,0,0,3005,3004,1,0,0,0,3006,195,1,0,0,0,3007,3008,5,301,0,0,3008, + 3009,3,142,71,0,3009,3010,5,266,0,0,3010,3011,3,142,71,0,3011,197, + 1,0,0,0,3012,3013,5,100,0,0,3013,3014,5,1,0,0,3014,3015,3,54,27, + 0,3015,3016,5,2,0,0,3016,199,1,0,0,0,3017,3018,5,301,0,0,3018,3021, + 5,165,0,0,3019,3020,5,25,0,0,3020,3022,3,142,71,0,3021,3019,1,0, + 0,0,3021,3022,1,0,0,0,3022,3023,1,0,0,0,3023,3024,5,266,0,0,3024, + 3025,5,288,0,0,3025,3026,5,252,0,0,3026,3027,3,302,151,0,3027,3028, + 5,313,0,0,3028,3036,3,142,71,0,3029,3030,5,3,0,0,3030,3031,3,302, + 151,0,3031,3032,5,313,0,0,3032,3033,3,142,71,0,3033,3035,1,0,0,0, + 3034,3029,1,0,0,0,3035,3038,1,0,0,0,3036,3034,1,0,0,0,3036,3037, + 1,0,0,0,3037,3082,1,0,0,0,3038,3036,1,0,0,0,3039,3040,5,301,0,0, + 3040,3043,5,165,0,0,3041,3042,5,25,0,0,3042,3044,3,142,71,0,3043, + 3041,1,0,0,0,3043,3044,1,0,0,0,3044,3045,1,0,0,0,3045,3046,5,266, + 0,0,3046,3082,5,74,0,0,3047,3048,5,301,0,0,3048,3049,5,183,0,0,3049, + 3052,5,165,0,0,3050,3051,5,25,0,0,3051,3053,3,142,71,0,3052,3050, + 1,0,0,0,3052,3053,1,0,0,0,3053,3054,1,0,0,0,3054,3055,5,266,0,0, + 3055,3067,5,128,0,0,3056,3057,5,1,0,0,3057,3062,3,302,151,0,3058, + 3059,5,3,0,0,3059,3061,3,302,151,0,3060,3058,1,0,0,0,3061,3064,1, + 0,0,0,3062,3060,1,0,0,0,3062,3063,1,0,0,0,3063,3065,1,0,0,0,3064, + 3062,1,0,0,0,3065,3066,5,2,0,0,3066,3068,1,0,0,0,3067,3056,1,0,0, + 0,3067,3068,1,0,0,0,3068,3069,1,0,0,0,3069,3070,5,297,0,0,3070,3071, + 5,1,0,0,3071,3076,3,142,71,0,3072,3073,5,3,0,0,3073,3075,3,142,71, + 0,3074,3072,1,0,0,0,3075,3078,1,0,0,0,3076,3074,1,0,0,0,3076,3077, + 1,0,0,0,3077,3079,1,0,0,0,3078,3076,1,0,0,0,3079,3080,5,2,0,0,3080, + 3082,1,0,0,0,3081,3017,1,0,0,0,3081,3039,1,0,0,0,3081,3047,1,0,0, + 0,3082,201,1,0,0,0,3083,3089,5,200,0,0,3084,3090,3,302,151,0,3085, + 3086,5,1,0,0,3086,3087,3,70,35,0,3087,3088,5,2,0,0,3088,3090,1,0, + 0,0,3089,3084,1,0,0,0,3089,3085,1,0,0,0,3090,203,1,0,0,0,3091,3092, + 5,169,0,0,3092,3097,3,96,48,0,3093,3094,5,3,0,0,3094,3096,3,96,48, + 0,3095,3093,1,0,0,0,3096,3099,1,0,0,0,3097,3095,1,0,0,0,3097,3098, + 1,0,0,0,3098,3101,1,0,0,0,3099,3097,1,0,0,0,3100,3091,1,0,0,0,3100, + 3101,1,0,0,0,3101,3102,1,0,0,0,3102,3106,3,206,103,0,3103,3104,5, + 21,0,0,3104,3105,5,164,0,0,3105,3107,3,102,51,0,3106,3103,1,0,0, + 0,3106,3107,1,0,0,0,3107,3109,1,0,0,0,3108,3110,7,13,0,0,3109,3108, + 1,0,0,0,3109,3110,1,0,0,0,3110,3116,1,0,0,0,3111,3112,5,207,0,0, + 3112,3113,5,1,0,0,3113,3114,3,210,105,0,3114,3115,5,2,0,0,3115,3117, + 1,0,0,0,3116,3111,1,0,0,0,3116,3117,1,0,0,0,3117,3127,1,0,0,0,3118, + 3119,5,258,0,0,3119,3124,3,104,52,0,3120,3121,5,3,0,0,3121,3123, + 3,104,52,0,3122,3120,1,0,0,0,3123,3126,1,0,0,0,3124,3122,1,0,0,0, + 3124,3125,1,0,0,0,3125,3128,1,0,0,0,3126,3124,1,0,0,0,3127,3118, + 1,0,0,0,3127,3128,1,0,0,0,3128,3138,1,0,0,0,3129,3130,5,72,0,0,3130, + 3135,3,106,53,0,3131,3132,5,3,0,0,3132,3134,3,106,53,0,3133,3131, + 1,0,0,0,3134,3137,1,0,0,0,3135,3133,1,0,0,0,3135,3136,1,0,0,0,3136, + 3139,1,0,0,0,3137,3135,1,0,0,0,3138,3129,1,0,0,0,3138,3139,1,0,0, + 0,3139,205,1,0,0,0,3140,3141,5,220,0,0,3141,3165,3,208,104,0,3142, + 3143,5,241,0,0,3143,3165,3,208,104,0,3144,3145,5,117,0,0,3145,3165, + 3,208,104,0,3146,3147,5,220,0,0,3147,3148,5,34,0,0,3148,3149,3,208, + 104,0,3149,3150,5,25,0,0,3150,3151,3,208,104,0,3151,3165,1,0,0,0, + 3152,3153,5,241,0,0,3153,3154,5,34,0,0,3154,3155,3,208,104,0,3155, + 3156,5,25,0,0,3156,3157,3,208,104,0,3157,3165,1,0,0,0,3158,3159, + 5,117,0,0,3159,3160,5,34,0,0,3160,3161,3,208,104,0,3161,3162,5,25, + 0,0,3162,3163,3,208,104,0,3163,3165,1,0,0,0,3164,3140,1,0,0,0,3164, + 3142,1,0,0,0,3164,3144,1,0,0,0,3164,3146,1,0,0,0,3164,3152,1,0,0, + 0,3164,3158,1,0,0,0,3165,207,1,0,0,0,3166,3167,5,279,0,0,3167,3176, + 5,213,0,0,3168,3169,5,279,0,0,3169,3176,5,103,0,0,3170,3171,5,57, + 0,0,3171,3176,5,240,0,0,3172,3173,3,142,71,0,3173,3174,7,30,0,0, + 3174,3176,1,0,0,0,3175,3166,1,0,0,0,3175,3168,1,0,0,0,3175,3170, + 1,0,0,0,3175,3172,1,0,0,0,3176,209,1,0,0,0,3177,3178,6,105,-1,0, + 3178,3180,3,212,106,0,3179,3181,3,214,107,0,3180,3179,1,0,0,0,3180, + 3181,1,0,0,0,3181,3189,1,0,0,0,3182,3183,10,2,0,0,3183,3188,3,210, + 105,3,3184,3185,10,1,0,0,3185,3186,5,11,0,0,3186,3188,3,210,105, + 2,3187,3182,1,0,0,0,3187,3184,1,0,0,0,3188,3191,1,0,0,0,3189,3187, + 1,0,0,0,3189,3190,1,0,0,0,3190,211,1,0,0,0,3191,3189,1,0,0,0,3192, + 3218,3,302,151,0,3193,3194,5,1,0,0,3194,3218,5,2,0,0,3195,3196,5, + 210,0,0,3196,3197,5,1,0,0,3197,3202,3,210,105,0,3198,3199,5,3,0, + 0,3199,3201,3,210,105,0,3200,3198,1,0,0,0,3201,3204,1,0,0,0,3202, + 3200,1,0,0,0,3202,3203,1,0,0,0,3203,3205,1,0,0,0,3204,3202,1,0,0, + 0,3205,3206,5,2,0,0,3206,3218,1,0,0,0,3207,3208,5,1,0,0,3208,3209, + 3,210,105,0,3209,3210,5,2,0,0,3210,3218,1,0,0,0,3211,3218,5,12,0, + 0,3212,3218,5,13,0,0,3213,3214,5,14,0,0,3214,3215,3,210,105,0,3215, + 3216,5,15,0,0,3216,3218,1,0,0,0,3217,3192,1,0,0,0,3217,3193,1,0, + 0,0,3217,3195,1,0,0,0,3217,3207,1,0,0,0,3217,3211,1,0,0,0,3217,3212, + 1,0,0,0,3217,3213,1,0,0,0,3218,213,1,0,0,0,3219,3221,5,321,0,0,3220, + 3222,5,325,0,0,3221,3220,1,0,0,0,3221,3222,1,0,0,0,3222,3250,1,0, + 0,0,3223,3225,5,319,0,0,3224,3226,5,325,0,0,3225,3224,1,0,0,0,3225, + 3226,1,0,0,0,3226,3250,1,0,0,0,3227,3229,5,325,0,0,3228,3230,5,325, + 0,0,3229,3228,1,0,0,0,3229,3230,1,0,0,0,3230,3250,1,0,0,0,3231,3232, + 5,16,0,0,3232,3233,5,330,0,0,3233,3235,5,17,0,0,3234,3236,5,325, + 0,0,3235,3234,1,0,0,0,3235,3236,1,0,0,0,3236,3250,1,0,0,0,3237,3239, + 5,16,0,0,3238,3240,5,330,0,0,3239,3238,1,0,0,0,3239,3240,1,0,0,0, + 3240,3241,1,0,0,0,3241,3243,5,3,0,0,3242,3244,5,330,0,0,3243,3242, + 1,0,0,0,3243,3244,1,0,0,0,3244,3245,1,0,0,0,3245,3247,5,17,0,0,3246, + 3248,5,325,0,0,3247,3246,1,0,0,0,3247,3248,1,0,0,0,3248,3250,1,0, + 0,0,3249,3219,1,0,0,0,3249,3223,1,0,0,0,3249,3227,1,0,0,0,3249,3231, + 1,0,0,0,3249,3237,1,0,0,0,3250,215,1,0,0,0,3251,3252,3,302,151,0, + 3252,3253,5,313,0,0,3253,3254,3,142,71,0,3254,217,1,0,0,0,3255,3256, + 5,105,0,0,3256,3260,7,31,0,0,3257,3258,5,277,0,0,3258,3260,7,32, + 0,0,3259,3255,1,0,0,0,3259,3257,1,0,0,0,3260,219,1,0,0,0,3261,3262, + 5,135,0,0,3262,3263,5,154,0,0,3263,3267,3,222,111,0,3264,3265,5, + 221,0,0,3265,3267,7,33,0,0,3266,3261,1,0,0,0,3266,3264,1,0,0,0,3267, + 221,1,0,0,0,3268,3269,5,221,0,0,3269,3276,5,280,0,0,3270,3271,5, + 221,0,0,3271,3276,5,49,0,0,3272,3273,5,226,0,0,3273,3276,5,221,0, + 0,3274,3276,5,250,0,0,3275,3268,1,0,0,0,3275,3270,1,0,0,0,3275,3272, + 1,0,0,0,3275,3274,1,0,0,0,3276,223,1,0,0,0,3277,3283,3,142,71,0, + 3278,3279,3,302,151,0,3279,3280,5,6,0,0,3280,3281,3,142,71,0,3281, + 3283,1,0,0,0,3282,3277,1,0,0,0,3282,3278,1,0,0,0,3283,225,1,0,0, + 0,3284,3285,3,302,151,0,3285,3286,5,4,0,0,3286,3287,3,302,151,0, + 3287,3290,1,0,0,0,3288,3290,3,302,151,0,3289,3284,1,0,0,0,3289,3288, + 1,0,0,0,3290,227,1,0,0,0,3291,3296,3,226,113,0,3292,3293,5,3,0,0, + 3293,3295,3,226,113,0,3294,3292,1,0,0,0,3295,3298,1,0,0,0,3296,3294, + 1,0,0,0,3296,3297,1,0,0,0,3297,229,1,0,0,0,3298,3296,1,0,0,0,3299, + 3300,5,108,0,0,3300,3301,3,232,116,0,3301,3305,3,238,119,0,3302, + 3304,3,240,120,0,3303,3302,1,0,0,0,3304,3307,1,0,0,0,3305,3303,1, + 0,0,0,3305,3306,1,0,0,0,3306,3308,1,0,0,0,3307,3305,1,0,0,0,3308, + 3309,3,242,121,0,3309,231,1,0,0,0,3310,3311,3,280,140,0,3311,3320, + 5,1,0,0,3312,3317,3,236,118,0,3313,3314,5,3,0,0,3314,3316,3,236, + 118,0,3315,3313,1,0,0,0,3316,3319,1,0,0,0,3317,3315,1,0,0,0,3317, + 3318,1,0,0,0,3318,3321,1,0,0,0,3319,3317,1,0,0,0,3320,3312,1,0,0, + 0,3320,3321,1,0,0,0,3321,3322,1,0,0,0,3322,3323,5,2,0,0,3323,233, + 1,0,0,0,3324,3325,3,278,139,0,3325,3334,5,1,0,0,3326,3331,3,236, + 118,0,3327,3328,5,3,0,0,3328,3330,3,236,118,0,3329,3327,1,0,0,0, + 3330,3333,1,0,0,0,3331,3329,1,0,0,0,3331,3332,1,0,0,0,3332,3335, + 1,0,0,0,3333,3331,1,0,0,0,3334,3326,1,0,0,0,3334,3335,1,0,0,0,3335, + 3336,1,0,0,0,3336,3337,5,2,0,0,3337,235,1,0,0,0,3338,3340,3,302, + 151,0,3339,3338,1,0,0,0,3339,3340,1,0,0,0,3340,3341,1,0,0,0,3341, + 3342,3,190,95,0,3342,237,1,0,0,0,3343,3344,5,233,0,0,3344,3345,3, + 190,95,0,3345,239,1,0,0,0,3346,3347,5,148,0,0,3347,3366,3,302,151, + 0,3348,3350,5,183,0,0,3349,3348,1,0,0,0,3349,3350,1,0,0,0,3350,3351, + 1,0,0,0,3351,3366,5,79,0,0,3352,3353,5,233,0,0,3353,3354,5,184,0, + 0,3354,3355,5,191,0,0,3355,3356,5,184,0,0,3356,3366,5,127,0,0,3357, + 3358,5,38,0,0,3358,3359,5,191,0,0,3359,3360,5,184,0,0,3360,3366, + 5,127,0,0,3361,3362,5,247,0,0,3362,3366,7,1,0,0,3363,3364,5,47,0, + 0,3364,3366,3,174,87,0,3365,3346,1,0,0,0,3365,3349,1,0,0,0,3365, + 3352,1,0,0,0,3365,3357,1,0,0,0,3365,3361,1,0,0,0,3365,3363,1,0,0, + 0,3366,241,1,0,0,0,3367,3368,5,231,0,0,3368,3467,3,148,74,0,3369, + 3370,5,252,0,0,3370,3371,3,302,151,0,3371,3372,5,313,0,0,3372,3373, + 3,142,71,0,3373,3467,1,0,0,0,3374,3375,5,40,0,0,3375,3377,3,142, + 71,0,3376,3378,3,244,122,0,3377,3376,1,0,0,0,3378,3379,1,0,0,0,3379, 3377,1,0,0,0,3379,3380,1,0,0,0,3380,3382,1,0,0,0,3381,3383,3,248, 124,0,3382,3381,1,0,0,0,3382,3383,1,0,0,0,3383,3384,1,0,0,0,3384, - 3385,5,88,0,0,3385,3386,5,40,0,0,3386,3455,1,0,0,0,3387,3388,5,119, - 0,0,3388,3389,3,142,71,0,3389,3390,5,265,0,0,3390,3394,3,252,126, - 0,3391,3393,3,246,123,0,3392,3391,1,0,0,0,3393,3396,1,0,0,0,3394, - 3392,1,0,0,0,3394,3395,1,0,0,0,3395,3398,1,0,0,0,3396,3394,1,0,0, - 0,3397,3399,3,248,124,0,3398,3397,1,0,0,0,3398,3399,1,0,0,0,3399, - 3400,1,0,0,0,3400,3401,5,88,0,0,3401,3402,5,119,0,0,3402,3455,1, - 0,0,0,3403,3404,5,135,0,0,3404,3455,3,302,151,0,3405,3406,5,151, - 0,0,3406,3455,3,302,151,0,3407,3413,5,32,0,0,3408,3409,3,250,125, - 0,3409,3410,5,325,0,0,3410,3412,1,0,0,0,3411,3408,1,0,0,0,3412,3415, - 1,0,0,0,3413,3411,1,0,0,0,3413,3414,1,0,0,0,3414,3417,1,0,0,0,3415, - 3413,1,0,0,0,3416,3418,3,252,126,0,3417,3416,1,0,0,0,3417,3418,1, - 0,0,0,3418,3419,1,0,0,0,3419,3455,5,88,0,0,3420,3421,3,302,151,0, - 3421,3422,5,10,0,0,3422,3424,1,0,0,0,3423,3420,1,0,0,0,3423,3424, - 1,0,0,0,3424,3425,1,0,0,0,3425,3426,5,161,0,0,3426,3427,3,252,126, - 0,3427,3428,5,88,0,0,3428,3429,5,161,0,0,3429,3455,1,0,0,0,3430, - 3431,3,302,151,0,3431,3432,5,10,0,0,3432,3434,1,0,0,0,3433,3430, - 1,0,0,0,3433,3434,1,0,0,0,3434,3435,1,0,0,0,3435,3436,5,302,0,0, - 3436,3437,3,142,71,0,3437,3438,5,81,0,0,3438,3439,3,252,126,0,3439, - 3440,5,88,0,0,3440,3441,5,302,0,0,3441,3455,1,0,0,0,3442,3443,3, - 302,151,0,3443,3444,5,10,0,0,3444,3446,1,0,0,0,3445,3442,1,0,0,0, - 3445,3446,1,0,0,0,3446,3447,1,0,0,0,3447,3448,5,224,0,0,3448,3449, - 3,252,126,0,3449,3450,5,286,0,0,3450,3451,3,142,71,0,3451,3452,5, - 88,0,0,3452,3453,5,224,0,0,3453,3455,1,0,0,0,3454,3355,1,0,0,0,3454, - 3357,1,0,0,0,3454,3362,1,0,0,0,3454,3375,1,0,0,0,3454,3387,1,0,0, - 0,3454,3403,1,0,0,0,3454,3405,1,0,0,0,3454,3407,1,0,0,0,3454,3423, - 1,0,0,0,3454,3433,1,0,0,0,3454,3445,1,0,0,0,3455,243,1,0,0,0,3456, - 3457,5,300,0,0,3457,3458,3,142,71,0,3458,3459,5,265,0,0,3459,3460, - 3,252,126,0,3460,245,1,0,0,0,3461,3462,5,86,0,0,3462,3463,3,142, - 71,0,3463,3464,5,265,0,0,3464,3465,3,252,126,0,3465,247,1,0,0,0, - 3466,3467,5,84,0,0,3467,3468,3,252,126,0,3468,249,1,0,0,0,3469,3470, - 5,69,0,0,3470,3475,3,302,151,0,3471,3472,5,3,0,0,3472,3474,3,302, - 151,0,3473,3471,1,0,0,0,3474,3477,1,0,0,0,3475,3473,1,0,0,0,3475, - 3476,1,0,0,0,3476,3478,1,0,0,0,3477,3475,1,0,0,0,3478,3481,3,190, - 95,0,3479,3480,5,70,0,0,3480,3482,3,148,74,0,3481,3479,1,0,0,0,3481, - 3482,1,0,0,0,3482,251,1,0,0,0,3483,3484,3,242,121,0,3484,3485,5, - 325,0,0,3485,3487,1,0,0,0,3486,3483,1,0,0,0,3487,3488,1,0,0,0,3488, - 3486,1,0,0,0,3488,3489,1,0,0,0,3489,253,1,0,0,0,3490,3497,5,53,0, - 0,3491,3497,5,248,0,0,3492,3497,5,73,0,0,3493,3497,5,127,0,0,3494, - 3497,5,287,0,0,3495,3497,3,302,151,0,3496,3490,1,0,0,0,3496,3491, - 1,0,0,0,3496,3492,1,0,0,0,3496,3493,1,0,0,0,3496,3494,1,0,0,0,3496, - 3495,1,0,0,0,3497,255,1,0,0,0,3498,3502,5,260,0,0,3499,3502,5,243, - 0,0,3500,3502,3,302,151,0,3501,3498,1,0,0,0,3501,3499,1,0,0,0,3501, - 3500,1,0,0,0,3502,257,1,0,0,0,3503,3505,3,256,128,0,3504,3503,1, - 0,0,0,3504,3505,1,0,0,0,3505,3506,1,0,0,0,3506,3507,3,288,144,0, - 3507,259,1,0,0,0,3508,3511,3,262,131,0,3509,3511,3,266,133,0,3510, - 3508,1,0,0,0,3510,3509,1,0,0,0,3511,261,1,0,0,0,3512,3524,3,302, - 151,0,3513,3514,3,302,151,0,3514,3515,5,4,0,0,3515,3516,3,302,151, - 0,3516,3524,1,0,0,0,3517,3518,3,302,151,0,3518,3519,5,4,0,0,3519, - 3520,3,302,151,0,3520,3521,5,4,0,0,3521,3522,3,302,151,0,3522,3524, - 1,0,0,0,3523,3512,1,0,0,0,3523,3513,1,0,0,0,3523,3517,1,0,0,0,3524, - 263,1,0,0,0,3525,3537,3,302,151,0,3526,3527,3,302,151,0,3527,3528, - 5,4,0,0,3528,3529,3,302,151,0,3529,3537,1,0,0,0,3530,3531,3,302, - 151,0,3531,3532,5,4,0,0,3532,3533,3,302,151,0,3533,3534,5,4,0,0, - 3534,3535,3,302,151,0,3535,3537,1,0,0,0,3536,3525,1,0,0,0,3536,3526, - 1,0,0,0,3536,3530,1,0,0,0,3537,265,1,0,0,0,3538,3550,3,302,151,0, - 3539,3540,3,302,151,0,3540,3541,5,4,0,0,3541,3542,3,302,151,0,3542, - 3550,1,0,0,0,3543,3544,3,302,151,0,3544,3545,5,4,0,0,3545,3546,3, - 302,151,0,3546,3547,5,4,0,0,3547,3548,3,302,151,0,3548,3550,1,0, - 0,0,3549,3538,1,0,0,0,3549,3539,1,0,0,0,3549,3543,1,0,0,0,3550,267, - 1,0,0,0,3551,3563,3,302,151,0,3552,3553,3,302,151,0,3553,3554,5, - 4,0,0,3554,3555,3,302,151,0,3555,3563,1,0,0,0,3556,3557,3,302,151, - 0,3557,3558,5,4,0,0,3558,3559,3,302,151,0,3559,3560,5,4,0,0,3560, - 3561,3,302,151,0,3561,3563,1,0,0,0,3562,3551,1,0,0,0,3562,3552,1, - 0,0,0,3562,3556,1,0,0,0,3563,269,1,0,0,0,3564,3570,3,302,151,0,3565, - 3566,3,302,151,0,3566,3567,5,4,0,0,3567,3568,3,302,151,0,3568,3570, - 1,0,0,0,3569,3564,1,0,0,0,3569,3565,1,0,0,0,3570,271,1,0,0,0,3571, - 3577,3,302,151,0,3572,3573,3,302,151,0,3573,3574,5,4,0,0,3574,3575, - 3,302,151,0,3575,3577,1,0,0,0,3576,3571,1,0,0,0,3576,3572,1,0,0, - 0,3577,273,1,0,0,0,3578,3579,3,302,151,0,3579,275,1,0,0,0,3580,3581, - 3,302,151,0,3581,277,1,0,0,0,3582,3583,3,288,144,0,3583,279,1,0, - 0,0,3584,3585,3,288,144,0,3585,281,1,0,0,0,3586,3589,3,288,144,0, - 3587,3589,4,141,14,0,3588,3586,1,0,0,0,3588,3587,1,0,0,0,3589,283, - 1,0,0,0,3590,3591,3,288,144,0,3591,285,1,0,0,0,3592,3593,3,302,151, - 0,3593,287,1,0,0,0,3594,3599,3,302,151,0,3595,3596,5,4,0,0,3596, - 3598,3,302,151,0,3597,3595,1,0,0,0,3598,3601,1,0,0,0,3599,3597,1, - 0,0,0,3599,3600,1,0,0,0,3600,289,1,0,0,0,3601,3599,1,0,0,0,3602, - 3603,5,103,0,0,3603,3604,3,292,146,0,3604,3605,5,28,0,0,3605,3606, - 5,187,0,0,3606,3607,3,148,74,0,3607,291,1,0,0,0,3608,3609,7,34,0, - 0,3609,293,1,0,0,0,3610,3614,3,296,148,0,3611,3614,5,64,0,0,3612, - 3614,5,60,0,0,3613,3610,1,0,0,0,3613,3611,1,0,0,0,3613,3612,1,0, - 0,0,3614,295,1,0,0,0,3615,3621,3,302,151,0,3616,3617,5,289,0,0,3617, - 3621,3,302,151,0,3618,3619,5,235,0,0,3619,3621,3,302,151,0,3620, - 3615,1,0,0,0,3620,3616,1,0,0,0,3620,3618,1,0,0,0,3621,297,1,0,0, - 0,3622,3627,3,302,151,0,3623,3624,5,3,0,0,3624,3626,3,302,151,0, - 3625,3623,1,0,0,0,3626,3629,1,0,0,0,3627,3625,1,0,0,0,3627,3628, - 1,0,0,0,3628,299,1,0,0,0,3629,3627,1,0,0,0,3630,3638,5,53,0,0,3631, - 3638,5,248,0,0,3632,3638,5,73,0,0,3633,3638,5,127,0,0,3634,3638, - 5,287,0,0,3635,3638,5,93,0,0,3636,3638,3,302,151,0,3637,3630,1,0, - 0,0,3637,3631,1,0,0,0,3637,3632,1,0,0,0,3637,3633,1,0,0,0,3637,3634, - 1,0,0,0,3637,3635,1,0,0,0,3637,3636,1,0,0,0,3638,301,1,0,0,0,3639, - 3645,5,332,0,0,3640,3645,5,334,0,0,3641,3645,3,308,154,0,3642,3645, - 5,335,0,0,3643,3645,5,333,0,0,3644,3639,1,0,0,0,3644,3640,1,0,0, - 0,3644,3641,1,0,0,0,3644,3642,1,0,0,0,3644,3643,1,0,0,0,3645,303, - 1,0,0,0,3646,3648,5,319,0,0,3647,3646,1,0,0,0,3647,3648,1,0,0,0, - 3648,3649,1,0,0,0,3649,3659,5,330,0,0,3650,3652,5,319,0,0,3651,3650, - 1,0,0,0,3651,3652,1,0,0,0,3652,3653,1,0,0,0,3653,3659,5,331,0,0, - 3654,3656,5,319,0,0,3655,3654,1,0,0,0,3655,3656,1,0,0,0,3656,3657, - 1,0,0,0,3657,3659,5,329,0,0,3658,3647,1,0,0,0,3658,3651,1,0,0,0, - 3658,3655,1,0,0,0,3659,305,1,0,0,0,3660,3663,3,302,151,0,3661,3663, - 3,174,87,0,3662,3660,1,0,0,0,3662,3661,1,0,0,0,3663,307,1,0,0,0, - 3664,3665,7,35,0,0,3665,309,1,0,0,0,476,313,322,326,330,334,338, + 3385,5,89,0,0,3385,3386,5,40,0,0,3386,3467,1,0,0,0,3387,3389,5,40, + 0,0,3388,3390,3,244,122,0,3389,3388,1,0,0,0,3390,3391,1,0,0,0,3391, + 3389,1,0,0,0,3391,3392,1,0,0,0,3392,3394,1,0,0,0,3393,3395,3,248, + 124,0,3394,3393,1,0,0,0,3394,3395,1,0,0,0,3395,3396,1,0,0,0,3396, + 3397,5,89,0,0,3397,3398,5,40,0,0,3398,3467,1,0,0,0,3399,3400,5,120, + 0,0,3400,3401,3,142,71,0,3401,3402,5,266,0,0,3402,3406,3,252,126, + 0,3403,3405,3,246,123,0,3404,3403,1,0,0,0,3405,3408,1,0,0,0,3406, + 3404,1,0,0,0,3406,3407,1,0,0,0,3407,3410,1,0,0,0,3408,3406,1,0,0, + 0,3409,3411,3,248,124,0,3410,3409,1,0,0,0,3410,3411,1,0,0,0,3411, + 3412,1,0,0,0,3412,3413,5,89,0,0,3413,3414,5,120,0,0,3414,3467,1, + 0,0,0,3415,3416,5,136,0,0,3416,3467,3,302,151,0,3417,3418,5,152, + 0,0,3418,3467,3,302,151,0,3419,3425,5,32,0,0,3420,3421,3,250,125, + 0,3421,3422,5,326,0,0,3422,3424,1,0,0,0,3423,3420,1,0,0,0,3424,3427, + 1,0,0,0,3425,3423,1,0,0,0,3425,3426,1,0,0,0,3426,3429,1,0,0,0,3427, + 3425,1,0,0,0,3428,3430,3,252,126,0,3429,3428,1,0,0,0,3429,3430,1, + 0,0,0,3430,3431,1,0,0,0,3431,3467,5,89,0,0,3432,3433,3,302,151,0, + 3433,3434,5,10,0,0,3434,3436,1,0,0,0,3435,3432,1,0,0,0,3435,3436, + 1,0,0,0,3436,3437,1,0,0,0,3437,3438,5,162,0,0,3438,3439,3,252,126, + 0,3439,3440,5,89,0,0,3440,3441,5,162,0,0,3441,3467,1,0,0,0,3442, + 3443,3,302,151,0,3443,3444,5,10,0,0,3444,3446,1,0,0,0,3445,3442, + 1,0,0,0,3445,3446,1,0,0,0,3446,3447,1,0,0,0,3447,3448,5,303,0,0, + 3448,3449,3,142,71,0,3449,3450,5,82,0,0,3450,3451,3,252,126,0,3451, + 3452,5,89,0,0,3452,3453,5,303,0,0,3453,3467,1,0,0,0,3454,3455,3, + 302,151,0,3455,3456,5,10,0,0,3456,3458,1,0,0,0,3457,3454,1,0,0,0, + 3457,3458,1,0,0,0,3458,3459,1,0,0,0,3459,3460,5,225,0,0,3460,3461, + 3,252,126,0,3461,3462,5,287,0,0,3462,3463,3,142,71,0,3463,3464,5, + 89,0,0,3464,3465,5,225,0,0,3465,3467,1,0,0,0,3466,3367,1,0,0,0,3466, + 3369,1,0,0,0,3466,3374,1,0,0,0,3466,3387,1,0,0,0,3466,3399,1,0,0, + 0,3466,3415,1,0,0,0,3466,3417,1,0,0,0,3466,3419,1,0,0,0,3466,3435, + 1,0,0,0,3466,3445,1,0,0,0,3466,3457,1,0,0,0,3467,243,1,0,0,0,3468, + 3469,5,301,0,0,3469,3470,3,142,71,0,3470,3471,5,266,0,0,3471,3472, + 3,252,126,0,3472,245,1,0,0,0,3473,3474,5,87,0,0,3474,3475,3,142, + 71,0,3475,3476,5,266,0,0,3476,3477,3,252,126,0,3477,247,1,0,0,0, + 3478,3479,5,85,0,0,3479,3480,3,252,126,0,3480,249,1,0,0,0,3481,3482, + 5,70,0,0,3482,3487,3,302,151,0,3483,3484,5,3,0,0,3484,3486,3,302, + 151,0,3485,3483,1,0,0,0,3486,3489,1,0,0,0,3487,3485,1,0,0,0,3487, + 3488,1,0,0,0,3488,3490,1,0,0,0,3489,3487,1,0,0,0,3490,3493,3,190, + 95,0,3491,3492,5,71,0,0,3492,3494,3,148,74,0,3493,3491,1,0,0,0,3493, + 3494,1,0,0,0,3494,251,1,0,0,0,3495,3496,3,242,121,0,3496,3497,5, + 326,0,0,3497,3499,1,0,0,0,3498,3495,1,0,0,0,3499,3500,1,0,0,0,3500, + 3498,1,0,0,0,3500,3501,1,0,0,0,3501,253,1,0,0,0,3502,3509,5,54,0, + 0,3503,3509,5,249,0,0,3504,3509,5,74,0,0,3505,3509,5,128,0,0,3506, + 3509,5,288,0,0,3507,3509,3,302,151,0,3508,3502,1,0,0,0,3508,3503, + 1,0,0,0,3508,3504,1,0,0,0,3508,3505,1,0,0,0,3508,3506,1,0,0,0,3508, + 3507,1,0,0,0,3509,255,1,0,0,0,3510,3514,5,261,0,0,3511,3514,5,244, + 0,0,3512,3514,3,302,151,0,3513,3510,1,0,0,0,3513,3511,1,0,0,0,3513, + 3512,1,0,0,0,3514,257,1,0,0,0,3515,3517,3,256,128,0,3516,3515,1, + 0,0,0,3516,3517,1,0,0,0,3517,3518,1,0,0,0,3518,3519,3,288,144,0, + 3519,259,1,0,0,0,3520,3523,3,262,131,0,3521,3523,3,266,133,0,3522, + 3520,1,0,0,0,3522,3521,1,0,0,0,3523,261,1,0,0,0,3524,3536,3,302, + 151,0,3525,3526,3,302,151,0,3526,3527,5,4,0,0,3527,3528,3,302,151, + 0,3528,3536,1,0,0,0,3529,3530,3,302,151,0,3530,3531,5,4,0,0,3531, + 3532,3,302,151,0,3532,3533,5,4,0,0,3533,3534,3,302,151,0,3534,3536, + 1,0,0,0,3535,3524,1,0,0,0,3535,3525,1,0,0,0,3535,3529,1,0,0,0,3536, + 263,1,0,0,0,3537,3549,3,302,151,0,3538,3539,3,302,151,0,3539,3540, + 5,4,0,0,3540,3541,3,302,151,0,3541,3549,1,0,0,0,3542,3543,3,302, + 151,0,3543,3544,5,4,0,0,3544,3545,3,302,151,0,3545,3546,5,4,0,0, + 3546,3547,3,302,151,0,3547,3549,1,0,0,0,3548,3537,1,0,0,0,3548,3538, + 1,0,0,0,3548,3542,1,0,0,0,3549,265,1,0,0,0,3550,3562,3,302,151,0, + 3551,3552,3,302,151,0,3552,3553,5,4,0,0,3553,3554,3,302,151,0,3554, + 3562,1,0,0,0,3555,3556,3,302,151,0,3556,3557,5,4,0,0,3557,3558,3, + 302,151,0,3558,3559,5,4,0,0,3559,3560,3,302,151,0,3560,3562,1,0, + 0,0,3561,3550,1,0,0,0,3561,3551,1,0,0,0,3561,3555,1,0,0,0,3562,267, + 1,0,0,0,3563,3575,3,302,151,0,3564,3565,3,302,151,0,3565,3566,5, + 4,0,0,3566,3567,3,302,151,0,3567,3575,1,0,0,0,3568,3569,3,302,151, + 0,3569,3570,5,4,0,0,3570,3571,3,302,151,0,3571,3572,5,4,0,0,3572, + 3573,3,302,151,0,3573,3575,1,0,0,0,3574,3563,1,0,0,0,3574,3564,1, + 0,0,0,3574,3568,1,0,0,0,3575,269,1,0,0,0,3576,3582,3,302,151,0,3577, + 3578,3,302,151,0,3578,3579,5,4,0,0,3579,3580,3,302,151,0,3580,3582, + 1,0,0,0,3581,3576,1,0,0,0,3581,3577,1,0,0,0,3582,271,1,0,0,0,3583, + 3589,3,302,151,0,3584,3585,3,302,151,0,3585,3586,5,4,0,0,3586,3587, + 3,302,151,0,3587,3589,1,0,0,0,3588,3583,1,0,0,0,3588,3584,1,0,0, + 0,3589,273,1,0,0,0,3590,3591,3,302,151,0,3591,275,1,0,0,0,3592,3593, + 3,302,151,0,3593,277,1,0,0,0,3594,3595,3,288,144,0,3595,279,1,0, + 0,0,3596,3597,3,288,144,0,3597,281,1,0,0,0,3598,3601,3,288,144,0, + 3599,3601,4,141,14,0,3600,3598,1,0,0,0,3600,3599,1,0,0,0,3601,283, + 1,0,0,0,3602,3603,3,288,144,0,3603,285,1,0,0,0,3604,3605,3,302,151, + 0,3605,287,1,0,0,0,3606,3611,3,302,151,0,3607,3608,5,4,0,0,3608, + 3610,3,302,151,0,3609,3607,1,0,0,0,3610,3613,1,0,0,0,3611,3609,1, + 0,0,0,3611,3612,1,0,0,0,3612,289,1,0,0,0,3613,3611,1,0,0,0,3614, + 3615,5,104,0,0,3615,3616,3,292,146,0,3616,3617,5,28,0,0,3617,3618, + 5,188,0,0,3618,3619,3,148,74,0,3619,291,1,0,0,0,3620,3621,7,34,0, + 0,3621,293,1,0,0,0,3622,3626,3,296,148,0,3623,3626,5,65,0,0,3624, + 3626,5,61,0,0,3625,3622,1,0,0,0,3625,3623,1,0,0,0,3625,3624,1,0, + 0,0,3626,295,1,0,0,0,3627,3633,3,302,151,0,3628,3629,5,290,0,0,3629, + 3633,3,302,151,0,3630,3631,5,236,0,0,3631,3633,3,302,151,0,3632, + 3627,1,0,0,0,3632,3628,1,0,0,0,3632,3630,1,0,0,0,3633,297,1,0,0, + 0,3634,3639,3,302,151,0,3635,3636,5,3,0,0,3636,3638,3,302,151,0, + 3637,3635,1,0,0,0,3638,3641,1,0,0,0,3639,3637,1,0,0,0,3639,3640, + 1,0,0,0,3640,299,1,0,0,0,3641,3639,1,0,0,0,3642,3650,5,54,0,0,3643, + 3650,5,249,0,0,3644,3650,5,74,0,0,3645,3650,5,128,0,0,3646,3650, + 5,288,0,0,3647,3650,5,94,0,0,3648,3650,3,302,151,0,3649,3642,1,0, + 0,0,3649,3643,1,0,0,0,3649,3644,1,0,0,0,3649,3645,1,0,0,0,3649,3646, + 1,0,0,0,3649,3647,1,0,0,0,3649,3648,1,0,0,0,3650,301,1,0,0,0,3651, + 3657,5,333,0,0,3652,3657,5,335,0,0,3653,3657,3,308,154,0,3654,3657, + 5,336,0,0,3655,3657,5,334,0,0,3656,3651,1,0,0,0,3656,3652,1,0,0, + 0,3656,3653,1,0,0,0,3656,3654,1,0,0,0,3656,3655,1,0,0,0,3657,303, + 1,0,0,0,3658,3660,5,320,0,0,3659,3658,1,0,0,0,3659,3660,1,0,0,0, + 3660,3661,1,0,0,0,3661,3671,5,331,0,0,3662,3664,5,320,0,0,3663,3662, + 1,0,0,0,3663,3664,1,0,0,0,3664,3665,1,0,0,0,3665,3671,5,332,0,0, + 3666,3668,5,320,0,0,3667,3666,1,0,0,0,3667,3668,1,0,0,0,3668,3669, + 1,0,0,0,3669,3671,5,330,0,0,3670,3659,1,0,0,0,3670,3663,1,0,0,0, + 3670,3667,1,0,0,0,3671,305,1,0,0,0,3672,3675,3,302,151,0,3673,3675, + 3,174,87,0,3674,3672,1,0,0,0,3674,3673,1,0,0,0,3675,307,1,0,0,0, + 3676,3677,7,35,0,0,3677,309,1,0,0,0,477,313,322,326,330,334,338, 351,358,362,366,372,376,383,388,392,398,402,421,427,431,435,439, 447,451,454,459,465,474,480,484,490,497,505,517,526,535,541,552, 560,568,575,585,592,600,615,650,653,656,659,665,670,677,683,687, @@ -18164,18 +18210,18 @@ export class TrinoSqlParser extends SQLParserBase { 2246,2255,2261,2269,2275,2279,2284,2289,2295,2309,2311,2341,2352, 2360,2365,2370,2383,2389,2392,2399,2404,2407,2410,2415,2422,2425, 2434,2437,2441,2444,2447,2462,2465,2484,2488,2496,2500,2525,2528, - 2537,2543,2549,2555,2564,2567,2570,2589,2598,2620,2623,2633,2642, - 2648,2654,2665,2667,2672,2679,2681,2687,2693,2704,2713,2718,2723, - 2725,2727,2733,2735,2745,2754,2756,2762,2764,2767,2777,2779,2787, - 2795,2798,2803,2808,2820,2824,2828,2831,2833,2841,2844,2854,2862, - 2868,2870,2878,2888,2894,2908,2917,2924,2929,2936,2941,2964,2969, - 2971,2978,2982,2989,2993,3009,3024,3031,3040,3050,3055,3064,3069, - 3077,3085,3088,3094,3097,3104,3112,3115,3123,3126,3152,3163,3168, - 3175,3177,3190,3205,3209,3213,3217,3223,3227,3231,3235,3237,3247, - 3254,3263,3270,3277,3284,3293,3305,3308,3319,3322,3327,3337,3353, - 3367,3370,3379,3382,3394,3398,3413,3417,3423,3433,3445,3454,3475, - 3481,3488,3496,3501,3504,3510,3523,3536,3549,3562,3569,3576,3588, - 3599,3613,3620,3627,3637,3644,3647,3651,3655,3658,3662 + 2537,2543,2549,2555,2564,2567,2570,2589,2598,2616,2632,2635,2645, + 2654,2660,2666,2677,2679,2684,2691,2693,2699,2705,2716,2725,2730, + 2735,2737,2739,2745,2747,2757,2766,2768,2774,2776,2779,2789,2791, + 2799,2807,2810,2815,2820,2832,2836,2840,2843,2845,2853,2856,2866, + 2874,2880,2882,2890,2900,2906,2920,2929,2936,2941,2948,2953,2976, + 2981,2983,2990,2994,3001,3005,3021,3036,3043,3052,3062,3067,3076, + 3081,3089,3097,3100,3106,3109,3116,3124,3127,3135,3138,3164,3175, + 3180,3187,3189,3202,3217,3221,3225,3229,3235,3239,3243,3247,3249, + 3259,3266,3275,3282,3289,3296,3305,3317,3320,3331,3334,3339,3349, + 3365,3379,3382,3391,3394,3406,3410,3425,3429,3435,3445,3457,3466, + 3487,3493,3500,3508,3513,3516,3522,3535,3548,3561,3574,3581,3588, + 3600,3611,3625,3632,3639,3649,3656,3659,3663,3667,3670,3674 ]; private static __ATN: antlr.ATN; @@ -27456,6 +27502,41 @@ export class JsonExistsContext extends PrimaryExpressionContext { } } } +export class CoalesceContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_COALESCE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COALESCE, 0)!; + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCoalesce) { + listener.enterCoalesce(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCoalesce) { + listener.exitCoalesce(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCoalesce) { + return visitor.visitCoalesce(this); + } else { + return visitor.visitChildren(this); + } + } +} export class CurrentPathContext extends PrimaryExpressionContext { public _name?: Token | null; public constructor(ctx: PrimaryExpressionContext) { @@ -33305,6 +33386,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_CATALOGS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CATALOGS, 0); } + public KW_COALESCE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COALESCE, 0); + } public KW_COLUMN(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_COLUMN, 0); } diff --git a/src/lib/trino/TrinoSqlVisitor.ts b/src/lib/trino/TrinoSqlVisitor.ts index 466197c9..1096ef8d 100644 --- a/src/lib/trino/TrinoSqlVisitor.ts +++ b/src/lib/trino/TrinoSqlVisitor.ts @@ -227,6 +227,7 @@ import { NullLiteralContext } from "./TrinoSqlParser.js"; import { RowConstructorContext } from "./TrinoSqlParser.js"; import { SubscriptContext } from "./TrinoSqlParser.js"; import { JsonExistsContext } from "./TrinoSqlParser.js"; +import { CoalesceContext } from "./TrinoSqlParser.js"; import { CurrentPathContext } from "./TrinoSqlParser.js"; import { SubqueryExpressionContext } from "./TrinoSqlParser.js"; import { BinaryLiteralContext } from "./TrinoSqlParser.js"; @@ -1865,6 +1866,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitJsonExists?: (ctx: JsonExistsContext) => Result; + /** + * Visit a parse tree produced by the `coalesce` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCoalesce?: (ctx: CoalesceContext) => Result; /** * Visit a parse tree produced by the `currentPath` * labeled alternative in `TrinoSqlParser.primaryExpression`. diff --git a/test/parser/trino/suggestion/fixtures/tokenSuggestion.sql b/test/parser/trino/suggestion/fixtures/tokenSuggestion.sql index 5e2f21f8..3f867d9b 100644 --- a/test/parser/trino/suggestion/fixtures/tokenSuggestion.sql +++ b/test/parser/trino/suggestion/fixtures/tokenSuggestion.sql @@ -18,4 +18,6 @@ CREATE TABLE tb (id ); -SELECT id FROM ; \ No newline at end of file +SELECT id FROM ; + +SELECT ; \ No newline at end of file diff --git a/test/parser/trino/suggestion/tokenSuggestion.test.ts b/test/parser/trino/suggestion/tokenSuggestion.test.ts index 5ca64f11..db8feaf4 100644 --- a/test/parser/trino/suggestion/tokenSuggestion.test.ts +++ b/test/parser/trino/suggestion/tokenSuggestion.test.ts @@ -183,4 +183,17 @@ describe('Trino SQL Token Suggestion', () => { )?.keywords; expect(suggestion).toMatchUnorderedArray(['LATERAL', 'UNNEST', 'JSON_TABLE', 'TABLE']); }); + + test('After SELECT', () => { + const pos: CaretPosition = { + lineNumber: 23, + column: 8, + }; + const suggestion = trino.getSuggestionAtCaretPosition( + commentOtherLine(tokenSql, pos.lineNumber), + pos + )?.keywords; + + expect(suggestion).toContain('COALESCE'); + }); }); diff --git a/test/parser/trino/syntax/fixtures/select.sql b/test/parser/trino/syntax/fixtures/select.sql index 7773e5b1..124b0797 100644 --- a/test/parser/trino/syntax/fixtures/select.sql +++ b/test/parser/trino/syntax/fixtures/select.sql @@ -119,3 +119,17 @@ SELECT substring('string' FROM 2 FOR 3); SELECT COALESCE(SUM(c.amount), 0) AS total_amount FROM cust c; SELECT SUM(c.amount) AS total_amount FROM cust c; + +-- COALESCE function +SELECT COALESCE(1, 2, 3); +SELECT COALESCE(NULL, 2, 3); +SELECT COALESCE(NULL, NULL, 3); +SELECT COALESCE(NULL, NULL, NULL); +SELECT COALESCE(a, b, c) FROM table1; +SELECT COALESCE(a, NULL, c) FROM table1; +SELECT COALESCE(a, b, 'default') FROM table1; +SELECT COALESCE(1, 2, 3, 4, 5); +SELECT COALESCE(col1, col2, col3, col4) FROM table1 WHERE COALESCE(col1, col2) IS NOT NULL; +SELECT COALESCE(a + b, c * d, e) FROM table1; +SELECT COALESCE(CAST(a AS VARCHAR), b) FROM table1; +SELECT COALESCE(NULL, COALESCE(a, b), c) FROM table1;