solidity-antlr4
Version:
Solidity Lang Lexer and Parser by official ANTLR4 grammar
221 lines (220 loc) • 111 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SolidityLexer = void 0;
var antlr = _interopRequireWildcard(require("antlr4ng"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
class SolidityLexer extends antlr.Lexer {
static ReservedKeywords = 1;
static Abstract = 2;
static Address = 3;
static Anonymous = 4;
static As = 5;
static Assembly = 6;
static Bool = 7;
static Break = 8;
static Bytes = 9;
static Calldata = 10;
static Catch = 11;
static Constant = 12;
static Constructor = 13;
static Continue = 14;
static Contract = 15;
static Delete = 16;
static Do = 17;
static Else = 18;
static Emit = 19;
static Enum = 20;
static Error = 21;
static Event = 22;
static External = 23;
static Fallback = 24;
static False = 25;
static Fixed = 26;
static FixedBytes = 27;
static For = 28;
static From = 29;
static Function = 30;
static Global = 31;
static Hex = 32;
static If = 33;
static Immutable = 34;
static Import = 35;
static Indexed = 36;
static Interface = 37;
static Internal = 38;
static Is = 39;
static Library = 40;
static Mapping = 41;
static Memory = 42;
static Modifier = 43;
static New = 44;
static SubDenomination = 45;
static Override = 46;
static Payable = 47;
static Pragma = 48;
static Private = 49;
static Public = 50;
static Pure = 51;
static Receive = 52;
static Return = 53;
static Returns = 54;
static Revert = 55;
static SignedIntegerType = 56;
static Storage = 57;
static String = 58;
static Struct = 59;
static True = 60;
static Try = 61;
static Type = 62;
static Ufixed = 63;
static Unchecked = 64;
static Unicode = 65;
static UnsignedIntegerType = 66;
static Using = 67;
static View = 68;
static Virtual = 69;
static While = 70;
static LParen = 71;
static RParen = 72;
static LBrack = 73;
static RBrack = 74;
static LBrace = 75;
static RBrace = 76;
static Colon = 77;
static Semicolon = 78;
static Period = 79;
static Conditional = 80;
static DoubleArrow = 81;
static RightArrow = 82;
static Assign = 83;
static AssignBitOr = 84;
static AssignBitXor = 85;
static AssignBitAnd = 86;
static AssignShl = 87;
static AssignSar = 88;
static AssignShr = 89;
static AssignAdd = 90;
static AssignSub = 91;
static AssignMul = 92;
static AssignDiv = 93;
static AssignMod = 94;
static Comma = 95;
static Or = 96;
static And = 97;
static BitOr = 98;
static BitXor = 99;
static BitAnd = 100;
static Shl = 101;
static Sar = 102;
static Shr = 103;
static Add = 104;
static Sub = 105;
static Mul = 106;
static Div = 107;
static Mod = 108;
static Exp = 109;
static Equal = 110;
static NotEqual = 111;
static LessThan = 112;
static GreaterThan = 113;
static LessThanOrEqual = 114;
static GreaterThanOrEqual = 115;
static Not = 116;
static BitNot = 117;
static Inc = 118;
static Dec = 119;
static DoubleQuote = 120;
static SingleQuote = 121;
static NonEmptyStringLiteral = 122;
static EmptyStringLiteral = 123;
static UnicodeStringLiteral = 124;
static HexString = 125;
static HexNumber = 126;
static OctalNumber = 127;
static DecimalNumber = 128;
static DecimalNumberFollowedByIdentifier = 129;
static Identifier = 130;
static WS = 131;
static COMMENT = 132;
static LINE_COMMENT = 133;
static AssemblyDialect = 134;
static AssemblyLBrace = 135;
static AssemblyFlagString = 136;
static AssemblyBlockLParen = 137;
static AssemblyBlockRParen = 138;
static AssemblyBlockComma = 139;
static AssemblyBlockWS = 140;
static AssemblyBlockCOMMENT = 141;
static AssemblyBlockLINE_COMMENT = 142;
static YulBreak = 143;
static YulCase = 144;
static YulContinue = 145;
static YulDefault = 146;
static YulFalse = 147;
static YulFor = 148;
static YulFunction = 149;
static YulIf = 150;
static YulLeave = 151;
static YulLet = 152;
static YulSwitch = 153;
static YulTrue = 154;
static YulHex = 155;
static YulEVMBuiltin = 156;
static YulLBrace = 157;
static YulRBrace = 158;
static YulLParen = 159;
static YulRParen = 160;
static YulAssign = 161;
static YulPeriod = 162;
static YulComma = 163;
static YulArrow = 164;
static YulIdentifier = 165;
static YulHexNumber = 166;
static YulDecimalNumber = 167;
static YulStringLiteral = 168;
static YulHexStringLiteral = 169;
static YulWS = 170;
static YulCOMMENT = 171;
static YulLINE_COMMENT = 172;
static PragmaToken = 173;
static PragmaSemicolon = 174;
static PragmaWS = 175;
static PragmaCOMMENT = 176;
static PragmaLINE_COMMENT = 177;
static AssemblyBlockMode = 1;
static YulMode = 2;
static PragmaMode = 3;
static channelNames = ["DEFAULT_TOKEN_CHANNEL", "HIDDEN"];
static literalNames = [null, null, "'abstract'", "'address'", "'anonymous'", "'as'", "'assembly'", "'bool'", null, "'bytes'", "'calldata'", "'catch'", "'constant'", "'constructor'", null, "'contract'", "'delete'", "'do'", "'else'", "'emit'", "'enum'", "'error'", "'event'", "'external'", "'fallback'", null, null, null, null, "'from'", null, "'global'", null, null, "'immutable'", "'import'", "'indexed'", "'interface'", "'internal'", "'is'", "'library'", "'mapping'", "'memory'", "'modifier'", "'new'", null, "'override'", "'payable'", "'pragma'", "'private'", "'public'", "'pure'", "'receive'", "'return'", "'returns'", "'revert'", null, "'storage'", "'string'", "'struct'", null, "'try'", "'type'", null, "'unchecked'", "'unicode'", null, "'using'", "'view'", "'virtual'", "'while'", null, null, "'['", "']'", null, null, "':'", null, null, "'?'", "'=>'", null, "'='", "'|='", "'^='", "'&='", "'<<='", "'>>='", "'>>>='", "'+='", "'-='", "'*='", "'/='", "'%='", null, "'||'", "'&&'", "'|'", "'^'", "'&'", "'<<'", "'>>'", "'>>>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'**'", "'=='", "'!='", "'<'", "'>'", "'<='", "'>='", "'!'", "'~'", "'++'", "'--'", `'"'`, "'''", null, null, null, null, null, null, null, null, null, null, null, null, `'"evmasm"'`, null, null, null, null, null, null, null, null, null, "'case'", null, "'default'", null, null, null, null, "'leave'", "'let'", "'switch'", null, null, null, null, null, null, null, "':='"];
static symbolicNames = [null, "ReservedKeywords", "Abstract", "Address", "Anonymous", "As", "Assembly", "Bool", "Break", "Bytes", "Calldata", "Catch", "Constant", "Constructor", "Continue", "Contract", "Delete", "Do", "Else", "Emit", "Enum", "Error", "Event", "External", "Fallback", "False", "Fixed", "FixedBytes", "For", "From", "Function", "Global", "Hex", "If", "Immutable", "Import", "Indexed", "Interface", "Internal", "Is", "Library", "Mapping", "Memory", "Modifier", "New", "SubDenomination", "Override", "Payable", "Pragma", "Private", "Public", "Pure", "Receive", "Return", "Returns", "Revert", "SignedIntegerType", "Storage", "String", "Struct", "True", "Try", "Type", "Ufixed", "Unchecked", "Unicode", "UnsignedIntegerType", "Using", "View", "Virtual", "While", "LParen", "RParen", "LBrack", "RBrack", "LBrace", "RBrace", "Colon", "Semicolon", "Period", "Conditional", "DoubleArrow", "RightArrow", "Assign", "AssignBitOr", "AssignBitXor", "AssignBitAnd", "AssignShl", "AssignSar", "AssignShr", "AssignAdd", "AssignSub", "AssignMul", "AssignDiv", "AssignMod", "Comma", "Or", "And", "BitOr", "BitXor", "BitAnd", "Shl", "Sar", "Shr", "Add", "Sub", "Mul", "Div", "Mod", "Exp", "Equal", "NotEqual", "LessThan", "GreaterThan", "LessThanOrEqual", "GreaterThanOrEqual", "Not", "BitNot", "Inc", "Dec", "DoubleQuote", "SingleQuote", "NonEmptyStringLiteral", "EmptyStringLiteral", "UnicodeStringLiteral", "HexString", "HexNumber", "OctalNumber", "DecimalNumber", "DecimalNumberFollowedByIdentifier", "Identifier", "WS", "COMMENT", "LINE_COMMENT", "AssemblyDialect", "AssemblyLBrace", "AssemblyFlagString", "AssemblyBlockLParen", "AssemblyBlockRParen", "AssemblyBlockComma", "AssemblyBlockWS", "AssemblyBlockCOMMENT", "AssemblyBlockLINE_COMMENT", "YulBreak", "YulCase", "YulContinue", "YulDefault", "YulFalse", "YulFor", "YulFunction", "YulIf", "YulLeave", "YulLet", "YulSwitch", "YulTrue", "YulHex", "YulEVMBuiltin", "YulLBrace", "YulRBrace", "YulLParen", "YulRParen", "YulAssign", "YulPeriod", "YulComma", "YulArrow", "YulIdentifier", "YulHexNumber", "YulDecimalNumber", "YulStringLiteral", "YulHexStringLiteral", "YulWS", "YulCOMMENT", "YulLINE_COMMENT", "PragmaToken", "PragmaSemicolon", "PragmaWS", "PragmaCOMMENT", "PragmaLINE_COMMENT"];
static modeNames = ["DEFAULT_MODE", "AssemblyBlockMode", "YulMode", "PragmaMode"];
static ruleNames = ["ReservedKeywords", "Abstract", "Address", "Anonymous", "As", "Assembly", "Bool", "Break", "Bytes", "Calldata", "Catch", "Constant", "Constructor", "Continue", "Contract", "Delete", "Do", "Else", "Emit", "Enum", "Error", "Event", "External", "Fallback", "False", "Fixed", "FixedBytes", "For", "From", "Function", "Global", "Hex", "If", "Immutable", "Import", "Indexed", "Interface", "Internal", "Is", "Library", "Mapping", "Memory", "Modifier", "New", "SubDenomination", "Override", "Payable", "Pragma", "Private", "Public", "Pure", "Receive", "Return", "Returns", "Revert", "SignedIntegerType", "Storage", "String", "Struct", "True", "Try", "Type", "Ufixed", "Unchecked", "Unicode", "UnsignedIntegerType", "Using", "View", "Virtual", "While", "LParen", "RParen", "LBrack", "RBrack", "LBrace", "RBrace", "Colon", "Semicolon", "Period", "Conditional", "DoubleArrow", "RightArrow", "Assign", "AssignBitOr", "AssignBitXor", "AssignBitAnd", "AssignShl", "AssignSar", "AssignShr", "AssignAdd", "AssignSub", "AssignMul", "AssignDiv", "AssignMod", "Comma", "Or", "And", "BitOr", "BitXor", "BitAnd", "Shl", "Sar", "Shr", "Add", "Sub", "Mul", "Div", "Mod", "Exp", "Equal", "NotEqual", "LessThan", "GreaterThan", "LessThanOrEqual", "GreaterThanOrEqual", "Not", "BitNot", "Inc", "Dec", "DoubleQuote", "SingleQuote", "NonEmptyStringLiteral", "EmptyStringLiteral", "DoubleQuotedStringCharacter", "SingleQuotedStringCharacter", "SingleQuotedPrintable", "DoubleQuotedPrintable", "EscapeSequence", "UnicodeStringLiteral", "DoubleQuotedUnicodeStringCharacter", "SingleQuotedUnicodeStringCharacter", "HexString", "HexNumber", "HexDigits", "EvenHexDigits", "HexCharacter", "OctalNumber", "DecimalNumber", "DecimalDigits", "DecimalNumberFollowedByIdentifier", "Identifier", "IdentifierStart", "IdentifierPart", "WS", "COMMENT", "LINE_COMMENT", "AssemblyDialect", "AssemblyLBrace", "AssemblyFlagString", "AssemblyBlockLParen", "AssemblyBlockRParen", "AssemblyBlockComma", "AssemblyBlockWS", "AssemblyBlockCOMMENT", "AssemblyBlockLINE_COMMENT", "YulBreak", "YulCase", "YulContinue", "YulDefault", "YulFalse", "YulFor", "YulFunction", "YulIf", "YulLeave", "YulLet", "YulSwitch", "YulTrue", "YulHex", "YulEVMBuiltin", "YulLBrace", "YulRBrace", "YulLParen", "YulRParen", "YulAssign", "YulPeriod", "YulComma", "YulArrow", "YulIdentifier", "YulIdentifierStart", "YulIdentifierPart", "YulHexNumber", "YulDecimalNumber", "YulStringLiteral", "YulHexStringLiteral", "YulWS", "YulCOMMENT", "YulLINE_COMMENT", "PragmaToken", "PragmaSemicolon", "PragmaWS", "PragmaCOMMENT", "PragmaLINE_COMMENT"];
constructor(input) {
super(input);
this.interpreter = new antlr.LexerATNSimulator(this, SolidityLexer._ATN, SolidityLexer.decisionsToDFA, new antlr.PredictionContextCache());
}
get grammarFileName() {
return "SolidityLexer.g4";
}
get literalNames() {
return SolidityLexer.literalNames;
}
get symbolicNames() {
return SolidityLexer.symbolicNames;
}
get ruleNames() {
return SolidityLexer.ruleNames;
}
get serializedATN() {
return SolidityLexer._serializedATN;
}
get channelNames() {
return SolidityLexer.channelNames;
}
get modeNames() {
return SolidityLexer.modeNames;
}
static _serializedATN = [4, 0, 177, 2816, 6, -1, 6, -1, 6, -1, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 566, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 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, 21, 1, 21, 1, 22, 1, 22, 1, 22, 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, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 754, 8, 25, 10, 25, 12, 25, 757, 9, 25, 1, 25, 1, 25, 1, 25, 5, 25, 762, 8, 25, 10, 25, 12, 25, 765, 9, 25, 3, 25, 767, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 984, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 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, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 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, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 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, 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, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1146, 8, 44, 1, 45, 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, 47, 1, 47, 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, 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, 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, 53, 1, 54, 1, 54, 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, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1406, 8, 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, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 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, 4, 62, 1459, 8, 62, 11, 62, 12, 62, 1460, 1, 62, 1, 62, 1, 62, 4, 62, 1466, 8, 62, 11, 62, 12, 62, 1467, 3, 62, 1470, 8, 62, 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, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1705, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 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, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 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, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 4, 121, 1866, 8, 121, 11, 121, 12, 121, 1867, 1, 121, 1, 121, 1, 121, 1, 121, 4, 121, 1874, 8, 121, 11, 121, 12, 121, 1875, 1, 121, 1, 121, 3, 121, 1880, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1886, 8, 122, 1, 123, 1, 123, 3, 123, 1890, 8, 123, 1, 124, 1, 124, 3, 124, 1894, 8, 124, 1, 125, 1, 125, 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, 127, 1, 127, 3, 127, 1912, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 5, 128, 1924, 8, 128, 10, 128, 12, 128, 1927, 9, 128, 1, 128, 1, 128, 1, 128, 5, 128, 1932, 8, 128, 10, 128, 12, 128, 1935, 9, 128, 1, 128, 3, 128, 1938, 8, 128, 1, 129, 1, 129, 3, 129, 1942, 8, 129, 1, 130, 1, 130, 3, 130, 1946, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1954, 8, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1959, 8, 131, 1, 131, 3, 131, 1962, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 3, 133, 1970, 8, 133, 1, 133, 5, 133, 1973, 8, 133, 10, 133, 12, 133, 1976, 9, 133, 1, 134, 1, 134, 1, 134, 3, 134, 1981, 8, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1986, 8, 134, 10, 134, 12, 134, 1989, 9, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 1997, 8, 136, 1, 137, 1, 137, 3, 137, 2001, 8, 137, 1, 137, 1, 137, 3, 137, 2005, 8, 137, 1, 137, 1, 137, 3, 137, 2009, 8, 137, 1, 137, 3, 137, 2012, 8, 137, 1, 138, 1, 138, 3, 138, 2016, 8, 138, 1, 138, 5, 138, 2019, 8, 138, 10, 138, 12, 138, 2022, 9, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 5, 140, 2029, 8, 140, 10, 140, 12, 140, 2032, 9, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 4, 143, 2039, 8, 143, 11, 143, 12, 143, 2040, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 5, 144, 2049, 8, 144, 10, 144, 12, 144, 2052, 9, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 5, 145, 2063, 8, 145, 10, 145, 12, 145, 2066, 9, 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, 4, 148, 2086, 8, 148, 11, 148, 12, 148, 2087, 1, 148, 1, 148, 1, 149, 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 152, 4, 152, 2099, 8, 152, 11, 152, 12, 152, 2100, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 5, 153, 2109, 8, 153, 10, 153, 12, 153, 2112, 9, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 2123, 8, 154, 10, 154, 12, 154, 2126, 9, 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, 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, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 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, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 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, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 2672, 8, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 5, 177, 2698, 8, 177, 10, 177, 12, 177, 2701, 9, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 4, 180, 2710, 8, 180, 11, 180, 12, 180, 2711, 1, 181, 1, 181, 1, 181, 5, 181, 2717, 8, 181, 10, 181, 12, 181, 2720, 9, 181, 3, 181, 2722, 8, 181, 1, 182, 1, 182, 5, 182, 2726, 8, 182, 10, 182, 12, 182, 2729, 9, 182, 1, 182, 1, 182, 1, 182, 5, 182, 2734, 8, 182, 10, 182, 12, 182, 2737, 9, 182, 1, 182, 3, 182, 2740, 8, 182, 1, 183, 1, 183, 1, 184, 4, 184, 2745, 8, 184, 11, 184, 12, 184, 2746, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 5, 185, 2755, 8, 185, 10, 185, 12, 185, 2758, 9, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 5, 186, 2769, 8, 186, 10, 186, 12, 186, 2772, 9, 186, 1, 186, 1, 186, 1, 187, 4, 187, 2777, 8, 187, 11, 187, 12, 187, 2778, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 4, 189, 2786, 8, 189, 11, 189, 12, 189, 2787, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 2796, 8, 190, 10, 190, 12, 190, 2799, 9, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 5, 191, 2810, 8, 191, 10, 191, 12, 191, 2813, 9, 191, 1, 191, 1, 191, 4, 2050, 2110, 2756, 2797, 0, 192, 4, 1, 6, 2, 8, 3, 10, 4, 12, 5, 14, 6, 16, 7, 18, 8, 20, 9, 22, 10, 24, 11, 26, 12, 28, 13, 30, 14, 32, 15, 34, 16, 36, 17, 38, 18, 40, 19, 42, 20, 44, 21, 46, 22, 48, 23, 50, 24, 52, 25, 54, 26, 56, 27, 58, 28, 60, 29, 62, 30, 64, 31, 66, 32, 68, 33, 70, 34, 72, 35, 74, 36, 76, 37, 78, 38, 80, 39, 82, 40, 84, 41, 86, 42, 88, 43, 90, 44, 92, 45, 94, 46, 96, 47, 98, 48, 100, 49, 102, 50, 104, 51, 106, 52, 108, 53, 110, 54, 112, 55, 114, 56, 116, 57, 118, 58, 120, 59, 122, 60, 124, 61, 126, 62, 128, 63, 130, 64, 132, 65, 134, 66, 136, 67, 138, 68, 140, 69, 142, 70, 144, 71, 146, 72, 148, 73, 150, 74, 152, 75, 154, 76, 156, 77, 158, 78, 160, 79, 162, 80, 164, 81, 166, 82, 168, 83, 170, 84, 172, 85, 174, 86, 176, 87, 178, 88, 180, 89, 182, 90, 184, 91, 186, 92, 188, 93, 190, 94, 192, 95, 194, 96, 196, 97, 198, 98, 200, 99, 202, 100, 204, 101, 206, 102, 208, 103, 210, 104, 212, 105, 214, 106, 216, 107, 218, 108, 220, 109, 222, 110, 224, 111, 226, 112, 228, 113, 230, 114, 232, 115, 234, 116, 236, 117, 238, 118, 240, 119, 242, 120, 244, 121, 246, 122, 248, 123, 250, 0, 252, 0, 254, 0, 256, 0, 258, 0, 260, 124, 262, 0, 264, 0, 266, 125, 268, 126, 270, 0, 272, 0, 274, 0, 276, 127, 278, 128, 280, 0, 282, 129, 284, 130, 286, 0, 288, 0, 290, 131, 292, 132, 294, 133, 296, 134, 298, 135, 300, 136, 302, 137, 304, 138, 306, 139, 308, 140, 310, 141, 312, 142, 314, 143, 316, 144, 318, 145, 320, 146, 322, 147, 324, 148, 326, 149, 328, 150, 330, 151, 332, 152, 334, 153, 336, 154, 338, 155, 340, 156, 342, 157, 344, 158, 346, 159, 348, 160, 350, 161, 352, 162, 354, 163, 356, 164, 358, 165, 360, 0, 362, 0, 364, 166, 366, 167, 368, 168, 370, 169, 372, 170, 374, 171, 376, 172, 378, 173, 380, 174, 382, 175, 384, 176, 386, 177, 4, 0, 1, 2, 3, 14, 1, 0, 49, 57, 1, 0, 48, 57, 3, 0, 32, 38, 40, 91, 93, 126, 3, 0, 32, 33, 35, 91, 93, 126, 8, 0, 10, 10, 13, 13, 34, 34, 39, 39, 92, 92, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 69, 69, 101, 101, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1, 0, 59, 59, 3058, 0, 4, 1, 0, 0, 0, 0, 6, 1, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 10, 1, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 14, 1, 0, 0, 0, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 56, 1, 0, 0, 0, 0, 58, 1, 0, 0, 0, 0, 60, 1, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 70, 1, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 80, 1, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 88, 1, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 92, 1, 0, 0, 0, 0, 94, 1, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 98, 1, 0, 0, 0, 0, 100, 1, 0, 0, 0, 0, 102, 1, 0, 0, 0, 0, 104, 1, 0, 0, 0, 0, 106, 1, 0, 0, 0, 0, 108, 1, 0, 0, 0, 0, 110, 1, 0, 0, 0, 0, 112, 1, 0, 0, 0, 0, 114, 1, 0, 0, 0, 0, 116, 1, 0, 0, 0, 0, 118, 1, 0, 0, 0, 0, 120, 1, 0, 0, 0, 0, 122, 1, 0, 0, 0, 0, 124, 1, 0, 0, 0, 0, 126, 1, 0, 0, 0, 0, 128, 1, 0, 0, 0, 0, 130, 1, 0, 0, 0, 0, 132, 1, 0, 0, 0, 0, 134, 1, 0, 0, 0, 0, 136, 1, 0, 0, 0, 0, 138, 1, 0, 0, 0, 0, 140, 1, 0, 0, 0, 0, 142, 1, 0, 0, 0, 0, 144, 1, 0, 0, 0, 0, 146, 1, 0, 0, 0, 0, 148, 1, 0, 0, 0, 0, 150, 1, 0, 0, 0, 0, 152, 1, 0, 0, 0, 0, 154, 1, 0, 0, 0, 0, 156, 1, 0, 0, 0, 0, 158, 1, 0, 0, 0, 0, 160, 1, 0, 0, 0, 0, 162, 1, 0, 0, 0, 0, 164, 1, 0, 0, 0, 0, 166, 1, 0, 0, 0, 0, 168, 1, 0, 0, 0, 0, 170, 1, 0, 0, 0, 0, 172, 1, 0, 0, 0, 0, 174, 1, 0, 0, 0, 0, 176, 1, 0, 0, 0, 0, 178, 1, 0, 0, 0, 0, 180, 1, 0, 0, 0, 0, 182, 1, 0, 0, 0, 0, 184, 1, 0, 0, 0, 0, 186, 1, 0, 0, 0, 0, 188, 1, 0, 0, 0, 0, 190, 1, 0, 0, 0, 0, 192, 1, 0, 0, 0, 0, 194, 1, 0, 0, 0, 0, 196, 1, 0, 0, 0, 0, 198, 1, 0, 0, 0, 0, 200, 1, 0, 0, 0, 0, 202, 1, 0, 0, 0, 0, 204, 1, 0, 0, 0, 0, 206, 1, 0, 0, 0, 0, 208, 1, 0, 0, 0, 0, 210, 1, 0, 0, 0, 0, 212, 1, 0, 0, 0, 0, 214, 1, 0, 0, 0, 0, 216, 1, 0, 0, 0, 0, 218, 1, 0, 0, 0, 0, 220, 1, 0, 0, 0, 0, 222, 1, 0, 0, 0, 0, 224, 1, 0, 0, 0, 0, 226, 1, 0, 0, 0, 0, 228, 1, 0, 0, 0, 0, 230, 1, 0, 0, 0, 0, 232, 1, 0, 0, 0, 0, 234, 1, 0, 0, 0, 0, 236, 1, 0, 0, 0, 0, 238, 1, 0, 0, 0, 0, 240, 1, 0, 0, 0, 0, 242, 1, 0, 0, 0, 0, 244, 1, 0, 0, 0, 0, 246, 1, 0, 0, 0, 0, 248, 1, 0, 0, 0, 0, 260, 1, 0, 0, 0, 0, 266, 1, 0, 0, 0, 0, 268, 1, 0, 0, 0, 0, 276, 1, 0, 0, 0, 0, 278, 1, 0, 0, 0, 0, 282, 1, 0, 0, 0, 0, 284, 1, 0, 0, 0, 0, 290, 1, 0, 0, 0, 0, 292, 1, 0, 0, 0, 0, 294, 1, 0, 0, 0, 1, 296, 1, 0, 0, 0, 1, 298, 1, 0, 0, 0, 1, 300, 1, 0, 0, 0, 1, 302, 1, 0, 0, 0, 1, 304, 1, 0, 0, 0, 1, 306, 1, 0, 0, 0, 1, 308, 1, 0, 0, 0, 1, 310, 1, 0, 0, 0, 1, 312, 1, 0, 0, 0, 2, 314, 1, 0, 0, 0, 2, 316, 1, 0, 0, 0, 2, 318, 1, 0, 0, 0, 2, 320, 1, 0, 0, 0, 2, 322, 1, 0, 0, 0, 2, 324, 1, 0, 0, 0, 2, 326, 1, 0, 0, 0, 2, 328, 1, 0, 0, 0, 2, 330, 1, 0, 0, 0, 2, 332, 1, 0, 0, 0, 2, 334, 1, 0, 0, 0, 2, 336, 1, 0, 0, 0, 2, 338, 1, 0, 0, 0, 2, 340, 1, 0, 0, 0, 2, 342, 1, 0, 0, 0, 2, 344, 1, 0, 0, 0, 2, 346, 1, 0, 0, 0, 2, 348, 1, 0, 0, 0, 2, 350, 1, 0, 0, 0, 2, 352, 1, 0, 0, 0, 2, 354, 1, 0, 0, 0, 2, 356, 1, 0, 0, 0, 2, 358, 1, 0, 0, 0, 2, 364, 1, 0, 0, 0, 2, 366, 1, 0, 0, 0, 2, 368, 1, 0, 0, 0, 2, 370, 1, 0, 0, 0, 2, 372, 1, 0, 0, 0, 2, 374, 1, 0, 0, 0, 2, 376, 1, 0, 0, 0, 3, 378, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 3, 382, 1, 0, 0, 0, 3, 384, 1, 0, 0, 0, 3, 386, 1, 0, 0, 0, 4, 565, 1, 0, 0, 0, 6, 567, 1, 0, 0, 0, 8, 576, 1, 0, 0, 0, 10, 584, 1, 0, 0, 0, 12, 594, 1, 0, 0, 0, 14, 597, 1, 0, 0, 0, 16, 608, 1, 0, 0, 0, 18, 613, 1, 0, 0, 0, 20, 619, 1, 0, 0, 0, 22, 625, 1, 0, 0, 0, 24, 634, 1, 0, 0, 0, 26, 640, 1, 0, 0, 0, 28, 649, 1, 0, 0, 0, 30, 661, 1, 0, 0, 0, 32, 670, 1, 0, 0, 0, 34, 679, 1, 0, 0, 0, 36, 686, 1, 0, 0, 0, 38, 689, 1, 0, 0, 0, 40, 694, 1, 0, 0, 0, 42, 699, 1, 0, 0, 0, 44, 704, 1, 0, 0, 0, 46, 710, 1, 0, 0, 0, 48, 716, 1, 0, 0, 0, 50, 725, 1, 0, 0, 0, 52, 734, 1, 0, 0, 0, 54, 766, 1, 0, 0, 0, 56, 983, 1, 0, 0, 0, 58, 985, 1, 0, 0, 0, 60, 989, 1, 0, 0, 0, 62, 994, 1, 0, 0, 0, 64, 1003, 1, 0, 0, 0, 66, 1010, 1, 0, 0, 0, 68, 1014, 1, 0, 0, 0, 70, 1017, 1, 0, 0, 0, 72, 1027, 1, 0, 0, 0, 74, 1034, 1, 0, 0, 0, 76, 1042, 1, 0, 0, 0, 78, 1052, 1, 0, 0, 0, 80, 1061, 1, 0, 0, 0, 82, 1064, 1, 0, 0, 0, 84, 1072, 1, 0, 0, 0, 86, 1080, 1, 0, 0, 0, 88, 1087, 1, 0, 0, 0, 90, 1096, 1, 0, 0, 0, 92, 1145, 1, 0, 0, 0, 94, 1147, 1, 0, 0, 0, 96, 1156, 1, 0, 0, 0, 98, 1164, 1, 0, 0, 0, 100, 1173, 1, 0, 0, 0, 102, 1181, 1, 0, 0, 0, 104, 1188, 1, 0, 0, 0, 106, 1193, 1, 0, 0, 0, 108, 1201, 1, 0, 0, 0, 110, 1208, 1, 0, 0, 0, 112, 1216, 1, 0, 0, 0, 114, 1405, 1, 0, 0, 0, 116, 1407, 1, 0, 0, 0, 118, 1415, 1, 0, 0, 0, 120, 1422, 1, 0, 0, 0, 122, 1429, 1, 0, 0, 0, 124, 1434, 1, 0, 0, 0, 126, 1438, 1, 0, 0, 0, 128, 1469, 1, 0, 0, 0, 130, 1471, 1, 0, 0, 0, 132, 1481, 1, 0, 0, 0, 134, 1704, 1, 0, 0, 0, 136, 1706, 1, 0, 0, 0, 138, 1712, 1, 0, 0, 0, 140, 1717, 1, 0, 0, 0, 142, 1725, 1, 0, 0, 0, 144, 1731, 1, 0, 0, 0, 146, 1733, 1, 0, 0, 0, 148, 1735, 1, 0, 0, 0, 150, 1737, 1, 0, 0, 0, 152, 1739, 1, 0, 0, 0, 154, 1741, 1, 0, 0, 0, 156, 1743, 1, 0, 0, 0, 158, 1745, 1, 0, 0, 0, 160, 1747, 1, 0, 0, 0, 162, 1749, 1, 0, 0, 0, 164, 1751, 1, 0, 0, 0, 166, 1754, 1, 0, 0, 0, 168, 1757, 1, 0, 0, 0, 170, 1759, 1, 0, 0, 0, 172, 1762, 1, 0, 0, 0, 174, 1765, 1, 0, 0, 0, 176, 1768, 1, 0, 0, 0, 178, 1772, 1, 0, 0, 0, 180, 1776, 1, 0, 0, 0, 182, 1781, 1, 0, 0, 0, 184, 1784, 1, 0, 0, 0, 186, 1787, 1, 0, 0, 0, 188, 1790, 1, 0, 0, 0, 190, 1793, 1, 0, 0, 0, 192, 1796, 1, 0, 0, 0, 194, 1798, 1, 0, 0, 0, 196, 1801, 1, 0, 0, 0, 198, 1804, 1, 0, 0, 0, 200, 1806, 1, 0, 0, 0, 202, 1808, 1, 0, 0, 0, 204, 1810, 1, 0, 0, 0, 206, 1813, 1, 0, 0, 0, 208, 1816, 1, 0, 0, 0, 210, 1820, 1, 0, 0, 0, 212, 1822, 1, 0, 0, 0, 214, 1824, 1, 0, 0, 0, 216, 1826, 1, 0, 0, 0, 218, 1828, 1, 0, 0, 0, 220, 1830, 1, 0, 0, 0, 222, 1833, 1, 0, 0, 0, 224, 1836, 1, 0, 0, 0, 226, 1839, 1, 0, 0, 0, 228, 1841, 1, 0, 0, 0, 230, 1843, 1, 0, 0, 0, 232, 1846, 1, 0, 0, 0, 234, 1849, 1, 0, 0, 0, 236, 1851, 1, 0, 0, 0, 238, 1853, 1, 0, 0, 0, 240, 1856, 1, 0, 0, 0, 242, 1859, 1, 0, 0, 0, 244, 1861, 1, 0, 0, 0, 246, 1879, 1, 0, 0, 0, 248, 1885, 1, 0, 0, 0, 250, 1889, 1, 0, 0, 0, 252, 1893, 1, 0, 0, 0, 254, 1895, 1, 0, 0, 0, 256, 1897, 1, 0, 0, 0, 258, 1899, 1, 0, 0, 0, 260, 1913, 1, 0, 0, 0, 262, 1941, 1, 0, 0, 0, 264, 1945, 1, 0, 0, 0, 266, 1947, 1, 0, 0, 0, 268, 1963, 1, 0, 0, 0, 270, 1967, 1, 0, 0, 0, 272, 1977, 1, 0, 0, 0, 274, 1990, 1, 0, 0, 0, 276, 1992, 1, 0, 0, 0, 278, 2004, 1, 0, 0, 0, 280, 2013, 1, 0, 0, 0, 282, 2023, 1, 0, 0, 0, 284, 2026, 1, 0, 0, 0, 286, 2033, 1, 0, 0, 0, 288, 2035, 1, 0, 0, 0, 290, 2038, 1, 0, 0, 0, 292, 2044, 1, 0, 0, 0, 294, 2058, 1, 0, 0, 0, 296, 2069, 1, 0, 0, 0, 298, 2078, 1, 0, 0, 0, 300, 2083, 1, 0, 0, 0, 302, 2091, 1, 0, 0, 0, 304, 2093, 1, 0, 0, 0, 306, 2095, 1, 0, 0, 0, 308, 2098, 1, 0, 0, 0, 310, 2104, 1, 0, 0, 0, 312, 2118, 1, 0, 0, 0, 314, 2129, 1, 0, 0, 0, 316, 2135, 1, 0, 0, 0, 318, 2140, 1, 0, 0, 0, 320, 2149, 1, 0, 0, 0, 322, 2157, 1, 0, 0, 0, 324, 2163, 1, 0, 0, 0, 326, 2167, 1, 0, 0, 0, 328, 2176, 1, 0, 0, 0, 330, 2179, 1, 0, 0, 0, 332, 2185, 1, 0, 0, 0, 334, 2189, 1, 0, 0, 0, 336, 2196, 1, 0, 0, 0, 338, 2201, 1, 0, 0, 0, 340, 2671, 1, 0, 0, 0, 342, 2673, 1, 0, 0, 0, 344, 2677, 1, 0, 0, 0, 346, 2681, 1, 0, 0, 0, 348, 2683, 1, 0, 0, 0, 350, 2685, 1, 0, 0, 0, 352, 2688, 1, 0, 0, 0, 354, 2690, 1, 0, 0, 0, 356, 2692, 1, 0, 0, 0, 358, 2695, 1, 0, 0, 0, 360, 2702, 1, 0, 0, 0, 362, 2704, 1, 0, 0, 0, 364, 2706, 1, 0, 0, 0, 366, 2721, 1, 0, 0, 0, 368, 2739, 1, 0, 0, 0, 370, 2741, 1, 0, 0, 0, 372, 2744, 1, 0, 0, 0, 374, 2750, 1, 0, 0, 0, 376, 2764, 1, 0, 0, 0, 378, 2776, 1, 0, 0, 0, 380, 2780, 1, 0, 0, 0, 382, 2785, 1, 0, 0, 0, 384, 2791, 1, 0, 0, 0, 386, 2805, 1, 0, 0, 0, 388, 389, 5, 97, 0, 0, 389, 390, 5, 102, 0, 0, 390, 391, 5, 116, 0, 0, 391, 392, 5, 101, 0, 0, 392, 566, 5, 114, 0, 0, 393, 394, 5, 97, 0, 0, 394, 395, 5, 108, 0, 0, 395, 396, 5, 105, 0, 0, 396, 397, 5, 97, 0, 0, 397, 566, 5, 115, 0, 0, 398, 399, 5, 97, 0, 0, 399, 400, 5, 112, 0, 0, 400, 401, 5, 112, 0, 0, 401, 402, 5, 108, 0, 0, 402, 566, 5, 121, 0, 0, 403, 404, 5, 97, 0, 0, 404, 405, 5, 117, 0, 0, 405, 406, 5, 116, 0, 0, 406, 566, 5, 111, 0, 0, 407, 408, 5, 98, 0, 0, 408, 409, 5, 121, 0, 0, 409, 410, 5, 116, 0, 0, 410, 566, 5, 101, 0, 0, 411, 412, 5, 99, 0, 0, 412, 413, 5, 97, 0, 0, 413, 414, 5, 115, 0, 0, 414, 566, 5, 101, 0, 0, 415, 416, 5, 99, 0, 0, 416, 417, 5, 111, 0, 0, 417, 418, 5, 112, 0, 0, 418, 419, 5, 121, 0, 0, 419, 420, 5, 111, 0, 0, 420, 566, 5, 102, 0, 0, 421, 422, 5, 100, 0, 0, 422, 423, 5, 101, 0, 0, 423, 424, 5, 102, 0, 0, 424, 425, 5, 97, 0, 0, 425, 426, 5, 117, 0, 0, 426, 427, 5, 108, 0, 0, 427, 566, 5, 116, 0, 0, 428, 429, 5, 100, 0, 0, 429, 430, 5, 101, 0, 0, 430, 431, 5, 102, 0, 0, 431, 432, 5, 105, 0, 0, 432, 433, 5, 110, 0, 0, 433, 566, 5, 101, 0, 0, 434, 435, 5, 102, 0, 0, 435, 436, 5, 105, 0, 0, 436, 437, 5, 110, 0, 0, 437, 438, 5, 97, 0, 0, 438, 566, 5, 108, 0, 0, 439, 440, 5, 105, 0, 0, 440, 441, 5, 109, 0, 0, 441, 442, 5, 112, 0, 0, 442, 443, 5, 108, 0, 0, 443, 444, 5, 101, 0, 0, 444, 445, 5, 109, 0, 0, 445, 446, 5, 101, 0, 0, 446, 447, 5, 110, 0, 0, 447, 448, 5, 116, 0, 0, 448, 566, 5, 115, 0, 0, 449, 450, 5, 105, 0, 0, 450, 566, 5, 110, 0, 0, 451, 452, 5, 105, 0, 0, 452, 453, 5, 110, 0, 0, 453, 454, 5, 108, 0, 0, 454, 455, 5, 105, 0, 0, 455, 456, 5, 110, 0, 0, 456, 566, 5, 101, 0, 0, 457, 458, 5, 108, 0, 0, 458, 459, 5, 101, 0, 0, 459, 566, 5, 116, 0, 0, 460, 461, 5, 109, 0, 0, 461, 462, 5, 97, 0, 0, 462, 463, 5, 99, 0, 0, 463, 464, 5, 114, 0, 0, 464, 566, 5, 111, 0, 0, 465, 466, 5, 109, 0, 0, 466, 467, 5, 97, 0, 0, 467, 468, 5, 116, 0, 0, 468, 469, 5, 99, 0, 0, 469, 566, 5, 104, 0, 0, 470, 471, 5, 109, 0, 0, 471, 472, 5, 117, 0, 0, 472, 473, 5, 116, 0, 0, 473, 474, 5, 97, 0, 0, 474, 475, 5, 98, 0, 0, 475, 476, 5, 108, 0, 0, 476, 566, 5, 101, 0, 0, 477, 478, 5, 110, 0, 0, 478, 479, 5, 117, 0, 0, 479, 480, 5, 108, 0, 0, 480, 566, 5, 108, 0, 0, 481, 482, 5, 111, 0, 0, 482, 566, 5, 102, 0, 0, 483, 484, 5, 112, 0, 0, 484, 485, 5, 97, 0, 0, 485, 486, 5, 114, 0, 0, 486, 487, 5, 116, 0, 0, 487, 488, 5, 105, 0, 0, 488, 489, 5, 97, 0, 0, 489, 566, 5, 108, 0, 0, 490, 491, 5, 112, 0, 0, 491, 492, 5, 114, 0, 0, 492, 493, 5, 111, 0, 0, 493, 494, 5, 109, 0, 0, 494, 495, 5, 105, 0, 0, 495, 496, 5, 115, 0, 0, 496, 566, 5, 101, 0, 0, 497, 498, 5, 114, 0, 0, 498, 499, 5, 101, 0, 0, 499, 500, 5, 102, 0, 0, 500, 501, 5, 101, 0, 0, 501, 502, 5, 114, 0, 0, 502, 503, 5, 101, 0, 0, 503, 504, 5, 110, 0, 0, 504, 505, 5, 99, 0, 0, 505, 566, 5, 101, 0, 0, 506, 507, 5, 114, 0, 0, 507, 508, 5, 101, 0, 0, 508, 509, 5, 108, 0, 0, 509, 510, 5, 111, 0, 0, 510, 511, 5, 99, 0, 0, 511, 512, 5, 97, 0, 0, 512, 513, 5, 116, 0, 0, 513, 514, 5, 97, 0, 0, 514, 515, 5, 98, 0, 0, 515, 516, 5, 108, 0, 0, 516, 566, 5, 101, 0, 0, 517, 518, 5, 115, 0, 0, 518, 519, 5, 101, 0, 0, 519, 520, 5, 97, 0, 0, 520, 521, 5, 108, 0, 0, 521, 522, 5, 101, 0, 0, 522, 566, 5, 100, 0, 0, 523, 524, 5, 115, 0, 0, 524, 525, 5, 105, 0, 0, 525, 526, 5, 122, 0, 0, 526, 527, 5, 101, 0, 0, 527, 528, 5, 111, 0, 0, 528, 566, 5, 102, 0, 0, 529, 530, 5, 115, 0, 0, 530, 531, 5, 116, 0, 0, 531, 532, 5, 97, 0, 0, 532, 533, 5, 116, 0, 0, 533, 534, 5, 105, 0, 0, 534, 566, 5, 99, 0, 0, 535, 536, 5, 115, 0, 0, 536, 537, 5, 117, 0, 0, 537, 538, 5, 112, 0, 0, 538, 539, 5, 112, 0, 0, 539, 540, 5, 111, 0, 0, 540, 541, 5, 114, 0, 0, 541, 542, 5, 116, 0, 0, 542, 566, 5, 115, 0, 0, 543, 544, 5, 115, 0, 0, 544, 545, 5, 119, 0, 0, 545, 546, 5, 105, 0, 0, 546, 547, 5, 116, 0, 0, 547, 548, 5, 99, 0, 0, 548, 566, 5, 104, 0, 0, 549, 550, 5, 116, 0, 0, 550, 551, 5, 121, 0, 0, 551, 552, 5, 112, 0, 0, 552, 553, 5, 101, 0, 0, 553, 554, 5, 100, 0, 0, 554, 555, 5, 101, 0, 0, 555, 566, 5, 102, 0, 0, 556, 557, 5, 116, 0, 0, 557, 558, 5, 121, 0, 0, 558, 559, 5, 112, 0, 0, 559, 560, 5, 101, 0, 0, 560, 561, 5, 111, 0, 0, 561, 566, 5, 102, 0, 0, 562, 563, 5, 118, 0, 0, 563, 564, 5, 97, 0, 0, 564, 566, 5, 114, 0, 0, 565, 388, 1, 0, 0, 0, 565, 393, 1, 0, 0, 0, 565, 398, 1, 0, 0, 0, 565, 403, 1, 0, 0, 0, 565, 407, 1, 0, 0, 0, 565, 411, 1, 0, 0, 0, 565, 415, 1, 0, 0, 0, 565, 421, 1, 0, 0, 0, 565, 428, 1, 0, 0, 0, 565, 434, 1, 0, 0, 0, 565, 439, 1, 0, 0, 0, 565, 449, 1, 0, 0, 0, 565, 451, 1, 0, 0, 0, 565, 457, 1, 0, 0, 0, 565, 460, 1, 0, 0, 0, 565, 465, 1, 0, 0, 0, 565, 470, 1, 0, 0, 0, 565, 477, 1, 0, 0, 0, 565, 481, 1, 0, 0, 0, 565, 483, 1, 0, 0, 0, 565, 490, 1, 0, 0, 0, 565, 497, 1, 0, 0, 0, 565, 506, 1, 0, 0, 0, 565, 517, 1, 0, 0, 0, 565, 523, 1, 0, 0, 0, 565, 529, 1, 0, 0, 0, 565, 535, 1, 0, 0, 0, 565, 543, 1, 0, 0, 0, 565, 549, 1, 0, 0, 0, 565, 556, 1, 0, 0, 0, 565, 562, 1, 0, 0, 0, 566, 5, 1, 0, 0, 0, 567, 568, 5, 97, 0, 0, 568, 569, 5, 98, 0, 0, 569, 570, 5, 115, 0, 0, 570, 571, 5, 116, 0, 0, 571, 572, 5, 114, 0, 0, 572, 573, 5, 97, 0, 0, 573, 574, 5, 99, 0, 0, 574, 575, 5, 116, 0, 0, 575, 7, 1, 0, 0, 0, 576, 577, 5, 97, 0, 0, 577, 578, 5, 100, 0, 0, 578, 579, 5, 100, 0, 0, 579, 580, 5, 114, 0, 0, 580, 581, 5, 101, 0, 0, 581, 582, 5, 115, 0, 0, 582, 583, 5, 115, 0, 0, 583, 9, 1, 0, 0, 0, 584, 585, 5, 97, 0, 0, 585, 586, 5, 110, 0, 0, 586, 587, 5, 111, 0, 0, 587, 588, 5, 110, 0, 0, 588, 589, 5, 121, 0, 0, 589, 590, 5, 109, 0, 0, 590, 591, 5, 111, 0, 0, 591, 592, 5, 117, 0, 0, 592, 593, 5, 115, 0, 0, 593, 11, 1, 0, 0, 0, 594, 595, 5, 97, 0, 0, 595, 596, 5, 115, 0, 0, 596, 13, 1, 0, 0, 0, 597, 598, 5, 97, 0, 0, 598, 599, 5, 115, 0, 0, 599, 600, 5, 115, 0, 0, 600, 601, 5, 101, 0, 0, 601, 602, 5, 109, 0, 0, 602, 603, 5, 98, 0, 0, 603, 604, 5, 108, 0, 0, 604, 605, 5, 121, 0, 0, 605, 606, 1, 0, 0, 0, 606, 607, 6, 5, 0, 0, 607, 15, 1, 0, 0, 0, 608, 609, 5, 98, 0, 0, 609, 610, 5, 111, 0, 0, 610, 611, 5, 111, 0, 0, 611, 612, 5, 108, 0, 0, 612, 17, 1, 0, 0, 0, 613, 614, 5, 98, 0, 0, 614, 615, 5, 114, 0, 0, 615, 616, 5, 101, 0, 0, 616, 617, 5, 97, 0, 0, 617, 618, 5, 107