# include "stdio.h" # define U(x) x # define NLSTATE yyprevious=YYNEWLINE # define BEGIN yybgin = yysvec + 1 + # define INITIAL 0 # define YYLERR yysvec # define YYSTATE (yyestate-yysvec-1) # define YYOPTIM 1 # define YYLMAX 200 # define output(c) putc(c,yyout) # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} # define yymore() (yymorfg=1) # define ECHO fprintf(yyout, "%s",yytext) # define REJECT { nstr = yyreject(); goto yyfussy;} int yyleng; extern char yytext[]; int yymorfg; extern char *yysptr, yysbuf[]; int yytchar; FILE *yyin ={stdin}, *yyout ={stdout}; extern int yylineno; struct yysvf { struct yywork *yystoff; struct yysvf *yyother; int *yystops;}; struct yysvf *yyestate; extern struct yysvf yysvec[], *yybgin; /* * Copyright (C) 1990-1992 Quinn C. Jensen * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. The author makes no representations * about the suitability of this software for any purpose. It is * provided "as is" without express or implied warranty. * */ # define YYNEWLINE 10 yylex(){ int nstr; extern int yyprevious; while((nstr = yylook()) >= 0) yyfussy: switch(nstr){ case 0: if(yywrap()) return(0); break; case 1: ; break; case 2: {curline++; RET(EOL);} break; case 3: {RET(EOS);} break; case 4: {RET(COMMENT);} break; case 5: {RET(XMEM);} break; case 6: {RET(YMEM);} break; case 7: {RET(LMEM);} break; case 8: {RET(PMEM);} break; case 9: {RET(A10);} break; case 10: {RET(AAAA);} break; case 11: {RET(B10);} break; case 12: {RET(BBBB);} break; case 13: {RET(AABB);} break; case 14: {RET(BBAA);} break; case 15: {RET(XXXX);} break; case 16: {RET(YYYY);} break; case 17: {RET(SR);} break; case 18: {RET(MR);} break; case 19: {RET(CCR);} break; case 20: {RET(OMR);} break; case 21: {RET(SP);} break; case 22: {RET(SSH);} break; case 23: {RET(SSL);} break; case 24: {RET(LA);} break; case 25: {RET(LC);} break; case 26: {yylval.ival = atoi(&yytext[1]); RET(AREG);} break; case 27: {yylval.ival = atoi(&yytext[1]); RET(BREG);} break; case 28: {yylval.ival = atoi(&yytext[1]); RET(MREG);} break; case 29: {yylval.ival = atoi(&yytext[1]); RET(NREG);} break; case 30: {yylval.ival = atoi(&yytext[1]); RET(RREG);} break; case 31: {yylval.ival = atoi(&yytext[1]); RET(XREG);} break; case 32: {yylval.ival = atoi(&yytext[1]); RET(YREG);} break; case 33: {yylval.n.type = INT; yylval.n.val.i = strtol(&yytext[1], 0, 16); RET(CHEX);} break; case 34: {yylval.n.type = FLT; yylval.n.val.f = atof(yytext); RET(FRAC);} break; case 35: {yylval.n.type = INT; yylval.n.val.i = atoi(yytext); RET(CDEC);} break; case 36: {RET(OP_ABS);} break; case 37: {RET(OP_ADC);} break; case 38: {RET(OP_ADD);} break; case 39: {RET(OP_ADDL);} break; case 40: {RET(OP_ADDR);} break; case 41: {RET(OP_ASL);} break; case 42: {RET(OP_ASR);} break; case 43: {RET(OP_CLR);} break; case 44: {RET(OP_CMP);} break; case 45: {RET(OP_CMPM);} break; case 46: {RET(OP_DIV);} break; case 47: {RET(OP_MAC);} break; case 48: {RET(OP_MACR);} break; case 49: {RET(OP_MPY);} break; case 50: {RET(OP_MPYR);} break; case 51: {RET(OP_NEG);} break; case 52: {RET(OP_NORM);} break; case 53: {RET(OP_RND);} break; case 54: {RET(OP_SBC);} break; case 55: {RET(OP_SUB);} break; case 56: {RET(OP_SUBL);} break; case 57: {RET(OP_SUBR);} break; case 58: {yylval.cond = 0x0; RET(OP_TCC);} break; case 59: {yylval.cond = 0x0; RET(OP_TCC);} break; case 60: {yylval.cond = 0x1; RET(OP_TCC);} break; case 61: {yylval.cond = 0x2; RET(OP_TCC);} break; case 62: {yylval.cond = 0x3; RET(OP_TCC);} break; case 63: {yylval.cond = 0x4; RET(OP_TCC);} break; case 64: {yylval.cond = 0x5; RET(OP_TCC);} break; case 65: {yylval.cond = 0x6; RET(OP_TCC);} break; case 66: {yylval.cond = 0x7; RET(OP_TCC);} break; case 67: {yylval.cond = 0x8; RET(OP_TCC);} break; case 68: {yylval.cond = 0x8; RET(OP_TCC);} break; case 69: {yylval.cond = 0x9; RET(OP_TCC);} break; case 70: {yylval.cond = 0xA; RET(OP_TCC);} break; case 71: {yylval.cond = 0xB; RET(OP_TCC);} break; case 72: {yylval.cond = 0xC; RET(OP_TCC);} break; case 73: {yylval.cond = 0xD; RET(OP_TCC);} break; case 74: {yylval.cond = 0xE; RET(OP_TCC);} break; case 75: {yylval.cond = 0xF; RET(OP_TCC);} break; case 76: {RET(OP_TFR);} break; case 77: {RET(OP_TST);} break; case 78: {RET(OP_AND);} break; case 79: {RET(OP_ANDI);} break; case 80: {RET(OP_EOR);} break; case 81: {RET(OP_LSL);} break; case 82: {RET(OP_LSR);} break; case 83: {RET(OP_NOT);} break; case 84: {RET(OP_OR);} break; case 85: {RET(OP_ORI);} break; case 86: {RET(OP_ROL);} break; case 87: {RET(OP_ROR);} break; case 88: {RET(OP_BCLR);} break; case 89: {RET(OP_BSET);} break; case 90: {RET(OP_BCHG);} break; case 91: {RET(OP_BTST);} break; case 92: {RET(OP_DO);} break; case 93: {RET(OP_ENDDO);} break; case 94: {RET(OP_LUA);} break; case 95: {RET(OP_MOVE);} break; case 96: {RET(OP_MOVEC);} break; case 97: {RET(OP_MOVEM);} break; case 98: {RET(OP_MOVEP);} break; case 99: {RET(OP_INCLUDE);} break; case 100: {RET(OP_ILLEGAL);} break; case 101: {yylval.cond = 0x0; RET(OP_JCC);} break; case 102: {yylval.cond = 0x0; RET(OP_JCC);} break; case 103: {yylval.cond = 0x1; RET(OP_JCC);} break; case 104: {yylval.cond = 0x2; RET(OP_JCC);} break; case 105: {yylval.cond = 0x3; RET(OP_JCC);} break; case 106: {yylval.cond = 0x4; RET(OP_JCC);} break; case 107: {yylval.cond = 0x5; RET(OP_JCC);} break; case 108: {yylval.cond = 0x6; RET(OP_JCC);} break; case 109: {yylval.cond = 0x7; RET(OP_JCC);} break; case 110: {yylval.cond = 0x8; RET(OP_JCC);} break; case 111: {yylval.cond = 0x8; RET(OP_JCC);} break; case 112: {yylval.cond = 0x9; RET(OP_JCC);} break; case 113: {yylval.cond = 0xA; RET(OP_JCC);} break; case 114: {yylval.cond = 0xB; RET(OP_JCC);} break; case 115: {yylval.cond = 0xC; RET(OP_JCC);} break; case 116: {yylval.cond = 0xD; RET(OP_JCC);} break; case 117: {yylval.cond = 0xE; RET(OP_JCC);} break; case 118: {yylval.cond = 0xF; RET(OP_JCC);} break; case 119: {RET(OP_JMP);} break; case 120: {RET(OP_JCLR);} break; case 121: {RET(OP_JSET);} break; case 122: {yylval.cond = 0x0; RET(OP_JSCC);} break; case 123: {yylval.cond = 0x0; RET(OP_JSCC);} break; case 124: {yylval.cond = 0x1; RET(OP_JSCC);} break; case 125: {yylval.cond = 0x2; RET(OP_JSCC);} break; case 126: {yylval.cond = 0x3; RET(OP_JSCC);} break; case 127: {yylval.cond = 0x4; RET(OP_JSCC);} break; case 128: {yylval.cond = 0x5; RET(OP_JSCC);} break; case 129: {yylval.cond = 0x6; RET(OP_JSCC);} break; case 130: {yylval.cond = 0x7; RET(OP_JSCC);} break; case 131: {yylval.cond = 0x8; RET(OP_JSCC);} break; case 132: {yylval.cond = 0x8; RET(OP_JSCC);} break; case 133: {yylval.cond = 0x9; RET(OP_JSCC);} break; case 134: {yylval.cond = 0xA; RET(OP_JSCC);} break; case 135: {yylval.cond = 0xB; RET(OP_JSCC);} break; case 136: {yylval.cond = 0xC; RET(OP_JSCC);} break; case 137: {yylval.cond = 0xD; RET(OP_JSCC);} break; case 138: {yylval.cond = 0xE; RET(OP_JSCC);} break; case 139: {yylval.cond = 0xF; RET(OP_JSCC);} break; case 140: {RET(OP_JSR);} break; case 141: {RET(OP_JSCLR);} break; case 142: {RET(OP_JSSET);} break; case 143: {RET(OP_NOP);} break; case 144: {RET(OP_REP);} break; case 145: {RET(OP_RESET);} break; case 146: {RET(OP_RTI);} break; case 147: {RET(OP_RTS);} break; case 148: {RET(OP_STOP);} break; case 149: {RET(OP_SWI);} break; case 150: {RET(OP_WAIT);} break; case 151: {RET(OP_EQU);} break; case 152: {RET(OP_ORG);} break; case 153: {RET(OP_DC);} break; case 154: {RET(OP_END);} break; case 155: {RET(OP_PAGE);} break; case 156: {RET(OP_PSECT);} break; case 157: {RET(OP_ALIGN);} break; case 158: {yylval.sval = strsave(yytext); RET(SYM);} break; case 159: {yylval.cval = '\b'; RET(CHAR);} break; case 160: {yylval.cval = '\f'; RET(CHAR);} break; case 161: {yylval.cval = '\n'; RET(CHAR);} break; case 162: {yylval.cval = '\r'; RET(CHAR);} break; case 163: {yylval.cval = '\t'; RET(CHAR);} break; case 164: {yylval.cval = '\\'; RET(CHAR);} break; case 165: {yylval.cval = yytext[1]; RET(CHAR);} break; case 166: case 167: {yylval.sval = (char *)fixstring(yytext); yylval.sval = strsave(yylval.sval); RET(STRING);} break; case 168: {RET(SHL);} break; case 169: {RET(SHR);} break; case 170: {RET(yytext[0]);} break; case -1: break; default: fprintf(yyout,"bad switch yylook %d",nstr); } return(0); } /* end of yylex */ #undef input #define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):lgetc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) #define INLINE 1024 char inline[INLINE], *ip = NULL; lgetc(fp) FILE *fp; { int c; if(NOT ip) { if(NOT fgets(inline, INLINE, fp)) return(EOF); rmcr(inline); ip = inline; } c = *ip; if(ldebug) { printf("i='%c'(%x)", c, c); fflush(stdout); } switch(c) { case '\0': c = '\n'; ip = NULL; break; default: ip++; break; } return(c); } int yyvstop[] ={ 0, 170, 0, 1, 170, 0, 2, 0, 170, 0, 170, 0, 170, 0, 170, 0, 170, 0, 35, 170, 0, 170, -4, 0, 170, 0, 170, 0, 3, 170, 0, 10, 158, 170, 0, 12, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 158, 170, 0, 15, 158, 170, 0, 16, 158, 170, 0, 1, 0, 166, 0, 33, 0, 34, 0, 35, 0, -4, 0, 4, 0, 168, 0, 169, 0, 26, 158, 0, 26, 158, 0, 158, 0, 13, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 27, 158, 0, 27, 158, 0, 14, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 153, 158, 0, 158, 0, 92, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 7, 0, 24, 158, 0, 25, 158, 0, 158, 0, 158, 0, 28, 158, 0, 158, 0, 158, 0, 158, 0, 18, 158, 0, 29, 158, 0, 158, 0, 158, 0, 158, 0, 84, 158, 0, 8, 0, 158, 0, 158, 0, 30, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 21, 158, 0, 17, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 31, 158, 0, 5, 0, 32, 158, 0, 6, 0, 165, 0, 34, 0, 9, 158, 0, 36, 158, 0, 37, 158, 0, 38, 158, 0, 158, 0, 78, 158, 0, 41, 158, 0, 42, 158, 0, 11, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 19, 158, 0, 43, 158, 0, 44, 158, 0, 46, 158, 0, 154, 158, 0, 80, 158, 0, 151, 158, 0, 158, 0, 158, 0, 101, 158, 0, 158, 0, 110, 158, 0, 107, 158, 0, 113, 158, 0, 116, 158, 0, 103, 158, 0, 109, 158, 0, 102, 158, 0, 108, 158, 0, 118, 158, 0, 111, 158, 0, 117, 158, 0, 112, 158, 0, 114, 158, 0, 119, 158, 0, 104, 158, 0, 106, 158, 0, 115, 158, 0, 105, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 158, 0, 140, 158, 0, 158, 0, 81, 158, 0, 82, 158, 0, 94, 158, 0, 47, 158, 0, 158, 0, 49, 158, 0, 51, 158, 0, 143, 158, 0, 158, 0, 83, 158, 0, 20, 158, 0, 152, 158, 0, 85, 158, 0, 158, 0, 158, 0, 144, 158, 0, 158, 0, 53, 158, 0, 86, 158, 0, 87, 158, 0, 146, 158, 0, 147, 158, 0, 54, 158, 0, 22, 158, 0, 23, 158, 0, 158, 0, 55, 158, 0, 149, 158, 0, 58, 158, 0, 67, 158, 0, 64, 158, 0, 70, 158, 0, 73, 158, 0, 76, 158, 0, 60, 158, 0, 66, 158, 0, 59, 158, 0, 65, 158, 0, 75, 158, 0, 68, 158, 0, 74, 158, 0, 69, 158, 0, 71, 158, 0, 61, 158, 0, 63, 158, 0, 72, 158, 0, 62, 158, 0, 77, 158, 0, 158, 0, 167, 0, 164, 167, 0, 159, 167, 0, 160, 167, 0, 161, 167, 0, 162, 167, 0, 163, 167, 0, 39, 158, 0, 40, 158, 0, 158, 0, 79, 158, 0, 90, 158, 0, 88, 158, 0, 89, 158, 0, 91, 158, 0, 45, 158, 0, 158, 0, 158, 0, 158, 0, 120, 158, 0, 122, 158, 0, 158, 0, 131, 158, 0, 128, 158, 0, 134, 158, 0, 137, 158, 0, 121, 158, 0, 124, 158, 0, 130, 158, 0, 123, 158, 0, 129, 158, 0, 139, 158, 0, 132, 158, 0, 138, 158, 0, 133, 158, 0, 135, 158, 0, 125, 158, 0, 127, 158, 0, 136, 158, 0, 126, 158, 0, 158, 0, 48, 158, 0, 95, 158, 0, 50, 158, 0, 52, 158, 0, 155, 158, 0, 158, 0, 158, 0, 148, 158, 0, 56, 158, 0, 57, 158, 0, 150, 158, 0, 157, 158, 0, 93, 158, 0, 158, 0, 158, 0, 141, 158, 0, 142, 158, 0, 96, 158, 0, 97, 158, 0, 98, 158, 0, 156, 158, 0, 145, 158, 0, 158, 0, 158, 0, 100, 158, 0, 99, 158, 0, 0}; # define YYTYPE int struct yywork { YYTYPE verify, advance; } yycrank[] ={ 0,0, 0,0, 1,3, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,4, 1,5, 0,0, 4,35, 0,0, 0,0, 0,0, 0,0, 0,0, 36,0, 37,0, 128,0, 0,0, 0,0, 129,0, 130,0, 0,0, 131,0, 0,0, 132,0, 133,0, 0,0, 0,0, 134,0, 0,0, 1,6, 4,35, 1,7, 0,0, 0,0, 1,8, 0,0, 0,0, 36,37, 37,37, 0,0, 1,9, 1,10, 0,0, 1,11, 128,238, 1,11, 1,11, 129,238, 130,239, 41,43, 131,240, 1,11, 132,241, 133,242, 1,12, 1,13, 134,243, 1,14, 0,0, 1,15, 1,16, 1,17, 1,18, 1,19, 1,20, 1,21, 1,21, 1,21, 1,22, 1,23, 1,21, 1,24, 1,25, 1,26, 1,27, 1,28, 1,21, 1,29, 1,30, 1,31, 1,21, 1,21, 1,32, 1,33, 1,34, 2,6, 6,36, 2,7, 13,47, 14,48, 2,8, 0,0, 0,0, 0,0, 6,36, 6,0, 2,9, 2,10, 9,41, 9,41, 9,41, 9,41, 9,41, 9,41, 9,41, 9,41, 9,41, 9,41, 135,0, 238,0, 2,12, 2,13, 0,0, 2,14, 239,0, 2,15, 240,0, 241,0, 242,0, 6,37, 10,42, 10,42, 10,42, 10,42, 10,42, 10,42, 10,42, 10,42, 10,42, 10,42, 0,0, 0,0, 0,0, 6,36, 0,0, 6,36, 6,36, 135,244, 238,238, 0,0, 0,0, 6,36, 0,0, 239,238, 0,0, 240,238, 241,238, 242,238, 0,0, 0,0, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 6,36, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 0,0, 0,0, 0,0, 0,0, 0,0, 8,39, 0,0, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 8,39, 8,0, 11,43, 243,0, 11,44, 11,44, 11,44, 11,44, 11,44, 11,44, 11,44, 11,44, 11,44, 11,44, 43,136, 43,136, 43,136, 43,136, 43,136, 43,136, 43,136, 43,136, 43,136, 43,136, 244,0, 0,0, 7,38, 7,38, 7,38, 7,38, 7,38, 7,38, 243,238, 0,0, 0,0, 12,45, 0,0, 0,0, 0,0, 8,39, 0,0, 8,39, 8,39, 12,45, 12,46, 0,0, 0,0, 8,39, 0,0, 0,0, 0,0, 0,0, 0,0, 244,238, 0,0, 0,0, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 8,39, 0,0, 12,45, 8,40, 12,45, 12,45, 0,0, 0,0, 0,0, 0,0, 12,45, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 12,45, 16,49, 16,50, 16,49, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 16,51, 16,52, 16,51, 16,53, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 16,54, 16,51, 16,55, 16,51, 16,51, 16,51, 16,51, 16,56, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 0,0, 0,0, 0,0, 0,0, 16,51, 0,0, 16,51, 16,52, 16,51, 16,53, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 16,54, 16,51, 16,55, 16,51, 16,51, 16,51, 16,51, 16,56, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 16,51, 17,57, 17,58, 17,57, 18,51, 18,51, 18,51, 0,0, 0,0, 0,0, 0,0, 0,0, 40,0, 0,0, 0,0, 0,0, 0,0, 0,0, 17,59, 17,51, 17,60, 17,51, 18,51, 18,63, 18,51, 0,0, 0,0, 0,0, 0,0, 17,51, 0,0, 17,51, 18,64, 18,65, 18,51, 0,0, 17,61, 17,62, 0,0, 18,51, 0,0, 40,129, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 17,59, 17,51, 17,60, 17,51, 18,51, 18,63, 18,51, 19,51, 19,51, 19,51, 0,0, 17,51, 0,0, 17,51, 18,64, 18,65, 18,51, 0,0, 17,61, 17,62, 0,0, 18,51, 0,0, 0,0, 0,0, 19,51, 19,66, 19,51, 0,0, 0,0, 0,0, 0,0, 19,67, 0,0, 0,0, 19,51, 0,0, 19,51, 19,68, 0,0, 0,0, 0,0, 19,51, 0,0, 40,130, 20,51, 20,51, 20,51, 0,0, 0,0, 40,131, 0,0, 0,0, 0,0, 40,132, 0,0, 0,0, 19,51, 19,66, 19,51, 0,0, 0,0, 40,133, 20,51, 19,67, 20,51, 40,134, 19,51, 40,135, 19,51, 19,68, 0,0, 0,0, 20,51, 19,51, 20,69, 20,70, 0,0, 20,71, 0,0, 20,51, 21,51, 21,51, 21,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 20,51, 0,0, 20,51, 0,0, 21,51, 0,0, 21,51, 22,51, 22,51, 22,51, 20,51, 0,0, 20,69, 20,70, 21,51, 20,71, 21,51, 20,51, 0,0, 0,0, 0,0, 21,51, 0,0, 0,0, 0,0, 22,51, 0,0, 22,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 22,72, 21,51, 22,73, 21,51, 0,0, 0,0, 0,0, 22,51, 0,0, 0,0, 0,0, 21,51, 0,0, 21,51, 0,0, 0,0, 0,0, 0,0, 21,51, 0,0, 0,0, 0,0, 22,51, 0,0, 22,51, 23,51, 23,51, 23,51, 0,0, 0,0, 0,0, 0,0, 22,72, 0,0, 22,73, 0,0, 0,0, 0,0, 0,0, 22,51, 0,0, 0,0, 0,0, 23,51, 23,74, 23,51, 23,75, 0,0, 23,76, 23,77, 0,0, 0,0, 0,0, 23,78, 23,79, 23,80, 0,0, 23,81, 0,0, 0,0, 23,82, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 23,51, 23,74, 23,51, 23,75, 0,0, 23,76, 23,77, 0,0, 0,0, 0,0, 23,78, 23,79, 23,80, 0,0, 23,81, 0,0, 0,0, 23,82, 24,51, 24,51, 24,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 24,83, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 24,84, 24,51, 24,85, 24,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 24,51, 0,0, 24,51, 0,0, 0,0, 0,0, 0,0, 24,86, 0,0, 24,87, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 24,84, 24,51, 24,85, 24,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 24,51, 0,0, 24,51, 0,0, 32,51, 32,51, 32,51, 24,86, 0,0, 24,87, 25,88, 25,88, 25,88, 25,88, 25,88, 25,88, 25,88, 25,88, 0,0, 0,0, 0,0, 32,123, 32,51, 0,0, 32,51, 0,0, 0,0, 25,89, 25,51, 0,0, 25,51, 0,0, 32,51, 0,0, 32,51, 0,0, 0,0, 0,0, 25,51, 32,51, 25,51, 25,90, 25,91, 0,0, 25,92, 25,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 32,123, 32,51, 0,0, 32,51, 0,0, 0,0, 25,89, 25,51, 0,0, 25,51, 0,0, 32,51, 0,0, 32,51, 0,0, 0,0, 0,0, 25,51, 32,51, 25,51, 25,90, 25,91, 0,0, 25,92, 25,51, 26,93, 26,93, 26,93, 26,93, 26,93, 26,93, 26,93, 26,93, 0,0, 27,51, 27,51, 27,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 26,51, 0,0, 26,51, 26,94, 0,0, 0,0, 0,0, 0,0, 0,0, 27,51, 26,51, 27,51, 26,51, 26,95, 0,0, 0,0, 0,0, 26,51, 0,0, 27,51, 27,96, 27,51, 0,0, 0,0, 0,0, 27,97, 27,51, 0,0, 0,0, 0,0, 0,0, 0,0, 26,51, 0,0, 26,51, 26,94, 0,0, 0,0, 0,0, 0,0, 0,0, 27,51, 26,51, 27,51, 26,51, 26,95, 28,51, 28,51, 28,51, 26,51, 0,0, 27,51, 27,96, 27,51, 0,0, 0,0, 28,98, 27,97, 27,51, 0,0, 0,0, 0,0, 0,0, 28,99, 28,51, 0,0, 28,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 28,51, 0,0, 28,51, 0,0, 0,0, 0,0, 0,0, 28,100, 0,0, 0,0, 29,101, 29,101, 29,101, 29,101, 29,101, 29,101, 29,101, 29,101, 0,0, 0,0, 0,0, 28,99, 28,51, 0,0, 28,51, 0,0, 0,0, 0,0, 29,51, 0,0, 29,51, 29,102, 28,51, 0,0, 28,51, 0,0, 0,0, 0,0, 29,51, 28,100, 29,103, 29,104, 0,0, 0,0, 0,0, 29,51, 29,105, 0,0, 0,0, 0,0, 0,0, 30,51, 30,51, 30,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 29,51, 0,0, 29,51, 29,102, 0,0, 0,0, 0,0, 0,0, 0,0, 30,106, 29,51, 30,51, 29,103, 29,104, 0,0, 0,0, 0,0, 29,51, 29,105, 30,51, 0,0, 30,51, 0,0, 30,107, 0,0, 30,108, 30,109, 30,110, 30,111, 0,0, 30,112, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 30,106, 0,0, 30,51, 0,0, 31,51, 31,51, 31,51, 0,0, 0,0, 0,0, 30,51, 0,0, 30,51, 0,0, 30,107, 0,0, 30,108, 30,109, 30,110, 30,111, 0,0, 30,112, 31,51, 31,113, 31,51, 31,114, 31,115, 31,116, 31,117, 0,0, 0,0, 0,0, 31,118, 31,119, 31,120, 0,0, 31,121, 0,0, 0,0, 31,122, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 31,51, 31,113, 31,51, 31,114, 31,115, 31,116, 31,117, 49,51, 49,51, 49,51, 31,118, 31,119, 31,120, 0,0, 31,121, 0,0, 0,0, 31,122, 33,124, 33,124, 33,51, 34,126, 34,126, 34,51, 0,0, 49,51, 0,0, 49,51, 33,125, 0,0, 0,0, 34,127, 0,0, 0,0, 0,0, 49,51, 33,51, 49,51, 33,51, 34,51, 0,0, 34,51, 49,51, 0,0, 0,0, 0,0, 33,51, 0,0, 33,51, 34,51, 0,0, 34,51, 39,128, 33,51, 0,0, 0,0, 34,51, 49,51, 0,0, 49,51, 39,128, 39,0, 0,0, 0,0, 0,0, 0,0, 0,0, 49,51, 33,51, 49,51, 33,51, 34,51, 0,0, 34,51, 49,51, 0,0, 0,0, 0,0, 33,51, 0,0, 33,51, 34,51, 0,0, 34,51, 0,0, 33,51, 0,0, 0,0, 34,51, 0,0, 39,129, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 39,128, 0,0, 39,128, 39,128, 0,0, 0,0, 0,0, 0,0, 39,128, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 39,128, 50,137, 50,51, 50,51, 51,51, 51,51, 51,51, 52,51, 52,51, 52,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 50,51, 0,0, 50,51, 51,51, 0,0, 51,51, 52,51, 0,0, 52,51, 0,0, 50,51, 0,0, 50,51, 51,51, 0,0, 51,51, 52,51, 50,51, 52,51, 0,0, 51,51, 0,0, 0,0, 52,138, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 50,51, 0,0, 50,51, 51,51, 0,0, 51,51, 52,51, 0,0, 52,51, 0,0, 50,51, 0,0, 50,51, 51,51, 0,0, 51,51, 52,51, 50,51, 52,51, 0,0, 51,51, 0,0, 0,0, 52,138, 53,51, 53,51, 53,51, 0,0, 54,51, 54,51, 54,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 55,51, 55,51, 55,51, 0,0, 0,0, 53,51, 53,139, 53,140, 0,0, 54,51, 0,0, 54,51, 0,0, 0,0, 0,0, 53,51, 54,141, 53,51, 55,51, 54,51, 55,142, 54,51, 53,51, 0,0, 0,0, 0,0, 54,51, 0,0, 55,51, 0,0, 55,51, 0,0, 0,0, 0,0, 0,0, 55,51, 0,0, 53,51, 53,139, 53,140, 0,0, 54,51, 0,0, 54,51, 0,0, 0,0, 0,0, 53,51, 54,141, 53,51, 55,51, 54,51, 55,142, 54,51, 53,51, 56,51, 56,51, 56,51, 54,51, 0,0, 55,51, 0,0, 55,51, 0,0, 57,51, 57,51, 57,51, 55,51, 58,145, 58,51, 58,51, 0,0, 0,0, 56,51, 0,0, 56,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 57,51, 56,143, 57,51, 56,51, 58,51, 0,0, 58,51, 56,144, 56,51, 0,0, 57,51, 0,0, 57,51, 0,0, 58,51, 0,0, 58,51, 57,51, 0,0, 0,0, 0,0, 58,51, 0,0, 56,51, 0,0, 56,51, 0,0, 59,51, 59,51, 59,51, 0,0, 0,0, 57,51, 56,143, 57,51, 56,51, 58,51, 0,0, 58,51, 56,144, 56,51, 0,0, 57,51, 0,0, 57,51, 59,51, 58,51, 59,51, 58,51, 57,51, 60,51, 60,51, 60,51, 58,51, 0,0, 59,51, 0,0, 59,51, 0,0, 0,0, 0,0, 0,0, 59,51, 61,51, 61,51, 61,51, 0,0, 0,0, 60,51, 0,0, 60,51, 0,0, 0,0, 0,0, 60,146, 0,0, 0,0, 59,51, 60,147, 59,51, 60,51, 61,51, 0,0, 61,51, 61,148, 60,51, 0,0, 59,51, 0,0, 59,51, 0,0, 61,51, 0,0, 61,51, 59,51, 0,0, 0,0, 0,0, 61,51, 0,0, 60,51, 0,0, 60,51, 0,0, 0,0, 0,0, 60,146, 0,0, 0,0, 0,0, 60,147, 0,0, 60,51, 61,51, 0,0, 61,51, 61,148, 60,51, 62,51, 62,51, 62,51, 0,0, 0,0, 61,51, 0,0, 61,51, 0,0, 63,51, 63,51, 63,51, 61,51, 0,0, 0,0, 0,0, 0,0, 0,0, 62,51, 0,0, 62,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 63,51, 62,51, 63,51, 62,51, 0,0, 0,0, 0,0, 0,0, 62,149, 0,0, 63,51, 0,0, 63,51, 0,0, 0,0, 0,0, 63,150, 63,51, 0,0, 0,0, 0,0, 0,0, 0,0, 62,51, 0,0, 62,51, 0,0, 64,51, 64,51, 64,51, 0,0, 0,0, 63,51, 62,51, 63,51, 62,51, 65,51, 65,51, 65,51, 0,0, 62,149, 0,0, 63,51, 0,0, 63,51, 64,51, 0,0, 64,51, 63,150, 63,51, 0,0, 0,0, 0,0, 0,0, 65,51, 64,51, 65,51, 64,51, 0,0, 0,0, 0,0, 64,151, 64,51, 0,0, 65,51, 0,0, 65,51, 0,0, 65,152, 0,0, 0,0, 65,51, 0,0, 0,0, 0,0, 0,0, 0,0, 64,51, 0,0, 64,51, 0,0, 66,51, 66,51, 66,51, 0,0, 0,0, 65,51, 64,51, 65,51, 64,51, 67,51, 67,51, 67,51, 64,151, 64,51, 0,0, 65,51, 0,0, 65,51, 66,51, 65,152, 66,51, 0,0, 65,51, 68,51, 68,51, 68,51, 0,0, 67,51, 66,51, 67,51, 66,51, 0,0, 0,0, 0,0, 0,0, 66,51, 0,0, 67,51, 0,0, 67,51, 0,0, 68,51, 0,0, 68,51, 67,51, 0,0, 0,0, 67,153, 0,0, 0,0, 66,51, 68,51, 66,51, 68,51, 69,51, 69,51, 69,51, 0,0, 68,51, 67,51, 66,51, 67,51, 66,51, 0,0, 0,0, 0,0, 0,0, 66,51, 0,0, 67,51, 0,0, 67,51, 69,51, 68,51, 69,154, 68,51, 67,51, 0,0, 0,0, 67,153, 0,0, 0,0, 69,51, 68,51, 69,51, 68,51, 0,0, 0,0, 0,0, 69,51, 68,51, 0,0, 70,51, 70,51, 70,51, 71,51, 71,51, 71,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 69,51, 0,0, 69,154, 0,0, 0,0, 0,0, 70,51, 0,0, 70,51, 71,51, 69,51, 71,51, 69,51, 0,0, 0,0, 0,0, 70,51, 69,51, 70,51, 71,51, 0,0, 71,51, 70,155, 70,51, 0,0, 0,0, 71,51, 0,0, 71,156, 72,51, 72,51, 72,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 70,51, 0,0, 70,51, 71,51, 0,0, 71,51, 0,0, 0,0, 0,0, 72,51, 70,51, 72,51, 70,51, 71,51, 0,0, 71,51, 70,155, 70,51, 0,0, 72,157, 71,51, 72,51, 71,156, 0,0, 0,0, 0,0, 72,51, 73,51, 73,51, 73,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 72,51, 0,0, 72,51, 0,0, 73,51, 73,158, 73,51, 0,0, 0,0, 0,0, 72,157, 0,0, 72,51, 0,0, 73,51, 0,0, 73,51, 72,51, 0,0, 0,0, 0,0, 73,51, 74,51, 74,51, 74,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 73,51, 73,158, 73,51, 0,0, 74,51, 74,159, 74,51, 0,0, 0,0, 0,0, 73,51, 0,0, 73,51, 0,0, 74,160, 0,0, 74,51, 73,51, 0,0, 0,0, 0,0, 74,161, 75,51, 75,51, 75,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 74,51, 74,159, 74,51, 0,0, 75,51, 75,162, 75,51, 0,0, 0,0, 0,0, 74,160, 0,0, 74,51, 0,0, 75,51, 0,0, 75,51, 74,161, 0,0, 75,163, 0,0, 75,164, 76,51, 76,51, 76,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 75,51, 75,162, 75,51, 0,0, 76,51, 0,0, 76,51, 76,165, 0,0, 0,0, 75,51, 0,0, 75,51, 0,0, 76,51, 75,163, 76,51, 75,164, 0,0, 0,0, 0,0, 76,51, 76,166, 0,0, 0,0, 0,0, 0,0, 77,51, 77,51, 77,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 76,51, 0,0, 76,51, 76,165, 78,51, 78,51, 78,51, 0,0, 0,0, 77,51, 76,51, 77,51, 76,51, 0,0, 0,0, 0,0, 0,0, 76,51, 76,166, 77,51, 0,0, 77,51, 78,51, 78,168, 78,51, 78,169, 77,167, 0,0, 0,0, 0,0, 0,0, 0,0, 78,51, 0,0, 78,51, 78,170, 0,0, 0,0, 0,0, 78,171, 78,172, 77,51, 0,0, 77,51, 0,0, 79,51, 79,51, 79,51, 0,0, 0,0, 0,0, 77,51, 0,0, 77,51, 78,51, 78,168, 78,51, 78,169, 77,167, 0,0, 0,0, 0,0, 0,0, 79,51, 78,51, 79,51, 78,51, 78,170, 0,0, 0,0, 79,173, 78,171, 78,172, 79,51, 0,0, 79,51, 0,0, 79,174, 0,0, 0,0, 79,51, 0,0, 0,0, 80,51, 80,51, 80,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 79,51, 0,0, 79,51, 0,0, 0,0, 0,0, 80,51, 79,173, 80,51, 80,175, 79,51, 0,0, 79,51, 0,0, 79,174, 0,0, 80,51, 79,51, 80,176, 0,0, 0,0, 0,0, 80,177, 80,51, 0,0, 0,0, 0,0, 0,0, 0,0, 81,51, 81,51, 81,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 80,51, 0,0, 80,51, 80,175, 82,51, 82,51, 82,51, 0,0, 0,0, 81,51, 80,51, 81,51, 80,176, 0,0, 0,0, 0,0, 80,177, 80,51, 0,0, 81,178, 0,0, 81,51, 82,51, 82,179, 82,51, 82,180, 81,51, 82,181, 82,182, 0,0, 0,0, 0,0, 82,183, 82,184, 82,185, 0,0, 82,186, 0,0, 82,187, 82,188, 0,0, 81,51, 0,0, 81,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 81,178, 0,0, 81,51, 82,51, 82,179, 82,51, 82,180, 81,51, 82,181, 82,182, 84,51, 84,51, 84,51, 82,183, 82,184, 82,185, 0,0, 82,186, 0,0, 82,187, 82,188, 85,51, 85,51, 85,51, 86,51, 86,51, 86,51, 0,0, 84,51, 0,0, 84,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 84,51, 85,51, 84,51, 85,51, 86,51, 0,0, 86,51, 84,51, 0,0, 0,0, 0,0, 85,51, 0,0, 85,51, 86,189, 0,0, 86,51, 0,0, 85,51, 0,0, 86,190, 86,51, 84,51, 0,0, 84,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 84,51, 85,51, 84,51, 85,51, 86,51, 0,0, 86,51, 84,51, 87,51, 87,51, 87,51, 85,51, 0,0, 85,51, 86,189, 0,0, 86,51, 0,0, 85,51, 0,0, 86,190, 86,51, 0,0, 0,0, 0,0, 87,191, 87,51, 0,0, 87,51, 0,0, 0,0, 88,51, 88,51, 88,51, 0,0, 0,0, 87,51, 0,0, 87,51, 0,0, 0,0, 0,0, 0,0, 87,51, 89,51, 89,51, 89,51, 0,0, 0,0, 88,51, 0,0, 88,51, 0,0, 0,0, 0,0, 0,0, 0,0, 87,191, 87,51, 88,51, 87,51, 88,51, 89,51, 89,192, 89,51, 0,0, 88,51, 0,0, 87,51, 0,0, 87,51, 0,0, 89,51, 0,0, 89,51, 87,51, 0,0, 0,0, 0,0, 89,51, 0,0, 88,51, 0,0, 88,51, 0,0, 90,51, 90,51, 90,51, 0,0, 0,0, 0,0, 88,51, 0,0, 88,51, 89,51, 89,192, 89,51, 0,0, 88,51, 91,51, 91,51, 91,51, 0,0, 90,51, 89,51, 90,51, 89,51, 0,0, 92,51, 92,51, 92,51, 89,51, 0,0, 90,51, 0,0, 90,51, 0,0, 91,51, 0,0, 91,51, 90,51, 0,0, 0,0, 90,193, 0,0, 0,0, 92,51, 91,51, 92,51, 91,51, 0,0, 0,0, 0,0, 0,0, 91,51, 90,51, 92,51, 90,51, 92,51, 0,0, 91,194, 0,0, 0,0, 92,51, 0,0, 90,51, 0,0, 90,51, 0,0, 91,51, 0,0, 91,51, 90,51, 0,0, 0,0, 90,193, 0,0, 0,0, 92,51, 91,51, 92,51, 91,51, 93,51, 93,51, 93,51, 0,0, 91,51, 0,0, 92,51, 0,0, 92,51, 0,0, 91,194, 0,0, 0,0, 92,51, 94,51, 94,51, 94,51, 0,0, 93,51, 0,0, 93,51, 0,0, 0,0, 95,51, 95,51, 95,51, 0,0, 0,0, 93,51, 0,0, 93,51, 0,0, 94,51, 0,0, 94,51, 93,51, 0,0, 94,195, 0,0, 0,0, 0,0, 95,51, 94,51, 95,51, 94,51, 0,0, 0,0, 0,0, 0,0, 94,51, 93,51, 95,51, 93,51, 95,51, 0,0, 95,196, 0,0, 95,197, 95,51, 95,198, 93,51, 0,0, 93,51, 0,0, 94,51, 0,0, 94,51, 93,51, 0,0, 94,195, 0,0, 0,0, 0,0, 95,51, 94,51, 95,51, 94,51, 96,51, 96,51, 96,51, 0,0, 94,51, 0,0, 95,51, 0,0, 95,51, 0,0, 95,196, 0,0, 95,197, 95,51, 95,198, 0,0, 0,0, 0,0, 96,51, 0,0, 96,51, 97,51, 97,51, 97,51, 0,0, 0,0, 0,0, 0,0, 96,51, 0,0, 96,51, 0,0, 0,0, 0,0, 96,199, 96,51, 0,0, 0,0, 0,0, 97,51, 0,0, 97,51, 0,0, 0,0, 97,200, 0,0, 97,201, 0,0, 0,0, 97,51, 96,51, 97,51, 96,51, 0,0, 0,0, 0,0, 97,51, 99,51, 99,51, 99,51, 96,51, 0,0, 96,51, 0,0, 0,0, 0,0, 96,199, 96,51, 0,0, 0,0, 0,0, 97,51, 0,0, 97,51, 0,0, 99,51, 97,200, 99,51, 97,201, 0,0, 99,202, 97,51, 0,0, 97,51, 0,0, 99,51, 0,0, 99,51, 97,51, 0,0, 0,0, 0,0, 99,51, 100,51, 100,51, 100,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 101,51, 101,51, 101,51, 0,0, 0,0, 99,51, 0,0, 99,51, 0,0, 100,51, 99,202, 100,51, 100,203, 0,0, 0,0, 99,51, 0,0, 99,51, 101,51, 100,51, 101,51, 100,51, 99,51, 0,0, 0,0, 0,0, 100,51, 0,0, 101,51, 0,0, 101,51, 0,0, 0,0, 0,0, 0,0, 101,51, 102,51, 102,51, 102,51, 0,0, 0,0, 100,51, 0,0, 100,51, 100,203, 103,51, 103,51, 103,51, 0,0, 0,0, 101,51, 100,51, 101,51, 100,51, 102,51, 0,0, 102,51, 0,0, 100,51, 0,0, 101,51, 0,0, 101,51, 103,51, 102,51, 103,206, 102,51, 101,51, 102,204, 0,0, 0,0, 102,205, 0,0, 103,51, 0,0, 103,51, 0,0, 0,0, 0,0, 0,0, 103,51, 104,51, 104,51, 104,51, 0,0, 0,0, 102,51, 0,0, 102,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 103,51, 102,51, 103,206, 102,51, 104,51, 102,204, 104,51, 0,0, 102,205, 0,0, 103,51, 0,0, 103,51, 0,0, 104,207, 0,0, 104,51, 103,51, 0,0, 0,0, 104,208, 104,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 105,51, 105,51, 105,51, 0,0, 0,0, 0,0, 0,0, 104,51, 0,0, 104,51, 0,0, 0,0, 0,0, 106,51, 106,51, 106,51, 0,0, 104,207, 105,51, 104,51, 105,51, 0,0, 0,0, 104,208, 104,51, 105,209, 0,0, 0,0, 105,51, 0,0, 105,51, 106,51, 106,211, 106,51, 0,0, 105,210, 0,0, 0,0, 0,0, 0,0, 0,0, 106,51, 0,0, 106,51, 0,0, 0,0, 0,0, 0,0, 106,51, 0,0, 105,51, 0,0, 105,51, 0,0, 107,51, 107,51, 107,51, 105,209, 0,0, 0,0, 105,51, 0,0, 105,51, 106,51, 106,211, 106,51, 0,0, 105,210, 108,51, 108,51, 108,51, 0,0, 107,51, 106,51, 107,51, 106,51, 0,0, 109,51, 109,51, 109,51, 106,51, 0,0, 107,51, 0,0, 107,51, 0,0, 108,51, 0,0, 108,51, 107,51, 0,0, 0,0, 0,0, 0,0, 0,0, 109,51, 108,51, 109,51, 108,51, 0,0, 0,0, 109,212, 0,0, 108,51, 107,51, 109,213, 107,51, 109,51, 0,0, 0,0, 0,0, 0,0, 109,51, 0,0, 107,51, 0,0, 107,51, 0,0, 108,51, 0,0, 108,51, 107,51, 110,51, 110,51, 110,51, 0,0, 0,0, 109,51, 108,51, 109,51, 108,51, 0,0, 0,0, 109,212, 0,0, 108,51, 0,0, 109,213, 0,0, 109,51, 110,51, 0,0, 110,51, 0,0, 109,51, 111,51, 111,51, 111,51, 0,0, 0,0, 110,51, 0,0, 110,51, 110,214, 0,0, 0,0, 0,0, 110,51, 112,51, 112,51, 112,51, 0,0, 0,0, 111,215, 0,0, 111,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 110,51, 111,51, 110,51, 111,51, 112,51, 0,0, 112,51, 0,0, 111,51, 0,0, 110,51, 112,216, 110,51, 110,214, 112,51, 0,0, 112,51, 110,51, 0,0, 0,0, 0,0, 112,51, 0,0, 111,215, 0,0, 111,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 111,51, 0,0, 111,51, 112,51, 0,0, 112,51, 0,0, 111,51, 0,0, 0,0, 112,216, 0,0, 0,0, 112,51, 0,0, 112,51, 113,51, 113,51, 113,51, 0,0, 112,51, 0,0, 114,51, 114,51, 114,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 113,51, 113,217, 113,51, 0,0, 0,0, 0,0, 114,51, 114,219, 114,51, 0,0, 113,51, 0,0, 113,51, 0,0, 0,0, 0,0, 114,51, 113,218, 114,51, 0,0, 0,0, 114,220, 0,0, 114,221, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 113,51, 113,217, 113,51, 0,0, 0,0, 0,0, 114,51, 114,219, 114,51, 0,0, 113,51, 0,0, 113,51, 115,51, 115,51, 115,51, 114,51, 113,218, 114,51, 0,0, 0,0, 114,220, 0,0, 114,221, 116,51, 116,51, 116,51, 0,0, 0,0, 0,0, 0,0, 115,51, 0,0, 115,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 115,51, 116,51, 115,51, 116,51, 116,223, 0,0, 115,222, 115,51, 0,0, 0,0, 0,0, 116,51, 0,0, 116,51, 0,0, 0,0, 0,0, 0,0, 116,51, 116,224, 0,0, 0,0, 115,51, 0,0, 115,51, 0,0, 117,51, 117,51, 117,51, 0,0, 0,0, 0,0, 115,51, 116,51, 115,51, 116,51, 116,223, 0,0, 115,222, 115,51, 0,0, 0,0, 0,0, 116,51, 117,51, 116,51, 117,51, 0,0, 0,0, 0,0, 116,51, 116,224, 0,0, 0,0, 117,51, 0,0, 117,51, 0,0, 0,0, 0,0, 0,0, 117,225, 0,0, 0,0, 118,51, 118,51, 118,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 117,51, 0,0, 117,51, 0,0, 0,0, 0,0, 118,51, 118,226, 118,51, 118,227, 117,51, 0,0, 117,51, 0,0, 0,0, 0,0, 118,51, 117,225, 118,51, 118,228, 0,0, 0,0, 0,0, 118,229, 118,230, 0,0, 0,0, 0,0, 0,0, 119,51, 119,51, 119,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 118,51, 118,226, 118,51, 118,227, 120,51, 120,51, 120,51, 0,0, 0,0, 119,51, 118,51, 119,51, 118,51, 118,228, 0,0, 0,0, 119,231, 118,229, 118,230, 119,51, 0,0, 119,51, 120,51, 0,0, 120,51, 120,232, 119,51, 0,0, 0,0, 0,0, 0,0, 0,0, 120,51, 0,0, 120,233, 0,0, 0,0, 0,0, 120,234, 120,51, 0,0, 119,51, 0,0, 119,51, 0,0, 121,51, 121,51, 121,51, 119,231, 0,0, 0,0, 119,51, 0,0, 119,51, 120,51, 0,0, 120,51, 120,232, 119,51, 0,0, 0,0, 0,0, 0,0, 121,51, 120,51, 121,51, 120,233, 0,0, 0,0, 0,0, 120,234, 120,51, 0,0, 121,235, 0,0, 121,51, 0,0, 0,0, 0,0, 0,0, 121,51, 122,51, 122,51, 122,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 123,51, 123,51, 123,51, 0,0, 0,0, 121,51, 0,0, 121,51, 0,0, 122,51, 0,0, 122,51, 0,0, 0,0, 0,0, 121,235, 0,0, 121,51, 123,51, 122,51, 123,51, 122,51, 121,51, 0,0, 0,0, 123,237, 122,51, 122,236, 123,51, 0,0, 123,51, 0,0, 0,0, 0,0, 0,0, 123,51, 124,51, 124,51, 124,51, 0,0, 0,0, 122,51, 0,0, 122,51, 0,0, 126,51, 126,51, 126,51, 0,0, 0,0, 123,51, 122,51, 123,51, 122,51, 124,51, 0,0, 124,51, 123,237, 122,51, 122,236, 123,51, 0,0, 123,51, 126,51, 124,51, 126,51, 124,51, 123,51, 0,0, 0,0, 0,0, 124,51, 0,0, 126,51, 0,0, 126,51, 0,0, 0,0, 0,0, 0,0, 126,51, 137,51, 137,51, 137,51, 0,0, 0,0, 124,51, 0,0, 124,51, 0,0, 138,51, 138,51, 138,51, 0,0, 0,0, 126,51, 124,51, 126,51, 124,51, 137,51, 0,0, 137,51, 0,0, 124,51, 0,0, 126,51, 0,0, 126,51, 138,51, 137,51, 138,51, 137,51, 126,51, 0,0, 0,0, 0,0, 137,51, 0,0, 138,51, 0,0, 138,51, 0,0, 0,0, 0,0, 0,0, 138,51, 139,51, 139,51, 139,51, 0,0, 0,0, 137,51, 0,0, 137,51, 0,0, 140,51, 140,51, 140,51, 0,0, 0,0, 138,51, 137,51, 138,51, 137,51, 139,51, 0,0, 139,51, 0,0, 137,51, 0,0, 138,51, 0,0, 138,51, 140,51, 139,51, 140,51, 139,51, 138,51, 0,0, 0,0, 0,0, 139,51, 0,0, 140,245, 0,0, 140,51, 0,0, 0,0, 0,0, 140,246, 140,51, 0,0, 0,0, 0,0, 0,0, 0,0, 139,51, 0,0, 139,51, 0,0, 141,51, 141,51, 141,51, 0,0, 0,0, 140,51, 139,51, 140,51, 139,51, 142,51, 142,51, 142,51, 0,0, 139,51, 0,0, 140,245, 0,0, 140,51, 141,51, 0,0, 141,51, 140,246, 140,51, 141,247, 0,0, 0,0, 0,0, 142,51, 141,51, 142,51, 141,51, 0,0, 0,0, 0,0, 142,248, 141,51, 0,0, 142,51, 0,0, 142,51, 0,0, 0,0, 0,0, 0,0, 142,51, 143,51, 143,51, 143,51, 0,0, 0,0, 141,51, 0,0, 141,51, 0,0, 0,0, 141,247, 0,0, 0,0, 0,0, 142,51, 141,51, 142,51, 141,51, 143,51, 0,0, 143,51, 142,248, 141,51, 0,0, 142,51, 0,0, 142,51, 0,0, 143,51, 0,0, 143,51, 142,51, 0,0, 0,0, 0,0, 143,51, 144,51, 144,51, 144,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 145,51, 145,51, 145,51, 0,0, 0,0, 143,51, 0,0, 143,51, 0,0, 144,51, 0,0, 144,51, 0,0, 0,0, 0,0, 143,51, 0,0, 143,51, 145,51, 144,51, 145,51, 144,51, 143,51, 0,0, 0,0, 0,0, 144,51, 0,0, 145,51, 0,0, 145,51, 0,0, 0,0, 0,0, 0,0, 145,51, 146,51, 146,51, 146,51, 0,0, 0,0, 144,51, 0,0, 144,51, 0,0, 147,51, 147,51, 147,51, 0,0, 0,0, 145,51, 144,51, 145,51, 144,51, 146,51, 0,0, 146,51, 0,0, 144,51, 146,249, 145,51, 0,0, 145,51, 147,51, 146,51, 147,51, 146,51, 145,51, 0,0, 0,0, 0,0, 146,51, 0,0, 147,51, 0,0, 147,51, 0,0, 0,0, 0,0, 147,250, 147,51, 0,0, 0,0, 0,0, 0,0, 0,0, 146,51, 0,0, 146,51, 0,0, 0,0, 146,249, 0,0, 0,0, 0,0, 147,51, 146,51, 147,51, 146,51, 148,51, 148,51, 148,51, 0,0, 146,51, 0,0, 147,51, 0,0, 147,51, 149,51, 149,51, 149,51, 147,250, 147,51, 0,0, 0,0, 0,0, 0,0, 148,51, 0,0, 148,51, 0,0, 0,0, 150,51, 150,51, 150,51, 0,0, 149,51, 148,51, 149,51, 148,51, 0,0, 0,0, 0,0, 0,0, 148,51, 148,251, 149,51, 0,0, 149,51, 0,0, 150,51, 0,0, 150,51, 149,51, 149,252, 0,0, 0,0, 0,0, 0,0, 148,51, 150,51, 148,51, 150,51, 151,51, 151,51, 151,51, 0,0, 150,51, 149,51, 148,51, 149,51, 148,51, 0,0, 0,0, 0,0, 0,0, 148,51, 148,251, 149,51, 0,0, 149,51, 151,51, 150,51, 151,51, 150,51, 149,51, 149,252, 0,0, 0,0, 0,0, 0,0, 151,51, 150,51, 151,51, 150,51, 0,0, 0,0, 0,0, 151,51, 150,51, 0,0, 153,51, 153,51, 153,51, 152,51, 152,51, 152,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 151,51, 0,0, 151,51, 0,0, 0,0, 0,0, 153,51, 0,0, 153,51, 152,51, 151,51, 152,51, 151,51, 0,0, 0,0, 0,0, 153,51, 151,51, 153,51, 152,51, 152,253, 152,51, 0,0, 153,51, 0,0, 0,0, 152,51, 0,0, 0,0, 154,51, 154,51, 154,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 153,51, 0,0, 153,51, 152,51, 0,0, 152,51, 0,0, 0,0, 0,0, 154,51, 153,51, 154,254, 153,51, 152,51, 152,253, 152,51, 0,0, 153,51, 0,0, 154,51, 152,51, 154,51, 155,51, 155,51, 155,51, 0,0, 154,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 156,51, 156,51, 156,51, 0,0, 155,51, 154,51, 155,51, 154,254, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 155,51, 154,51, 155,51, 154,51, 156,51, 0,0, 156,51, 155,51, 154,51, 0,0, 0,0, 0,0, 0,0, 0,0, 156,51, 0,0, 156,51, 0,0, 0,0, 0,0, 0,0, 156,51, 155,51, 0,0, 155,51, 0,0, 0,0, 0,0, 0,0, 157,51, 157,51, 157,51, 155,51, 0,0, 155,51, 0,0, 156,51, 0,0, 156,51, 155,51, 158,51, 158,51, 158,51, 159,51, 159,51, 159,51, 156,51, 157,51, 156,51, 157,51, 157,255, 0,0, 0,0, 156,51, 0,0, 0,0, 0,0, 157,51, 158,51, 157,51, 158,51, 159,51, 0,0, 159,51, 157,51, 0,0, 0,0, 0,0, 158,256, 0,0, 158,51, 159,51, 0,0, 159,51, 0,0, 158,51, 0,0, 0,0, 159,51, 157,51, 0,0, 157,51, 157,255, 0,0, 0,0, 0,0, 160,51, 160,51, 160,51, 157,51, 158,51, 157,51, 158,51, 159,51, 0,0, 159,51, 157,51, 161,51, 161,51, 161,51, 158,256, 0,0, 158,51, 159,51, 160,51, 159,51, 160,51, 158,51, 0,0, 0,0, 159,51, 0,0, 0,0, 0,0, 160,51, 161,51, 160,51, 161,51, 0,0, 0,0, 160,257, 160,51, 0,0, 0,0, 0,0, 161,51, 0,0, 161,51, 0,0, 0,0, 0,0, 0,0, 161,51, 0,0, 0,0, 0,0, 160,51, 0,0, 160,51, 0,0, 162,51, 162,51, 162,51, 163,51, 163,51, 163,51, 160,51, 161,51, 160,51, 161,51, 0,0, 0,0, 160,257, 160,51, 164,51, 164,51, 164,51, 161,51, 162,51, 161,51, 162,51, 163,51, 0,0, 163,51, 161,51, 0,0, 0,0, 0,0, 162,51, 0,0, 162,51, 163,51, 164,51, 163,51, 164,51, 162,51, 0,0, 0,0, 163,51, 0,0, 0,0, 0,0, 164,51, 0,0, 164,51, 0,0, 0,0, 0,0, 0,0, 164,51, 162,51, 0,0, 162,51, 163,51, 0,0, 163,51, 0,0, 165,51, 165,51, 165,51, 162,51, 0,0, 162,51, 163,51, 164,51, 163,51, 164,51, 162,51, 0,0, 0,0, 163,51, 166,51, 166,51, 166,51, 164,51, 165,51, 164,51, 165,51, 0,0, 0,0, 0,0, 164,51, 0,0, 0,0, 0,0, 165,51, 0,0, 165,51, 0,0, 166,51, 0,0, 166,51, 165,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 166,51, 0,0, 166,51, 167,51, 167,51, 167,51, 0,0, 166,51, 165,51, 0,0, 165,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 165,51, 0,0, 165,51, 167,51, 166,51, 167,51, 166,51, 165,51, 168,51, 168,51, 168,51, 0,0, 0,0, 167,51, 166,51, 167,51, 166,51, 0,0, 0,0, 0,0, 167,51, 166,51, 0,0, 0,0, 0,0, 0,0, 168,51, 0,0, 168,51, 0,0, 0,0, 169,51, 169,51, 169,51, 0,0, 167,51, 168,51, 167,51, 168,51, 0,0, 0,0, 0,0, 0,0, 168,51, 0,0, 167,51, 0,0, 167,51, 0,0, 169,51, 0,0, 169,51, 167,51, 0,0, 170,51, 170,51, 170,51, 0,0, 168,51, 169,51, 168,51, 169,51, 0,0, 0,0, 0,0, 0,0, 169,51, 0,0, 168,51, 0,0, 168,51, 0,0, 170,51, 0,0, 170,51, 168,51, 0,0, 171,51, 171,51, 171,51, 0,0, 169,51, 170,51, 169,51, 170,51, 0,0, 0,0, 0,0, 0,0, 170,51, 0,0, 169,51, 0,0, 169,51, 0,0, 171,51, 0,0, 171,51, 169,51, 0,0, 172,51, 172,51, 172,51, 0,0, 170,51, 171,51, 170,51, 171,51, 0,0, 0,0, 0,0, 0,0, 171,51, 0,0, 170,51, 0,0, 170,51, 0,0, 172,51, 0,0, 172,51, 170,51, 0,0, 173,51, 173,51, 173,51, 0,0, 171,51, 172,51, 171,51, 172,51, 0,0, 0,0, 0,0, 0,0, 172,51, 0,0, 171,51, 0,0, 171,51, 0,0, 173,51, 0,0, 173,51, 171,51, 0,0, 174,51, 174,51, 174,51, 0,0, 172,51, 173,51, 172,51, 173,51, 0,0, 0,0, 0,0, 0,0, 173,51, 0,0, 172,51, 0,0, 172,51, 0,0, 174,51, 0,0, 174,51, 172,51, 0,0, 175,51, 175,51, 175,51, 0,0, 173,51, 174,51, 173,51, 174,51, 0,0, 0,0, 0,0, 0,0, 174,51, 0,0, 173,51, 0,0, 173,51, 0,0, 175,51, 0,0, 175,51, 173,51, 0,0, 176,51, 176,51, 176,51, 0,0, 174,51, 175,51, 174,51, 175,51, 0,0, 0,0, 0,0, 0,0, 175,51, 0,0, 174,51, 0,0, 174,51, 0,0, 176,51, 0,0, 176,51, 174,51, 0,0, 177,51, 177,51, 177,51, 0,0, 175,51, 176,51, 175,51, 176,51, 0,0, 0,0, 0,0, 0,0, 176,51, 0,0, 175,51, 0,0, 175,51, 0,0, 177,51, 0,0, 177,51, 175,51, 0,0, 178,51, 178,51, 178,51, 0,0, 176,51, 177,51, 176,51, 177,51, 0,0, 0,0, 0,0, 0,0, 177,51, 0,0, 176,51, 0,0, 176,51, 0,0, 178,51, 0,0, 178,51, 176,51, 0,0, 179,51, 179,51, 179,51, 0,0, 177,51, 178,51, 177,51, 178,51, 0,0, 0,0, 0,0, 0,0, 178,51, 0,0, 177,51, 0,0, 177,51, 0,0, 179,51, 179,258, 179,51, 177,51, 0,0, 0,0, 0,0, 0,0, 0,0, 178,51, 179,259, 178,51, 179,51, 0,0, 0,0, 0,0, 0,0, 179,260, 0,0, 178,51, 0,0, 178,51, 0,0, 0,0, 0,0, 0,0, 178,51, 180,51, 180,51, 180,51, 0,0, 0,0, 179,51, 179,258, 179,51, 0,0, 0,0, 0,0, 181,51, 181,51, 181,51, 0,0, 179,259, 0,0, 179,51, 180,51, 180,261, 180,51, 0,0, 179,260, 0,0, 0,0, 0,0, 0,0, 0,0, 180,51, 181,51, 180,51, 181,51, 181,265, 180,262, 0,0, 180,263, 180,264, 0,0, 0,0, 181,51, 0,0, 181,51, 0,0, 0,0, 0,0, 0,0, 181,51, 181,266, 0,0, 0,0, 180,51, 180,261, 180,51, 0,0, 182,51, 182,51, 182,51, 0,0, 0,0, 0,0, 180,51, 181,51, 180,51, 181,51, 181,265, 180,262, 0,0, 180,263, 180,264, 0,0, 0,0, 181,51, 182,51, 181,51, 182,51, 0,0, 0,0, 0,0, 181,51, 181,266, 0,0, 0,0, 182,51, 0,0, 182,51, 0,0, 0,0, 0,0, 0,0, 182,267, 0,0, 0,0, 183,51, 183,51, 183,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 182,51, 0,0, 182,51, 0,0, 0,0, 0,0, 183,51, 183,268, 183,51, 183,269, 182,51, 0,0, 182,51, 0,0, 0,0, 0,0, 183,51, 182,267, 183,51, 183,270, 0,0, 0,0, 0,0, 183,271, 183,272, 0,0, 0,0, 0,0, 0,0, 184,51, 184,51, 184,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 183,51, 183,268, 183,51, 183,269, 185,51, 185,51, 185,51, 0,0, 0,0, 184,51, 183,51, 184,51, 183,51, 183,270, 0,0, 0,0, 184,273, 183,271, 183,272, 184,51, 0,0, 184,51, 185,51, 0,0, 185,51, 185,274, 184,51, 0,0, 0,0, 0,0, 0,0, 0,0, 185,51, 0,0, 185,275, 0,0, 0,0, 0,0, 185,276, 185,51, 0,0, 184,51, 0,0, 184,51, 0,0, 186,51, 186,51, 186,51, 184,273, 0,0, 0,0, 184,51, 0,0, 184,51, 185,51, 0,0, 185,51, 185,274, 184,51, 187,51, 187,51, 187,51, 0,0, 186,51, 185,51, 186,51, 185,275, 0,0, 0,0, 0,0, 185,276, 185,51, 0,0, 186,277, 0,0, 186,51, 0,0, 187,51, 0,0, 187,51, 186,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 187,51, 0,0, 187,51, 0,0, 0,0, 0,0, 0,0, 187,51, 186,51, 0,0, 186,51, 0,0, 0,0, 0,0, 0,0, 188,51, 188,51, 188,51, 186,277, 0,0, 186,51, 0,0, 187,51, 0,0, 187,51, 186,51, 189,51, 189,51, 189,51, 190,51, 190,51, 190,51, 187,51, 188,51, 187,51, 188,51, 188,278, 0,0, 0,0, 187,51, 0,0, 0,0, 0,0, 188,51, 189,51, 188,51, 189,51, 190,51, 0,0, 190,51, 188,51, 0,0, 0,0, 0,0, 189,51, 0,0, 189,51, 190,51, 0,0, 190,51, 0,0, 189,51, 0,0, 0,0, 190,51, 188,51, 0,0, 188,51, 188,278, 0,0, 0,0, 0,0, 191,51, 191,51, 191,51, 188,51, 189,51, 188,51, 189,51, 190,51, 0,0, 190,51, 188,51, 192,51, 192,51, 192,51, 189,51, 0,0, 189,51, 190,51, 191,51, 190,51, 191,51, 189,51, 0,0, 0,0, 190,51, 0,0, 0,0, 0,0, 191,51, 192,51, 191,51, 192,51, 0,0, 0,0, 0,0, 191,51, 0,0, 0,0, 0,0, 192,51, 0,0, 192,51, 0,0, 0,0, 0,0, 192,279, 192,51, 0,0, 0,0, 0,0, 191,51, 0,0, 191,51, 0,0, 193,51, 193,51, 193,51, 0,0, 0,0, 0,0, 191,51, 192,51, 191,51, 192,51, 0,0, 0,0, 0,0, 191,51, 194,51, 194,51, 194,51, 192,51, 193,51, 192,51, 193,51, 193,280, 0,0, 192,279, 192,51, 0,0, 0,0, 0,0, 193,51, 0,0, 193,51, 0,0, 194,51, 0,0, 194,51, 193,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 194,51, 0,0, 194,51, 0,0, 0,0, 0,0, 194,281, 194,51, 193,51, 0,0, 193,51, 193,280, 0,0, 195,51, 195,51, 195,51, 0,0, 0,0, 193,51, 0,0, 193,51, 0,0, 194,51, 0,0, 194,51, 193,51, 196,51, 196,51, 196,51, 0,0, 0,0, 195,51, 194,51, 195,51, 194,51, 0,0, 0,0, 0,0, 194,281, 194,51, 0,0, 195,51, 0,0, 195,51, 196,51, 0,0, 196,51, 0,0, 195,51, 0,0, 0,0, 0,0, 0,0, 0,0, 196,51, 0,0, 196,51, 0,0, 0,0, 0,0, 0,0, 196,51, 0,0, 195,51, 0,0, 195,51, 0,0, 197,51, 197,51, 197,51, 0,0, 0,0, 0,0, 195,51, 0,0, 195,51, 196,51, 0,0, 196,51, 0,0, 195,51, 198,51, 198,51, 198,51, 0,0, 197,51, 196,51, 197,51, 196,51, 0,0, 199,51, 199,51, 199,51, 196,51, 0,0, 197,51, 197,282, 197,51, 0,0, 198,51, 0,0, 198,51, 197,51, 0,0, 0,0, 0,0, 0,0, 0,0, 199,51, 198,51, 199,51, 198,51, 0,0, 0,0, 0,0, 0,0, 198,51, 197,51, 199,51, 197,51, 199,51, 0,0, 0,0, 0,0, 0,0, 199,51, 0,0, 197,51, 197,282, 197,51, 0,0, 198,51, 0,0, 198,51, 197,51, 200,51, 200,51, 200,51, 0,0, 0,0, 199,51, 198,51, 199,51, 198,51, 201,51, 201,51, 201,51, 0,0, 198,51, 0,0, 199,51, 0,0, 199,51, 200,51, 0,0, 200,51, 0,0, 199,51, 0,0, 0,0, 0,0, 0,0, 201,51, 200,51, 201,51, 200,51, 0,0, 0,0, 0,0, 0,0, 200,51, 0,0, 201,51, 0,0, 201,51, 0,0, 0,0, 0,0, 0,0, 201,51, 202,51, 202,51, 202,51, 0,0, 0,0, 200,51, 0,0, 200,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 201,51, 200,51, 201,51, 200,51, 202,51, 0,0, 202,51, 202,283, 200,51, 0,0, 201,51, 0,0, 201,51, 0,0, 202,51, 0,0, 202,51, 201,51, 0,0, 0,0, 0,0, 202,51, 203,51, 203,51, 203,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 204,51, 204,51, 204,51, 0,0, 0,0, 202,51, 0,0, 202,51, 202,283, 203,51, 203,284, 203,51, 0,0, 0,0, 0,0, 202,51, 0,0, 202,51, 204,51, 203,51, 204,51, 203,51, 202,51, 0,0, 0,0, 0,0, 203,51, 0,0, 204,51, 0,0, 204,51, 0,0, 0,0, 0,0, 0,0, 204,51, 205,51, 205,51, 205,51, 0,0, 0,0, 203,51, 203,284, 203,51, 0,0, 206,51, 206,51, 206,51, 0,0, 0,0, 204,51, 203,51, 204,51, 203,51, 205,51, 0,0, 205,51, 205,285, 203,51, 0,0, 204,51, 0,0, 204,51, 206,51, 205,51, 206,51, 205,51, 204,51, 0,0, 0,0, 0,0, 205,51, 0,0, 206,51, 0,0, 206,51, 0,0, 0,0, 0,0, 0,0, 206,51, 207,51, 207,51, 207,51, 0,0, 0,0, 205,51, 0,0, 205,51, 205,285, 208,51, 208,51, 208,51, 0,0, 0,0, 206,51, 205,51, 206,51, 205,51, 207,51, 0,0, 207,51, 0,0, 205,51, 0,0, 206,51, 0,0, 206,51, 208,51, 207,51, 208,51, 207,51, 206,51, 0,0, 0,0, 0,0, 207,51, 0,0, 208,51, 0,0, 208,51, 0,0, 0,0, 0,0, 0,0, 208,51, 209,51, 209,51, 209,51, 0,0, 0,0, 207,51, 0,0, 207,51, 0,0, 210,51, 210,51, 210,51, 0,0, 0,0, 208,51, 207,51, 208,51, 207,51, 209,51, 0,0, 209,51, 0,0, 207,51, 0,0, 208,51, 0,0, 208,51, 210,51, 209,51, 210,51, 209,51, 208,51, 0,0, 0,0, 0,0, 209,51, 0,0, 210,51, 0,0, 210,51, 0,0, 0,0, 0,0, 0,0, 210,51, 211,51, 211,51, 211,51, 0,0, 0,0, 209,51, 0,0, 209,51, 0,0, 212,51, 212,51, 212,51, 0,0, 0,0, 210,51, 209,51, 210,51, 209,51, 211,51, 0,0, 211,51, 0,0, 209,51, 0,0, 210,51, 0,0, 210,51, 212,51, 211,51, 212,51, 211,51, 210,51, 0,0, 0,0, 0,0, 211,51, 0,0, 212,51, 0,0, 212,51, 0,0, 0,0, 0,0, 0,0, 212,51, 213,51, 213,51, 213,51, 0,0, 0,0, 211,51, 0,0, 211,51, 0,0, 214,51, 214,51, 214,51, 0,0, 0,0, 212,51, 211,51, 212,51, 211,51, 213,51, 0,0, 213,51, 0,0, 211,51, 0,0, 212,51, 0,0, 212,51, 214,51, 213,51, 214,51, 213,51, 212,51, 0,0, 0,0, 0,0, 213,51, 0,0, 214,51, 0,0, 214,51, 0,0, 214,286, 0,0, 0,0, 214,51, 0,0, 0,0, 0,0, 0,0, 0,0, 213,51, 0,0, 213,51, 0,0, 215,51, 215,51, 215,51, 0,0, 0,0, 214,51, 213,51, 214,51, 213,51, 216,51, 216,51, 216,51, 0,0, 213,51, 0,0, 214,51, 0,0, 214,51, 215,51, 214,286, 215,51, 0,0, 214,51, 217,51, 217,51, 217,51, 0,0, 216,51, 215,287, 216,51, 215,51, 0,0, 0,0, 0,0, 215,288, 215,51, 0,0, 216,51, 0,0, 216,51, 0,0, 217,51, 0,0, 217,51, 216,51, 0,0, 0,0, 0,0, 0,0, 0,0, 215,51, 217,51, 215,51, 217,51, 218,51, 218,51, 218,51, 0,0, 217,51, 216,51, 215,287, 216,51, 215,51, 0,0, 0,0, 0,0, 215,288, 215,51, 0,0, 216,51, 0,0, 216,51, 218,51, 217,51, 218,51, 217,51, 216,51, 219,51, 219,51, 219,51, 0,0, 0,0, 218,51, 217,51, 218,51, 217,51, 0,0, 0,0, 0,0, 218,51, 217,51, 0,0, 0,0, 0,0, 0,0, 219,51, 0,0, 219,51, 0,0, 0,0, 220,51, 220,51, 220,51, 0,0, 218,51, 219,51, 218,51, 219,51, 0,0, 0,0, 0,0, 0,0, 219,51, 0,0, 218,51, 0,0, 218,51, 0,0, 220,51, 0,0, 220,51, 218,51, 0,0, 221,51, 221,51, 221,51, 0,0, 219,51, 220,51, 219,51, 220,51, 0,0, 0,0, 0,0, 0,0, 220,51, 0,0, 219,51, 0,0, 219,51, 0,0, 221,51, 0,0, 221,51, 219,51, 0,0, 222,51, 222,51, 222,51, 0,0, 220,51, 221,51, 220,51, 221,51, 0,0, 0,0, 0,0, 0,0, 221,51, 0,0, 220,51, 0,0, 220,51, 0,0, 222,51, 0,0, 222,51, 220,51, 0,0, 223,51, 223,51, 223,51, 0,0, 221,51, 222,51, 221,51, 222,51, 0,0, 0,0, 0,0, 0,0, 222,51, 0,0, 221,51, 0,0, 221,51, 0,0, 223,51, 0,0, 223,51, 221,51, 0,0, 224,51, 224,51, 224,51, 0,0, 222,51, 223,51, 222,51, 223,51, 0,0, 0,0, 0,0, 0,0, 223,51, 0,0, 222,51, 0,0, 222,51, 0,0, 224,51, 0,0, 224,51, 222,51, 0,0, 225,51, 225,51, 225,51, 0,0, 223,51, 224,51, 223,51, 224,51, 0,0, 0,0, 0,0, 0,0, 224,51, 0,0, 223,51, 0,0, 223,51, 0,0, 225,51, 0,0, 225,51, 223,51, 0,0, 226,51, 226,51, 226,51, 0,0, 224,51, 225,51, 224,51, 225,51, 0,0, 0,0, 0,0, 0,0, 225,51, 0,0, 224,51, 0,0, 224,51, 0,0, 226,51, 0,0, 226,51, 224,51, 0,0, 227,51, 227,51, 227,51, 0,0, 225,51, 226,51, 225,51, 226,51, 0,0, 0,0, 0,0, 0,0, 226,51, 0,0, 225,51, 0,0, 225,51, 0,0, 227,51, 0,0, 227,51, 225,51, 0,0, 228,51, 228,51, 228,51, 0,0, 226,51, 227,51, 226,51, 227,51, 0,0, 0,0, 0,0, 0,0, 227,51, 0,0, 226,51, 0,0, 226,51, 0,0, 228,51, 0,0, 228,51, 226,51, 0,0, 229,51, 229,51, 229,51, 0,0, 227,51, 228,51, 227,51, 228,51, 0,0, 0,0, 0,0, 0,0, 228,51, 0,0, 227,51, 0,0, 227,51, 0,0, 229,51, 0,0, 229,51, 227,51, 0,0, 230,51, 230,51, 230,51, 0,0, 228,51, 229,51, 228,51, 229,51, 0,0, 0,0, 0,0, 0,0, 229,51, 0,0, 228,51, 0,0, 228,51, 0,0, 230,51, 0,0, 230,51, 228,51, 0,0, 231,51, 231,51, 231,51, 0,0, 229,51, 230,51, 229,51, 230,51, 0,0, 0,0, 0,0, 0,0, 230,51, 0,0, 229,51, 0,0, 229,51, 0,0, 231,51, 0,0, 231,51, 229,51, 0,0, 232,51, 232,51, 232,51, 0,0, 230,51, 231,51, 230,51, 231,51, 0,0, 0,0, 0,0, 0,0, 231,51, 0,0, 230,51, 0,0, 230,51, 0,0, 232,51, 0,0, 232,51, 230,51, 0,0, 233,51, 233,51, 233,51, 0,0, 231,51, 232,51, 231,51, 232,51, 0,0, 0,0, 0,0, 0,0, 232,51, 0,0, 231,51, 0,0, 231,51, 0,0, 233,51, 0,0, 233,51, 231,51, 0,0, 234,51, 234,51, 234,51, 0,0, 232,51, 233,51, 232,51, 233,51, 0,0, 0,0, 0,0, 0,0, 233,51, 0,0, 232,51, 0,0, 232,51, 0,0, 234,51, 0,0, 234,51, 232,51, 0,0, 235,51, 235,51, 235,51, 0,0, 233,51, 234,51, 233,51, 234,51, 0,0, 0,0, 0,0, 0,0, 234,51, 0,0, 233,51, 0,0, 233,51, 0,0, 235,51, 0,0, 235,51, 233,51, 0,0, 236,51, 236,51, 236,51, 0,0, 234,51, 235,51, 234,51, 235,51, 0,0, 0,0, 0,0, 0,0, 235,51, 0,0, 234,51, 0,0, 234,51, 0,0, 236,51, 0,0, 236,51, 234,51, 0,0, 237,51, 237,51, 237,51, 0,0, 235,51, 236,51, 235,51, 236,51, 0,0, 0,0, 0,0, 0,0, 236,51, 0,0, 235,51, 0,0, 235,51, 0,0, 237,51, 0,0, 237,51, 235,51, 0,0, 245,51, 245,51, 245,51, 0,0, 236,51, 237,51, 236,51, 237,51, 0,0, 0,0, 0,0, 0,0, 237,51, 237,289, 236,51, 0,0, 236,51, 0,0, 245,51, 0,0, 245,51, 236,51, 0,0, 246,51, 246,51, 246,51, 0,0, 237,51, 245,51, 237,51, 245,51, 0,0, 0,0, 0,0, 0,0, 245,51, 0,0, 237,51, 0,0, 237,51, 0,0, 246,51, 0,0, 246,51, 237,51, 237,289, 247,51, 247,51, 247,51, 0,0, 245,51, 246,51, 245,51, 246,51, 0,0, 0,0, 0,0, 0,0, 246,51, 0,0, 245,51, 0,0, 245,51, 0,0, 247,51, 0,0, 247,51, 245,51, 0,0, 248,51, 248,51, 248,51, 0,0, 246,51, 247,51, 246,51, 247,290, 0,0, 0,0, 0,0, 0,0, 247,51, 0,0, 246,51, 0,0, 246,51, 0,0, 248,51, 0,0, 248,51, 246,51, 0,0, 249,51, 249,51, 249,51, 0,0, 247,51, 248,51, 247,51, 248,51, 0,0, 0,0, 0,0, 0,0, 248,51, 0,0, 247,51, 0,0, 247,290, 0,0, 249,51, 0,0, 249,51, 247,51, 0,0, 250,51, 250,51, 250,51, 0,0, 248,51, 249,51, 248,51, 249,51, 0,0, 0,0, 0,0, 0,0, 249,51, 0,0, 248,51, 0,0, 248,51, 0,0, 250,51, 0,0, 250,51, 248,51, 0,0, 251,51, 251,51, 251,51, 0,0, 249,51, 250,51, 249,51, 250,51, 0,0, 0,0, 0,0, 0,0, 250,51, 0,0, 249,51, 0,0, 249,51, 0,0, 251,51, 0,0, 251,51, 249,51, 0,0, 252,51, 252,51, 252,51, 0,0, 250,51, 251,51, 250,51, 251,51, 0,0, 0,0, 0,0, 0,0, 251,51, 0,0, 250,51, 0,0, 250,51, 0,0, 252,51, 0,0, 252,51, 250,51, 0,0, 253,51, 253,51, 253,51, 0,0, 251,51, 252,51, 251,51, 252,51, 0,0, 0,0, 0,0, 0,0, 252,51, 0,0, 251,51, 0,0, 251,51, 0,0, 253,51, 0,0, 253,51, 251,51, 0,0, 254,51, 254,51, 254,51, 0,0, 252,51, 253,51, 252,51, 253,51, 0,0, 0,0, 0,0, 0,0, 253,51, 0,0, 252,51, 0,0, 252,51, 0,0, 254,51, 0,0, 254,51, 252,51, 0,0, 255,51, 255,51, 255,51, 0,0, 253,51, 254,51, 253,51, 254,51, 254,291, 0,0, 0,0, 0,0, 254,51, 0,0, 253,51, 0,0, 253,51, 0,0, 255,51, 0,0, 255,51, 253,51, 0,0, 255,292, 0,0, 0,0, 0,0, 254,51, 255,51, 254,51, 255,51, 256,51, 256,51, 256,51, 0,0, 255,51, 0,0, 254,51, 0,0, 254,51, 254,291, 0,0, 0,0, 0,0, 254,51, 257,51, 257,51, 257,51, 0,0, 256,51, 255,51, 256,51, 255,51, 0,0, 0,0, 255,292, 0,0, 0,0, 0,0, 256,51, 255,51, 256,51, 255,51, 257,51, 0,0, 257,51, 256,51, 255,51, 256,293, 0,0, 0,0, 0,0, 0,0, 257,51, 0,0, 257,51, 258,51, 258,51, 258,51, 0,0, 257,51, 256,51, 0,0, 256,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 256,51, 0,0, 256,51, 258,51, 257,51, 258,51, 257,51, 256,51, 0,0, 256,293, 0,0, 0,0, 0,0, 258,51, 257,51, 258,51, 257,51, 0,0, 0,0, 0,0, 258,51, 257,51, 0,0, 259,51, 259,51, 259,51, 260,51, 260,51, 260,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 258,51, 0,0, 258,51, 0,0, 0,0, 0,0, 259,51, 0,0, 259,51, 260,51, 258,51, 260,51, 258,51, 0,0, 0,0, 0,0, 259,51, 258,51, 259,51, 260,51, 0,0, 260,51, 259,294, 259,51, 0,0, 0,0, 260,51, 0,0, 0,0, 261,51, 261,51, 261,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 259,51, 0,0, 259,51, 260,51, 0,0, 260,51, 0,0, 0,0, 0,0, 261,51, 259,51, 261,51, 259,51, 260,51, 0,0, 260,51, 259,294, 259,51, 0,0, 261,51, 260,51, 261,51, 262,51, 262,51, 262,51, 0,0, 261,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 263,51, 263,51, 263,51, 0,0, 262,51, 261,51, 262,51, 261,51, 0,0, 264,51, 264,51, 264,51, 0,0, 0,0, 262,51, 261,51, 262,51, 261,51, 263,51, 0,0, 263,51, 262,51, 261,51, 0,0, 0,0, 0,0, 0,0, 264,51, 263,51, 264,51, 263,51, 0,0, 0,0, 0,0, 0,0, 263,51, 262,51, 264,51, 262,51, 264,51, 0,0, 0,0, 0,0, 0,0, 264,51, 0,0, 262,51, 0,0, 262,51, 0,0, 263,51, 0,0, 263,51, 262,51, 265,51, 265,51, 265,51, 0,0, 0,0, 264,51, 263,51, 264,51, 263,51, 266,51, 266,51, 266,51, 0,0, 263,51, 0,0, 264,51, 0,0, 264,51, 265,51, 0,0, 265,51, 0,0, 264,51, 267,51, 267,51, 267,51, 0,0, 266,51, 265,51, 266,51, 265,51, 0,0, 0,0, 0,0, 0,0, 265,51, 0,0, 266,51, 0,0, 266,51, 0,0, 267,51, 0,0, 267,51, 266,51, 0,0, 0,0, 0,0, 0,0, 0,0, 265,51, 267,51, 265,51, 267,51, 268,51, 268,51, 268,51, 0,0, 267,51, 266,51, 265,51, 266,51, 265,51, 0,0, 0,0, 0,0, 0,0, 265,51, 0,0, 266,51, 0,0, 266,51, 268,51, 267,51, 268,51, 267,51, 266,51, 269,51, 269,51, 269,51, 0,0, 0,0, 268,51, 267,51, 268,51, 267,51, 0,0, 0,0, 0,0, 268,51, 267,51, 0,0, 0,0, 0,0, 0,0, 269,51, 0,0, 269,51, 0,0, 0,0, 270,51, 270,51, 270,51, 0,0, 268,51, 269,51, 268,51, 269,51, 0,0, 0,0, 0,0, 0,0, 269,51, 0,0, 268,51, 0,0, 268,51, 0,0, 270,51, 0,0, 270,51, 268,51, 0,0, 271,51, 271,51, 271,51, 0,0, 269,51, 270,51, 269,51, 270,51, 0,0, 0,0, 0,0, 0,0, 270,51, 0,0, 269,51, 0,0, 269,51, 0,0, 271,51, 0,0, 271,51, 269,51, 0,0, 272,51, 272,51, 272,51, 0,0, 270,51, 271,51, 270,51, 271,51, 0,0, 0,0, 0,0, 0,0, 271,51, 0,0, 270,51, 0,0, 270,51, 0,0, 272,51, 0,0, 272,51, 270,51, 0,0, 273,51, 273,51, 273,51, 0,0, 271,51, 272,51, 271,51, 272,51, 0,0, 0,0, 0,0, 0,0, 272,51, 0,0, 271,51, 0,0, 271,51, 0,0, 273,51, 0,0, 273,51, 271,51, 0,0, 274,51, 274,51, 274,51, 0,0, 272,51, 273,51, 272,51, 273,51, 0,0, 0,0, 0,0, 0,0, 273,51, 0,0, 272,51, 0,0, 272,51, 0,0, 274,51, 0,0, 274,51, 272,51, 0,0, 275,51, 275,51, 275,51, 0,0, 273,51, 274,51, 273,51, 274,51, 0,0, 0,0, 0,0, 0,0, 274,51, 0,0, 273,51, 0,0, 273,51, 0,0, 275,51, 0,0, 275,51, 273,51, 0,0, 276,51, 276,51, 276,51, 0,0, 274,51, 275,51, 274,51, 275,51, 0,0, 0,0, 0,0, 0,0, 275,51, 0,0, 274,51, 0,0, 274,51, 0,0, 276,51, 0,0, 276,51, 274,51, 0,0, 277,51, 277,51, 277,51, 0,0, 275,51, 276,51, 275,51, 276,51, 0,0, 0,0, 0,0, 0,0, 276,51, 0,0, 275,51, 0,0, 275,51, 0,0, 277,51, 0,0, 277,51, 275,51, 0,0, 278,51, 278,51, 278,51, 0,0, 276,51, 277,51, 276,51, 277,51, 0,0, 0,0, 0,0, 0,0, 277,51, 0,0, 276,51, 0,0, 276,51, 0,0, 278,51, 0,0, 278,51, 276,51, 0,0, 279,51, 279,51, 279,51, 0,0, 277,51, 278,51, 277,51, 278,51, 0,0, 0,0, 0,0, 0,0, 278,51, 278,295, 277,51, 0,0, 277,51, 0,0, 279,51, 0,0, 279,51, 277,51, 0,0, 0,0, 0,0, 0,0, 0,0, 278,51, 279,51, 278,51, 279,51, 0,0, 0,0, 0,0, 0,0, 279,51, 0,0, 278,51, 0,0, 278,51, 0,0, 0,0, 0,0, 0,0, 278,51, 278,295, 280,51, 280,51, 280,51, 0,0, 279,51, 0,0, 279,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 279,51, 0,0, 279,51, 0,0, 280,51, 280,296, 280,51, 279,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 280,51, 280,297, 280,51, 0,0, 280,298, 0,0, 0,0, 280,51, 0,0, 0,0, 281,51, 281,51, 281,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 280,51, 280,296, 280,51, 0,0, 0,0, 0,0, 281,51, 0,0, 281,51, 0,0, 280,51, 280,297, 280,51, 0,0, 280,298, 0,0, 281,51, 280,51, 281,51, 282,51, 282,51, 282,51, 0,0, 281,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 283,51, 283,51, 283,51, 0,0, 282,51, 281,51, 282,51, 281,51, 0,0, 284,51, 284,51, 284,51, 0,0, 0,0, 282,51, 281,51, 282,51, 281,51, 283,51, 0,0, 283,51, 282,51, 281,51, 0,0, 0,0, 0,0, 0,0, 284,51, 283,51, 284,51, 283,51, 0,0, 0,0, 0,0, 0,0, 283,51, 282,51, 284,51, 282,51, 284,51, 0,0, 0,0, 0,0, 0,0, 284,51, 284,299, 282,51, 0,0, 282,51, 0,0, 283,51, 0,0, 283,51, 282,51, 285,51, 285,51, 285,51, 0,0, 0,0, 284,51, 283,51, 284,51, 283,51, 286,51, 286,51, 286,51, 0,0, 283,51, 0,0, 284,51, 0,0, 284,51, 285,51, 0,0, 285,51, 0,0, 284,51, 284,299, 0,0, 0,0, 0,0, 286,51, 285,51, 286,51, 285,51, 0,0, 0,0, 0,0, 0,0, 285,51, 285,300, 286,51, 0,0, 286,51, 0,0, 0,0, 0,0, 0,0, 286,51, 287,51, 287,51, 287,51, 0,0, 0,0, 285,51, 0,0, 285,51, 0,0, 288,51, 288,51, 288,51, 0,0, 0,0, 286,51, 285,51, 286,51, 285,51, 287,51, 0,0, 287,51, 0,0, 285,51, 285,300, 286,51, 0,0, 286,51, 288,51, 287,51, 288,51, 287,51, 286,51, 0,0, 0,0, 0,0, 287,51, 0,0, 288,51, 0,0, 288,51, 0,0, 0,0, 0,0, 0,0, 288,51, 289,51, 289,51, 289,51, 0,0, 0,0, 287,51, 0,0, 287,51, 0,0, 290,51, 290,51, 290,51, 0,0, 0,0, 288,51, 287,51, 288,51, 287,51, 289,51, 0,0, 289,51, 0,0, 287,51, 0,0, 288,51, 0,0, 288,51, 290,51, 289,51, 290,51, 289,51, 288,51, 0,0, 0,0, 0,0, 289,51, 0,0, 290,51, 0,0, 290,51, 0,0, 0,0, 0,0, 0,0, 290,51, 291,51, 291,51, 291,51, 0,0, 0,0, 289,51, 0,0, 289,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 290,51, 289,51, 290,51, 289,51, 291,51, 0,0, 291,51, 0,0, 289,51, 0,0, 290,51, 0,0, 290,51, 0,0, 291,51, 0,0, 291,51, 290,51, 0,0, 0,0, 0,0, 291,51, 292,51, 292,51, 292,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 293,51, 293,51, 293,51, 0,0, 0,0, 291,51, 0,0, 291,51, 292,301, 292,51, 0,0, 292,51, 0,0, 0,0, 0,0, 291,51, 0,0, 291,51, 293,51, 292,51, 293,302, 292,51, 291,51, 0,0, 0,0, 0,0, 292,51, 0,0, 293,51, 0,0, 293,51, 0,0, 0,0, 0,0, 0,0, 293,51, 294,51, 294,51, 294,51, 0,0, 292,301, 292,51, 0,0, 292,51, 0,0, 295,51, 295,51, 295,51, 0,0, 0,0, 293,51, 292,51, 293,302, 292,51, 294,51, 0,0, 294,51, 0,0, 292,51, 0,0, 293,51, 0,0, 293,51, 295,51, 294,51, 295,51, 294,51, 293,51, 0,0, 0,0, 0,0, 294,51, 0,0, 295,51, 0,0, 295,51, 0,0, 0,0, 0,0, 0,0, 295,51, 296,51, 296,51, 296,51, 0,0, 0,0, 294,51, 0,0, 294,51, 0,0, 297,51, 297,51, 297,51, 0,0, 0,0, 295,51, 294,51, 295,51, 294,51, 296,51, 0,0, 296,51, 0,0, 294,51, 0,0, 295,51, 0,0, 295,51, 297,51, 296,51, 297,51, 296,51, 295,51, 0,0, 0,0, 0,0, 296,51, 0,0, 297,51, 0,0, 297,51, 0,0, 0,0, 0,0, 0,0, 297,51, 298,51, 298,51, 298,51, 0,0, 0,0, 296,51, 0,0, 296,51, 0,0, 299,51, 299,51, 299,51, 0,0, 0,0, 297,51, 296,51, 297,51, 296,51, 298,51, 0,0, 298,51, 0,0, 296,51, 0,0, 297,51, 0,0, 297,51, 299,51, 298,51, 299,51, 298,51, 297,51, 0,0, 0,0, 0,0, 298,51, 0,0, 299,51, 0,0, 299,51, 0,0, 0,0, 0,0, 0,0, 299,51, 300,51, 300,51, 300,51, 0,0, 0,0, 298,51, 0,0, 298,51, 0,0, 301,51, 301,51, 301,51, 0,0, 0,0, 299,51, 298,51, 299,51, 298,51, 300,51, 0,0, 300,51, 0,0, 298,51, 0,0, 299,51, 0,0, 299,51, 301,51, 300,51, 301,51, 300,51, 299,51, 0,0, 0,0, 0,0, 300,51, 0,0, 301,303, 0,0, 301,51, 0,0, 0,0, 0,0, 0,0, 301,51, 302,51, 302,51, 302,51, 0,0, 0,0, 300,51, 0,0, 300,51, 0,0, 303,51, 303,51, 303,51, 0,0, 0,0, 301,51, 300,51, 301,51, 300,51, 302,51, 0,0, 302,51, 302,304, 300,51, 0,0, 301,303, 0,0, 301,51, 303,51, 302,51, 303,51, 302,51, 301,51, 0,0, 0,0, 0,0, 302,51, 0,0, 303,51, 0,0, 303,51, 0,0, 0,0, 0,0, 0,0, 303,51, 304,51, 304,51, 304,51, 0,0, 0,0, 302,51, 0,0, 302,51, 302,304, 0,0, 0,0, 0,0, 0,0, 0,0, 303,51, 302,51, 303,51, 302,51, 304,51, 0,0, 304,51, 0,0, 302,51, 0,0, 303,51, 0,0, 303,51, 0,0, 304,51, 0,0, 304,51, 303,51, 0,0, 0,0, 0,0, 304,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 304,51, 0,0, 304,51, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 304,51, 0,0, 304,51, 0,0, 0,0, 0,0, 0,0, 304,51, 0,0, 0,0}; struct yysvf yysvec[] ={ 0, 0, 0, yycrank+-1, 0, 0, yycrank+-57, yysvec+1, 0, yycrank+0, 0, yyvstop+1, yycrank+4, 0, yyvstop+3, yycrank+0, 0, yyvstop+6, yycrank+-91, 0, yyvstop+8, yycrank+133, 0, yyvstop+10, yycrank+-195, 0, yyvstop+12, yycrank+56, 0, yyvstop+14, yycrank+78, 0, yyvstop+16, yycrank+160, 0, yyvstop+18, yycrank+-238, 0, yyvstop+21, yycrank+34, 0, yyvstop+24, yycrank+33, 0, yyvstop+26, yycrank+0, 0, yyvstop+28, yycrank+280, 0, yyvstop+31, yycrank+355, yysvec+16, yyvstop+35, yycrank+358, yysvec+16, yyvstop+39, yycrank+411, yysvec+16, yyvstop+42, yycrank+449, yysvec+16, yyvstop+45, yycrank+485, yysvec+16, yyvstop+48, yycrank+506, yysvec+16, yyvstop+51, yycrank+559, yysvec+16, yyvstop+54, yycrank+627, yysvec+16, yyvstop+57, yycrank+697, yysvec+16, yyvstop+60, yycrank+765, yysvec+16, yyvstop+63, yycrank+774, yysvec+16, yyvstop+66, yycrank+829, yysvec+16, yyvstop+69, yycrank+867, yysvec+16, yyvstop+72, yycrank+908, yysvec+16, yyvstop+75, yycrank+962, yysvec+16, yyvstop+78, yycrank+691, yysvec+16, yyvstop+81, yycrank+1030, yysvec+16, yyvstop+84, yycrank+1033, yysvec+16, yyvstop+88, yycrank+0, yysvec+4, yyvstop+92, yycrank+-9, yysvec+6, 0, yycrank+-10, yysvec+6, yyvstop+94, yycrank+0, yysvec+7, yyvstop+96, yycrank+-1111, 0, 0, yycrank+-404, yysvec+39, 0, yycrank+9, yysvec+9, 0, yycrank+0, yysvec+10, yyvstop+98, yycrank+170, 0, 0, yycrank+0, yysvec+11, yyvstop+100, yycrank+0, yysvec+12, yyvstop+102, yycrank+0, 0, yyvstop+104, yycrank+0, 0, yyvstop+106, yycrank+0, 0, yyvstop+108, yycrank+1019, yysvec+16, yyvstop+110, yycrank+1153, yysvec+16, yyvstop+113, yycrank+1156, yysvec+16, yyvstop+116, yycrank+1159, yysvec+16, yyvstop+118, yycrank+1227, yysvec+16, yyvstop+121, yycrank+1231, yysvec+16, yyvstop+123, yycrank+1240, yysvec+16, yyvstop+125, yycrank+1295, yysvec+16, yyvstop+127, yycrank+1304, yysvec+16, yyvstop+129, yycrank+1308, yysvec+16, yyvstop+132, yycrank+1349, yysvec+16, yyvstop+135, yycrank+1372, yysvec+16, yyvstop+138, yycrank+1385, yysvec+16, yyvstop+140, yycrank+1440, yysvec+16, yyvstop+142, yycrank+1449, yysvec+16, yyvstop+144, yycrank+1494, yysvec+16, yyvstop+146, yycrank+1503, yysvec+16, yyvstop+148, yycrank+1548, yysvec+16, yyvstop+150, yycrank+1557, yysvec+16, yyvstop+153, yycrank+1571, yysvec+16, yyvstop+155, yycrank+1602, yysvec+16, yyvstop+158, yycrank+1640, yysvec+16, yyvstop+160, yycrank+1643, yysvec+16, yyvstop+162, yycrank+1681, yysvec+16, yyvstop+164, yycrank+1717, yysvec+16, yyvstop+166, yycrank+1753, yysvec+16, yyvstop+168, yycrank+1789, yysvec+16, yyvstop+170, yycrank+1825, yysvec+16, yyvstop+172, yycrank+1866, yysvec+16, yyvstop+174, yycrank+1879, yysvec+16, yyvstop+176, yycrank+1920, yysvec+16, yyvstop+178, yycrank+1958, yysvec+16, yyvstop+180, yycrank+1999, yysvec+16, yyvstop+182, yycrank+2012, yysvec+16, yyvstop+184, yycrank+0, 0, yyvstop+186, yycrank+2069, yysvec+16, yyvstop+188, yycrank+2080, yysvec+16, yyvstop+191, yycrank+2083, yysvec+16, yyvstop+194, yycrank+2137, yysvec+16, yyvstop+196, yycrank+2160, yysvec+16, yyvstop+198, yycrank+2173, yysvec+16, yyvstop+201, yycrank+2214, yysvec+16, yyvstop+203, yycrank+2228, yysvec+16, yyvstop+205, yycrank+2237, yysvec+16, yyvstop+207, yycrank+2291, yysvec+16, yyvstop+210, yycrank+2305, yysvec+16, yyvstop+213, yycrank+2314, yysvec+16, yyvstop+215, yycrank+2368, yysvec+16, yyvstop+217, yycrank+2389, yysvec+16, yyvstop+219, yycrank+0, 0, yyvstop+222, yycrank+2425, yysvec+16, yyvstop+224, yycrank+2461, yysvec+16, yyvstop+226, yycrank+2470, yysvec+16, yyvstop+228, yycrank+2506, yysvec+16, yyvstop+231, yycrank+2515, yysvec+16, yyvstop+233, yycrank+2551, yysvec+16, yyvstop+235, yycrank+2594, yysvec+16, yyvstop+237, yycrank+2607, yysvec+16, yyvstop+239, yycrank+2648, yysvec+16, yyvstop+241, yycrank+2662, yysvec+16, yyvstop+244, yycrank+2671, yysvec+16, yyvstop+247, yycrank+2716, yysvec+16, yyvstop+249, yycrank+2739, yysvec+16, yyvstop+251, yycrank+2752, yysvec+16, yyvstop+253, yycrank+2815, yysvec+16, yyvstop+255, yycrank+2821, yysvec+16, yyvstop+257, yycrank+2878, yysvec+16, yyvstop+259, yycrank+2889, yysvec+16, yyvstop+261, yycrank+2932, yysvec+16, yyvstop+263, yycrank+2970, yysvec+16, yyvstop+265, yycrank+3011, yysvec+16, yyvstop+267, yycrank+3024, yysvec+16, yyvstop+269, yycrank+3065, yysvec+16, yyvstop+271, yycrank+3101, yysvec+16, yyvstop+273, yycrank+3110, yysvec+16, yyvstop+275, yycrank+3146, yysvec+16, yyvstop+277, yycrank+0, 0, yyvstop+280, yycrank+3155, yysvec+16, yyvstop+282, yycrank+0, 0, yyvstop+285, yycrank+-11, yysvec+39, 0, yycrank+-14, yysvec+39, yyvstop+287, yycrank+-15, yysvec+39, 0, yycrank+-17, yysvec+39, 0, yycrank+-19, yysvec+39, 0, yycrank+-20, yysvec+39, 0, yycrank+-23, yysvec+39, 0, yycrank+-104, yysvec+39, 0, yycrank+0, yysvec+43, yyvstop+289, yycrank+3191, yysvec+16, yyvstop+291, yycrank+3200, yysvec+16, yyvstop+294, yycrank+3236, yysvec+16, yyvstop+297, yycrank+3245, yysvec+16, yyvstop+300, yycrank+3290, yysvec+16, yyvstop+303, yycrank+3299, yysvec+16, yyvstop+305, yycrank+3335, yysvec+16, yyvstop+308, yycrank+3371, yysvec+16, yyvstop+311, yycrank+3380, yysvec+16, yyvstop+314, yycrank+3416, yysvec+16, yyvstop+317, yycrank+3425, yysvec+16, yyvstop+319, yycrank+3479, yysvec+16, yyvstop+321, yycrank+3488, yysvec+16, yyvstop+323, yycrank+3502, yysvec+16, yyvstop+325, yycrank+3533, yysvec+16, yyvstop+328, yycrank+3574, yysvec+16, yyvstop+331, yycrank+3571, yysvec+16, yyvstop+334, yycrank+3612, yysvec+16, yyvstop+337, yycrank+3643, yysvec+16, yyvstop+340, yycrank+3657, yysvec+16, yyvstop+343, yycrank+3700, yysvec+16, yyvstop+346, yycrank+3711, yysvec+16, yyvstop+348, yycrank+3714, yysvec+16, yyvstop+350, yycrank+3757, yysvec+16, yyvstop+353, yycrank+3768, yysvec+16, yyvstop+355, yycrank+3811, yysvec+16, yyvstop+358, yycrank+3814, yysvec+16, yyvstop+361, yycrank+3825, yysvec+16, yyvstop+364, yycrank+3868, yysvec+16, yyvstop+367, yycrank+3882, yysvec+16, yyvstop+370, yycrank+3913, yysvec+16, yyvstop+373, yycrank+3936, yysvec+16, yyvstop+376, yycrank+3959, yysvec+16, yyvstop+379, yycrank+3982, yysvec+16, yyvstop+382, yycrank+4005, yysvec+16, yyvstop+385, yycrank+4028, yysvec+16, yyvstop+388, yycrank+4051, yysvec+16, yyvstop+391, yycrank+4074, yysvec+16, yyvstop+394, yycrank+4097, yysvec+16, yyvstop+397, yycrank+4120, yysvec+16, yyvstop+400, yycrank+4143, yysvec+16, yyvstop+403, yycrank+4166, yysvec+16, yyvstop+406, yycrank+4189, yysvec+16, yyvstop+409, yycrank+4234, yysvec+16, yyvstop+411, yycrank+4245, yysvec+16, yyvstop+413, yycrank+4288, yysvec+16, yyvstop+415, yycrank+4326, yysvec+16, yyvstop+417, yycrank+4367, yysvec+16, yyvstop+419, yycrank+4380, yysvec+16, yyvstop+421, yycrank+4421, yysvec+16, yyvstop+423, yycrank+4435, yysvec+16, yyvstop+425, yycrank+4478, yysvec+16, yyvstop+428, yycrank+4489, yysvec+16, yyvstop+430, yycrank+4492, yysvec+16, yyvstop+433, yycrank+4535, yysvec+16, yyvstop+436, yycrank+4546, yysvec+16, yyvstop+439, yycrank+4589, yysvec+16, yyvstop+442, yycrank+4603, yysvec+16, yyvstop+444, yycrank+4644, yysvec+16, yyvstop+447, yycrank+4657, yysvec+16, yyvstop+450, yycrank+4698, yysvec+16, yyvstop+453, yycrank+4712, yysvec+16, yyvstop+455, yycrank+4721, yysvec+16, yyvstop+458, yycrank+4766, yysvec+16, yyvstop+461, yycrank+4775, yysvec+16, yyvstop+464, yycrank+4811, yysvec+16, yyvstop+467, yycrank+4847, yysvec+16, yyvstop+469, yycrank+4856, yysvec+16, yyvstop+471, yycrank+4892, yysvec+16, yyvstop+474, yycrank+4901, yysvec+16, yyvstop+476, yycrank+4937, yysvec+16, yyvstop+479, yycrank+4946, yysvec+16, yyvstop+482, yycrank+4982, yysvec+16, yyvstop+485, yycrank+4991, yysvec+16, yyvstop+488, yycrank+5027, yysvec+16, yyvstop+491, yycrank+5036, yysvec+16, yyvstop+494, yycrank+5072, yysvec+16, yyvstop+497, yycrank+5081, yysvec+16, yyvstop+500, yycrank+5126, yysvec+16, yyvstop+502, yycrank+5135, yysvec+16, yyvstop+505, yycrank+5149, yysvec+16, yyvstop+508, yycrank+5180, yysvec+16, yyvstop+511, yycrank+5203, yysvec+16, yyvstop+514, yycrank+5226, yysvec+16, yyvstop+517, yycrank+5249, yysvec+16, yyvstop+520, yycrank+5272, yysvec+16, yyvstop+523, yycrank+5295, yysvec+16, yyvstop+526, yycrank+5318, yysvec+16, yyvstop+529, yycrank+5341, yysvec+16, yyvstop+532, yycrank+5364, yysvec+16, yyvstop+535, yycrank+5387, yysvec+16, yyvstop+538, yycrank+5410, yysvec+16, yyvstop+541, yycrank+5433, yysvec+16, yyvstop+544, yycrank+5456, yysvec+16, yyvstop+547, yycrank+5479, yysvec+16, yyvstop+550, yycrank+5502, yysvec+16, yyvstop+553, yycrank+5525, yysvec+16, yyvstop+556, yycrank+5548, yysvec+16, yyvstop+559, yycrank+5571, yysvec+16, yyvstop+562, yycrank+5594, yysvec+16, yyvstop+565, yycrank+5617, yysvec+16, yyvstop+568, yycrank+-105, yysvec+39, yyvstop+570, yycrank+-110, yysvec+39, yyvstop+572, yycrank+-112, yysvec+39, yyvstop+575, yycrank+-113, yysvec+39, yyvstop+578, yycrank+-114, yysvec+39, yyvstop+581, yycrank+-197, yysvec+39, yyvstop+584, yycrank+-218, yysvec+39, yyvstop+587, yycrank+5640, yysvec+16, yyvstop+590, yycrank+5663, yysvec+16, yyvstop+593, yycrank+5686, yysvec+16, yyvstop+596, yycrank+5709, yysvec+16, yyvstop+598, yycrank+5732, yysvec+16, yyvstop+601, yycrank+5755, yysvec+16, yyvstop+604, yycrank+5778, yysvec+16, yyvstop+607, yycrank+5801, yysvec+16, yyvstop+610, yycrank+5824, yysvec+16, yyvstop+613, yycrank+5847, yysvec+16, yyvstop+616, yycrank+5870, yysvec+16, yyvstop+618, yycrank+5901, yysvec+16, yyvstop+620, yycrank+5915, yysvec+16, yyvstop+622, yycrank+5946, yysvec+16, yyvstop+625, yycrank+5984, yysvec+16, yyvstop+628, yycrank+5987, yysvec+16, yyvstop+630, yycrank+6025, yysvec+16, yyvstop+633, yycrank+6056, yysvec+16, yyvstop+636, yycrank+6070, yysvec+16, yyvstop+639, yycrank+6079, yysvec+16, yyvstop+642, yycrank+6124, yysvec+16, yyvstop+645, yycrank+6133, yysvec+16, yyvstop+648, yycrank+6147, yysvec+16, yyvstop+651, yycrank+6178, yysvec+16, yyvstop+654, yycrank+6201, yysvec+16, yyvstop+657, yycrank+6224, yysvec+16, yyvstop+660, yycrank+6247, yysvec+16, yyvstop+663, yycrank+6270, yysvec+16, yyvstop+666, yycrank+6293, yysvec+16, yyvstop+669, yycrank+6316, yysvec+16, yyvstop+672, yycrank+6339, yysvec+16, yyvstop+675, yycrank+6362, yysvec+16, yyvstop+678, yycrank+6385, yysvec+16, yyvstop+681, yycrank+6408, yysvec+16, yyvstop+684, yycrank+6431, yysvec+16, yyvstop+686, yycrank+6477, yysvec+16, yyvstop+689, yycrank+6515, yysvec+16, yyvstop+692, yycrank+6546, yysvec+16, yyvstop+695, yycrank+6560, yysvec+16, yyvstop+698, yycrank+6569, yysvec+16, yyvstop+701, yycrank+6614, yysvec+16, yyvstop+703, yycrank+6623, yysvec+16, yyvstop+705, yycrank+6659, yysvec+16, yyvstop+708, yycrank+6668, yysvec+16, yyvstop+711, yycrank+6704, yysvec+16, yyvstop+714, yycrank+6713, yysvec+16, yyvstop+717, yycrank+6749, yysvec+16, yyvstop+720, yycrank+6785, yysvec+16, yyvstop+723, yycrank+6794, yysvec+16, yyvstop+725, yycrank+6830, yysvec+16, yyvstop+727, yycrank+6839, yysvec+16, yyvstop+730, yycrank+6875, yysvec+16, yyvstop+733, yycrank+6884, yysvec+16, yyvstop+736, yycrank+6920, yysvec+16, yyvstop+739, yycrank+6929, yysvec+16, yyvstop+742, yycrank+6965, yysvec+16, yyvstop+745, yycrank+6974, yysvec+16, yyvstop+748, yycrank+7010, yysvec+16, yyvstop+750, yycrank+7019, yysvec+16, yyvstop+752, yycrank+7055, yysvec+16, yyvstop+755, 0, 0, 0}; struct yywork *yytop = yycrank+7170; struct yysvf *yybgin = yysvec+1; char yymatch[] ={ 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 011 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , '0' ,'0' ,'2' ,'3' ,'3' ,'3' ,'3' ,'3' , '8' ,'8' ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' , 'H' ,'I' ,'J' ,'K' ,'L' ,'M' ,'N' ,'O' , 'P' ,'Q' ,'R' ,'S' ,'T' ,'U' ,'V' ,'W' , 'X' ,'Y' ,'K' ,01 ,01 ,01 ,01 ,'K' , 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'F' ,'G' , 'H' ,'I' ,'J' ,'K' ,'L' ,'M' ,'N' ,'O' , 'P' ,'Q' ,'R' ,'S' ,'T' ,'U' ,'V' ,'W' , 'X' ,'Y' ,'K' ,01 ,01 ,01 ,01 ,01 , 0}; char yyextra[] ={ 0,0,0,0,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0}; /* ncform 4.1 83/08/11 */ int yylineno =1; # define YYU(x) x # define NLSTATE yyprevious=YYNEWLINE char yytext[YYLMAX]; struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; char yysbuf[YYLMAX]; char *yysptr = yysbuf; int *yyfnd; extern struct yysvf *yyestate; int yyprevious = YYNEWLINE; yylook(){ register struct yysvf *yystate, **lsp; register struct yywork *yyt; struct yysvf *yyz; int yych; struct yywork *yyr; # ifdef LEXDEBUG int debug; # endif char *yylastch; /* start off machines */ # ifdef LEXDEBUG debug = 0; # endif if (!yymorfg) yylastch = yytext; else { yymorfg=0; yylastch = yytext+yyleng; } for(;;){ lsp = yylstate; yyestate = yystate = yybgin; if (yyprevious==YYNEWLINE) yystate++; for (;;){ # ifdef LEXDEBUG if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); # endif yyt = yystate->yystoff; if(yyt == yycrank){ /* may not be any transitions */ yyz = yystate->yyother; if(yyz == 0)break; if(yyz->yystoff == yycrank)break; } *yylastch++ = yych = input(); tryagain: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"char "); allprint(yych); putchar('\n'); } # endif yyr = yyt; if ( (int)yyt > (int)yycrank){ yyt = yyr + yych; if (yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } } # ifdef YYOPTIM else if((int)yyt < (int)yycrank) { /* r < yycrank */ yyt = yyr = yycrank+(yycrank-yyt); # ifdef LEXDEBUG if(debug)fprintf(yyout,"compressed state\n"); # endif yyt = yyt + yych; if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } yyt = yyr + YYU(yymatch[yych]); # ifdef LEXDEBUG if(debug){ fprintf(yyout,"try fall back character "); allprint(YYU(yymatch[yych])); putchar('\n'); } # endif if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transition */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } } if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ # ifdef LEXDEBUG if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); # endif goto tryagain; } # endif else {unput(*--yylastch);break;} contin: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"state %d char ",yystate-yysvec-1); allprint(yych); putchar('\n'); } # endif ; } # ifdef LEXDEBUG if(debug){ fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); allprint(yych); putchar('\n'); } # endif while (lsp-- > yylstate){ *yylastch-- = 0; if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ yyolsp = lsp; if(yyextra[*yyfnd]){ /* must backup */ while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ lsp--; unput(*yylastch--); } } yyprevious = YYU(*yylastch); yylsp = lsp; yyleng = yylastch-yytext+1; yytext[yyleng] = 0; # ifdef LEXDEBUG if(debug){ fprintf(yyout,"\nmatch "); sprint(yytext); fprintf(yyout," action %d\n",*yyfnd); } # endif return(*yyfnd++); } unput(*yylastch); } if (yytext[0] == 0 /* && feof(yyin) */) { yysptr=yysbuf; return(0); } yyprevious = yytext[0] = input(); if (yyprevious>0) output(yyprevious); yylastch=yytext; # ifdef LEXDEBUG if(debug)putchar('\n'); # endif } } yyback(p, m) int *p; { if (p==0) return(0); while (*p) { if (*p++ == m) return(1); } return(0); } /* the following are only used in the lex library */ yyinput(){ return(input()); } yyoutput(c) int c; { output(c); } yyunput(c) int c; { unput(c); }