#include #include #include # 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 # ifndef YYLMAX # define YYLMAX BUFSIZ # endif #ifndef __cplusplus # define output(c) (void)putc(c,yyout) #else # define lex_output(c) (void)putc(c,yyout) #endif #if defined(__cplusplus) || defined(__STDC__) #if defined(__cplusplus) && defined(__EXTERN_C__) extern "C" { #endif int yyback(int *, int); int yyinput(void); int yylook(void); void yyoutput(int); int yyracc(int); int yyreject(void); void yyunput(int); int yylex(void); #ifdef YYLEX_E void yywoutput(wchar_t); wchar_t yywinput(void); void yywunput(wchar_t); #endif #ifndef yyless int yyless(int); #endif #ifndef yywrap int yywrap(void); #endif #ifdef LEXDEBUG void allprint(char); void sprint(char *); #endif #if defined(__cplusplus) && defined(__EXTERN_C__) } #endif #ifdef __cplusplus extern "C" { #endif void exit(int); #ifdef __cplusplus } #endif #endif # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} # define yymore() (yymorfg=1) #ifndef __cplusplus # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) #else # define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) #endif #define ECHO fprintf(yyout, "%s",yytext) # define REJECT { nstr = yyreject(); goto yyfussy;} int yyleng; #define YYISARRAY char yytext[YYLMAX]; 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; # line 3 "nwamcfg_lex.l" /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ # line 24 "nwamcfg_lex.l" /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include #include "nwamcfg.h" #include "nwamcfg_grammar.tab.h" int lex_lineno = 1; /* line number for error reporting */ static int state = INITIAL; extern boolean_t cmd_file_mode; extern void yyerror(char *s); char *safe_strdup(char *s); # line 50 "nwamcfg_lex.l" /* * The state below are for tokens. */ # define TSTATE 2 # define YYNEWLINE 10 int yylex(){ int nstr; extern int yyprevious; #ifdef __cplusplus /* to avoid CC and lint complaining yyfussy not being used ...*/ static int __lex_hack = 0; if (__lex_hack) goto yyfussy; #endif while((nstr = yylook()) >= 0) yyfussy: switch(nstr){ case 0: if(yywrap()) return(0); break; case 1: # line 56 "nwamcfg_lex.l" { } break; case 2: # line 58 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return CANCEL; } break; case 3: # line 64 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return CLEAR; } break; case 4: # line 70 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return COMMIT; } break; case 5: # line 76 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return CREATE; } break; case 6: # line 83 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return DESTROY; } break; case 7: # line 89 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return END; } break; case 8: # line 95 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return EXIT; } break; case 9: # line 101 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return EXPORT; } break; case 10: # line 107 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return GET; } break; case 11: # line 113 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return HELP; } break; case 12: # line 119 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return LIST; } break; case 13: # line 125 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return REVERT; } break; case 14: # line 131 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return SELECT; } break; case 15: # line 137 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return SET; } break; case 16: # line 143 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return VERIFY; } break; case 17: # line 149 "nwamcfg_lex.l" { BEGIN TSTATE; state = TSTATE; return WALKPROP; } break; case 18: # line 155 "nwamcfg_lex.l" { return LOC; } break; case 19: # line 156 "nwamcfg_lex.l" { return NCP; } break; case 20: # line 157 "nwamcfg_lex.l" { return ENM; } break; case 21: # line 158 "nwamcfg_lex.l" { return WLAN; } break; case 22: # line 160 "nwamcfg_lex.l" { return NCU; } break; case 23: # line 162 "nwamcfg_lex.l" { return PHYS; } break; case 24: # line 163 "nwamcfg_lex.l" { return IP; } break; case 25: # line 165 "nwamcfg_lex.l" { return UNKNOWN; } break; case 26: # line 166 "nwamcfg_lex.l" { return ACTIVATION_MODE; } break; case 27: # line 167 "nwamcfg_lex.l" { return CONDITIONS; } break; case 28: # line 168 "nwamcfg_lex.l" { return ENABLED; } break; case 29: # line 170 "nwamcfg_lex.l" { return TYPE; } break; case 30: # line 171 "nwamcfg_lex.l" { return CLASS; } break; case 31: # line 172 "nwamcfg_lex.l" { return PARENT; } break; case 32: # line 173 "nwamcfg_lex.l" { return PRIORITY_GROUP; } break; case 33: # line 174 "nwamcfg_lex.l" { return PRIORITY_MODE; } break; case 34: # line 175 "nwamcfg_lex.l" { return LINK_MACADDR; } break; case 35: # line 176 "nwamcfg_lex.l" { return LINK_AUTOPUSH; } break; case 36: # line 177 "nwamcfg_lex.l" { return LINK_MTU; } break; case 37: # line 178 "nwamcfg_lex.l" { return IP_VERSION; } break; case 38: # line 179 "nwamcfg_lex.l" { return IPV4_ADDRSRC; } break; case 39: # line 180 "nwamcfg_lex.l" { return IPV4_ADDR; } break; case 40: # line 181 "nwamcfg_lex.l" { return IPV4_DEFAULT_ROUTE; } break; case 41: # line 182 "nwamcfg_lex.l" { return IPV6_ADDRSRC; } break; case 42: # line 183 "nwamcfg_lex.l" { return IPV6_ADDR; } break; case 43: # line 184 "nwamcfg_lex.l" { return IPV6_DEFAULT_ROUTE; } break; case 44: # line 186 "nwamcfg_lex.l" { return ENM_STATE; } break; case 45: # line 187 "nwamcfg_lex.l" { return ENM_FMRI; } break; case 46: # line 188 "nwamcfg_lex.l" { return ENM_START; } break; case 47: # line 189 "nwamcfg_lex.l" { return ENM_STOP; } break; case 48: # line 191 "nwamcfg_lex.l" { return LOC_NAMESERVICES; } break; case 49: # line 192 "nwamcfg_lex.l" { return LOC_NAMESERVICES_CONFIG; } break; case 50: # line 193 "nwamcfg_lex.l" { return LOC_DNS_CONFIGSRC; } break; case 51: # line 194 "nwamcfg_lex.l" { return LOC_DNS_DOMAIN; } break; case 52: # line 195 "nwamcfg_lex.l" { return LOC_DNS_SERVERS; } break; case 53: # line 196 "nwamcfg_lex.l" { return LOC_DNS_SEARCH; } break; case 54: # line 197 "nwamcfg_lex.l" { return LOC_NIS_CONFIGSRC; } break; case 55: # line 198 "nwamcfg_lex.l" { return LOC_NIS_SERVERS; } break; case 56: # line 199 "nwamcfg_lex.l" { return LOC_LDAP_CONFIGSRC; } break; case 57: # line 200 "nwamcfg_lex.l" { return LOC_LDAP_SERVERS; } break; case 58: # line 201 "nwamcfg_lex.l" { return LOC_DEFAULT_DOMAIN; } break; case 59: # line 202 "nwamcfg_lex.l" { return LOC_NFSV4_DOMAIN; } break; case 60: # line 203 "nwamcfg_lex.l" { return LOC_IPF_CONFIG; } break; case 61: # line 204 "nwamcfg_lex.l" { return LOC_IPF_V6_CONFIG; } break; case 62: # line 205 "nwamcfg_lex.l" { return LOC_IPNAT_CONFIG; } break; case 63: # line 206 "nwamcfg_lex.l" { return LOC_IPPOOL_CONFIG; } break; case 64: # line 207 "nwamcfg_lex.l" { return LOC_IKE_CONFIG; } break; case 65: # line 208 "nwamcfg_lex.l" { return LOC_IPSECPOL_CONFIG; } break; case 66: # line 210 "nwamcfg_lex.l" { return WLAN_BSSIDS; } break; case 67: # line 211 "nwamcfg_lex.l" { return WLAN_PRIORITY; } break; case 68: # line 212 "nwamcfg_lex.l" { return WLAN_KEYNAME; } break; case 69: # line 213 "nwamcfg_lex.l" { return WLAN_KEYSLOT; } break; case 70: # line 214 "nwamcfg_lex.l" { return WLAN_SECURITY_MODE; } break; case 71: # line 216 "nwamcfg_lex.l" { return EQUAL; } break; case 72: # line 218 "nwamcfg_lex.l" { /* matches options */ yylval.strval = safe_strdup(yytext); return OPTION; } break; case 73: # line 223 "nwamcfg_lex.l" { /* matches non-quoted values */ yylval.strval = safe_strdup(yytext); return TOKEN; } break; case 74: # line 228 "nwamcfg_lex.l" { /* matches string with quotes */ yylval.strval = safe_strdup(yytext); return TOKEN; } break; case 75: # line 233 "nwamcfg_lex.l" { /* matches string list of the form "a","b",.. */ yylval.strval = safe_strdup(yytext); return TOKEN; } break; case 76: # line 238 "nwamcfg_lex.l" { BEGIN INITIAL; return (yytext[0]); } break; case 77: # line 243 "nwamcfg_lex.l" { lex_lineno++; BEGIN INITIAL; return (yytext[0]); } break; case 78: # line 249 "nwamcfg_lex.l" ; break; case 79: # line 251 "nwamcfg_lex.l" { /* matches all single otherwise unmatched characters */ return (yytext[0]); } break; case -1: break; default: (void)fprintf(yyout,"bad switch yylook %d",nstr); } return(0); } /* end of yylex */ # line 256 "nwamcfg_lex.l" char * safe_strdup(char *s) { char *result; if ((result = strdup(s)) == NULL) { yyerror("Out of memory"); exit(1); } return (result); } void yyerror(char *s) { /* feof(yyin) is not an error; anything else is, so we set saw_error */ if (yytext[0] == '\0') { if (!feof(yyin)) { saw_error = B_TRUE; (void) fprintf(stderr, gettext("%s, token expected\n"), s); } return; } saw_error = B_TRUE; if (cmd_file_mode) { (void) fprintf(stderr, gettext("%s on line %d at '%s'\n"), s, lex_lineno, (yytext[0] == '\n') ? "\\n" : yytext); } else { (void) fprintf(stderr, gettext("%s at '%s'\n\n"), s, (yytext[0] == '\n') ? "\\n" : yytext); } help_wrap(); } int yyvstop[] = { 0, 79, 0, 78, 79, 0, 77, 0, 1, 79, 0, 76, 79, 0, 11, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 73, 79, 0, 79, 0, 73, 79, 0, 71, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 73, 79, 0, 1, 0, 73, 0, 74, 0, 74, 0, 72, 73, 0, 73, 0, 24, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 24, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 7, 0, 10, 0, 15, 0, 20, 73, 0, 18, 73, 0, 19, 73, 0, 22, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 8, 0, 11, 0, 12, 0, 23, 73, 0, 21, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 45, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 47, 73, 0, 29, 73, 0, 73, 0, 3, 0, 75, 0, 73, 0, 73, 0, 30, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 46, 73, 0, 44, 73, 0, 73, 0, 2, 0, 4, 0, 5, 0, 9, 0, 13, 0, 14, 0, 16, 0, 73, 0, 66, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 31, 73, 0, 73, 0, 73, 0, 73, 0, 6, 0, 73, 0, 73, 0, 73, 0, 73, 0, 28, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 68, 73, 0, 69, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 25, 73, 0, 17, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 36, 73, 0, 73, 0, 73, 0, 73, 0, 67, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 39, 73, 0, 73, 0, 42, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 27, 73, 0, 73, 0, 73, 0, 73, 0, 37, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 38, 73, 0, 73, 0, 41, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 48, 73, 0, 59, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 35, 73, 0, 34, 73, 0, 73, 0, 73, 0, 73, 0, 33, 73, 0, 70, 73, 0, 73, 0, 58, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 32, 73, 0, 26, 73, 0, 73, 0, 64, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 62, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 63, 73, 0, 73, 0, 40, 73, 0, 43, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 60, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 51, 73, 0, 53, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 52, 73, 0, 61, 73, 0, 65, 73, 0, 73, 0, 73, 0, 73, 0, 73, 0, 55, 73, 0, 73, 0, 73, 0, 57, 73, 0, 49, 73, 0, 73, 0, 50, 73, 0, 73, 0, 54, 73, 0, 56, 73, 0, 0}; # define YYTYPE int struct yywork { YYTYPE verify, advance; } yycrank[] = { 0,0, 0,0, 1,5, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,6, 1,7, 46,0, 113,0, 114,0, 207,0, 208,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, 1,5, 1,8, 0,0, 114,162, 0,0, 0,0, 1,5, 0,0, 0,0, 0,0, 0,0, 0,0, 113,114, 0,0, 207,208, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,9, 2,8, 0,0, 0,0, 1,10, 0,0, 1,5, 0,0, 1,5, 0,0, 1,5, 0,0, 0,0, 1,5, 1,5, 0,0, 0,0, 1,5, 1,5, 1,5, 1,5, 1,5, 0,0, 0,0, 1,5, 2,9, 1,5, 1,5, 1,5, 2,10, 1,5, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,5, 3,22, 1,11, 1,12, 1,13, 12,51, 1,14, 1,15, 14,54, 3,6, 3,7, 1,16, 15,55, 13,52, 16,56, 18,58, 1,17, 1,18, 1,19, 19,59, 17,57, 1,20, 1,21, 13,53, 20,60, 21,61, 47,95, 2,11, 2,12, 2,13, 48,96, 2,14, 2,15, 49,97, 3,23, 50,98, 2,16, 11,47, 51,99, 52,100, 3,5, 2,17, 2,18, 2,19, 54,103, 3,24, 2,20, 2,21, 11,48, 53,101, 55,104, 11,49, 56,105, 57,106, 11,50, 58,107, 53,102, 60,110, 59,108, 3,9, 61,111, 3,25, 95,149, 96,150, 97,151, 3,22, 59,109, 3,22, 4,24, 3,26, 98,152, 99,153, 3,22, 3,27, 101,154, 102,155, 3,28, 3,22, 3,29, 3,22, 3,30, 104,156, 4,9, 3,22, 4,25, 3,22, 3,22, 3,31, 105,157, 3,22, 107,158, 108,159, 110,160, 111,161, 149,196, 150,197, 151,198, 3,32, 3,33, 3,34, 3,35, 3,36, 3,37, 152,199, 153,200, 3,38, 155,201, 3,39, 3,40, 158,202, 3,41, 8,46, 3,42, 159,203, 160,204, 3,43, 3,44, 3,45, 161,205, 8,46, 8,0, 4,33, 4,34, 4,35, 4,36, 4,37, 196,237, 198,238, 4,38, 199,239, 4,39, 4,40, 200,240, 4,41, 22,62, 4,42, 201,241, 202,242, 4,43, 4,44, 4,45, 203,243, 22,0, 22,0, 8,46, 204,244, 205,245, 240,274, 245,275, 275,303, 8,46, 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, 22,0, 0,0, 22,0, 0,0, 0,0, 0,0, 0,0, 0,0, 22,0, 22,0, 8,46, 0,0, 8,46, 0,0, 8,46, 0,0, 0,0, 8,46, 8,46, 0,0, 0,0, 8,46, 8,46, 8,46, 8,46, 8,46, 0,0, 22,0, 8,46, 22,0, 8,46, 8,46, 8,46, 22,62, 8,46, 22,62, 0,0, 22,62, 0,0, 0,0, 22,62, 22,62, 8,46, 0,0, 22,62, 22,62, 22,62, 22,62, 22,62, 0,0, 0,0, 22,62, 0,0, 22,62, 22,62, 22,62, 0,0, 22,62, 23,63, 22,0, 0,0, 22,0, 0,0, 0,0, 0,0, 22,62, 23,63, 23,64, 0,0, 0,0, 0,0, 24,0, 24,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, 23,65, 0,0, 0,0, 24,0, 0,0, 24,0, 23,63, 0,0, 0,0, 0,0, 0,0, 24,0, 24,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, 24,0, 23,63, 24,0, 23,63, 0,0, 23,63, 0,0, 0,0, 23,63, 23,63, 0,0, 0,0, 23,63, 23,63, 23,63, 23,63, 23,63, 26,0, 26,0, 23,63, 0,0, 23,63, 23,63, 23,63, 0,0, 23,63, 0,0, 24,66, 0,0, 27,0, 27,0, 0,0, 24,0, 23,63, 24,0, 0,0, 0,0, 0,0, 24,66, 0,0, 26,0, 0,0, 26,0, 0,0, 0,0, 28,0, 28,0, 0,0, 26,0, 26,0, 0,0, 0,0, 27,0, 0,0, 27,0, 0,0, 0,0, 31,0, 31,0, 0,0, 27,0, 27,0, 29,0, 29,0, 0,0, 0,0, 0,0, 26,0, 28,0, 26,0, 28,0, 0,0, 0,0, 30,0, 30,0, 0,0, 28,0, 28,0, 0,0, 27,0, 31,0, 27,0, 31,0, 0,0, 0,0, 29,0, 26,67, 29,0, 31,0, 31,0, 0,0, 0,0, 0,0, 29,0, 29,0, 28,0, 30,0, 28,0, 30,0, 26,0, 27,68, 26,0, 0,0, 0,0, 30,0, 30,0, 0,0, 31,0, 0,0, 31,0, 0,0, 27,0, 29,0, 27,0, 29,0, 28,69, 0,0, 32,0, 32,0, 0,0, 29,70, 0,0, 0,0, 30,0, 31,72, 30,0, 0,0, 28,0, 0,0, 28,0, 0,0, 33,0, 33,0, 0,0, 0,0, 0,0, 30,71, 0,0, 0,0, 31,0, 32,0, 31,0, 32,0, 0,0, 29,0, 0,0, 29,0, 0,0, 32,0, 32,0, 0,0, 0,0, 0,0, 0,0, 33,0, 30,0, 33,0, 30,0, 0,0, 34,0, 34,0, 0,0, 33,0, 33,0, 35,0, 35,0, 0,0, 32,0, 0,0, 32,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 33,0, 34,0, 33,0, 34,0, 0,0, 0,0, 35,0, 0,0, 35,0, 34,0, 34,0, 0,0, 0,0, 0,0, 35,0, 35,0, 36,0, 36,0, 32,0, 0,0, 32,0, 37,0, 37,0, 0,0, 0,0, 0,0, 32,73, 0,0, 34,0, 0,0, 34,0, 0,0, 33,0, 35,0, 33,0, 35,0, 0,0, 0,0, 0,0, 36,0, 0,0, 36,0, 0,0, 0,0, 37,0, 0,0, 37,0, 36,0, 36,0, 0,0, 0,0, 0,0, 37,0, 37,0, 0,0, 0,0, 33,74, 0,0, 38,0, 38,0, 34,0, 0,0, 34,0, 39,0, 39,0, 35,0, 36,0, 35,0, 36,0, 0,0, 0,0, 37,0, 0,0, 37,0, 0,0, 35,77, 0,0, 34,75, 0,0, 0,0, 34,76, 38,0, 0,0, 38,0, 35,78, 36,67, 39,0, 0,0, 39,0, 38,0, 38,0, 41,0, 41,0, 0,0, 39,0, 39,0, 0,0, 0,0, 36,0, 0,0, 36,0, 40,0, 40,0, 37,0, 0,0, 37,0, 0,0, 0,0, 38,0, 0,0, 38,0, 0,0, 0,0, 39,0, 41,0, 39,0, 41,0, 36,79, 0,0, 0,0, 0,0, 37,80, 41,0, 41,0, 40,0, 0,0, 40,0, 0,0, 0,0, 38,68, 0,0, 0,0, 40,0, 40,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 38,0, 41,0, 38,0, 41,0, 0,0, 39,0, 0,0, 39,0, 0,0, 41,70, 0,0, 40,0, 0,0, 40,0, 0,0, 39,83, 38,81, 42,0, 42,0, 0,0, 0,0, 38,82, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 40,69, 0,0, 41,0, 0,0, 41,0, 0,0, 0,0, 0,0, 41,86, 42,0, 0,0, 42,0, 40,0, 41,87, 40,0, 0,0, 41,88, 42,0, 42,0, 43,0, 43,0, 40,84, 0,0, 44,0, 44,0, 0,0, 40,85, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 45,0, 45,0, 0,0, 42,0, 0,0, 42,0, 0,0, 0,0, 0,0, 43,0, 0,0, 43,0, 0,0, 44,0, 0,0, 44,0, 42,71, 43,0, 43,0, 0,0, 0,0, 44,0, 44,0, 45,0, 0,0, 45,0, 0,0, 0,0, 0,0, 0,0, 0,0, 45,0, 45,0, 0,0, 0,0, 42,0, 43,0, 42,0, 43,0, 0,0, 44,0, 42,89, 44,0, 0,0, 62,0, 62,0, 0,0, 0,0, 0,0, 0,0, 45,0, 0,0, 45,0, 0,0, 0,0, 0,0, 0,0, 0,0, 42,90, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 62,0, 43,0, 62,0, 43,0, 65,112, 44,0, 0,0, 44,0, 62,0, 62,0, 0,0, 43,91, 65,112, 65,0, 0,0, 45,0, 0,0, 45,0, 0,0, 66,0, 66,0, 0,0, 0,0, 0,0, 0,0, 0,0, 43,92, 62,0, 0,0, 62,0, 0,0, 0,0, 0,0, 0,0, 45,94, 44,93, 0,0, 65,113, 0,0, 0,0, 0,0, 0,0, 66,0, 65,112, 66,0, 0,0, 0,0, 65,114, 0,0, 0,0, 66,0, 66,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 62,0, 0,0, 62,0, 67,0, 67,0, 0,0, 0,0, 0,0, 0,0, 65,112, 66,0, 65,112, 66,0, 65,112, 68,0, 68,0, 65,112, 65,112, 0,0, 0,0, 65,112, 65,112, 65,112, 65,112, 65,112, 0,0, 67,0, 65,112, 67,0, 65,112, 65,112, 65,112, 0,0, 65,112, 67,0, 67,0, 0,0, 68,0, 0,0, 68,0, 0,0, 65,112, 66,0, 0,0, 66,0, 68,0, 68,0, 69,0, 69,0, 0,0, 70,0, 70,0, 0,0, 67,0, 0,0, 67,0, 0,0, 0,0, 0,0, 0,0, 0,0, 71,0, 71,0, 0,0, 68,0, 0,0, 68,0, 0,0, 0,0, 0,0, 69,0, 67,115, 69,0, 70,0, 0,0, 70,0, 0,0, 0,0, 69,0, 69,0, 0,0, 70,0, 70,0, 0,0, 71,0, 67,0, 71,0, 67,0, 0,0, 0,0, 0,0, 0,0, 71,0, 71,0, 0,0, 0,0, 68,0, 69,0, 68,0, 69,0, 70,0, 0,0, 70,0, 0,0, 0,0, 69,116, 0,0, 0,0, 0,0, 0,0, 0,0, 71,0, 0,0, 71,0, 0,0, 72,0, 72,0, 0,0, 0,0, 0,0, 0,0, 70,117, 0,0, 0,0, 0,0, 0,0, 70,118, 73,0, 73,0, 69,0, 0,0, 69,0, 70,0, 0,0, 70,0, 0,0, 0,0, 0,0, 72,0, 0,0, 72,0, 71,119, 0,0, 71,0, 0,0, 71,0, 72,0, 72,0, 0,0, 0,0, 73,0, 0,0, 73,0, 0,0, 0,0, 74,0, 74,0, 0,0, 73,0, 73,0, 75,0, 75,0, 0,0, 0,0, 0,0, 72,0, 0,0, 72,0, 0,0, 0,0, 0,0, 72,120, 0,0, 0,0, 0,0, 0,0, 0,0, 73,0, 74,0, 73,0, 74,0, 0,0, 0,0, 75,0, 0,0, 75,0, 74,0, 74,0, 0,0, 0,0, 0,0, 75,0, 75,0, 76,0, 76,0, 0,0, 0,0, 72,0, 0,0, 72,0, 0,0, 0,0, 0,0, 72,120, 0,0, 74,0, 0,0, 74,0, 0,0, 73,0, 75,0, 73,0, 75,0, 0,0, 0,0, 0,0, 76,0, 0,0, 76,0, 0,0, 0,0, 0,0, 0,0, 0,0, 76,0, 76,0, 77,0, 77,0, 0,0, 0,0, 0,0, 78,0, 78,0, 0,0, 73,121, 0,0, 0,0, 74,0, 0,0, 74,0, 0,0, 0,0, 75,0, 76,0, 75,0, 76,0, 0,0, 0,0, 75,123, 77,0, 0,0, 77,0, 0,0, 0,0, 78,0, 0,0, 78,0, 77,0, 77,0, 79,0, 79,0, 74,122, 78,0, 78,0, 80,0, 80,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 76,0, 77,0, 76,0, 77,0, 0,0, 0,0, 78,0, 79,0, 78,0, 79,0, 0,0, 0,0, 80,0, 0,0, 80,0, 79,0, 79,0, 0,0, 0,0, 76,124, 80,0, 80,0, 0,0, 0,0, 81,0, 81,0, 0,0, 0,0, 82,0, 82,0, 0,0, 0,0, 0,0, 77,0, 79,0, 77,0, 79,0, 0,0, 78,0, 80,0, 78,0, 80,0, 0,0, 0,0, 77,125, 0,0, 0,0, 81,0, 0,0, 81,0, 0,0, 82,0, 79,115, 82,0, 0,0, 81,0, 81,0, 0,0, 0,0, 82,0, 82,0, 0,0, 78,126, 0,0, 82,130, 0,0, 79,0, 0,0, 79,0, 0,0, 0,0, 80,0, 79,127, 80,0, 81,0, 0,0, 81,0, 0,0, 82,0, 0,0, 82,0, 0,0, 0,0, 0,0, 0,0, 0,0, 83,0, 83,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 80,128, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 84,0, 84,0, 0,0, 0,0, 0,0, 81,0, 0,0, 81,0, 83,0, 82,0, 83,0, 82,0, 0,0, 0,0, 0,0, 81,129, 83,0, 83,0, 0,0, 0,0, 82,131, 0,0, 0,0, 84,0, 0,0, 84,0, 85,0, 85,0, 82,132, 0,0, 82,133, 84,0, 84,0, 82,134, 0,0, 83,0, 82,135, 83,0, 0,0, 86,0, 86,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 85,0, 84,0, 85,0, 84,0, 0,0, 87,0, 87,0, 0,0, 85,0, 85,0, 0,0, 0,0, 0,0, 86,0, 0,0, 86,0, 0,0, 0,0, 83,0, 0,0, 83,0, 86,0, 86,0, 0,0, 0,0, 0,0, 0,0, 85,0, 87,0, 85,0, 87,0, 88,0, 88,0, 84,0, 0,0, 84,0, 87,0, 87,0, 0,0, 84,137, 86,0, 0,0, 86,0, 0,0, 89,0, 89,0, 0,0, 0,0, 83,136, 0,0, 0,0, 0,0, 0,0, 0,0, 88,0, 87,0, 88,0, 87,0, 0,0, 85,0, 0,0, 85,0, 88,0, 88,0, 0,0, 0,0, 0,0, 89,0, 0,0, 89,0, 90,0, 90,0, 86,0, 0,0, 86,0, 89,0, 89,0, 0,0, 85,138, 0,0, 0,0, 88,0, 0,0, 88,0, 0,0, 0,0, 0,0, 87,0, 0,0, 87,0, 86,139, 0,0, 0,0, 90,0, 89,0, 90,0, 89,0, 0,0, 91,0, 91,0, 0,0, 90,0, 90,0, 0,0, 0,0, 0,0, 0,0, 0,0, 92,0, 92,0, 0,0, 87,140, 0,0, 88,0, 0,0, 88,0, 0,0, 0,0, 0,0, 0,0, 90,0, 91,0, 90,0, 91,0, 0,0, 0,0, 89,0, 0,0, 89,0, 91,0, 91,0, 92,0, 0,0, 92,0, 0,0, 0,0, 0,0, 88,141, 0,0, 92,0, 92,0, 0,0, 0,0, 0,0, 0,0, 93,0, 93,0, 0,0, 91,0, 89,142, 91,0, 0,0, 90,0, 0,0, 90,0, 0,0, 0,0, 0,0, 92,0, 0,0, 92,0, 0,0, 94,0, 94,0, 0,0, 0,0, 90,143, 0,0, 93,0, 0,0, 93,0, 0,0, 0,0, 0,0, 0,0, 0,0, 93,0, 93,0, 0,0, 0,0, 91,0, 0,0, 91,0, 0,0, 0,0, 94,0, 0,0, 94,0, 91,144, 0,0, 92,0, 112,112, 92,0, 94,0, 94,0, 93,0, 92,145, 93,0, 0,0, 112,112, 112,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 92,146, 0,0, 94,0, 0,0, 94,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 115,0, 115,0, 112,113, 0,0, 0,0, 93,0, 0,0, 93,0, 112,112, 0,0, 0,0, 116,0, 116,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 94,0, 115,0, 94,0, 115,0, 93,147, 0,0, 0,0, 0,0, 0,0, 115,0, 115,0, 112,112, 116,0, 112,112, 116,0, 112,112, 94,148, 0,0, 112,112, 112,112, 116,0, 116,0, 112,112, 112,112, 112,112, 112,112, 112,112, 0,0, 115,0, 112,112, 115,0, 112,112, 112,112, 112,112, 0,0, 112,112, 117,0, 117,0, 0,0, 116,0, 0,0, 116,0, 0,0, 112,112, 0,0, 0,0, 0,0, 118,0, 118,0, 0,0, 0,0, 119,0, 119,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 117,0, 115,0, 117,0, 115,0, 0,0, 0,0, 0,0, 0,0, 117,0, 117,0, 0,0, 118,0, 116,0, 118,0, 116,0, 119,0, 0,0, 119,0, 0,0, 118,0, 118,0, 0,0, 0,0, 119,0, 119,0, 120,0, 120,0, 117,0, 0,0, 117,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 118,0, 0,0, 118,0, 0,0, 119,0, 0,0, 119,0, 0,0, 0,0, 0,0, 120,0, 0,0, 120,0, 0,0, 0,0, 0,0, 0,0, 0,0, 120,0, 120,0, 0,0, 117,0, 0,0, 117,0, 0,0, 0,0, 121,0, 121,0, 119,163, 122,0, 122,0, 0,0, 118,0, 0,0, 118,0, 0,0, 119,0, 120,0, 119,0, 120,0, 0,0, 0,0, 123,0, 123,0, 0,0, 0,0, 0,0, 0,0, 0,0, 121,0, 0,0, 121,0, 122,0, 0,0, 122,0, 0,0, 120,164, 121,0, 121,0, 0,0, 122,0, 122,0, 0,0, 0,0, 0,0, 123,0, 0,0, 123,0, 0,0, 120,0, 0,0, 120,0, 0,0, 123,0, 123,0, 0,0, 121,0, 0,0, 121,0, 122,0, 0,0, 122,0, 0,0, 0,0, 124,0, 124,0, 0,0, 0,0, 0,0, 125,0, 125,0, 0,0, 123,0, 0,0, 123,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, 124,0, 121,0, 124,0, 121,0, 122,0, 125,0, 122,0, 125,0, 124,0, 124,0, 0,0, 0,0, 0,0, 125,0, 125,0, 121,165, 0,0, 123,0, 122,166, 123,0, 0,0, 126,0, 126,0, 0,0, 127,0, 127,0, 0,0, 124,0, 0,0, 124,0, 0,0, 0,0, 125,0, 0,0, 125,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 123,167, 0,0, 0,0, 126,0, 0,0, 126,0, 127,0, 0,0, 127,0, 0,0, 0,0, 126,0, 126,0, 0,0, 127,0, 127,0, 126,170, 0,0, 124,0, 0,0, 124,0, 128,0, 128,0, 125,0, 0,0, 125,0, 0,0, 124,168, 0,0, 125,169, 126,0, 0,0, 126,0, 127,0, 0,0, 127,0, 0,0, 0,0, 129,0, 129,0, 0,0, 0,0, 0,0, 0,0, 128,0, 0,0, 128,0, 0,0, 0,0, 0,0, 0,0, 0,0, 128,0, 128,0, 130,0, 130,0, 0,0, 0,0, 0,0, 0,0, 0,0, 129,0, 126,0, 129,0, 126,0, 127,0, 0,0, 127,0, 0,0, 129,0, 129,0, 128,0, 127,171, 128,0, 129,173, 0,0, 0,0, 130,0, 0,0, 130,0, 0,0, 0,0, 0,0, 0,0, 0,0, 130,0, 130,0, 0,0, 129,0, 0,0, 129,0, 0,0, 0,0, 131,0, 131,0, 0,0, 132,0, 132,0, 0,0, 0,0, 0,0, 0,0, 0,0, 128,0, 130,0, 128,0, 130,0, 0,0, 133,0, 133,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 131,0, 128,172, 131,0, 132,0, 129,0, 132,0, 129,0, 0,0, 131,0, 131,0, 0,0, 132,0, 132,0, 0,0, 0,0, 133,0, 0,0, 133,0, 0,0, 0,0, 130,0, 0,0, 130,0, 133,0, 133,0, 134,0, 134,0, 131,0, 0,0, 131,0, 132,0, 0,0, 132,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 135,0, 135,0, 133,0, 0,0, 133,0, 0,0, 0,0, 130,174, 134,0, 0,0, 134,0, 0,0, 0,0, 0,0, 0,0, 0,0, 134,0, 134,0, 0,0, 131,0, 0,0, 131,0, 132,0, 135,0, 132,0, 135,0, 136,0, 136,0, 132,176, 0,0, 0,0, 135,0, 135,0, 131,175, 133,0, 134,0, 133,0, 134,0, 0,0, 137,0, 137,0, 0,0, 0,0, 135,179, 0,0, 135,180, 0,0, 0,0, 0,0, 136,0, 135,0, 136,0, 135,0, 0,0, 133,177, 0,0, 0,0, 136,0, 136,0, 0,0, 0,0, 0,0, 137,0, 0,0, 137,0, 138,0, 138,0, 134,0, 0,0, 134,0, 137,0, 137,0, 0,0, 0,0, 0,0, 0,0, 136,0, 134,178, 136,0, 0,0, 0,0, 0,0, 135,0, 0,0, 135,0, 0,0, 0,0, 0,0, 138,0, 137,0, 138,0, 137,0, 0,0, 139,0, 139,0, 0,0, 138,0, 138,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 140,0, 140,0, 0,0, 136,0, 0,0, 136,0, 0,0, 0,0, 0,0, 0,0, 138,0, 139,0, 138,0, 139,0, 0,0, 0,0, 137,0, 0,0, 137,0, 139,0, 139,0, 0,0, 136,181, 140,0, 0,0, 140,0, 0,0, 136,182, 0,0, 0,0, 0,0, 140,0, 140,0, 0,0, 0,0, 0,0, 0,0, 137,183, 139,0, 0,0, 139,0, 0,0, 138,0, 0,0, 138,0, 0,0, 0,0, 0,0, 0,0, 0,0, 140,0, 0,0, 140,0, 0,0, 141,0, 141,0, 0,0, 0,0, 138,184, 0,0, 0,0, 0,0, 0,0, 0,0, 142,0, 142,0, 0,0, 0,0, 143,0, 143,0, 139,0, 0,0, 139,0, 0,0, 0,0, 0,0, 0,0, 141,0, 0,0, 141,0, 139,185, 0,0, 140,0, 0,0, 140,0, 141,0, 141,0, 142,0, 0,0, 142,0, 141,187, 143,0, 0,0, 143,0, 0,0, 142,0, 142,0, 0,0, 0,0, 143,0, 143,0, 144,0, 144,0, 0,0, 141,0, 0,0, 141,0, 0,0, 0,0, 140,186, 0,0, 0,0, 145,0, 145,0, 142,0, 0,0, 142,0, 0,0, 143,0, 0,0, 143,0, 0,0, 0,0, 0,0, 144,0, 0,0, 144,0, 0,0, 0,0, 0,0, 0,0, 0,0, 144,0, 144,0, 0,0, 145,0, 141,0, 145,0, 141,0, 0,0, 146,0, 146,0, 0,0, 145,0, 145,0, 0,0, 142,0, 0,0, 142,0, 0,0, 143,0, 144,0, 143,0, 144,0, 0,0, 0,0, 142,188, 0,0, 0,0, 0,0, 0,0, 0,0, 145,0, 146,0, 145,0, 146,0, 147,0, 147,0, 0,0, 0,0, 143,189, 146,0, 146,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 148,0, 148,0, 0,0, 0,0, 144,0, 0,0, 144,0, 0,0, 0,0, 0,0, 147,0, 146,0, 147,0, 146,0, 0,0, 145,0, 0,0, 145,0, 147,0, 147,0, 0,0, 0,0, 0,0, 148,0, 0,0, 148,0, 0,0, 162,206, 0,0, 0,0, 144,190, 148,0, 148,0, 0,0, 0,0, 162,206, 162,0, 147,0, 145,191, 147,0, 145,192, 0,0, 0,0, 146,0, 0,0, 146,0, 0,0, 0,0, 0,0, 0,0, 148,0, 0,0, 148,0, 0,0, 0,0, 0,0, 0,0, 0,0, 163,0, 163,0, 162,207, 0,0, 0,0, 0,0, 146,193, 0,0, 162,206, 0,0, 0,0, 147,0, 162,208, 147,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 147,194, 0,0, 163,0, 148,0, 163,0, 148,0, 0,0, 0,0, 0,0, 0,0, 163,0, 163,0, 162,206, 0,0, 162,206, 0,0, 162,206, 164,0, 164,0, 162,206, 162,206, 0,0, 148,195, 162,206, 162,206, 162,206, 162,206, 162,206, 0,0, 163,0, 162,206, 163,0, 162,206, 162,206, 162,206, 0,0, 162,206, 0,0, 0,0, 0,0, 164,0, 0,0, 164,0, 0,0, 162,206, 165,0, 165,0, 0,0, 164,0, 164,0, 166,0, 166,0, 0,0, 0,0, 0,0, 167,0, 167,0, 0,0, 0,0, 0,0, 0,0, 163,0, 0,0, 163,0, 0,0, 0,0, 0,0, 164,0, 165,0, 164,0, 165,0, 0,0, 0,0, 166,0, 0,0, 166,0, 165,0, 165,0, 167,0, 0,0, 167,0, 166,0, 166,0, 168,0, 168,0, 0,0, 167,0, 167,0, 169,0, 169,0, 0,0, 0,0, 0,0, 170,0, 170,0, 165,0, 0,0, 165,0, 0,0, 164,0, 166,0, 164,0, 166,0, 0,0, 0,0, 167,0, 168,0, 167,0, 168,0, 0,0, 0,0, 169,0, 0,0, 169,0, 168,0, 168,0, 170,0, 0,0, 170,0, 169,0, 169,0, 171,0, 171,0, 0,0, 170,0, 170,0, 0,0, 165,0, 0,0, 165,0, 0,0, 0,0, 166,0, 168,0, 166,0, 168,0, 0,0, 167,0, 169,0, 167,0, 169,0, 166,210, 0,0, 170,0, 171,0, 170,0, 171,0, 0,0, 0,0, 0,0, 0,0, 0,0, 171,0, 171,0, 165,209, 0,0, 0,0, 172,0, 172,0, 0,0, 0,0, 167,211, 0,0, 0,0, 0,0, 168,0, 0,0, 168,0, 0,0, 0,0, 169,0, 171,0, 169,0, 171,0, 0,0, 170,0, 0,0, 170,0, 0,0, 168,212, 172,0, 0,0, 172,0, 173,0, 173,0, 0,0, 0,0, 0,0, 172,0, 172,0, 0,0, 0,0, 0,0, 0,0, 170,214, 0,0, 169,213, 0,0, 174,0, 174,0, 0,0, 0,0, 0,0, 171,0, 0,0, 171,0, 173,0, 172,0, 173,0, 172,0, 0,0, 175,0, 175,0, 0,0, 173,0, 173,0, 0,0, 0,0, 0,0, 0,0, 171,215, 174,0, 0,0, 174,0, 176,0, 176,0, 0,0, 0,0, 0,0, 174,0, 174,0, 0,0, 0,0, 173,0, 175,0, 173,0, 175,0, 177,0, 177,0, 172,0, 0,0, 172,0, 175,0, 175,0, 0,0, 0,0, 0,0, 176,0, 174,0, 176,0, 174,0, 0,0, 178,0, 178,0, 0,0, 176,0, 176,0, 0,0, 0,0, 0,0, 177,0, 175,0, 177,0, 175,0, 0,0, 173,0, 0,0, 173,0, 177,0, 177,0, 0,0, 0,0, 0,0, 173,216, 176,0, 178,0, 176,0, 178,0, 0,0, 0,0, 174,0, 0,0, 174,0, 178,0, 178,0, 0,0, 0,0, 177,0, 0,0, 177,0, 174,217, 179,0, 179,0, 175,0, 0,0, 175,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 178,0, 0,0, 178,0, 0,0, 176,0, 0,0, 176,0, 0,0, 175,218, 0,0, 0,0, 0,0, 179,0, 0,0, 179,0, 0,0, 0,0, 177,0, 0,0, 177,0, 179,0, 179,0, 180,0, 180,0, 0,0, 179,222, 0,0, 0,0, 0,0, 176,219, 0,0, 0,0, 178,0, 0,0, 178,0, 0,0, 0,0, 177,220, 0,0, 179,0, 178,221, 179,0, 0,0, 0,0, 0,0, 180,0, 0,0, 180,0, 0,0, 0,0, 0,0, 0,0, 0,0, 180,0, 180,0, 181,0, 181,0, 0,0, 180,223, 0,0, 182,0, 182,0, 0,0, 0,0, 0,0, 183,0, 183,0, 0,0, 0,0, 0,0, 0,0, 179,0, 180,0, 179,0, 180,0, 0,0, 0,0, 0,0, 181,0, 0,0, 181,0, 0,0, 0,0, 182,0, 0,0, 182,0, 181,0, 181,0, 183,0, 0,0, 183,0, 182,0, 182,0, 0,0, 0,0, 0,0, 183,0, 183,0, 184,0, 184,0, 0,0, 183,226, 0,0, 0,0, 180,0, 181,0, 180,0, 181,0, 0,0, 0,0, 182,0, 0,0, 182,0, 0,0, 0,0, 183,0, 0,0, 183,0, 0,0, 0,0, 0,0, 184,0, 0,0, 184,0, 0,0, 0,0, 0,0, 0,0, 0,0, 184,0, 184,0, 185,0, 185,0, 0,0, 184,227, 186,0, 186,0, 181,0, 0,0, 181,0, 0,0, 0,0, 182,0, 181,224, 182,0, 187,0, 187,0, 183,0, 184,0, 183,0, 184,0, 0,0, 0,0, 0,0, 185,0, 0,0, 185,0, 0,0, 186,0, 182,225, 186,0, 0,0, 185,0, 185,0, 0,0, 0,0, 186,0, 186,0, 187,0, 0,0, 187,0, 188,0, 188,0, 0,0, 0,0, 0,0, 187,0, 187,0, 186,229, 0,0, 184,0, 185,0, 184,0, 185,0, 0,0, 186,0, 0,0, 186,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 188,0, 187,0, 188,0, 187,0, 0,0, 189,0, 189,0, 0,0, 188,0, 188,0, 0,0, 0,0, 0,0, 0,0, 0,0, 190,0, 190,0, 0,0, 0,0, 185,0, 0,0, 185,0, 0,0, 186,0, 0,0, 186,0, 0,0, 188,0, 189,0, 188,0, 189,0, 191,0, 191,0, 187,0, 0,0, 187,0, 189,0, 189,0, 190,0, 0,0, 190,0, 192,0, 192,0, 185,228, 0,0, 0,0, 190,0, 190,0, 0,0, 0,0, 0,0, 0,0, 187,230, 0,0, 191,0, 189,0, 191,0, 189,0, 0,0, 188,0, 0,0, 188,0, 191,0, 191,0, 192,0, 190,0, 192,0, 190,0, 0,0, 193,0, 193,0, 0,0, 192,0, 192,0, 0,0, 0,0, 0,0, 0,0, 188,231, 0,0, 0,0, 191,0, 0,0, 191,0, 0,0, 0,0, 0,0, 189,0, 0,0, 189,0, 0,0, 192,0, 193,0, 192,0, 193,0, 0,0, 0,0, 190,0, 0,0, 190,0, 193,0, 193,0, 0,0, 0,0, 194,0, 194,0, 0,0, 0,0, 0,0, 0,0, 189,232, 0,0, 0,0, 191,0, 0,0, 191,0, 195,0, 195,0, 0,0, 193,0, 190,233, 193,0, 0,0, 192,0, 0,0, 192,0, 0,0, 194,0, 0,0, 194,0, 0,0, 0,0, 0,0, 192,235, 0,0, 194,0, 194,0, 206,206, 191,234, 195,0, 0,0, 195,0, 209,0, 209,0, 0,0, 206,206, 206,0, 195,0, 195,0, 0,0, 0,0, 193,0, 0,0, 193,0, 194,0, 0,0, 194,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 209,0, 195,0, 209,0, 195,0, 0,0, 206,207, 0,0, 0,0, 209,0, 209,0, 0,0, 206,206, 0,0, 0,0, 210,0, 210,0, 0,0, 0,0, 0,0, 0,0, 0,0, 194,0, 0,0, 194,0, 0,0, 0,0, 0,0, 209,0, 0,0, 209,0, 0,0, 0,0, 0,0, 195,0, 0,0, 195,0, 206,206, 210,0, 206,206, 210,0, 206,206, 0,0, 0,0, 206,206, 206,206, 210,0, 210,0, 206,206, 206,206, 206,206, 206,206, 206,206, 0,0, 195,236, 206,206, 0,0, 206,206, 206,206, 206,206, 209,0, 206,206, 209,0, 211,0, 211,0, 210,0, 209,246, 210,0, 0,0, 206,206, 0,0, 0,0, 0,0, 212,0, 212,0, 0,0, 0,0, 213,0, 213,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 211,0, 0,0, 211,0, 0,0, 0,0, 0,0, 0,0, 0,0, 211,0, 211,0, 212,0, 210,0, 212,0, 210,0, 213,0, 0,0, 213,0, 0,0, 212,0, 212,0, 0,0, 0,0, 213,0, 213,0, 214,0, 214,0, 0,0, 211,0, 0,0, 211,0, 0,0, 0,0, 0,0, 0,0, 0,0, 210,247, 0,0, 212,0, 0,0, 212,0, 0,0, 213,0, 0,0, 213,0, 0,0, 0,0, 0,0, 214,0, 0,0, 214,0, 0,0, 0,0, 0,0, 0,0, 0,0, 214,0, 214,0, 215,0, 215,0, 211,0, 0,0, 211,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 212,0, 0,0, 212,0, 0,0, 213,0, 214,0, 213,0, 214,0, 0,0, 0,0, 0,0, 215,0, 0,0, 215,0, 0,0, 0,0, 0,0, 0,0, 0,0, 215,0, 215,0, 213,249, 0,0, 216,0, 216,0, 212,248, 217,0, 217,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 214,0, 215,0, 214,0, 215,0, 0,0, 0,0, 214,250, 0,0, 0,0, 216,0, 0,0, 216,0, 217,0, 0,0, 217,0, 0,0, 0,0, 216,0, 216,0, 0,0, 217,0, 217,0, 218,0, 218,0, 0,0, 219,0, 219,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 215,0, 0,0, 215,0, 216,0, 0,0, 216,0, 217,0, 0,0, 217,0, 0,0, 215,251, 0,0, 218,0, 0,0, 218,0, 219,0, 0,0, 219,0, 0,0, 0,0, 218,0, 218,0, 0,0, 219,0, 219,0, 220,0, 220,0, 0,0, 219,255, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 216,0, 0,0, 216,0, 217,0, 218,0, 217,0, 218,0, 219,0, 0,0, 219,0, 0,0, 0,0, 0,0, 220,0, 0,0, 220,0, 0,0, 0,0, 0,0, 0,0, 216,252, 220,0, 220,0, 221,0, 221,0, 0,0, 217,253, 222,0, 222,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 218,0, 0,0, 218,0, 219,0, 220,0, 219,0, 220,0, 0,0, 0,0, 0,0, 221,0, 0,0, 221,0, 0,0, 222,0, 0,0, 222,0, 0,0, 221,0, 221,0, 0,0, 0,0, 222,0, 222,0, 0,0, 218,254, 223,0, 223,0, 0,0, 0,0, 0,0, 224,0, 224,0, 0,0, 0,0, 0,0, 220,0, 221,0, 220,0, 221,0, 0,0, 222,0, 0,0, 222,0, 0,0, 0,0, 0,0, 0,0, 0,0, 223,0, 0,0, 223,0, 0,0, 220,256, 224,0, 0,0, 224,0, 223,0, 223,0, 0,0, 0,0, 0,0, 224,0, 224,0, 0,0, 0,0, 225,0, 225,0, 0,0, 221,0, 0,0, 221,0, 0,0, 222,0, 0,0, 222,0, 223,0, 0,0, 223,0, 222,258, 0,0, 224,0, 222,259, 224,0, 0,0, 0,0, 0,0, 0,0, 0,0, 225,0, 221,257, 225,0, 0,0, 0,0, 0,0, 0,0, 0,0, 225,0, 225,0, 0,0, 0,0, 226,0, 226,0, 0,0, 227,0, 227,0, 0,0, 0,0, 223,0, 0,0, 223,0, 0,0, 0,0, 224,0, 223,260, 224,0, 225,0, 223,261, 225,0, 0,0, 0,0, 0,0, 0,0, 0,0, 226,0, 0,0, 226,0, 227,0, 0,0, 227,0, 0,0, 224,262, 226,0, 226,0, 0,0, 227,0, 227,0, 0,0, 0,0, 228,0, 228,0, 0,0, 0,0, 0,0, 229,0, 229,0, 0,0, 0,0, 225,0, 0,0, 225,0, 226,0, 0,0, 226,0, 227,0, 0,0, 227,0, 0,0, 0,0, 0,0, 0,0, 0,0, 228,0, 0,0, 228,0, 0,0, 0,0, 229,0, 225,263, 229,0, 228,0, 228,0, 0,0, 0,0, 0,0, 229,0, 229,0, 0,0, 0,0, 0,0, 229,268, 0,0, 0,0, 226,0, 0,0, 226,0, 227,0, 0,0, 227,0, 228,0, 0,0, 228,0, 227,265, 0,0, 229,0, 0,0, 229,0, 0,0, 0,0, 0,0, 0,0, 0,0, 226,264, 0,0, 227,266, 0,0, 0,0, 230,0, 230,0, 0,0, 231,0, 231,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 228,0, 0,0, 228,0, 232,0, 232,0, 229,0, 0,0, 229,0, 0,0, 230,0, 228,267, 230,0, 231,0, 0,0, 231,0, 0,0, 0,0, 230,0, 230,0, 0,0, 231,0, 231,0, 0,0, 0,0, 0,0, 0,0, 232,0, 0,0, 232,0, 233,0, 233,0, 0,0, 0,0, 0,0, 232,0, 232,0, 230,0, 0,0, 230,0, 231,0, 0,0, 231,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 233,0, 232,0, 233,0, 232,0, 0,0, 234,0, 234,0, 0,0, 233,0, 233,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 230,0, 0,0, 230,0, 231,0, 0,0, 231,0, 230,269, 0,0, 0,0, 0,0, 0,0, 233,0, 234,0, 233,0, 234,0, 235,0, 235,0, 232,0, 0,0, 232,0, 234,0, 234,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 231,270, 236,0, 236,0, 232,271, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 235,0, 234,0, 235,0, 234,0, 0,0, 233,0, 0,0, 233,0, 235,0, 235,0, 0,0, 0,0, 0,0, 0,0, 236,0, 0,0, 236,0, 0,0, 0,0, 233,272, 0,0, 0,0, 236,0, 236,0, 246,0, 246,0, 0,0, 235,0, 0,0, 235,0, 0,0, 0,0, 0,0, 234,0, 0,0, 234,0, 0,0, 247,0, 247,0, 0,0, 0,0, 236,0, 0,0, 236,0, 0,0, 0,0, 0,0, 246,0, 0,0, 246,0, 0,0, 0,0, 0,0, 0,0, 0,0, 246,0, 246,0, 0,0, 0,0, 235,0, 247,0, 235,0, 247,0, 248,0, 248,0, 0,0, 0,0, 0,0, 247,0, 247,0, 0,0, 0,0, 0,0, 236,0, 246,0, 236,0, 246,0, 0,0, 0,0, 0,0, 249,0, 249,0, 0,0, 0,0, 0,0, 0,0, 248,0, 247,0, 248,0, 247,0, 0,0, 250,0, 250,0, 0,0, 248,0, 248,0, 0,0, 0,0, 0,0, 0,0, 0,0, 236,273, 0,0, 249,0, 0,0, 249,0, 246,0, 0,0, 246,0, 0,0, 0,0, 249,0, 249,0, 248,0, 250,0, 248,0, 250,0, 251,0, 251,0, 247,0, 0,0, 247,0, 250,0, 250,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 249,0, 246,276, 249,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 251,0, 250,0, 251,0, 250,0, 0,0, 248,0, 0,0, 248,0, 251,0, 251,0, 0,0, 0,0, 0,0, 252,0, 252,0, 0,0, 0,0, 253,0, 253,0, 248,277, 0,0, 0,0, 249,0, 0,0, 249,0, 0,0, 0,0, 251,0, 0,0, 251,0, 0,0, 0,0, 0,0, 250,0, 0,0, 250,0, 252,0, 0,0, 252,0, 0,0, 253,0, 0,0, 253,0, 0,0, 252,0, 252,0, 0,0, 249,278, 253,0, 253,0, 0,0, 250,279, 254,0, 254,0, 0,0, 255,0, 255,0, 0,0, 0,0, 251,0, 0,0, 251,0, 0,0, 252,0, 0,0, 252,0, 0,0, 253,0, 251,280, 253,0, 0,0, 0,0, 0,0, 0,0, 0,0, 254,0, 0,0, 254,0, 255,0, 0,0, 255,0, 0,0, 0,0, 254,0, 254,0, 0,0, 255,0, 255,0, 256,0, 256,0, 0,0, 0,0, 0,0, 0,0, 0,0, 252,0, 0,0, 252,0, 0,0, 253,0, 0,0, 253,0, 254,0, 0,0, 254,0, 255,0, 0,0, 255,0, 0,0, 0,0, 0,0, 256,0, 0,0, 256,0, 252,281, 0,0, 0,0, 0,0, 0,0, 256,0, 256,0, 0,0, 0,0, 253,282, 256,285, 257,0, 257,0, 0,0, 258,0, 258,0, 0,0, 0,0, 0,0, 0,0, 254,0, 0,0, 254,0, 255,0, 256,0, 255,0, 256,0, 0,0, 259,0, 259,0, 254,283, 255,284, 0,0, 0,0, 257,0, 0,0, 257,0, 258,0, 0,0, 258,0, 0,0, 0,0, 257,0, 257,0, 0,0, 258,0, 258,0, 0,0, 0,0, 0,0, 0,0, 259,0, 0,0, 259,0, 260,0, 260,0, 256,0, 0,0, 256,0, 259,0, 259,0, 257,0, 0,0, 257,0, 258,0, 0,0, 258,0, 0,0, 0,0, 261,0, 261,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 260,0, 259,0, 260,0, 259,0, 0,0, 0,0, 0,0, 0,0, 260,0, 260,0, 0,0, 0,0, 0,0, 0,0, 0,0, 261,0, 257,0, 261,0, 257,0, 258,0, 0,0, 258,0, 0,0, 261,0, 261,0, 262,0, 262,0, 260,0, 258,287, 260,0, 0,0, 0,0, 0,0, 259,0, 0,0, 259,0, 257,286, 0,0, 0,0, 263,0, 263,0, 0,0, 261,0, 259,288, 261,0, 0,0, 0,0, 0,0, 262,0, 0,0, 262,0, 0,0, 0,0, 0,0, 0,0, 0,0, 262,0, 262,0, 0,0, 260,0, 0,0, 260,0, 263,0, 0,0, 263,0, 0,0, 0,0, 0,0, 260,289, 0,0, 263,0, 263,0, 264,0, 264,0, 261,0, 262,0, 261,0, 262,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 261,290, 0,0, 0,0, 265,0, 265,0, 263,0, 0,0, 263,0, 0,0, 0,0, 0,0, 264,0, 0,0, 264,0, 0,0, 0,0, 0,0, 0,0, 0,0, 264,0, 264,0, 0,0, 0,0, 262,0, 0,0, 262,0, 265,0, 0,0, 265,0, 0,0, 0,0, 0,0, 0,0, 262,291, 265,0, 265,0, 0,0, 263,0, 264,0, 263,0, 264,0, 0,0, 266,0, 266,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 265,0, 0,0, 265,0, 0,0, 267,0, 267,0, 0,0, 0,0, 0,0, 263,292, 0,0, 0,0, 266,0, 0,0, 266,0, 268,0, 268,0, 264,0, 0,0, 264,0, 266,0, 266,0, 0,0, 264,293, 0,0, 0,0, 0,0, 267,0, 0,0, 267,0, 269,0, 269,0, 265,0, 0,0, 265,0, 267,0, 267,0, 0,0, 268,0, 266,0, 268,0, 266,0, 0,0, 270,0, 270,0, 0,0, 268,0, 268,0, 0,0, 0,0, 0,0, 0,0, 0,0, 269,0, 267,0, 269,0, 267,0, 0,0, 265,294, 0,0, 0,0, 269,0, 269,0, 0,0, 0,0, 268,0, 270,0, 268,0, 270,0, 271,0, 271,0, 266,0, 0,0, 266,0, 270,0, 270,0, 0,0, 266,295, 0,0, 0,0, 269,0, 0,0, 269,0, 0,0, 0,0, 0,0, 267,0, 0,0, 267,0, 0,0, 0,0, 0,0, 271,0, 270,0, 271,0, 270,0, 266,296, 268,0, 0,0, 268,0, 271,0, 271,0, 0,0, 0,0, 0,0, 0,0, 268,298, 0,0, 0,0, 267,297, 272,0, 272,0, 269,0, 0,0, 269,0, 273,0, 273,0, 0,0, 0,0, 271,0, 0,0, 271,0, 0,0, 0,0, 0,0, 270,0, 0,0, 270,0, 0,0, 0,0, 269,299, 0,0, 0,0, 272,0, 0,0, 272,0, 0,0, 0,0, 273,0, 0,0, 273,0, 272,0, 272,0, 276,0, 276,0, 0,0, 273,0, 273,0, 277,0, 277,0, 0,0, 271,0, 0,0, 271,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 272,0, 0,0, 272,0, 0,0, 0,0, 273,0, 276,0, 273,0, 276,0, 0,0, 0,0, 277,0, 0,0, 277,0, 276,0, 276,0, 271,300, 0,0, 0,0, 277,0, 277,0, 0,0, 0,0, 278,0, 278,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 272,0, 276,0, 272,0, 276,0, 0,0, 273,0, 277,0, 273,0, 277,0, 0,0, 0,0, 0,0, 0,0, 0,0, 278,0, 0,0, 278,0, 0,0, 0,0, 279,0, 279,0, 0,0, 278,0, 278,0, 273,302, 272,301, 0,0, 278,306, 0,0, 0,0, 280,0, 280,0, 0,0, 276,0, 0,0, 276,0, 0,0, 0,0, 277,0, 0,0, 277,0, 278,0, 279,0, 278,0, 279,0, 281,0, 281,0, 276,304, 0,0, 0,0, 279,0, 279,0, 0,0, 280,0, 0,0, 280,0, 0,0, 0,0, 277,305, 0,0, 0,0, 280,0, 280,0, 0,0, 0,0, 0,0, 0,0, 0,0, 281,0, 279,0, 281,0, 279,0, 0,0, 278,0, 0,0, 278,0, 281,0, 281,0, 0,0, 0,0, 280,0, 0,0, 280,0, 0,0, 282,0, 282,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 281,0, 0,0, 281,0, 0,0, 283,0, 283,0, 279,0, 0,0, 279,0, 0,0, 0,0, 0,0, 282,0, 0,0, 282,0, 0,0, 279,307, 280,0, 0,0, 280,0, 282,0, 282,0, 0,0, 0,0, 0,0, 0,0, 0,0, 283,0, 0,0, 283,0, 284,0, 284,0, 281,0, 0,0, 281,0, 283,0, 283,0, 0,0, 0,0, 282,0, 0,0, 282,0, 0,0, 281,308, 285,0, 285,0, 0,0, 286,0, 286,0, 0,0, 0,0, 0,0, 0,0, 284,0, 283,0, 284,0, 283,0, 0,0, 287,0, 287,0, 0,0, 284,0, 284,0, 0,0, 0,0, 0,0, 0,0, 285,0, 0,0, 285,0, 286,0, 282,0, 286,0, 282,0, 0,0, 285,0, 285,0, 0,0, 286,0, 286,0, 284,0, 287,0, 284,0, 287,0, 0,0, 282,309, 283,0, 0,0, 283,0, 287,0, 287,0, 0,0, 0,0, 0,0, 285,0, 0,0, 285,0, 286,0, 0,0, 286,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 287,0, 283,310, 287,0, 0,0, 284,0, 0,0, 284,0, 0,0, 288,0, 288,0, 0,0, 0,0, 289,0, 289,0, 0,0, 0,0, 0,0, 0,0, 285,0, 0,0, 285,0, 286,0, 0,0, 286,0, 284,311, 0,0, 285,312, 0,0, 0,0, 0,0, 0,0, 288,0, 287,0, 288,0, 287,0, 289,0, 0,0, 289,0, 286,313, 288,0, 288,0, 287,314, 0,0, 289,0, 289,0, 290,0, 290,0, 0,0, 291,0, 291,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 288,0, 0,0, 288,0, 0,0, 289,0, 0,0, 289,0, 0,0, 0,0, 0,0, 290,0, 0,0, 290,0, 291,0, 0,0, 291,0, 0,0, 0,0, 290,0, 290,0, 0,0, 291,0, 291,0, 292,0, 292,0, 0,0, 293,0, 293,0, 0,0, 0,0, 0,0, 0,0, 288,0, 0,0, 288,0, 0,0, 289,0, 290,0, 289,0, 290,0, 291,0, 0,0, 291,0, 288,315, 0,0, 289,316, 292,0, 0,0, 292,0, 293,0, 0,0, 293,0, 0,0, 0,0, 292,0, 292,0, 0,0, 293,0, 293,0, 294,0, 294,0, 0,0, 295,0, 295,0, 0,0, 0,0, 0,0, 0,0, 0,0, 290,0, 0,0, 290,0, 291,0, 292,0, 291,0, 292,0, 293,0, 0,0, 293,0, 0,0, 290,317, 0,0, 294,0, 0,0, 294,0, 295,0, 0,0, 295,0, 0,0, 0,0, 294,0, 294,0, 0,0, 295,0, 295,0, 0,0, 0,0, 296,0, 296,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 292,0, 0,0, 292,0, 293,0, 294,0, 293,0, 294,0, 295,0, 0,0, 295,0, 0,0, 0,0, 0,0, 0,0, 0,0, 296,0, 0,0, 296,0, 0,0, 0,0, 0,0, 293,318, 0,0, 296,0, 296,0, 297,0, 297,0, 0,0, 298,0, 298,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 294,0, 0,0, 294,0, 295,0, 0,0, 295,0, 296,0, 0,0, 296,0, 0,0, 0,0, 295,320, 297,0, 0,0, 297,0, 298,0, 0,0, 298,0, 0,0, 0,0, 297,0, 297,0, 0,0, 298,0, 298,0, 294,319, 0,0, 299,0, 299,0, 0,0, 300,0, 300,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 296,0, 297,0, 296,0, 297,0, 298,0, 0,0, 298,0, 0,0, 0,0, 0,0, 0,0, 0,0, 299,0, 0,0, 299,0, 300,0, 0,0, 300,0, 0,0, 0,0, 299,0, 299,0, 0,0, 300,0, 300,0, 0,0, 296,321, 301,0, 301,0, 0,0, 302,0, 302,0, 0,0, 297,0, 0,0, 297,0, 298,0, 0,0, 298,0, 299,0, 0,0, 299,0, 300,0, 0,0, 300,0, 0,0, 0,0, 0,0, 0,0, 0,0, 301,0, 0,0, 301,0, 302,0, 0,0, 302,0, 298,323, 0,0, 301,0, 301,0, 297,322, 302,0, 302,0, 304,0, 304,0, 0,0, 305,0, 305,0, 0,0, 0,0, 0,0, 299,0, 0,0, 299,0, 300,0, 0,0, 300,0, 301,0, 0,0, 301,0, 302,0, 299,324, 302,0, 0,0, 0,0, 0,0, 304,0, 0,0, 304,0, 305,0, 0,0, 305,0, 0,0, 0,0, 304,0, 304,0, 0,0, 305,0, 305,0, 306,0, 306,0, 0,0, 307,0, 307,0, 300,325, 0,0, 0,0, 0,0, 0,0, 301,0, 0,0, 301,0, 302,0, 304,0, 302,0, 304,0, 305,0, 0,0, 305,0, 0,0, 0,0, 0,0, 306,0, 0,0, 306,0, 307,0, 0,0, 307,0, 0,0, 0,0, 306,0, 306,0, 0,0, 307,0, 307,0, 0,0, 0,0, 308,0, 308,0, 301,326, 0,0, 309,0, 309,0, 0,0, 0,0, 304,0, 0,0, 304,0, 305,0, 306,0, 305,0, 306,0, 307,0, 0,0, 307,0, 0,0, 0,0, 0,0, 0,0, 0,0, 308,0, 0,0, 308,0, 0,0, 309,0, 304,327, 309,0, 305,328, 308,0, 308,0, 0,0, 0,0, 309,0, 309,0, 310,0, 310,0, 0,0, 0,0, 0,0, 0,0, 0,0, 306,0, 0,0, 306,0, 307,0, 0,0, 307,0, 308,0, 0,0, 308,0, 306,329, 309,0, 0,0, 309,0, 0,0, 0,0, 0,0, 310,0, 0,0, 310,0, 0,0, 0,0, 0,0, 0,0, 0,0, 310,0, 310,0, 0,0, 307,330, 0,0, 310,333, 0,0, 0,0, 311,0, 311,0, 0,0, 312,0, 312,0, 0,0, 308,0, 0,0, 308,0, 0,0, 309,0, 310,0, 309,0, 310,0, 0,0, 313,0, 313,0, 0,0, 0,0, 0,0, 308,331, 0,0, 0,0, 311,0, 0,0, 311,0, 312,0, 0,0, 312,0, 0,0, 309,332, 311,0, 311,0, 0,0, 312,0, 312,0, 0,0, 0,0, 313,0, 0,0, 313,0, 314,0, 314,0, 310,0, 0,0, 310,0, 313,0, 313,0, 0,0, 0,0, 311,0, 0,0, 311,0, 312,0, 0,0, 312,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 314,0, 313,0, 314,0, 313,0, 0,0, 0,0, 0,0, 0,0, 314,0, 314,0, 0,0, 0,0, 0,0, 315,0, 315,0, 0,0, 0,0, 0,0, 311,0, 0,0, 311,0, 312,0, 0,0, 312,0, 0,0, 316,0, 316,0, 314,0, 0,0, 314,0, 0,0, 0,0, 0,0, 313,0, 0,0, 313,0, 315,0, 311,334, 315,0, 317,0, 317,0, 312,335, 0,0, 0,0, 315,0, 315,0, 0,0, 313,336, 316,0, 0,0, 316,0, 0,0, 0,0, 318,0, 318,0, 0,0, 316,0, 316,0, 0,0, 314,0, 0,0, 314,0, 317,0, 315,0, 317,0, 315,0, 0,0, 319,0, 319,0, 0,0, 317,0, 317,0, 0,0, 0,0, 0,0, 316,0, 318,0, 316,0, 318,0, 320,0, 320,0, 0,0, 314,337, 0,0, 318,0, 318,0, 0,0, 0,0, 0,0, 317,0, 319,0, 317,0, 319,0, 0,0, 0,0, 315,0, 0,0, 315,0, 319,0, 319,0, 0,0, 315,338, 320,0, 318,0, 320,0, 318,0, 0,0, 316,0, 0,0, 316,0, 320,0, 320,0, 0,0, 0,0, 0,0, 320,343, 0,0, 319,0, 0,0, 319,0, 0,0, 317,0, 0,0, 317,0, 0,0, 321,0, 321,0, 317,340, 0,0, 320,0, 316,339, 320,0, 0,0, 0,0, 0,0, 318,0, 0,0, 318,0, 0,0, 322,0, 322,0, 0,0, 323,0, 323,0, 0,0, 318,341, 0,0, 0,0, 321,0, 319,0, 321,0, 319,0, 0,0, 0,0, 0,0, 0,0, 321,0, 321,0, 0,0, 0,0, 0,0, 320,0, 322,0, 320,0, 322,0, 323,0, 0,0, 323,0, 0,0, 319,342, 322,0, 322,0, 0,0, 323,0, 323,0, 321,0, 0,0, 321,0, 0,0, 324,0, 324,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 322,0, 0,0, 322,0, 323,0, 0,0, 323,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 324,0, 0,0, 324,0, 325,0, 325,0, 321,0, 0,0, 321,0, 324,0, 324,0, 0,0, 0,0, 0,0, 326,0, 326,0, 0,0, 0,0, 0,0, 0,0, 322,0, 0,0, 322,0, 323,0, 0,0, 323,0, 0,0, 325,0, 324,0, 325,0, 324,0, 0,0, 0,0, 0,0, 322,344, 325,0, 325,0, 326,0, 0,0, 326,0, 325,347, 323,345, 327,0, 327,0, 0,0, 326,0, 326,0, 328,0, 328,0, 0,0, 326,348, 0,0, 0,0, 0,0, 325,0, 0,0, 325,0, 0,0, 329,0, 329,0, 324,0, 0,0, 324,0, 0,0, 326,0, 327,0, 326,0, 327,0, 0,0, 0,0, 328,0, 0,0, 328,0, 327,0, 327,0, 0,0, 0,0, 0,0, 328,0, 328,0, 0,0, 329,0, 0,0, 329,0, 324,346, 0,0, 325,0, 0,0, 325,0, 329,0, 329,0, 0,0, 327,0, 0,0, 327,0, 0,0, 326,0, 328,0, 326,0, 328,0, 0,0, 0,0, 330,0, 330,0, 0,0, 331,0, 331,0, 0,0, 329,0, 0,0, 329,0, 0,0, 0,0, 0,0, 0,0, 0,0, 332,0, 332,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 327,0, 330,0, 327,0, 330,0, 331,0, 328,0, 331,0, 328,0, 0,0, 330,0, 330,0, 0,0, 331,0, 331,0, 0,0, 332,0, 329,0, 332,0, 329,0, 327,349, 0,0, 0,0, 0,0, 332,0, 332,0, 0,0, 0,0, 0,0, 330,0, 328,350, 330,0, 331,0, 0,0, 331,0, 0,0, 0,0, 329,351, 0,0, 0,0, 0,0, 0,0, 0,0, 332,0, 0,0, 332,0, 0,0, 333,0, 333,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 334,0, 334,0, 0,0, 0,0, 330,0, 0,0, 330,0, 331,0, 0,0, 331,0, 0,0, 0,0, 0,0, 333,0, 330,352, 333,0, 335,0, 335,0, 332,0, 331,353, 332,0, 333,0, 333,0, 334,0, 0,0, 334,0, 336,0, 336,0, 0,0, 0,0, 0,0, 334,0, 334,0, 0,0, 0,0, 0,0, 0,0, 332,354, 0,0, 335,0, 333,0, 335,0, 333,0, 0,0, 0,0, 0,0, 0,0, 335,0, 335,0, 336,0, 334,0, 336,0, 334,0, 0,0, 337,0, 337,0, 0,0, 336,0, 336,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 335,0, 0,0, 335,0, 0,0, 0,0, 0,0, 333,0, 0,0, 333,0, 0,0, 336,0, 337,0, 336,0, 337,0, 333,355, 0,0, 334,0, 0,0, 334,0, 337,0, 337,0, 0,0, 0,0, 338,0, 338,0, 0,0, 0,0, 334,357, 0,0, 0,0, 0,0, 0,0, 335,0, 333,356, 335,0, 339,0, 339,0, 0,0, 337,0, 0,0, 337,0, 0,0, 336,0, 0,0, 336,0, 0,0, 338,0, 0,0, 338,0, 0,0, 336,359, 335,358, 0,0, 0,0, 338,0, 338,0, 0,0, 0,0, 339,0, 0,0, 339,0, 340,0, 340,0, 0,0, 0,0, 0,0, 339,0, 339,0, 0,0, 0,0, 337,0, 0,0, 337,0, 338,0, 0,0, 338,0, 0,0, 341,0, 341,0, 0,0, 0,0, 0,0, 0,0, 0,0, 340,0, 339,0, 340,0, 339,0, 0,0, 0,0, 0,0, 0,0, 340,0, 340,0, 337,360, 0,0, 0,0, 0,0, 0,0, 0,0, 341,0, 0,0, 341,0, 342,0, 342,0, 338,0, 0,0, 338,0, 341,0, 341,0, 0,0, 340,0, 0,0, 340,0, 0,0, 343,0, 343,0, 339,0, 0,0, 339,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 342,0, 341,0, 342,0, 341,0, 0,0, 338,361, 0,0, 0,0, 342,0, 342,0, 0,0, 0,0, 343,0, 0,0, 343,0, 339,362, 0,0, 340,0, 0,0, 340,0, 343,0, 343,0, 344,0, 344,0, 0,0, 0,0, 0,0, 342,0, 0,0, 342,0, 0,0, 0,0, 0,0, 341,0, 0,0, 341,0, 0,0, 345,0, 345,0, 343,0, 0,0, 343,0, 0,0, 340,363, 0,0, 344,0, 0,0, 344,0, 0,0, 0,0, 0,0, 0,0, 0,0, 344,0, 344,0, 0,0, 0,0, 341,364, 0,0, 342,0, 345,0, 342,0, 345,0, 346,0, 346,0, 0,0, 0,0, 0,0, 345,0, 345,0, 0,0, 343,0, 344,0, 343,0, 344,0, 0,0, 0,0, 343,366, 347,0, 347,0, 342,365, 0,0, 0,0, 0,0, 0,0, 0,0, 346,0, 345,0, 346,0, 345,0, 0,0, 348,0, 348,0, 0,0, 346,0, 346,0, 0,0, 0,0, 0,0, 0,0, 0,0, 347,0, 0,0, 347,0, 344,0, 0,0, 344,0, 0,0, 0,0, 347,0, 347,0, 0,0, 344,367, 346,0, 348,0, 346,0, 348,0, 349,0, 349,0, 345,0, 0,0, 345,0, 348,0, 348,0, 0,0, 345,368, 0,0, 0,0, 347,0, 0,0, 347,0, 0,0, 0,0, 350,0, 350,0, 0,0, 0,0, 0,0, 0,0, 0,0, 349,0, 348,0, 349,0, 348,0, 0,0, 346,0, 0,0, 346,0, 349,0, 349,0, 0,0, 0,0, 0,0, 349,373, 0,0, 346,369, 350,0, 0,0, 350,0, 0,0, 347,0, 0,0, 347,0, 0,0, 350,0, 350,0, 0,0, 349,0, 0,0, 349,0, 0,0, 0,0, 347,370, 348,0, 0,0, 348,0, 0,0, 0,0, 347,371, 351,0, 351,0, 0,0, 0,0, 350,0, 0,0, 350,0, 0,0, 0,0, 0,0, 352,0, 352,0, 348,372, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 349,0, 0,0, 349,0, 351,0, 0,0, 351,0, 354,0, 354,0, 0,0, 0,0, 0,0, 351,0, 351,0, 352,0, 0,0, 352,0, 350,0, 0,0, 350,0, 0,0, 0,0, 352,0, 352,0, 353,0, 353,0, 0,0, 0,0, 0,0, 0,0, 354,0, 351,0, 354,0, 351,0, 0,0, 0,0, 0,0, 0,0, 354,0, 354,0, 0,0, 352,0, 0,0, 352,0, 0,0, 0,0, 0,0, 353,0, 0,0, 353,0, 0,0, 0,0, 0,0, 0,0, 0,0, 353,0, 353,0, 354,0, 0,0, 354,0, 353,376, 355,0, 355,0, 351,0, 0,0, 351,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 352,0, 353,0, 352,0, 353,0, 0,0, 356,0, 356,0, 0,0, 351,374, 0,0, 0,0, 355,0, 0,0, 355,0, 0,0, 0,0, 354,0, 0,0, 354,0, 355,0, 355,0, 357,0, 357,0, 352,375, 0,0, 0,0, 0,0, 0,0, 356,0, 0,0, 356,0, 358,0, 358,0, 353,0, 0,0, 353,0, 356,0, 356,0, 355,0, 0,0, 355,0, 0,0, 0,0, 0,0, 357,0, 0,0, 357,0, 0,0, 0,0, 0,0, 356,378, 0,0, 357,0, 357,0, 358,0, 356,0, 358,0, 356,0, 0,0, 0,0, 0,0, 0,0, 358,0, 358,0, 0,0, 0,0, 0,0, 0,0, 359,0, 359,0, 355,0, 357,0, 355,0, 357,0, 0,0, 0,0, 0,0, 0,0, 0,0, 360,0, 360,0, 358,0, 0,0, 358,0, 0,0, 0,0, 0,0, 356,0, 0,0, 356,0, 355,377, 359,0, 0,0, 359,0, 0,0, 0,0, 0,0, 0,0, 0,0, 359,0, 359,0, 0,0, 360,0, 357,0, 360,0, 357,0, 0,0, 361,0, 361,0, 0,0, 360,0, 360,0, 0,0, 358,0, 0,0, 358,0, 0,0, 357,379, 359,0, 0,0, 359,0, 0,0, 0,0, 0,0, 358,380, 0,0, 0,0, 0,0, 0,0, 360,0, 361,0, 360,0, 361,0, 362,0, 362,0, 0,0, 0,0, 0,0, 361,0, 361,0, 0,0, 0,0, 0,0, 363,0, 363,0, 0,0, 0,0, 364,0, 364,0, 0,0, 359,0, 0,0, 359,0, 0,0, 0,0, 0,0, 362,0, 361,0, 362,0, 361,0, 0,0, 360,0, 0,0, 360,0, 362,0, 362,0, 363,0, 0,0, 363,0, 0,0, 364,0, 0,0, 364,0, 0,0, 363,0, 363,0, 0,0, 0,0, 364,0, 364,0, 359,381, 0,0, 0,0, 362,0, 360,382, 362,0, 0,0, 0,0, 0,0, 361,0, 0,0, 361,0, 0,0, 363,0, 0,0, 363,0, 0,0, 364,0, 0,0, 364,0, 0,0, 365,0, 365,0, 0,0, 0,0, 0,0, 361,383, 0,0, 0,0, 0,0, 0,0, 0,0, 366,0, 366,0, 0,0, 362,0, 0,0, 362,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 365,0, 363,0, 365,0, 363,0, 0,0, 364,0, 0,0, 364,0, 365,0, 365,0, 0,0, 366,0, 0,0, 366,0, 362,384, 364,386, 367,0, 367,0, 363,385, 366,0, 366,0, 368,0, 368,0, 0,0, 0,0, 0,0, 0,0, 365,0, 0,0, 365,0, 0,0, 369,0, 369,0, 0,0, 0,0, 0,0, 0,0, 0,0, 366,0, 367,0, 366,0, 367,0, 0,0, 0,0, 368,0, 0,0, 368,0, 367,0, 367,0, 0,0, 0,0, 0,0, 368,0, 368,0, 369,0, 0,0, 369,0, 370,0, 370,0, 365,0, 0,0, 365,0, 369,0, 369,0, 0,0, 0,0, 367,0, 0,0, 367,0, 0,0, 366,0, 368,0, 366,0, 368,0, 0,0, 0,0, 0,0, 0,0, 0,0, 366,388, 370,0, 369,0, 370,0, 369,0, 0,0, 365,387, 0,0, 0,0, 370,0, 370,0, 0,0, 0,0, 0,0, 371,0, 371,0, 0,0, 372,0, 372,0, 367,0, 0,0, 367,0, 0,0, 0,0, 368,0, 0,0, 368,0, 0,0, 370,0, 367,389, 370,0, 0,0, 0,0, 0,0, 369,0, 0,0, 369,0, 371,0, 368,390, 371,0, 372,0, 0,0, 372,0, 0,0, 0,0, 371,0, 371,0, 0,0, 372,0, 372,0, 373,0, 373,0, 0,0, 374,0, 374,0, 0,0, 0,0, 369,391, 0,0, 0,0, 370,0, 0,0, 370,0, 0,0, 371,0, 0,0, 371,0, 372,0, 0,0, 372,0, 0,0, 0,0, 0,0, 373,0, 0,0, 373,0, 374,0, 0,0, 374,0, 0,0, 0,0, 373,0, 373,0, 370,392, 374,0, 374,0, 375,0, 375,0, 0,0, 0,0, 376,0, 376,0, 0,0, 0,0, 0,0, 0,0, 371,0, 0,0, 371,0, 372,0, 373,0, 372,0, 373,0, 374,0, 0,0, 374,0, 0,0, 0,0, 0,0, 375,0, 0,0, 375,0, 0,0, 376,0, 0,0, 376,0, 371,393, 375,0, 375,0, 372,394, 0,0, 376,0, 376,0, 377,0, 377,0, 0,0, 378,0, 378,0, 0,0, 0,0, 0,0, 0,0, 373,0, 0,0, 373,0, 374,0, 375,0, 374,0, 375,0, 0,0, 376,0, 374,396, 376,0, 0,0, 0,0, 0,0, 377,0, 0,0, 377,0, 378,0, 373,395, 378,0, 0,0, 0,0, 377,0, 377,0, 0,0, 378,0, 378,0, 379,0, 379,0, 0,0, 378,400, 0,0, 0,0, 0,0, 0,0, 0,0, 375,0, 0,0, 375,0, 0,0, 376,0, 377,0, 376,0, 377,0, 378,0, 0,0, 378,0, 0,0, 0,0, 0,0, 379,0, 376,398, 379,0, 0,0, 0,0, 0,0, 0,0, 0,0, 379,0, 379,0, 0,0, 0,0, 0,0, 375,397, 380,0, 380,0, 0,0, 0,0, 381,0, 381,0, 0,0, 0,0, 0,0, 377,0, 0,0, 377,0, 378,0, 379,0, 378,0, 379,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 380,0, 0,0, 380,0, 0,0, 381,0, 377,399, 381,0, 0,0, 380,0, 380,0, 0,0, 0,0, 381,0, 381,0, 382,0, 382,0, 0,0, 381,403, 383,0, 383,0, 0,0, 0,0, 379,0, 0,0, 379,0, 0,0, 0,0, 380,0, 0,0, 380,0, 0,0, 381,0, 0,0, 381,0, 379,401, 0,0, 0,0, 382,0, 0,0, 382,0, 0,0, 383,0, 0,0, 383,0, 0,0, 382,0, 382,0, 0,0, 0,0, 383,0, 383,0, 384,0, 384,0, 0,0, 0,0, 385,0, 385,0, 0,0, 0,0, 380,0, 0,0, 380,0, 0,0, 381,0, 382,0, 381,0, 382,0, 0,0, 383,0, 0,0, 383,0, 0,0, 0,0, 380,402, 384,0, 0,0, 384,0, 0,0, 385,0, 0,0, 385,0, 0,0, 384,0, 384,0, 0,0, 0,0, 385,0, 385,0, 386,0, 386,0, 0,0, 0,0, 387,0, 387,0, 0,0, 0,0, 382,0, 0,0, 382,0, 0,0, 383,0, 384,0, 383,0, 384,0, 382,404, 385,0, 0,0, 385,0, 0,0, 0,0, 0,0, 386,0, 0,0, 386,0, 0,0, 387,0, 0,0, 387,0, 0,0, 386,0, 386,0, 0,0, 0,0, 387,0, 387,0, 383,405, 0,0, 388,0, 388,0, 0,0, 0,0, 0,0, 0,0, 384,0, 0,0, 384,0, 0,0, 385,0, 386,0, 385,0, 386,0, 384,406, 387,0, 0,0, 387,0, 0,0, 0,0, 0,0, 0,0, 0,0, 388,0, 0,0, 388,0, 0,0, 0,0, 389,0, 389,0, 0,0, 388,0, 388,0, 391,0, 391,0, 385,407, 0,0, 0,0, 390,0, 390,0, 0,0, 0,0, 0,0, 386,0, 0,0, 386,0, 0,0, 387,0, 0,0, 387,0, 388,0, 389,0, 388,0, 389,0, 0,0, 0,0, 391,0, 0,0, 391,0, 389,0, 389,0, 390,0, 0,0, 390,0, 391,0, 391,0, 386,408, 0,0, 0,0, 390,0, 390,0, 387,409, 0,0, 392,0, 392,0, 0,0, 393,0, 393,0, 389,0, 0,0, 389,0, 0,0, 388,0, 391,0, 388,0, 391,0, 0,0, 0,0, 390,0, 0,0, 390,0, 388,410, 0,0, 0,0, 0,0, 0,0, 392,0, 0,0, 392,0, 393,0, 0,0, 393,0, 0,0, 0,0, 392,0, 392,0, 0,0, 393,0, 393,0, 0,0, 389,0, 0,0, 389,0, 394,0, 394,0, 391,0, 0,0, 391,0, 395,0, 395,0, 390,0, 0,0, 390,0, 392,0, 0,0, 392,0, 393,0, 0,0, 393,0, 0,0, 0,0, 0,0, 0,0, 0,0, 389,411, 0,0, 394,0, 0,0, 394,0, 390,412, 0,0, 395,0, 391,413, 395,0, 394,0, 394,0, 396,0, 396,0, 0,0, 395,0, 395,0, 397,0, 397,0, 0,0, 0,0, 392,0, 0,0, 392,0, 393,0, 0,0, 393,0, 398,0, 398,0, 394,0, 0,0, 394,0, 0,0, 393,415, 395,0, 396,0, 395,0, 396,0, 0,0, 0,0, 397,0, 392,414, 397,0, 396,0, 396,0, 0,0, 0,0, 0,0, 397,0, 397,0, 398,0, 0,0, 398,0, 399,0, 399,0, 0,0, 0,0, 0,0, 398,0, 398,0, 0,0, 394,0, 396,0, 394,0, 396,0, 0,0, 395,0, 397,0, 395,0, 397,0, 394,416, 0,0, 0,0, 0,0, 0,0, 0,0, 399,0, 398,0, 399,0, 398,0, 0,0, 0,0, 0,0, 0,0, 399,0, 399,0, 395,417, 0,0, 0,0, 400,0, 400,0, 0,0, 0,0, 0,0, 396,0, 0,0, 396,0, 0,0, 0,0, 397,0, 0,0, 397,0, 0,0, 399,0, 0,0, 399,0, 0,0, 0,0, 396,418, 398,0, 0,0, 398,0, 400,0, 397,419, 400,0, 0,0, 0,0, 401,0, 401,0, 0,0, 400,0, 400,0, 0,0, 398,420, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 402,0, 402,0, 0,0, 0,0, 399,0, 0,0, 399,0, 0,0, 400,0, 401,0, 400,0, 401,0, 0,0, 0,0, 0,0, 399,421, 0,0, 401,0, 401,0, 0,0, 0,0, 0,0, 401,423, 402,0, 0,0, 402,0, 403,0, 403,0, 0,0, 0,0, 0,0, 402,0, 402,0, 0,0, 0,0, 0,0, 401,0, 0,0, 401,0, 0,0, 400,0, 0,0, 400,0, 0,0, 0,0, 0,0, 0,0, 0,0, 400,422, 403,0, 402,0, 403,0, 402,0, 0,0, 404,0, 404,0, 0,0, 403,0, 403,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 405,0, 405,0, 0,0, 401,0, 0,0, 401,0, 0,0, 0,0, 0,0, 0,0, 0,0, 403,0, 404,0, 403,0, 404,0, 406,0, 406,0, 402,0, 0,0, 402,0, 404,0, 404,0, 0,0, 405,0, 0,0, 405,0, 0,0, 0,0, 0,0, 402,424, 0,0, 405,0, 405,0, 0,0, 0,0, 0,0, 405,426, 0,0, 406,0, 404,0, 406,0, 404,0, 0,0, 403,0, 0,0, 403,0, 406,0, 406,0, 0,0, 0,0, 405,0, 403,425, 405,0, 0,0, 407,0, 407,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 406,0, 0,0, 406,0, 0,0, 408,0, 408,0, 404,0, 0,0, 404,0, 0,0, 0,0, 0,0, 407,0, 0,0, 407,0, 409,0, 409,0, 405,0, 0,0, 405,0, 407,0, 407,0, 0,0, 0,0, 0,0, 407,427, 0,0, 408,0, 0,0, 408,0, 410,0, 410,0, 406,0, 0,0, 406,0, 408,0, 408,0, 0,0, 409,0, 407,0, 409,0, 407,0, 0,0, 411,0, 411,0, 0,0, 409,0, 409,0, 0,0, 0,0, 0,0, 0,0, 0,0, 410,0, 408,0, 410,0, 408,0, 0,0, 0,0, 0,0, 0,0, 410,0, 410,0, 0,0, 0,0, 409,0, 411,0, 409,0, 411,0, 412,0, 412,0, 407,0, 0,0, 407,0, 411,0, 411,0, 0,0, 0,0, 0,0, 411,431, 410,0, 0,0, 410,0, 0,0, 413,0, 413,0, 408,0, 0,0, 408,0, 0,0, 0,0, 0,0, 412,0, 411,0, 412,0, 411,0, 0,0, 409,0, 0,0, 409,0, 412,0, 412,0, 0,0, 0,0, 0,0, 0,0, 0,0, 413,0, 0,0, 413,0, 409,429, 0,0, 410,0, 408,428, 410,0, 413,0, 413,0, 414,0, 414,0, 412,0, 0,0, 412,0, 0,0, 0,0, 0,0, 411,0, 0,0, 411,0, 0,0, 415,0, 415,0, 0,0, 416,0, 416,0, 413,0, 410,430, 413,0, 0,0, 0,0, 0,0, 414,0, 0,0, 414,0, 0,0, 0,0, 0,0, 0,0, 0,0, 414,0, 414,0, 0,0, 412,0, 415,0, 412,0, 415,0, 416,0, 0,0, 416,0, 0,0, 0,0, 415,0, 415,0, 0,0, 416,0, 416,0, 0,0, 413,0, 414,0, 413,0, 414,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 417,0, 417,0, 415,0, 413,432, 415,0, 416,0, 0,0, 416,0, 0,0, 0,0, 418,0, 418,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 414,0, 417,0, 414,0, 417,0, 419,0, 419,0, 0,0, 0,0, 0,0, 417,0, 417,0, 418,0, 415,0, 418,0, 415,0, 416,0, 0,0, 416,0, 0,0, 418,0, 418,0, 0,0, 415,434, 0,0, 0,0, 416,435, 414,433, 419,0, 417,0, 419,0, 417,0, 0,0, 420,0, 420,0, 0,0, 419,0, 419,0, 0,0, 418,0, 0,0, 418,0, 0,0, 0,0, 421,0, 421,0, 0,0, 0,0, 0,0, 422,0, 422,0, 0,0, 0,0, 0,0, 0,0, 419,0, 420,0, 419,0, 420,0, 0,0, 0,0, 417,0, 0,0, 417,0, 420,0, 420,0, 0,0, 421,0, 0,0, 421,0, 417,436, 418,0, 422,0, 418,0, 422,0, 421,0, 421,0, 423,0, 423,0, 0,0, 422,0, 422,0, 0,0, 420,0, 0,0, 420,0, 0,0, 419,0, 0,0, 419,0, 418,437, 0,0, 0,0, 0,0, 421,0, 419,438, 421,0, 0,0, 0,0, 422,0, 423,0, 422,0, 423,0, 0,0, 0,0, 0,0, 0,0, 0,0, 423,0, 423,0, 0,0, 0,0, 424,0, 424,0, 0,0, 420,0, 0,0, 420,0, 0,0, 0,0, 0,0, 0,0, 425,0, 425,0, 0,0, 0,0, 421,0, 423,0, 421,0, 423,0, 0,0, 422,0, 420,439, 422,0, 0,0, 424,0, 0,0, 424,0, 0,0, 0,0, 421,440, 0,0, 0,0, 424,0, 424,0, 425,0, 0,0, 425,0, 424,443, 0,0, 0,0, 422,441, 0,0, 425,0, 425,0, 426,0, 426,0, 0,0, 0,0, 423,0, 0,0, 423,0, 424,0, 0,0, 424,0, 0,0, 427,0, 427,0, 0,0, 0,0, 423,442, 0,0, 425,0, 0,0, 425,0, 0,0, 0,0, 0,0, 426,0, 0,0, 426,0, 0,0, 0,0, 0,0, 0,0, 0,0, 426,0, 426,0, 0,0, 427,0, 0,0, 427,0, 0,0, 0,0, 424,0, 0,0, 424,0, 427,0, 427,0, 0,0, 0,0, 0,0, 428,0, 428,0, 425,0, 426,0, 425,0, 426,0, 0,0, 0,0, 0,0, 0,0, 0,0, 429,0, 429,0, 0,0, 427,0, 0,0, 427,0, 0,0, 0,0, 0,0, 0,0, 0,0, 425,444, 428,0, 0,0, 428,0, 0,0, 0,0, 430,0, 430,0, 0,0, 428,0, 428,0, 0,0, 429,0, 426,0, 429,0, 426,0, 0,0, 431,0, 431,0, 0,0, 429,0, 429,0, 0,0, 0,0, 427,0, 0,0, 427,0, 0,0, 428,0, 430,0, 428,0, 430,0, 432,0, 432,0, 0,0, 0,0, 426,445, 430,0, 430,0, 429,0, 431,0, 429,0, 431,0, 0,0, 0,0, 433,0, 433,0, 427,446, 431,0, 431,0, 0,0, 0,0, 0,0, 0,0, 0,0, 432,0, 430,0, 432,0, 430,0, 0,0, 428,0, 0,0, 428,0, 432,0, 432,0, 0,0, 0,0, 431,0, 433,0, 431,0, 433,0, 429,0, 0,0, 429,0, 428,447, 0,0, 433,0, 433,0, 0,0, 0,0, 434,0, 434,0, 432,0, 0,0, 432,0, 0,0, 0,0, 0,0, 430,0, 0,0, 430,0, 0,0, 435,0, 435,0, 0,0, 433,0, 0,0, 433,0, 0,0, 431,0, 0,0, 431,0, 0,0, 434,0, 0,0, 434,0, 0,0, 431,448, 436,0, 436,0, 0,0, 434,0, 434,0, 0,0, 432,0, 435,0, 432,0, 435,0, 0,0, 0,0, 437,0, 437,0, 432,449, 435,0, 435,0, 0,0, 0,0, 433,0, 0,0, 433,0, 434,0, 436,0, 434,0, 436,0, 438,0, 438,0, 0,0, 0,0, 0,0, 436,0, 436,0, 0,0, 435,0, 437,0, 435,0, 437,0, 439,0, 439,0, 433,450, 0,0, 0,0, 437,0, 437,0, 0,0, 0,0, 0,0, 0,0, 438,0, 436,0, 438,0, 436,0, 0,0, 434,0, 0,0, 434,0, 438,0, 438,0, 0,0, 0,0, 439,0, 437,0, 439,0, 437,0, 0,0, 435,0, 0,0, 435,0, 439,0, 439,0, 0,0, 0,0, 0,0, 440,0, 440,0, 438,0, 0,0, 438,0, 0,0, 0,0, 0,0, 436,0, 0,0, 436,0, 0,0, 0,0, 0,0, 439,0, 0,0, 439,0, 0,0, 436,451, 0,0, 437,0, 0,0, 437,0, 440,0, 0,0, 440,0, 441,0, 441,0, 0,0, 0,0, 0,0, 440,0, 440,0, 0,0, 438,0, 0,0, 438,0, 442,0, 442,0, 0,0, 0,0, 443,0, 443,0, 0,0, 438,452, 0,0, 439,0, 0,0, 439,0, 441,0, 440,0, 441,0, 440,0, 0,0, 444,0, 444,0, 439,453, 441,0, 441,0, 0,0, 442,0, 0,0, 442,0, 0,0, 443,0, 0,0, 443,0, 0,0, 442,0, 442,0, 0,0, 0,0, 443,0, 443,0, 0,0, 0,0, 441,0, 444,0, 441,0, 444,0, 445,0, 445,0, 440,0, 0,0, 440,0, 444,0, 444,0, 442,0, 0,0, 442,0, 0,0, 443,0, 0,0, 443,0, 440,454, 0,0, 0,0, 446,0, 446,0, 0,0, 0,0, 0,0, 0,0, 445,0, 444,0, 445,0, 444,0, 0,0, 441,0, 0,0, 441,0, 445,0, 445,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 442,0, 446,0, 442,0, 446,0, 443,0, 0,0, 443,0, 0,0, 441,455, 446,0, 446,0, 445,0, 0,0, 445,0, 442,456, 443,457, 0,0, 444,0, 0,0, 444,0, 0,0, 447,0, 447,0, 0,0, 448,0, 448,0, 0,0, 0,0, 446,0, 0,0, 446,0, 0,0, 0,0, 0,0, 0,0, 0,0, 444,458, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 445,0, 447,0, 445,0, 447,0, 448,0, 0,0, 448,0, 0,0, 0,0, 447,0, 447,0, 0,0, 448,0, 448,0, 0,0, 0,0, 0,0, 446,0, 0,0, 446,0, 445,459, 449,0, 449,0, 0,0, 450,0, 450,0, 0,0, 0,0, 447,0, 0,0, 447,0, 448,0, 0,0, 448,0, 0,0, 0,0, 0,0, 446,460, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 449,0, 0,0, 449,0, 450,0, 0,0, 450,0, 0,0, 0,0, 449,0, 449,0, 0,0, 450,0, 450,0, 451,0, 451,0, 0,0, 447,0, 0,0, 447,0, 448,0, 0,0, 448,0, 0,0, 0,0, 447,461, 0,0, 0,0, 449,0, 0,0, 449,0, 450,0, 0,0, 450,0, 0,0, 0,0, 0,0, 451,0, 0,0, 451,0, 448,462, 0,0, 0,0, 0,0, 0,0, 451,0, 451,0, 0,0, 0,0, 452,0, 452,0, 0,0, 453,0, 453,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 449,0, 0,0, 449,0, 450,0, 451,0, 450,0, 451,0, 0,0, 0,0, 0,0, 449,463, 0,0, 452,0, 0,0, 452,0, 453,0, 0,0, 453,0, 0,0, 0,0, 452,0, 452,0, 0,0, 453,0, 453,0, 452,464, 0,0, 454,0, 454,0, 0,0, 455,0, 455,0, 0,0, 0,0, 0,0, 0,0, 451,0, 0,0, 451,0, 452,0, 0,0, 452,0, 453,0, 0,0, 453,0, 0,0, 0,0, 0,0, 0,0, 0,0, 454,0, 0,0, 454,0, 455,0, 0,0, 455,0, 0,0, 0,0, 454,0, 454,0, 0,0, 455,0, 455,0, 454,465, 0,0, 456,0, 456,0, 0,0, 0,0, 457,0, 457,0, 452,0, 0,0, 452,0, 453,0, 0,0, 453,0, 454,0, 0,0, 454,0, 455,0, 0,0, 455,0, 0,0, 0,0, 0,0, 0,0, 0,0, 456,0, 0,0, 456,0, 0,0, 457,0, 0,0, 457,0, 0,0, 456,0, 456,0, 0,0, 0,0, 457,0, 457,0, 458,0, 458,0, 0,0, 459,0, 459,0, 0,0, 0,0, 454,0, 0,0, 454,0, 455,0, 0,0, 455,0, 456,0, 0,0, 456,0, 0,0, 457,0, 0,0, 457,0, 0,0, 455,466, 0,0, 458,0, 0,0, 458,0, 459,0, 0,0, 459,0, 0,0, 0,0, 458,0, 458,0, 0,0, 459,0, 459,0, 460,0, 460,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 456,0, 0,0, 456,0, 0,0, 457,0, 458,0, 457,0, 458,0, 459,0, 0,0, 459,0, 0,0, 0,0, 0,0, 460,0, 0,0, 460,0, 456,467, 457,468, 0,0, 0,0, 0,0, 460,0, 460,0, 461,0, 461,0, 0,0, 462,0, 462,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 458,0, 0,0, 458,0, 459,0, 460,0, 459,0, 460,0, 0,0, 0,0, 0,0, 461,0, 458,469, 461,0, 462,0, 0,0, 462,0, 0,0, 0,0, 461,0, 461,0, 0,0, 462,0, 462,0, 463,0, 463,0, 0,0, 464,0, 464,0, 0,0, 459,470, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 460,0, 461,0, 460,0, 461,0, 462,0, 0,0, 462,0, 0,0, 0,0, 0,0, 463,0, 0,0, 463,0, 464,0, 0,0, 464,0, 0,0, 0,0, 463,0, 463,0, 0,0, 464,0, 464,0, 463,474, 0,0, 0,0, 460,471, 465,0, 465,0, 0,0, 0,0, 0,0, 0,0, 461,0, 0,0, 461,0, 462,0, 463,0, 462,0, 463,0, 464,0, 0,0, 464,0, 461,472, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 465,0, 0,0, 465,0, 466,0, 466,0, 462,473, 0,0, 0,0, 465,0, 465,0, 0,0, 0,0, 0,0, 467,0, 467,0, 0,0, 468,0, 468,0, 0,0, 463,0, 0,0, 463,0, 464,0, 0,0, 464,0, 0,0, 466,0, 465,0, 466,0, 465,0, 464,475, 464,476, 0,0, 0,0, 466,0, 466,0, 467,0, 0,0, 467,0, 468,0, 0,0, 468,0, 0,0, 0,0, 467,0, 467,0, 464,477, 468,0, 468,0, 0,0, 0,0, 469,0, 469,0, 466,0, 0,0, 466,0, 0,0, 0,0, 0,0, 465,0, 0,0, 465,0, 0,0, 467,0, 0,0, 467,0, 468,0, 0,0, 468,0, 0,0, 465,478, 0,0, 0,0, 0,0, 469,0, 0,0, 469,0, 0,0, 0,0, 470,0, 470,0, 0,0, 469,0, 469,0, 0,0, 466,0, 0,0, 466,0, 0,0, 471,0, 471,0, 0,0, 0,0, 0,0, 0,0, 467,0, 0,0, 467,0, 468,0, 466,479, 468,0, 469,0, 470,0, 469,0, 470,0, 467,480, 0,0, 0,0, 0,0, 0,0, 470,0, 470,0, 471,0, 0,0, 471,0, 468,481, 0,0, 472,0, 472,0, 0,0, 471,0, 471,0, 0,0, 0,0, 0,0, 0,0, 0,0, 473,0, 473,0, 470,0, 0,0, 470,0, 0,0, 469,0, 0,0, 469,0, 0,0, 0,0, 0,0, 471,0, 472,0, 471,0, 472,0, 474,0, 474,0, 0,0, 0,0, 469,482, 472,0, 472,0, 473,0, 0,0, 473,0, 472,485, 0,0, 0,0, 0,0, 0,0, 473,0, 473,0, 0,0, 470,0, 0,0, 470,0, 0,0, 0,0, 474,0, 472,0, 474,0, 472,0, 0,0, 471,0, 0,0, 471,0, 474,0, 474,0, 0,0, 473,0, 0,0, 473,0, 0,0, 0,0, 475,0, 475,0, 0,0, 0,0, 470,483, 476,0, 476,0, 0,0, 0,0, 0,0, 0,0, 474,0, 0,0, 474,0, 471,484, 0,0, 0,0, 472,0, 0,0, 472,0, 0,0, 0,0, 0,0, 475,0, 0,0, 475,0, 0,0, 473,0, 476,0, 473,0, 476,0, 475,0, 475,0, 477,0, 477,0, 0,0, 476,0, 476,0, 473,486, 0,0, 0,0, 0,0, 0,0, 474,0, 0,0, 474,0, 478,0, 478,0, 0,0, 0,0, 475,0, 474,487, 475,0, 0,0, 0,0, 476,0, 477,0, 476,0, 477,0, 0,0, 0,0, 0,0, 0,0, 0,0, 477,0, 477,0, 0,0, 474,488, 0,0, 478,0, 0,0, 478,0, 479,0, 479,0, 0,0, 0,0, 0,0, 478,0, 478,0, 0,0, 0,0, 0,0, 475,0, 477,0, 475,0, 477,0, 0,0, 476,0, 0,0, 476,0, 0,0, 0,0, 0,0, 0,0, 0,0, 479,0, 478,0, 479,0, 478,0, 0,0, 0,0, 0,0, 475,489, 479,0, 479,0, 0,0, 0,0, 476,490, 480,0, 480,0, 0,0, 0,0, 481,0, 481,0, 0,0, 477,0, 0,0, 477,0, 0,0, 0,0, 0,0, 0,0, 479,0, 0,0, 479,0, 477,491, 0,0, 0,0, 478,0, 0,0, 478,0, 480,0, 0,0, 480,0, 0,0, 481,0, 0,0, 481,0, 0,0, 480,0, 480,0, 0,0, 478,492, 481,0, 481,0, 482,0, 482,0, 0,0, 483,0, 483,0, 0,0, 0,0, 0,0, 0,0, 479,0, 0,0, 479,0, 0,0, 480,0, 0,0, 480,0, 0,0, 481,0, 0,0, 481,0, 0,0, 479,493, 0,0, 482,0, 0,0, 482,0, 483,0, 0,0, 483,0, 0,0, 0,0, 482,0, 482,0, 0,0, 483,0, 483,0, 0,0, 0,0, 484,0, 484,0, 0,0, 485,0, 485,0, 0,0, 0,0, 480,0, 0,0, 480,0, 0,0, 481,0, 482,0, 481,0, 482,0, 483,0, 0,0, 483,0, 0,0, 0,0, 0,0, 481,494, 0,0, 484,0, 0,0, 484,0, 485,0, 0,0, 485,0, 0,0, 0,0, 484,0, 484,0, 0,0, 485,0, 485,0, 486,0, 486,0, 0,0, 487,0, 487,0, 0,0, 0,0, 0,0, 482,0, 0,0, 482,0, 483,0, 0,0, 483,0, 484,0, 0,0, 484,0, 485,0, 0,0, 485,0, 482,495, 483,496, 0,0, 486,0, 0,0, 486,0, 487,0, 0,0, 487,0, 0,0, 0,0, 486,0, 486,0, 0,0, 487,0, 487,0, 488,0, 488,0, 0,0, 489,0, 489,0, 0,0, 0,0, 0,0, 0,0, 0,0, 484,0, 0,0, 484,0, 485,0, 486,0, 485,0, 486,0, 487,0, 0,0, 487,0, 484,497, 485,498, 0,0, 488,0, 0,0, 488,0, 489,0, 0,0, 489,0, 0,0, 0,0, 488,0, 488,0, 0,0, 489,0, 489,0, 0,0, 485,499, 0,0, 490,0, 490,0, 0,0, 0,0, 491,0, 491,0, 0,0, 486,0, 0,0, 486,0, 487,0, 488,0, 487,0, 488,0, 489,0, 0,0, 489,0, 0,0, 0,0, 0,0, 0,0, 486,500, 0,0, 490,0, 0,0, 490,0, 0,0, 491,0, 0,0, 491,0, 487,501, 490,0, 490,0, 0,0, 0,0, 491,0, 491,0, 492,0, 492,0, 0,0, 0,0, 493,0, 493,0, 488,0, 0,0, 488,0, 489,0, 0,0, 489,0, 0,0, 490,0, 0,0, 490,0, 488,502, 491,0, 0,0, 491,0, 0,0, 0,0, 0,0, 492,0, 0,0, 492,0, 0,0, 493,0, 489,503, 493,0, 0,0, 492,0, 492,0, 0,0, 0,0, 493,0, 493,0, 494,0, 494,0, 0,0, 493,508, 0,0, 495,0, 495,0, 0,0, 490,0, 0,0, 490,0, 0,0, 491,0, 492,0, 491,0, 492,0, 0,0, 493,0, 491,505, 493,0, 0,0, 0,0, 0,0, 494,0, 0,0, 494,0, 490,504, 0,0, 495,0, 0,0, 495,0, 494,0, 494,0, 496,0, 496,0, 491,506, 495,0, 495,0, 497,0, 497,0, 0,0, 495,509, 0,0, 498,0, 498,0, 492,0, 0,0, 492,0, 0,0, 493,0, 494,0, 493,0, 494,0, 0,0, 0,0, 495,0, 496,0, 495,0, 496,0, 0,0, 0,0, 497,0, 492,507, 497,0, 496,0, 496,0, 498,0, 0,0, 498,0, 497,0, 497,0, 499,0, 499,0, 0,0, 498,0, 498,0, 500,0, 500,0, 0,0, 0,0, 0,0, 0,0, 494,0, 496,0, 494,0, 496,0, 0,0, 495,0, 497,0, 495,0, 497,0, 0,0, 0,0, 498,0, 499,0, 498,0, 499,0, 0,0, 0,0, 500,0, 0,0, 500,0, 499,0, 499,0, 0,0, 0,0, 0,0, 500,0, 500,0, 501,0, 501,0, 0,0, 502,0, 502,0, 0,0, 496,0, 0,0, 496,0, 0,0, 0,0, 497,0, 499,0, 497,0, 499,0, 0,0, 498,0, 500,0, 498,0, 500,0, 0,0, 0,0, 0,0, 501,0, 0,0, 501,0, 502,0, 0,0, 502,0, 0,0, 0,0, 501,0, 501,0, 0,0, 502,0, 502,0, 498,510, 0,0, 0,0, 503,0, 503,0, 0,0, 504,0, 504,0, 499,0, 0,0, 499,0, 0,0, 0,0, 500,0, 501,0, 500,0, 501,0, 502,0, 499,511, 502,0, 0,0, 0,0, 0,0, 0,0, 0,0, 500,512, 503,0, 0,0, 503,0, 504,0, 0,0, 504,0, 0,0, 0,0, 503,0, 503,0, 0,0, 504,0, 504,0, 505,0, 505,0, 0,0, 0,0, 506,0, 506,0, 0,0, 501,0, 0,0, 501,0, 502,0, 0,0, 502,0, 0,0, 503,0, 0,0, 503,0, 504,0, 0,0, 504,0, 0,0, 0,0, 0,0, 505,0, 0,0, 505,0, 501,513, 506,0, 0,0, 506,0, 0,0, 505,0, 505,0, 502,514, 0,0, 506,0, 506,0, 507,0, 507,0, 0,0, 508,0, 508,0, 0,0, 0,0, 0,0, 0,0, 503,0, 0,0, 503,0, 504,0, 505,0, 504,0, 505,0, 0,0, 506,0, 504,516, 506,0, 503,515, 0,0, 0,0, 507,0, 0,0, 507,0, 508,0, 0,0, 508,0, 0,0, 0,0, 507,0, 507,0, 0,0, 508,0, 508,0, 0,0, 0,0, 509,0, 509,0, 0,0, 510,0, 510,0, 0,0, 0,0, 505,0, 0,0, 505,0, 0,0, 506,0, 507,0, 506,0, 507,0, 508,0, 0,0, 508,0, 0,0, 0,0, 0,0, 0,0, 0,0, 509,0, 0,0, 509,0, 510,0, 0,0, 510,0, 0,0, 505,517, 509,0, 509,0, 0,0, 510,0, 510,0, 511,0, 511,0, 506,518, 512,0, 512,0, 0,0, 0,0, 0,0, 507,0, 0,0, 507,0, 508,0, 0,0, 508,0, 509,0, 0,0, 509,0, 510,0, 507,519, 510,0, 0,0, 0,0, 508,520, 511,0, 0,0, 511,0, 512,0, 0,0, 512,0, 0,0, 0,0, 511,0, 511,0, 0,0, 512,0, 512,0, 0,0, 0,0, 0,0, 512,524, 513,0, 513,0, 0,0, 0,0, 514,0, 514,0, 509,0, 0,0, 509,0, 510,0, 511,0, 510,0, 511,0, 512,0, 0,0, 512,0, 0,0, 509,521, 0,0, 0,0, 0,0, 0,0, 0,0, 513,0, 0,0, 513,0, 0,0, 514,0, 510,522, 514,0, 0,0, 513,0, 513,0, 0,0, 0,0, 514,0, 514,0, 515,0, 515,0, 0,0, 0,0, 0,0, 511,0, 0,0, 511,0, 512,0, 0,0, 512,0, 516,0, 516,0, 513,0, 0,0, 513,0, 0,0, 514,0, 0,0, 514,0, 0,0, 0,0, 0,0, 515,0, 0,0, 515,0, 0,0, 0,0, 511,523, 0,0, 0,0, 515,0, 515,0, 0,0, 516,0, 0,0, 516,0, 517,0, 517,0, 0,0, 0,0, 0,0, 516,0, 516,0, 0,0, 513,0, 0,0, 513,0, 0,0, 514,0, 515,0, 514,0, 515,0, 0,0, 518,0, 518,0, 513,525, 0,0, 0,0, 0,0, 517,0, 516,0, 517,0, 516,0, 0,0, 0,0, 0,0, 0,0, 517,0, 517,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 514,526, 518,0, 0,0, 518,0, 519,0, 519,0, 515,0, 0,0, 515,0, 518,0, 518,0, 517,0, 0,0, 517,0, 0,0, 520,0, 520,0, 516,0, 0,0, 516,0, 515,527, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 519,0, 518,0, 519,0, 518,0, 516,528, 521,0, 521,0, 0,0, 519,0, 519,0, 0,0, 520,0, 0,0, 520,0, 0,0, 0,0, 517,0, 0,0, 517,0, 520,0, 520,0, 522,0, 522,0, 0,0, 517,529, 0,0, 0,0, 519,0, 521,0, 519,0, 521,0, 523,0, 523,0, 518,0, 0,0, 518,0, 521,0, 521,0, 520,0, 0,0, 520,0, 0,0, 0,0, 518,530, 522,0, 0,0, 522,0, 0,0, 0,0, 0,0, 0,0, 0,0, 522,0, 522,0, 523,0, 521,0, 523,0, 521,0, 0,0, 519,0, 0,0, 519,0, 523,0, 523,0, 0,0, 0,0, 0,0, 524,0, 524,0, 0,0, 520,0, 522,0, 520,0, 522,0, 0,0, 0,0, 0,0, 525,0, 525,0, 0,0, 0,0, 523,0, 0,0, 523,0, 520,531, 0,0, 0,0, 521,0, 0,0, 521,0, 524,0, 0,0, 524,0, 526,0, 526,0, 0,0, 0,0, 0,0, 524,0, 524,0, 525,0, 521,532, 525,0, 522,0, 0,0, 522,0, 0,0, 0,0, 525,0, 525,0, 0,0, 0,0, 0,0, 523,0, 522,533, 523,0, 526,0, 524,0, 526,0, 524,0, 0,0, 0,0, 0,0, 0,0, 526,0, 526,0, 0,0, 525,0, 0,0, 525,0, 0,0, 527,0, 527,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 523,534, 0,0, 0,0, 526,0, 0,0, 526,0, 0,0, 528,0, 528,0, 524,0, 0,0, 524,0, 0,0, 0,0, 527,0, 0,0, 527,0, 529,0, 529,0, 525,0, 524,535, 525,0, 527,0, 527,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 528,0, 0,0, 528,0, 525,536, 0,0, 526,0, 0,0, 526,0, 528,0, 528,0, 529,0, 527,0, 529,0, 527,0, 0,0, 526,537, 0,0, 0,0, 529,0, 529,0, 0,0, 0,0, 0,0, 0,0, 0,0, 530,0, 530,0, 528,0, 0,0, 528,0, 0,0, 0,0, 0,0, 0,0, 0,0, 531,0, 531,0, 529,0, 0,0, 529,0, 0,0, 0,0, 0,0, 527,0, 0,0, 527,0, 0,0, 0,0, 530,0, 0,0, 530,0, 0,0, 0,0, 0,0, 0,0, 527,538, 530,0, 530,0, 531,0, 528,0, 531,0, 528,0, 0,0, 532,0, 532,0, 0,0, 531,0, 531,0, 0,0, 529,0, 0,0, 529,0, 0,0, 533,0, 533,0, 530,0, 0,0, 530,0, 528,539, 0,0, 0,0, 0,0, 529,540, 0,0, 0,0, 531,0, 532,0, 531,0, 532,0, 534,0, 534,0, 0,0, 0,0, 0,0, 532,0, 532,0, 533,0, 0,0, 533,0, 0,0, 0,0, 535,0, 535,0, 0,0, 533,0, 533,0, 0,0, 530,0, 0,0, 530,0, 0,0, 0,0, 534,0, 532,0, 534,0, 532,0, 0,0, 531,0, 0,0, 531,0, 534,0, 534,0, 0,0, 533,0, 535,0, 533,0, 535,0, 536,0, 536,0, 0,0, 530,541, 0,0, 535,0, 535,0, 531,542, 0,0, 0,0, 0,0, 0,0, 534,0, 0,0, 534,0, 0,0, 537,0, 537,0, 532,0, 0,0, 532,0, 0,0, 0,0, 536,0, 535,0, 536,0, 535,0, 0,0, 533,0, 0,0, 533,0, 536,0, 536,0, 0,0, 0,0, 532,543, 0,0, 0,0, 0,0, 537,0, 0,0, 537,0, 533,544, 0,0, 534,0, 0,0, 534,0, 537,0, 537,0, 0,0, 536,0, 0,0, 536,0, 0,0, 534,545, 0,0, 535,0, 0,0, 535,0, 0,0, 538,0, 538,0, 0,0, 0,0, 539,0, 539,0, 537,0, 0,0, 537,0, 0,0, 535,546, 0,0, 0,0, 0,0, 540,0, 540,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 536,0, 538,0, 536,0, 538,0, 0,0, 539,0, 0,0, 539,0, 0,0, 538,0, 538,0, 0,0, 536,547, 539,0, 539,0, 540,0, 537,0, 540,0, 537,0, 0,0, 541,0, 541,0, 0,0, 540,0, 540,0, 542,0, 542,0, 0,0, 538,0, 0,0, 538,0, 0,0, 539,0, 0,0, 539,0, 0,0, 543,0, 543,0, 0,0, 537,548, 0,0, 0,0, 540,0, 541,0, 540,0, 541,0, 0,0, 0,0, 542,0, 0,0, 542,0, 541,0, 541,0, 0,0, 0,0, 0,0, 542,0, 542,0, 0,0, 543,0, 538,0, 543,0, 538,0, 0,0, 539,0, 0,0, 539,0, 543,0, 543,0, 0,0, 541,0, 0,0, 541,0, 0,0, 540,0, 542,0, 540,0, 542,0, 0,0, 0,0, 544,0, 544,0, 0,0, 0,0, 538,549, 0,0, 543,0, 0,0, 543,0, 0,0, 0,0, 545,0, 545,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 541,0, 544,0, 541,0, 544,0, 0,0, 542,0, 0,0, 542,0, 0,0, 544,0, 544,0, 0,0, 545,0, 0,0, 545,0, 542,551, 543,0, 0,0, 543,0, 0,0, 545,0, 545,0, 0,0, 0,0, 541,550, 0,0, 543,552, 0,0, 544,0, 0,0, 544,0, 0,0, 546,0, 546,0, 0,0, 0,0, 547,0, 547,0, 0,0, 545,0, 0,0, 545,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, 546,0, 0,0, 546,0, 0,0, 547,0, 544,0, 547,0, 544,0, 546,0, 546,0, 0,0, 0,0, 547,0, 547,0, 0,0, 0,0, 545,0, 544,553, 545,0, 548,0, 548,0, 0,0, 549,0, 549,0, 0,0, 0,0, 0,0, 546,0, 0,0, 546,0, 0,0, 547,0, 0,0, 547,0, 0,0, 0,0, 0,0, 0,0, 0,0, 545,554, 0,0, 0,0, 548,0, 0,0, 548,0, 549,0, 0,0, 549,0, 0,0, 0,0, 548,0, 548,0, 0,0, 549,0, 549,0, 0,0, 0,0, 550,0, 550,0, 546,0, 0,0, 546,0, 0,0, 547,0, 0,0, 547,0, 0,0, 551,0, 551,0, 548,0, 0,0, 548,0, 549,0, 0,0, 549,0, 0,0, 546,555, 0,0, 0,0, 0,0, 550,0, 0,0, 550,0, 0,0, 0,0, 0,0, 0,0, 547,556, 550,0, 550,0, 551,0, 0,0, 551,0, 0,0, 0,0, 0,0, 0,0, 0,0, 551,0, 551,0, 0,0, 548,0, 0,0, 548,0, 549,0, 0,0, 549,0, 550,0, 0,0, 550,0, 0,0, 552,0, 552,0, 0,0, 0,0, 553,0, 553,0, 551,0, 0,0, 551,0, 0,0, 0,0, 0,0, 0,0, 0,0, 548,557, 0,0, 549,558, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 552,0, 0,0, 552,0, 0,0, 553,0, 550,0, 553,0, 550,0, 552,0, 552,0, 0,0, 0,0, 553,0, 553,0, 0,0, 551,0, 0,0, 551,0, 554,0, 554,0, 0,0, 555,0, 555,0, 0,0, 0,0, 0,0, 0,0, 552,0, 0,0, 552,0, 0,0, 553,0, 0,0, 553,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 554,0, 0,0, 554,0, 555,0, 0,0, 555,0, 0,0, 0,0, 554,0, 554,0, 0,0, 555,0, 555,0, 556,0, 556,0, 0,0, 557,0, 557,0, 552,0, 0,0, 552,0, 0,0, 553,0, 0,0, 553,0, 0,0, 0,0, 554,0, 0,0, 554,0, 555,0, 0,0, 555,0, 0,0, 0,0, 0,0, 556,0, 0,0, 556,0, 557,0, 0,0, 557,0, 0,0, 0,0, 556,0, 556,0, 553,559, 557,0, 557,0, 0,0, 0,0, 0,0, 0,0, 558,0, 558,0, 0,0, 559,0, 559,0, 0,0, 554,0, 0,0, 554,0, 555,0, 556,0, 555,0, 556,0, 557,0, 0,0, 557,0, 0,0, 0,0, 0,0, 555,561, 0,0, 0,0, 0,0, 558,0, 0,0, 558,0, 559,0, 0,0, 559,0, 0,0, 554,560, 558,0, 558,0, 0,0, 559,0, 559,0, 560,0, 560,0, 0,0, 561,0, 561,0, 0,0, 556,0, 0,0, 556,0, 557,0, 0,0, 557,0, 0,0, 0,0, 558,0, 0,0, 558,0, 559,0, 0,0, 559,0, 0,0, 0,0, 0,0, 560,0, 0,0, 560,0, 561,0, 0,0, 561,0, 556,562, 0,0, 560,0, 560,0, 0,0, 561,0, 561,0, 562,0, 562,0, 0,0, 563,0, 563,0, 0,0, 0,0, 0,0, 0,0, 0,0, 558,0, 0,0, 558,0, 559,0, 560,0, 559,0, 560,0, 561,0, 558,563, 561,0, 0,0, 0,0, 0,0, 562,0, 0,0, 562,0, 563,0, 0,0, 563,0, 0,0, 0,0, 562,0, 562,0, 0,0, 563,0, 563,0, 559,564, 0,0, 0,0, 564,0, 564,0, 0,0, 565,0, 565,0, 0,0, 0,0, 560,0, 0,0, 560,0, 561,0, 562,0, 561,0, 562,0, 563,0, 0,0, 563,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 564,0, 0,0, 564,0, 565,0, 0,0, 565,0, 0,0, 0,0, 564,0, 564,0, 0,0, 565,0, 565,0, 566,0, 566,0, 0,0, 0,0, 0,0, 0,0, 0,0, 562,0, 0,0, 562,0, 563,0, 0,0, 563,0, 0,0, 564,0, 562,565, 564,0, 565,0, 0,0, 565,0, 0,0, 0,0, 0,0, 566,0, 0,0, 566,0, 0,0, 0,0, 0,0, 0,0, 0,0, 566,0, 566,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, 564,0, 0,0, 564,0, 565,0, 566,0, 565,0, 566,0, 0,0, 564,566, 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, 566,0, 0,0, 566,0, 0,0}; struct yysvf yysvec[] = { 0, 0, 0, yycrank+-1, 0, 0, yycrank+-26, yysvec+1, 0, yycrank+-98, 0, 0, yycrank+-121, yysvec+3, 0, yycrank+0, 0, yyvstop+1, yycrank+0, 0, yyvstop+3, yycrank+0, 0, yyvstop+6, yycrank+-208, 0, yyvstop+8, yycrank+0, 0, yyvstop+11, yycrank+0, 0, yyvstop+14, yycrank+38, 0, yyvstop+17, yycrank+2, 0, yyvstop+19, yycrank+1, 0, yyvstop+21, yycrank+5, 0, yyvstop+23, yycrank+9, 0, yyvstop+25, yycrank+7, 0, yyvstop+27, yycrank+1, 0, yyvstop+29, yycrank+12, 0, yyvstop+31, yycrank+16, 0, yyvstop+33, yycrank+21, 0, yyvstop+35, yycrank+26, 0, yyvstop+37, yycrank+-231, 0, yyvstop+39, yycrank+-320, 0, yyvstop+42, yycrank+-325, yysvec+22, yyvstop+44, yycrank+0, 0, yyvstop+47, yycrank+-392, yysvec+22, yyvstop+50, yycrank+-404, yysvec+22, yyvstop+53, yycrank+-420, yysvec+22, yyvstop+56, yycrank+-437, yysvec+22, yyvstop+59, yycrank+-448, yysvec+22, yyvstop+62, yycrank+-432, yysvec+22, yyvstop+65, yycrank+-492, yysvec+22, yyvstop+68, yycrank+-506, yysvec+22, yyvstop+71, yycrank+-534, yysvec+22, yyvstop+74, yycrank+-539, yysvec+22, yyvstop+77, yycrank+-572, yysvec+22, yyvstop+80, yycrank+-577, yysvec+22, yyvstop+83, yycrank+-614, yysvec+22, yyvstop+86, yycrank+-619, yysvec+22, yyvstop+89, yycrank+-657, yysvec+22, yyvstop+92, yycrank+-647, yysvec+22, yyvstop+95, yycrank+-713, yysvec+22, yyvstop+98, yycrank+-746, yysvec+22, yyvstop+101, yycrank+-750, yysvec+22, yyvstop+104, yycrank+-760, yysvec+22, yyvstop+107, yycrank+-2, yysvec+8, yyvstop+110, yycrank+14, 0, 0, yycrank+27, 0, 0, yycrank+22, 0, 0, yycrank+32, 0, 0, yycrank+21, 0, 0, yycrank+37, 0, 0, yycrank+42, 0, 0, yycrank+26, 0, 0, yycrank+40, 0, 0, yycrank+35, 0, 0, yycrank+46, 0, 0, yycrank+35, 0, 0, yycrank+48, 0, 0, yycrank+41, 0, 0, yycrank+50, 0, 0, yycrank+-804, yysvec+22, yyvstop+112, yycrank+0, yysvec+23, 0, yycrank+0, 0, yyvstop+114, yycrank+-839, 0, yyvstop+116, yycrank+-846, yysvec+22, yyvstop+118, yycrank+-889, yysvec+22, yyvstop+121, yycrank+-900, yysvec+22, yyvstop+123, yycrank+-933, yysvec+22, yyvstop+126, yycrank+-936, yysvec+22, yyvstop+128, yycrank+-947, yysvec+22, yyvstop+130, yycrank+-1001, yysvec+22, yyvstop+132, yycrank+-1013, yysvec+22, yyvstop+134, yycrank+-1041, yysvec+22, yyvstop+136, yycrank+-1046, yysvec+22, yyvstop+138, yycrank+-1079, yysvec+22, yyvstop+140, yycrank+-1112, yysvec+22, yyvstop+142, yycrank+-1117, yysvec+22, yyvstop+144, yycrank+-1145, yysvec+22, yyvstop+146, yycrank+-1150, yysvec+22, yyvstop+148, yycrank+-1185, yysvec+22, yyvstop+150, yycrank+-1189, yysvec+22, yyvstop+152, yycrank+-1247, yysvec+22, yyvstop+155, yycrank+-1262, yysvec+22, yyvstop+157, yycrank+-1288, yysvec+22, yyvstop+159, yycrank+-1301, yysvec+22, yyvstop+161, yycrank+-1316, yysvec+22, yyvstop+163, yycrank+-1342, yysvec+22, yyvstop+165, yycrank+-1355, yysvec+22, yyvstop+167, yycrank+-1381, yysvec+22, yyvstop+169, yycrank+-1409, yysvec+22, yyvstop+171, yycrank+-1419, yysvec+22, yyvstop+173, yycrank+-1456, yysvec+22, yyvstop+175, yycrank+-1473, yysvec+22, yyvstop+177, yycrank+61, 0, 0, yycrank+64, 0, 0, yycrank+53, 0, 0, yycrank+71, 0, 0, yycrank+53, 0, 0, yycrank+0, 0, yyvstop+179, yycrank+56, 0, 0, yycrank+62, 0, 0, yycrank+0, 0, yyvstop+181, yycrank+67, 0, 0, yycrank+70, 0, 0, yycrank+0, yysvec+101, 0, yycrank+87, 0, 0, yycrank+88, 0, 0, yycrank+0, 0, yyvstop+183, yycrank+85, 0, 0, yycrank+84, 0, 0, yycrank+-1510, 0, 0, yycrank+-3, yysvec+65, 0, yycrank+-4, yysvec+112, 0, yycrank+-1533, yysvec+22, yyvstop+185, yycrank+-1544, yysvec+22, yyvstop+188, yycrank+-1591, yysvec+22, yyvstop+191, yycrank+-1602, yysvec+22, yyvstop+194, yycrank+-1606, yysvec+22, yyvstop+197, yycrank+-1639, yysvec+22, yyvstop+199, yycrank+-1678, yysvec+22, yyvstop+201, yycrank+-1681, yysvec+22, yyvstop+203, yycrank+-1694, yysvec+22, yyvstop+205, yycrank+-1736, yysvec+22, yyvstop+207, yycrank+-1741, yysvec+22, yyvstop+209, yycrank+-1780, yysvec+22, yyvstop+211, yycrank+-1783, yysvec+22, yyvstop+213, yycrank+-1821, yysvec+22, yyvstop+215, yycrank+-1838, yysvec+22, yyvstop+217, yycrank+-1854, yysvec+22, yyvstop+219, yycrank+-1893, yysvec+22, yyvstop+221, yycrank+-1896, yysvec+22, yyvstop+223, yycrank+-1908, yysvec+22, yyvstop+225, yycrank+-1941, yysvec+22, yyvstop+227, yycrank+-1956, yysvec+22, yyvstop+229, yycrank+-1982, yysvec+22, yyvstop+231, yycrank+-1995, yysvec+22, yyvstop+233, yycrank+-2021, yysvec+22, yyvstop+235, yycrank+-2049, yysvec+22, yyvstop+237, yycrank+-2061, yysvec+22, yyvstop+239, yycrank+-2115, yysvec+22, yyvstop+241, yycrank+-2125, yysvec+22, yyvstop+243, yycrank+-2129, yysvec+22, yyvstop+245, yycrank+-2162, yysvec+22, yyvstop+247, yycrank+-2173, yysvec+22, yyvstop+249, yycrank+-2201, yysvec+22, yyvstop+251, yycrank+-2227, yysvec+22, yyvstop+253, yycrank+-2240, yysvec+22, yyvstop+255, yycrank+91, 0, 0, yycrank+79, 0, 0, yycrank+89, 0, 0, yycrank+85, 0, 0, yycrank+88, 0, 0, yycrank+0, 0, yyvstop+257, yycrank+90, 0, 0, yycrank+0, 0, yyvstop+259, yycrank+0, 0, yyvstop+261, yycrank+93, 0, 0, yycrank+112, 0, 0, yycrank+110, 0, 0, yycrank+104, 0, 0, yycrank+-2275, 0, 0, yycrank+-2298, yysvec+22, yyvstop+263, yycrank+-2336, yysvec+22, yyvstop+266, yycrank+-2364, yysvec+22, yyvstop+269, yycrank+-2369, yysvec+22, yyvstop+271, yycrank+-2374, yysvec+22, yyvstop+273, yycrank+-2402, yysvec+22, yyvstop+275, yycrank+-2407, yysvec+22, yyvstop+277, yycrank+-2412, yysvec+22, yyvstop+279, yycrank+-2440, yysvec+22, yyvstop+281, yycrank+-2476, yysvec+22, yyvstop+283, yycrank+-2502, yysvec+22, yyvstop+286, yycrank+-2517, yysvec+22, yyvstop+288, yycrank+-2530, yysvec+22, yyvstop+290, yycrank+-2543, yysvec+22, yyvstop+292, yycrank+-2556, yysvec+22, yyvstop+294, yycrank+-2571, yysvec+22, yyvstop+296, yycrank+-2610, yysvec+22, yyvstop+298, yycrank+-2643, yysvec+22, yyvstop+300, yycrank+-2676, yysvec+22, yyvstop+302, yycrank+-2681, yysvec+22, yyvstop+304, yycrank+-2686, yysvec+22, yyvstop+306, yycrank+-2719, yysvec+22, yyvstop+308, yycrank+-2752, yysvec+22, yyvstop+310, yycrank+-2756, yysvec+22, yyvstop+312, yycrank+-2766, yysvec+22, yyvstop+314, yycrank+-2792, yysvec+22, yyvstop+316, yycrank+-2820, yysvec+22, yyvstop+318, yycrank+-2830, yysvec+22, yyvstop+320, yycrank+-2846, yysvec+22, yyvstop+322, yycrank+-2856, yysvec+22, yyvstop+324, yycrank+-2884, yysvec+22, yyvstop+326, yycrank+-2919, yysvec+22, yyvstop+329, yycrank+-2931, yysvec+22, yyvstop+332, yycrank+116, 0, 0, yycrank+0, 0, yyvstop+334, yycrank+109, 0, 0, yycrank+126, 0, 0, yycrank+119, 0, 0, yycrank+118, 0, 0, yycrank+119, 0, 0, yycrank+123, 0, 0, yycrank+122, 0, 0, yycrank+130, 0, 0, yycrank+-2960, 0, 0, yycrank+-5, yysvec+162, yyvstop+336, yycrank+-6, yysvec+206, 0, yycrank+-2957, yysvec+22, yyvstop+338, yycrank+-2994, yysvec+22, yyvstop+340, yycrank+-3042, yysvec+22, yyvstop+342, yycrank+-3052, yysvec+22, yyvstop+345, yycrank+-3056, yysvec+22, yyvstop+347, yycrank+-3089, yysvec+22, yyvstop+349, yycrank+-3122, yysvec+22, yyvstop+351, yycrank+-3157, yysvec+22, yyvstop+353, yycrank+-3160, yysvec+22, yyvstop+355, yycrank+-3193, yysvec+22, yyvstop+357, yycrank+-3196, yysvec+22, yyvstop+359, yycrank+-3229, yysvec+22, yyvstop+361, yycrank+-3262, yysvec+22, yyvstop+363, yycrank+-3266, yysvec+22, yyvstop+365, yycrank+-3301, yysvec+22, yyvstop+367, yycrank+-3306, yysvec+22, yyvstop+369, yycrank+-3341, yysvec+22, yyvstop+371, yycrank+-3376, yysvec+22, yyvstop+373, yycrank+-3379, yysvec+22, yyvstop+375, yycrank+-3414, yysvec+22, yyvstop+377, yycrank+-3419, yysvec+22, yyvstop+379, yycrank+-3482, yysvec+22, yyvstop+381, yycrank+-3485, yysvec+22, yyvstop+383, yycrank+-3499, yysvec+22, yyvstop+385, yycrank+-3525, yysvec+22, yyvstop+387, yycrank+-3553, yysvec+22, yyvstop+389, yycrank+-3579, yysvec+22, yyvstop+392, yycrank+-3593, yysvec+22, yyvstop+395, yycrank+0, 0, yyvstop+397, yycrank+0, 0, yyvstop+399, yycrank+0, 0, yyvstop+401, yycrank+124, 0, 0, yycrank+0, 0, yyvstop+403, yycrank+0, 0, yyvstop+405, yycrank+0, 0, yyvstop+407, yycrank+0, 0, yyvstop+409, yycrank+135, 0, 0, yycrank+-3626, yysvec+22, yyvstop+411, yycrank+-3639, yysvec+22, yyvstop+413, yycrank+-3665, yysvec+22, yyvstop+416, yycrank+-3682, yysvec+22, yyvstop+418, yycrank+-3693, yysvec+22, yyvstop+420, yycrank+-3719, yysvec+22, yyvstop+422, yycrank+-3755, yysvec+22, yyvstop+424, yycrank+-3759, yysvec+22, yyvstop+426, yycrank+-3794, yysvec+22, yyvstop+428, yycrank+-3797, yysvec+22, yyvstop+430, yycrank+-3830, yysvec+22, yyvstop+432, yycrank+-3867, yysvec+22, yyvstop+434, yycrank+-3870, yysvec+22, yyvstop+436, yycrank+-3884, yysvec+22, yyvstop+438, yycrank+-3910, yysvec+22, yyvstop+440, yycrank+-3925, yysvec+22, yyvstop+442, yycrank+-3958, yysvec+22, yyvstop+444, yycrank+-3972, yysvec+22, yyvstop+446, yycrank+-4005, yysvec+22, yyvstop+448, yycrank+-4020, yysvec+22, yyvstop+450, yycrank+-4059, yysvec+22, yyvstop+452, yycrank+-4074, yysvec+22, yyvstop+454, yycrank+-4085, yysvec+22, yyvstop+456, yycrank+-4100, yysvec+22, yyvstop+458, yycrank+-4113, yysvec+22, yyvstop+460, yycrank+-4139, yysvec+22, yyvstop+463, yycrank+-4180, yysvec+22, yyvstop+465, yycrank+-4185, yysvec+22, yyvstop+467, yycrank+0, 0, yyvstop+469, yycrank+135, 0, 0, yycrank+-4213, yysvec+22, yyvstop+471, yycrank+-4218, yysvec+22, yyvstop+473, yycrank+-4253, yysvec+22, yyvstop+475, yycrank+-4281, yysvec+22, yyvstop+477, yycrank+-4292, yysvec+22, yyvstop+479, yycrank+-4307, yysvec+22, yyvstop+482, yycrank+-4346, yysvec+22, yyvstop+484, yycrank+-4361, yysvec+22, yyvstop+486, yycrank+-4387, yysvec+22, yyvstop+488, yycrank+-4401, yysvec+22, yyvstop+490, yycrank+-4404, yysvec+22, yyvstop+492, yycrank+-4415, yysvec+22, yyvstop+494, yycrank+-4473, yysvec+22, yyvstop+496, yycrank+-4477, yysvec+22, yyvstop+498, yycrank+-4510, yysvec+22, yyvstop+500, yycrank+-4513, yysvec+22, yyvstop+502, yycrank+-4546, yysvec+22, yyvstop+505, yycrank+-4549, yysvec+22, yyvstop+508, yycrank+-4582, yysvec+22, yyvstop+510, yycrank+-4585, yysvec+22, yyvstop+512, yycrank+-4620, yysvec+22, yyvstop+514, yycrank+-4653, yysvec+22, yyvstop+516, yycrank+-4656, yysvec+22, yyvstop+518, yycrank+-4691, yysvec+22, yyvstop+520, yycrank+-4694, yysvec+22, yyvstop+522, yycrank+-4729, yysvec+22, yyvstop+524, yycrank+-4732, yysvec+22, yyvstop+526, yycrank+0, 0, yyvstop+529, yycrank+-4765, yysvec+22, yyvstop+531, yycrank+-4768, yysvec+22, yyvstop+533, yycrank+-4801, yysvec+22, yyvstop+535, yycrank+-4804, yysvec+22, yyvstop+537, yycrank+-4839, yysvec+22, yyvstop+539, yycrank+-4843, yysvec+22, yyvstop+541, yycrank+-4876, yysvec+22, yyvstop+543, yycrank+-4915, yysvec+22, yyvstop+545, yycrank+-4918, yysvec+22, yyvstop+547, yycrank+-4930, yysvec+22, yyvstop+549, yycrank+-4956, yysvec+22, yyvstop+551, yycrank+-4992, yysvec+22, yyvstop+553, yycrank+-5004, yysvec+22, yyvstop+555, yycrank+-5018, yysvec+22, yyvstop+557, yycrank+-5032, yysvec+22, yyvstop+559, yycrank+-5046, yysvec+22, yyvstop+561, yycrank+-5058, yysvec+22, yyvstop+563, yycrank+-5104, yysvec+22, yyvstop+565, yycrank+-5118, yysvec+22, yyvstop+568, yycrank+-5121, yysvec+22, yyvstop+570, yycrank+-5158, yysvec+22, yyvstop+572, yycrank+-5184, yysvec+22, yyvstop+574, yycrank+-5194, yysvec+22, yyvstop+577, yycrank+-5222, yysvec+22, yyvstop+579, yycrank+-5227, yysvec+22, yyvstop+581, yycrank+-5238, yysvec+22, yyvstop+583, yycrank+-5282, yysvec+22, yyvstop+585, yycrank+-5285, yysvec+22, yyvstop+587, yycrank+-5296, yysvec+22, yyvstop+589, yycrank+-5350, yysvec+22, yyvstop+591, yycrank+-5360, yysvec+22, yyvstop+593, yycrank+-5376, yysvec+22, yyvstop+595, yycrank+-5386, yysvec+22, yyvstop+597, yycrank+-5414, yysvec+22, yyvstop+599, yycrank+-5449, yysvec+22, yyvstop+602, yycrank+-5461, yysvec+22, yyvstop+604, yycrank+-5487, yysvec+22, yyvstop+607, yycrank+-5503, yysvec+22, yyvstop+609, yycrank+-5529, yysvec+22, yyvstop+611, yycrank+-5541, yysvec+22, yyvstop+613, yycrank+-5574, yysvec+22, yyvstop+615, yycrank+-5589, yysvec+22, yyvstop+617, yycrank+-5615, yysvec+22, yyvstop+619, yycrank+-5630, yysvec+22, yyvstop+621, yycrank+-5643, yysvec+22, yyvstop+623, yycrank+-5669, yysvec+22, yyvstop+625, yycrank+-5685, yysvec+22, yyvstop+627, yycrank+-5731, yysvec+22, yyvstop+630, yycrank+-5741, yysvec+22, yyvstop+632, yycrank+-5774, yysvec+22, yyvstop+634, yycrank+-5757, yysvec+22, yyvstop+636, yycrank+-5811, yysvec+22, yyvstop+639, yycrank+-5828, yysvec+22, yyvstop+641, yycrank+-5844, yysvec+22, yyvstop+643, yycrank+-5854, yysvec+22, yyvstop+645, yycrank+-5891, yysvec+22, yyvstop+647, yycrank+-5902, yysvec+22, yyvstop+649, yycrank+-5930, yysvec+22, yyvstop+651, yycrank+-5956, yysvec+22, yyvstop+653, yycrank+-5966, yysvec+22, yyvstop+655, yycrank+-5970, yysvec+22, yyvstop+657, yycrank+-6024, yysvec+22, yyvstop+659, yycrank+-6035, yysvec+22, yyvstop+661, yycrank+-6063, yysvec+22, yyvstop+663, yycrank+-6068, yysvec+22, yyvstop+665, yycrank+-6078, yysvec+22, yyvstop+667, yycrank+-6104, yysvec+22, yyvstop+669, yycrank+-6140, yysvec+22, yyvstop+671, yycrank+-6143, yysvec+22, yyvstop+673, yycrank+-6176, yysvec+22, yyvstop+675, yycrank+-6179, yysvec+22, yyvstop+677, yycrank+-6212, yysvec+22, yyvstop+679, yycrank+-6216, yysvec+22, yyvstop+681, yycrank+-6249, yysvec+22, yyvstop+683, yycrank+-6252, yysvec+22, yyvstop+685, yycrank+-6285, yysvec+22, yyvstop+687, yycrank+-6322, yysvec+22, yyvstop+689, yycrank+-6326, yysvec+22, yyvstop+691, yycrank+-6359, yysvec+22, yyvstop+693, yycrank+-6363, yysvec+22, yyvstop+695, yycrank+-6396, yysvec+22, yyvstop+697, yycrank+-6400, yysvec+22, yyvstop+699, yycrank+-6433, yysvec+22, yyvstop+701, yycrank+-6437, yysvec+22, yyvstop+703, yycrank+-6472, yysvec+22, yyvstop+705, yycrank+-6500, yysvec+22, yyvstop+707, yycrank+-6510, yysvec+22, yyvstop+709, yycrank+-6505, yysvec+22, yyvstop+711, yycrank+-6545, yysvec+22, yyvstop+713, yycrank+-6548, yysvec+22, yyvstop+715, yycrank+-6585, yysvec+22, yyvstop+717, yycrank+-6590, yysvec+22, yyvstop+719, yycrank+-6618, yysvec+22, yyvstop+721, yycrank+-6623, yysvec+22, yyvstop+723, yycrank+-6633, yysvec+22, yyvstop+725, yycrank+-6659, yysvec+22, yyvstop+727, yycrank+-6695, yysvec+22, yyvstop+729, yycrank+-6723, yysvec+22, yyvstop+731, yycrank+-6737, yysvec+22, yyvstop+733, yycrank+-6763, yysvec+22, yyvstop+735, yycrank+-6791, yysvec+22, yyvstop+737, yycrank+-6802, yysvec+22, yyvstop+740, yycrank+-6817, yysvec+22, yyvstop+742, yycrank+-6856, yysvec+22, yyvstop+745, yycrank+-6871, yysvec+22, yyvstop+747, yycrank+-6882, yysvec+22, yyvstop+749, yycrank+-6897, yysvec+22, yyvstop+751, yycrank+-6910, yysvec+22, yyvstop+753, yycrank+-6936, yysvec+22, yyvstop+756, yycrank+-6951, yysvec+22, yyvstop+759, yycrank+-6984, yysvec+22, yyvstop+761, yycrank+-6996, yysvec+22, yyvstop+763, yycrank+-6999, yysvec+22, yyvstop+765, yycrank+-7044, yysvec+22, yyvstop+767, yycrank+-7054, yysvec+22, yyvstop+769, yycrank+-7070, yysvec+22, yyvstop+771, yycrank+-7098, yysvec+22, yyvstop+773, yycrank+-7109, yysvec+22, yyvstop+775, yycrank+-7114, yysvec+22, yyvstop+777, yycrank+-7142, yysvec+22, yyvstop+779, yycrank+-7177, yysvec+22, yyvstop+781, yycrank+-7187, yysvec+22, yyvstop+783, yycrank+-7220, yysvec+22, yyvstop+785, yycrank+-7231, yysvec+22, yyvstop+787, yycrank+-7267, yysvec+22, yyvstop+789, yycrank+-7278, yysvec+22, yyvstop+791, yycrank+-7295, yysvec+22, yyvstop+794, yycrank+-7306, yysvec+22, yyvstop+797, yycrank+-7321, yysvec+22, yyvstop+799, yycrank+-7334, yysvec+22, yyvstop+801, yycrank+-7369, yysvec+22, yyvstop+803, yycrank+-7381, yysvec+22, yyvstop+806, yycrank+-7397, yysvec+22, yyvstop+809, yycrank+-7409, yysvec+22, yyvstop+811, yycrank+-7423, yysvec+22, yyvstop+814, yycrank+-7435, yysvec+22, yyvstop+816, yycrank+-7471, yysvec+22, yyvstop+818, yycrank+-7497, yysvec+22, yyvstop+820, yycrank+-7508, yysvec+22, yyvstop+822, yycrank+-7512, yysvec+22, yyvstop+824, yycrank+-7525, yysvec+22, yyvstop+826, yycrank+-7551, yysvec+22, yyvstop+828, yycrank+-7568, yysvec+22, yyvstop+830, yycrank+-7611, yysvec+22, yyvstop+832, yycrank+-7614, yysvec+22, yyvstop+834, yycrank+-7654, yysvec+22, yyvstop+836, yycrank+-7657, yysvec+22, yyvstop+838, yycrank+-7690, yysvec+22, yyvstop+841, yycrank+-7725, yysvec+22, yyvstop+844, yycrank+-7728, yysvec+22, yyvstop+846, yycrank+-7763, yysvec+22, yyvstop+849, yycrank+-7766, yysvec+22, yyvstop+851, yycrank+-7801, yysvec+22, yyvstop+853, yycrank+-7805, yysvec+22, yyvstop+855, yycrank+-7838, yysvec+22, yyvstop+857, yycrank+-7841, yysvec+22, yyvstop+859, yycrank+-7874, yysvec+22, yyvstop+861, yycrank+-7907, yysvec+22, yyvstop+863, yycrank+-7910, yysvec+22, yyvstop+865, yycrank+-7943, yysvec+22, yyvstop+867, yycrank+-7946, yysvec+22, yyvstop+869, yycrank+-7983, yysvec+22, yyvstop+871, yycrank+-8009, yysvec+22, yyvstop+873, yycrank+-8019, yysvec+22, yyvstop+875, yycrank+-8022, yysvec+22, yyvstop+877, yycrank+-8057, yysvec+22, yyvstop+879, yycrank+-8085, yysvec+22, yyvstop+881, yycrank+-8095, yysvec+22, yyvstop+883, yycrank+-8123, yysvec+22, yyvstop+885, yycrank+-8133, yysvec+22, yyvstop+887, yycrank+-8149, yysvec+22, yyvstop+889, yycrank+-8188, yysvec+22, yyvstop+891, yycrank+-8193, yysvec+22, yyvstop+893, yycrank+-8221, yysvec+22, yyvstop+895, yycrank+-8234, yysvec+22, yyvstop+897, yycrank+-8260, yysvec+22, yyvstop+899, yycrank+-8296, yysvec+22, yyvstop+901, yycrank+-8300, yysvec+22, yyvstop+904, yycrank+-8333, yysvec+22, yyvstop+906, yycrank+-8336, yysvec+22, yyvstop+908, yycrank+-8371, yysvec+22, yyvstop+910, yycrank+-8374, yysvec+22, yyvstop+912, yycrank+-8407, yysvec+22, yyvstop+914, yycrank+-8410, yysvec+22, yyvstop+916, yycrank+-8443, yysvec+22, yyvstop+918, yycrank+-8446, yysvec+22, yyvstop+920, yycrank+-8482, yysvec+22, yyvstop+922, yycrank+-8486, yysvec+22, yyvstop+924, yycrank+-8519, yysvec+22, yyvstop+926, yycrank+-8523, yysvec+22, yyvstop+928, yycrank+-8556, yysvec+22, yyvstop+930, yycrank+-8561, yysvec+22, yyvstop+933, yycrank+-8589, yysvec+22, yyvstop+935, yycrank+-8594, yysvec+22, yyvstop+938, yycrank+-8599, yysvec+22, yyvstop+941, yycrank+-8627, yysvec+22, yyvstop+943, yycrank+-8632, yysvec+22, yyvstop+945, yycrank+-8665, yysvec+22, yyvstop+947, yycrank+-8668, yysvec+22, yyvstop+949, yycrank+-8704, yysvec+22, yyvstop+951, yycrank+-8707, yysvec+22, yyvstop+953, yycrank+-8740, yysvec+22, yyvstop+955, yycrank+-8744, yysvec+22, yyvstop+957, yycrank+-8777, yysvec+22, yyvstop+959, yycrank+-8780, yysvec+22, yyvstop+961, yycrank+-8815, yysvec+22, yyvstop+963, yycrank+-8818, yysvec+22, yyvstop+965, yycrank+-8851, yysvec+22, yyvstop+967, yycrank+-8854, yysvec+22, yyvstop+969, yycrank+-8891, yysvec+22, yyvstop+971, yycrank+-8895, yysvec+22, yyvstop+973, yycrank+-8928, yysvec+22, yyvstop+975, yycrank+-8939, yysvec+22, yyvstop+977, yycrank+-8965, yysvec+22, yyvstop+979, yycrank+-8982, yysvec+22, yyvstop+981, yycrank+-9008, yysvec+22, yyvstop+983, yycrank+-9019, yysvec+22, yyvstop+986, yycrank+-9036, yysvec+22, yyvstop+988, yycrank+-9052, yysvec+22, yyvstop+990, yycrank+-9062, yysvec+22, yyvstop+992, yycrank+-9098, yysvec+22, yyvstop+994, yycrank+-9108, yysvec+22, yyvstop+996, yycrank+-9124, yysvec+22, yyvstop+998, yycrank+-9162, yysvec+22, yyvstop+1000, yycrank+-9178, yysvec+22, yyvstop+1002, yycrank+-9188, yysvec+22, yyvstop+1004, yycrank+-9226, yysvec+22, yyvstop+1006, yycrank+-9236, yysvec+22, yyvstop+1008, yycrank+-9264, yysvec+22, yyvstop+1010, yycrank+-9274, yysvec+22, yyvstop+1012, yycrank+-9290, yysvec+22, yyvstop+1014, yycrank+-9302, yysvec+22, yyvstop+1016, yycrank+-9328, yysvec+22, yyvstop+1018, yycrank+-9344, yysvec+22, yyvstop+1020, yycrank+-9388, yysvec+22, yyvstop+1022, yycrank+-9392, yysvec+22, yyvstop+1024, yycrank+-9402, yysvec+22, yyvstop+1027, yycrank+-9430, yysvec+22, yyvstop+1030, yycrank+-9435, yysvec+22, yyvstop+1032, yycrank+-9446, yysvec+22, yyvstop+1034, yycrank+-9490, yysvec+22, yyvstop+1036, yycrank+-9501, yysvec+22, yyvstop+1038, yycrank+-9544, yysvec+22, yyvstop+1040, yycrank+-9548, yysvec+22, yyvstop+1042, yycrank+-9586, yysvec+22, yyvstop+1044, yycrank+-9589, yysvec+22, yyvstop+1046, yycrank+-9624, yysvec+22, yyvstop+1048, yycrank+-9634, yysvec+22, yyvstop+1051, yycrank+-9678, yysvec+22, yyvstop+1054, yycrank+-9682, yysvec+22, yyvstop+1057, yycrank+-9719, yysvec+22, yyvstop+1059, yycrank+-9722, yysvec+22, yyvstop+1061, yycrank+-9755, yysvec+22, yyvstop+1063, yycrank+-9758, yysvec+22, yyvstop+1065, yycrank+-9795, yysvec+22, yyvstop+1068, yycrank+-9798, yysvec+22, yyvstop+1070, yycrank+-9831, yysvec+22, yyvstop+1072, yycrank+-9834, yysvec+22, yyvstop+1075, yycrank+-9867, yysvec+22, yyvstop+1078, yycrank+-9870, yysvec+22, yyvstop+1080, yycrank+-9906, yysvec+22, yyvstop+1083, yycrank+-9909, yysvec+22, yyvstop+1085, yycrank+-9942, yysvec+22, yyvstop+1088, 0, 0, 0}; struct yywork *yytop = yycrank+10035; struct yysvf *yybgin = yysvec+1; char yymatch[] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 9, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 34, 1, 1, 1, 1, 1, 40, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 40, 1, 40, 1, 1, 1, 65, 1, 67, 1, 69, 1, 1, 72, 73, 1, 1, 76, 77, 78, 79, 80, 1, 1, 83, 1, 85, 86, 87, 1, 89, 1, 40, 1, 40, 1, 1, 1, 97, 1, 67, 86, 69, 86, 1, 72, 73, 1, 1, 76, 77, 78, 79, 80, 1, 1, 83, 86, 85, 1, 87, 1, 89, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; char yyextra[] = { 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}; /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* Copyright (c) 1989 AT&T */ /* All Rights Reserved */ #pragma ident "%Z%%M% %I% %E% SMI" int yylineno =1; # define YYU(x) x # define NLSTATE yyprevious=YYNEWLINE struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; char yysbuf[YYLMAX]; char *yysptr = yysbuf; int *yyfnd; extern struct yysvf *yyestate; int yyprevious = YYNEWLINE; #if defined(__cplusplus) || defined(__STDC__) int yylook(void) #else yylook() #endif { register struct yysvf *yystate, **lsp; register struct yywork *yyt; struct yysvf *yyz; int yych, yyfirst; struct yywork *yyr; # ifdef LEXDEBUG int debug; # endif char *yylastch; /* start off machines */ # ifdef LEXDEBUG debug = 0; # endif yyfirst=1; 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 && !yyfirst){ /* may not be any transitions */ yyz = yystate->yyother; if(yyz == 0)break; if(yyz->yystoff == yycrank)break; } #ifndef __cplusplus *yylastch++ = yych = input(); #else *yylastch++ = yych = lex_input(); #endif #ifdef YYISARRAY if(yylastch > &yytext[YYLMAX]) { fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); exit(1); } #else if (yylastch >= &yytext[ yytextsz ]) { int x = yylastch - yytext; yytextsz += YYTEXTSZINC; if (yytext == yy_tbuf) { yytext = (char *) malloc(yytextsz); memcpy(yytext, yy_tbuf, sizeof (yy_tbuf)); } else yytext = (char *) realloc(yytext, yytextsz); if (!yytext) { fprintf(yyout, "Cannot realloc yytext\n"); exit(1); } yylastch = yytext + x; } #endif yyfirst=0; tryagain: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"char "); allprint(yych); putchar('\n'); } # endif yyr = yyt; if ( (uintptr_t)yyt > (uintptr_t)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; if(lsp > &yylstate[YYLMAX]) { fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); exit(1); } goto contin; } } # ifdef YYOPTIM else if((uintptr_t)yyt < (uintptr_t)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; if(lsp > &yylstate[YYLMAX]) { fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); exit(1); } 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; if(lsp > &yylstate[YYLMAX]) { fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); exit(1); } 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); } #ifndef __cplusplus yyprevious = yytext[0] = input(); if (yyprevious>0) output(yyprevious); #else yyprevious = yytext[0] = lex_input(); if (yyprevious>0) lex_output(yyprevious); #endif yylastch=yytext; # ifdef LEXDEBUG if(debug)putchar('\n'); # endif } } #if defined(__cplusplus) || defined(__STDC__) int yyback(int *p, int m) #else yyback(p, m) int *p; #endif { if (p==0) return(0); while (*p) { if (*p++ == m) return(1); } return(0); } /* the following are only used in the lex library */ #if defined(__cplusplus) || defined(__STDC__) int yyinput(void) #else yyinput() #endif { #ifndef __cplusplus return(input()); #else return(lex_input()); #endif } #if defined(__cplusplus) || defined(__STDC__) void yyoutput(int c) #else yyoutput(c) int c; #endif { #ifndef __cplusplus output(c); #else lex_output(c); #endif } #if defined(__cplusplus) || defined(__STDC__) void yyunput(int c) #else yyunput(c) int c; #endif { unput(c); }