#line 3 "" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define yy_create_buffer codeYY_create_buffer #define yy_delete_buffer codeYY_delete_buffer #define yy_flex_debug codeYY_flex_debug #define yy_init_buffer codeYY_init_buffer #define yy_flush_buffer codeYY_flush_buffer #define yy_load_buffer_state codeYY_load_buffer_state #define yy_switch_to_buffer codeYY_switch_to_buffer #define yyin codeYYin #define yyleng codeYYleng #define yylex codeYYlex #define yylineno codeYYlineno #define yyout codeYYout #define yyrestart codeYYrestart #define yytext codeYYtext #define yywrap codeYYwrap #define yyalloc codeYYalloc #define yyrealloc codeYYrealloc #define yyfree codeYYfree #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE codeYYrestart(codeYYin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 262144 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif extern yy_size_t codeYYleng; extern FILE *codeYYin, *codeYYout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up codeYYtext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via codeYYrestart()), so that the user can continue scanning by * just pointing codeYYin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when codeYYtext is formed. */ static char yy_hold_char; static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ yy_size_t codeYYleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow codeYYwrap()'s to do buffer switches * instead of setting up a fresh codeYYin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void codeYYrestart (FILE *input_file ); void codeYY_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE codeYY_create_buffer (FILE *file,int size ); void codeYY_delete_buffer (YY_BUFFER_STATE b ); void codeYY_flush_buffer (YY_BUFFER_STATE b ); void codeYYpush_buffer_state (YY_BUFFER_STATE new_buffer ); void codeYYpop_buffer_state (void ); static void codeYYensure_buffer_stack (void ); static void codeYY_load_buffer_state (void ); static void codeYY_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER codeYY_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE codeYY_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE codeYY_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE codeYY_scan_bytes (yyconst char *bytes,yy_size_t len ); void *codeYYalloc (yy_size_t ); void *codeYYrealloc (void *,yy_size_t ); void codeYYfree (void * ); #define yy_new_buffer codeYY_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ codeYYensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ codeYY_create_buffer(codeYYin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ codeYYensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ codeYY_create_buffer(codeYYin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define codeYYwrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; FILE *codeYYin = (FILE *) 0, *codeYYout = (FILE *) 0; typedef int yy_state_type; extern int codeYYlineno; int codeYYlineno = 1; extern char *codeYYtext; #define yytext_ptr codeYYtext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up codeYYtext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ codeYYleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 189 #define YY_END_OF_BUFFER 190 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_acclist[6086] = { 0, 86, 86, 87, 87, 77, 77, 134, 134, 110, 110, 190, 188, 189, 187, 189, 1, 188, 189, 185, 188, 189, 186, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 86, 188, 189, 89, 188, 189, 86, 185, 188, 189, 86, 186, 188, 189, 86, 188, 189, 86, 188, 189, 188, 189, 86, 188, 189, 86, 188, 189, 87, 188, 189, 90, 188, 189, 87, 185, 188, 189, 87, 186, 188, 189, 87, 188, 189, 87, 188, 189, 87, 188, 189, 87, 188, 189, 92, 95, 188, 189, 96, 187, 189, 1, 92, 95, 188, 189, 94, 95, 188, 189, 92, 95, 185, 188, 189, 92, 95, 186, 188, 189, 92, 95, 188, 189, 92, 95, 188, 189, 92, 95, 188, 189, 92, 95, 188, 189, 23, 24, 188, 189, 187, 189, 1, 23, 24, 188, 189, 23, 24, 185, 188, 189, 23, 24, 186, 188, 189, 23, 188, 189, 23, 24, 188, 189, 23, 188, 189, 23, 24, 188, 189, 23, 188, 189, 155, 188, 189, 155, 188, 189, 1, 155, 188, 189, 155, 185, 188, 189, 155, 186, 188, 189, 188, 189, 188, 189, 155, 188, 189, 155, 188, 189, 188, 189, 158, 161, 188, 189, 160, 187, 189, 1, 159, 161, 188, 189, 158, 161, 185, 188, 189, 158, 161, 186, 188, 189, 158, 161, 188, 189, 158, 161, 188, 189, 158, 161, 188, 189, 158, 161, 188, 189, 158, 161, 188, 189, 165, 168, 188, 189, 167, 187, 189, 1, 165, 168, 188, 189, 165, 168, 185, 188, 189, 165, 168, 186, 188, 189, 168, 188, 189, 165, 168, 188, 189, 165, 168, 188, 189, 165, 168, 188, 189, 165, 168, 188, 189, 188, 189, 187, 189, 1, 188, 189, 67, 188, 189, 84, 188, 189, 188, 189, 85, 188, 189, 185, 188, 189, 67, 186, 188, 189, 9, 67, 188, 189, 104, 188, 189, 9, 67, 188, 189, 101, 188, 189, 67, 188, 189, 123, 188, 189, 97, 188, 189, 98, 188, 189, 99, 188, 189, 188, 189, 8273, 188, 189,16464,16465, 16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189, 16464,16465,16467, 104, 185, 188, 189, 122, 186, 188, 189, 8273, 188, 189,16464,16465,16467, 8273, 188, 189, 16464,16465,16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189,16464,16465, 16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189, 16464,16465,16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189,16464,16465, 16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189, 16464,16465,16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189,16464,16465, 16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189, 16464,16465,16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189,16464,16465,16467, 8273, 188, 189,16464,16465, 16467, 27, 188, 189, 28, 188, 189, 67, 188, 189, 188, 189, 22, 188, 189, 67, 188, 189, 132, 188, 189, 188, 189, 132, 188, 189, 132, 188, 189, 131, 185, 188, 189, 133, 186, 188, 189, 132, 188, 189, 132, 188, 189, 130, 188, 189, 132, 188, 189, 132, 188, 189, 129, 188, 189, 132, 188, 189, 132, 188, 189, 132, 188, 189, 188, 189, 128, 188, 189,16532, 128, 188, 189,16532, 132, 188, 189, 128, 188, 189, 16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189, 16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189, 16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189, 16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189,16532, 128, 188, 189,16532, 132, 188, 189, 132, 188, 189, 132, 188, 189, 169, 188, 189, 169, 188, 189, 187, 189, 1, 169, 188, 189, 84, 169, 188, 189, 169, 188, 189, 85, 169, 188, 189, 133, 169, 186, 188, 189, 169, 188, 189, 169, 188, 189, 169, 188, 189, 8295, 188, 189,16486,16487, 169, 185, 188, 189, 169, 186, 188, 189, 28, 169, 188, 189, 169, 188, 189, 8295, 169, 188, 189,16486,16487, 169, 188, 189, 169, 188, 189, 188, 189, 132, 188, 189, 152, 188, 189, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 128, 188, 189,16534,16535, 188, 189, 85, 188, 189, 144, 188, 189, 146, 188, 189, 145, 188, 189, 188, 189, 188, 189, 31, 188, 189, 39, 188, 189, 30, 188, 189, 33, 188, 189, 33, 188, 189, 41, 188, 189, 188, 189, 188, 189, 188, 189, 40, 188, 189, 34, 188, 189, 188, 189, 8, 187, 189, 188, 189, 9, 188, 189, 35, 188, 189, 188, 189, 38, 188, 189, 38, 188, 189, 38, 188, 189, 38, 188, 189, 38, 188, 189, 188, 189, 188, 189, 48, 185, 188, 189, 51, 188, 189, 44, 188, 189, 45, 188, 189, 188, 189, 43, 188, 189, 43, 188, 189, 43, 188, 189, 188, 189, 22, 188, 189, 49, 185, 188, 189, 50, 186, 188, 189, 46, 188, 189, 47, 188, 189, 188, 189, 16405, 1, 188, 189,16405, 185, 188, 189,16405, 186, 188, 189,16405, 188, 189,16405, 188, 189,16405, 188, 189,16405, 188, 189,16405, 72, 188, 189, 73, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 188, 189, 187, 189, 1, 188, 189, 188, 189, 77, 188, 189, 188, 189, 74, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 75, 188, 189, 188, 189, 188, 189, 143, 188, 189, 134, 143, 188, 189, 134, 187, 189, 1, 143, 188, 189, 142, 143, 188, 189, 143, 188, 189, 143, 185, 188, 189, 143, 186, 188, 189, 143, 188, 189, 135, 143, 188, 189, 143, 188, 189, 139, 143, 188, 189, 139, 143, 188, 189, 139, 143, 188, 189, 139, 143, 188, 189, 139, 143, 188, 189, 139, 143, 188, 189, 137, 143, 188, 189, 134, 143, 188, 189, 143, 188, 189, 19, 188, 189, 20, 187, 189, 1, 19, 188, 189, 19, 188, 189, 19, 185, 188, 189, 19, 186, 188, 189, 19, 188, 189, 10, 19, 188, 189, 12, 19, 188, 189, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 18, 19, 188, 189, 19, 188, 189, 19, 188, 189, 19, 188, 189, 11, 19, 185, 188, 189, 17, 18, 19, 188, 189, 19, 188, 189, 16, 19, 186, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 15, 18, 19, 188, 189, 120, 188, 189, 121, 187, 189, 1, 120, 188, 189, 114, 120, 188, 189, 115, 120, 188, 189, 120, 188, 189, 116, 120, 185, 188, 189, 117, 120, 186, 188, 189, 120, 188, 189, 120, 188, 189, 107, 119, 120, 188, 189, 105, 120, 185, 188, 189, 106, 120, 186, 188, 189, 120, 188, 189, 120, 188, 189, 115, 120, 188, 189, 119, 120, 188, 189,16492,16493, 110, 120, 188, 189, 1, 110, 120, 188, 189, 112, 120, 188, 189, 115, 120, 188, 189, 110, 120, 185, 188, 189, 110, 120, 186, 188, 189, 110, 120, 188, 189, 110, 120, 188, 189, 110, 119, 120, 188, 189, 120, 188, 189, 110, 120, 188, 189, 110, 120, 188, 189, 188, 189, 187, 189, 1, 188, 189, 142, 188, 189, 188, 189, 141, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 140, 188, 189, 137, 188, 189, 188, 189, 58, 188, 189, 57, 187, 189, 1, 58, 188, 189, 58, 188, 189, 58, 185, 188, 189, 58, 186, 188, 189, 58, 188, 189, 58, 188, 189, 56, 58, 188, 189, 58, 188, 189, 58, 188, 189, 182, 184, 183, 182, 184, 86, 86, 88, 182, 86, 88, 184, 89, 183, 91, 86, 86, 86, 88, 182, 86, 88, 184, 87, 87, 88, 182, 87, 88, 184, 87, 183, 87, 87, 87, 88, 182, 87, 88, 184, 92, 93, 92, 182, 92, 184, 92, 92, 92, 182, 92, 184, 24, 171, 26, 184, 24, 183, 25, 24, 26, 184, 155, 155, 156, 154, 182, 154, 184, 155, 183, 155, 154, 182, 154, 184, 158, 158, 158, 182, 158, 184, 158, 183, 157, 158, 158, 158, 182, 158, 184, 165, 164, 166, 182, 165, 166, 184, 165, 183, 165, 165, 166, 182, 165, 166, 184, 8273,16464,16465,16467, 8273,16464, 16465,16467, 101, 123, 8273, 8275, 8272, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8258, 8273,16448,16450,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8260, 8273,16452,16464,16465,16467, 8258, 8273, 16448,16450,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 22, 132, 128,16532, 128,16532, 132, 132, 132, 132, 147, 8340, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 63, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 8295,16486,16487, 8295, 8294, 8295,16486,16487, 8295,16486,16487, 128,16534,16535, 152, 8342, 8343, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 146, 146, 39, 41, 33, 31, 39, 33, 33, 41, 40, 34, 34, 38, 38, 38, 38, 38, 38, 43, 43, 43, 43, 43, 22,16405, 8213, 182,16405, 184,16405, 8213, 183,16405,16405, 182,16405, 184,16405, 8260,16452, 75, 77, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 134, 137, 134, 139, 139, 139, 139, 139, 139, 139, 134, 18, 18, 18, 18, 18, 18, 18, 18, 8260,16452, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 18, 17, 18, 13, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 14, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 107, 119, 114, 183, 107, 119, 119, 16492,16493, 119,16492,16493, 8301, 8300, 110, 119, 110, 182, 110, 184, 118, 183, 110, 119, 111, 110, 110, 110, 182, 110, 184, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 56, 56, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 163, 165, 165, 165, 165, 8273,16464,16465, 8273,16464,16465,16467, 8273,16464, 16465, 100, 100, 8274,16466, 124, 8271,16463, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8253, 8273,16445,16446,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 65, 65, 8258, 8273, 65, 8256, 65, 8275, 65, 8272, 65, 65, 8273,16464,16465,16467, 65, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8258, 8273, 16448,16450,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8260, 8273, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8260, 8273,16452,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 8273,16464,16465,16467, 128,16532,16533, 128, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 127, 127, 127, 147, 127, 127, 8340, 127, 127, 128,16532, 127, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 126, 126, 126, 147, 126, 126, 8340, 126, 126, 126, 128,16532, 128,16532, 63, 63, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 8295,16487, 8295,16487, 8295, 8295, 16486,16487, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 127, 127, 127, 8342, 127, 127, 8343, 128,16534,16535, 127, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 126, 126, 126, 8342, 126, 126, 8343, 126, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 33, 34, 38, 38, 38, 38, 43, 43, 43, 43,16405,16405, 16405,16405,16405,16405,16405,16405,16405,16405, 8260, 8271, 16463, 75, 75, 75, 75, 75, 126, 126, 126, 126, 75, 126, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 139, 139, 139, 138, 139, 139, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 113, 119, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 140, 140, 140, 140, 140, 126, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 180, 181, 177, 179, 180, 175, 176, 177, 86, 180, 86, 86, 181, 86, 86, 86, 86, 179, 180, 86, 175, 86, 86, 87, 180, 87, 87, 181, 87, 87, 87, 87, 179, 180, 87, 175, 87, 87, 92, 180, 92, 92, 181, 92, 92, 92, 92, 179, 180, 92, 175, 92, 92, 153, 181, 158, 180, 158, 158, 180, 158, 181, 158, 158, 158, 158, 158, 179, 180, 158, 179, 180, 158, 175, 158, 158, 158, 163, 165, 165, 165, 165, 8273, 8273,16464,16465, 8273,16464,16465,16467, 8273, 8273, 16464,16465, 8274, 29, 8253,16445,16446, 8258,16448,16450, 8273,16464,16465,16467, 8271, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 60, 60, 8253, 8273, 60, 60, 8254, 8275, 60, 8272, 60, 60, 60, 8273,16464,16465,16467, 8260, 8273, 16452,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8258, 8273, 8256, 8275, 8273,16464,16465,16467, 8273,16464,16465,16467, 8253, 8273,16445,16446,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 65, 8258, 8273, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8253, 8273,16445,16446,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 128,16532,16533, 8341, 128, 128,16532, 128,16532, 128, 16532, 125, 125, 125, 147, 125, 125, 8340, 125, 125, 125, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 127, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 8295, 8295,16487, 8295, 8295,16487, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 125, 125, 125, 8342, 125, 125, 8343, 125, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 127, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 33, 33, 34, 29, 38, 38, 38, 38, 43, 43, 43, 43, 180,16405, 8213, 180,16405, 181, 16405,16405, 8213,16405,16405, 179, 180,16405, 8213, 179, 180, 175,16405,16405, 8213,16405, 8260,16452, 75, 8271, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 139, 139, 139, 139, 18, 8260,16452, 18, 18, 18, 18, 18, 18, 18, 18, 18, 14, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 113, 110, 180, 110, 110, 181, 110, 110, 110, 110, 179, 180, 110, 175, 110, 110, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 56, 178, 173, 170, 179, 176, 174, 86, 179, 86, 86, 87, 179, 87, 87, 92, 179, 92, 92, 178, 171, 178, 173, 170, 171, 157, 177, 158, 179, 158, 179, 158, 158, 157, 176, 177, 158, 158, 165, 165, 8273, 16464,16465,16467, 60, 8253, 60, 60, 8254, 65, 8258, 65, 8256, 65, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8253, 8273, 8254, 8275, 8273,16464,16465, 16467, 8253, 8273,16445,16446,16464,16465,16467, 8253, 8273, 16445,16446,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 60, 8253, 8273, 8197, 8273, 16389,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8253, 8273,16445,16446,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 60, 59, 60, 8258, 8273,16448,16450,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8253, 8273,16445,16446,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 128,16532, 128, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 125, 59, 125, 8340, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 33, 33, 38, 38, 38, 38, 43, 43, 43, 43, 179,16405, 8213, 179,16405, 8213,16405, 8213, 71, 75, 75, 75, 76, 75, 75, 75, 75, 75, 75, 75, 75, 139, 16520, 139, 139, 139, 18, 18, 18, 18, 18, 18, 18, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 15, 18, 110, 179, 110, 110, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 56, 172, 171, 172, 157, 176, 157, 174, 59, 8253,16445,16446, 8253, 8254, 8258, 8256, 8273,16464,16465,16467, 8271,16463,16467, 8271,16463,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 6, 60, 8253, 8273, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8253, 8273, 8197, 8273, 8197, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8253, 8273,16445,16446,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8253, 8273, 16445,16446,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 60, 8253, 8273, 60, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 59, 8340, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532,16486, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 33, 38, 38, 38, 38,16421, 43, 43, 42, 43, 43, 8271,16463, 75, 76, 75, 75, 75, 8328, 139, 139, 139, 139, 139, 139, 139, 18, 18, 18, 15, 18, 15, 18, 15, 18, 140, 140, 140, 140, 140, 140, 140, 140, 140, 162, 8273,16464,16465,16467, 16467,16467, 8271, 8271,16463,16467, 8271,16463,16467,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 6, 8253, 8273, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8253, 8273,16445,16446,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 60, 8253, 8273, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8253, 8273, 8273,16464,16465,16467, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532,16486,16486, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 128,16534,16535, 128,16534, 16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 128,16534,16535, 33, 38, 36, 38, 38, 8229, 42, 43, 8271,16463, 75, 75, 139, 139, 139, 139, 139, 139, 139, 18, 15, 18, 140, 140, 140, 140, 163, 8273,16464,16465,16467,16467,16467, 8271,16463, 16467,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 54, 60, 54, 60, 8253, 8273, 54, 60, 54, 60, 8254, 8275, 54, 60, 8272, 54, 60, 54, 60, 54, 8273,16464,16465,16467, 54, 60, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464, 16465,16467, 8253, 8273,16445,16446,16464,16465,16467, 7, 8273, 7, 8273, 8273,16464,16465,16467, 8253, 8273, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465, 16467, 8253, 8273,16445,16446,16464,16465,16467, 8273,16464, 16465,16467, 2, 128,16532, 128,16532, 128,16532, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532,16486, 128,16534,16535, 128,16534,16535, 128,16534,16535, 128, 16534,16535, 33, 38, 43, 54, 139, 139, 139, 139, 139, 8253,16445,16446, 8273,16464,16465,16467,16467, 8271, 16463,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8253, 8273, 69, 8271,16463, 60, 60, 8253, 8273, 60, 60, 8254, 8275, 60, 8272, 8273, 16464,16465,16467, 60, 60, 60, 8273,16464,16465,16467, 4, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 54, 60, 8253, 8273, 54, 60, 128, 16532, 128,16532, 128,16532, 128,16532, 128,16532, 128, 16534,16535, 33, 38, 139, 139, 139, 139, 139, 3, 60, 8253, 3, 60, 8273,16464,16465,16467,16467, 8271, 16463,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 69, 8271,16463, 69, 8271, 53, 8253, 8273, 53, 8254, 8275, 8272, 53, 8254, 8275, 8273, 53, 8275, 53, 8271,16463, 8273,16464,16465,16467, 8273, 16464,16465,16467, 8273,16464,16465,16467, 8253, 8273, 70, 8271,16463, 128,16532, 128,16532, 128,16532, 128,16532, 128,16532, 128,16534,16535, 33, 139, 139, 139, 139, 139, 3, 8253, 3, 8273,16464,16465,16467,16467, 8271, 16463,16467, 8273,16464,16465,16467, 78, 8273,16464,16465, 16467, 69, 8271, 8271,16463, 52, 8273,16464,16465,16467, 8273,16464,16465,16467, 8271, 8273,16464,16465,16467, 8273, 16464,16465,16467, 70, 8271,16463, 70, 8271, 78, 128, 16532, 128,16532, 128,16532, 128,16534,16535,16520, 139, 139, 8273, 8275,16467, 8271,16463,16467, 8273,16464,16465, 16467, 8271, 8273,16464,16465,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 70, 8271, 128,16532, 139, 139, 53, 8275,16467, 8271,16463,16467, 8273,16464,16465,16467, 8273,16464,16465, 8273,16464,16465,16467, 8273, 8273,16464, 16465,16467, 8271,16463,16467, 8271,16463,16467, 8273,16464, 16465,16467, 128,16532, 32,16467, 8271, 8271,16463,16467, 8273,16464,16465,16467, 8271,16463, 8273, 8273,16464,16465, 8273,16464,16465, 8273,16464,16465,16467,16467,16467, 8271, 8271,16463,16467,16467, 6, 8273,16464,16465,16467, 128, 16532,16467, 8273,16464,16465,16467, 8271,16463, 8273, 8273, 16464,16465, 8273,16464,16465,16467,16467, 8271,16463,16467, 16467, 8273,16464,16465,16467, 128,16532, 8273,16464,16465, 16467, 8273,16464,16465,16467,16467, 8271,16463,16467, 55, 8273,16464,16465,16467, 8273,16464,16465,16467,16467, 8271, 16463,16467, 8273,16464,16465,16467, 8273,16464,16465,16467, 16467, 8271,16463,16467, 8273,16464,16465,16467,16467, 8271, 16463,16467, 8273,16464,16465,16467,16467, 8271,16463,16467, 8273,16464,16465,16467,16467, 8273,16464,16465,16467, 8273, 16464,16465,16467, 6, 8273 } ; static yyconst flex_int16_t yy_accept[3160] = { 0, 1, 1, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, 11, 11, 11, 11, 12, 14, 16, 19, 22, 25, 27, 29, 31, 33, 36, 39, 43, 47, 50, 53, 55, 58, 61, 64, 67, 71, 75, 78, 81, 84, 87, 91, 94, 99, 103, 108, 113, 117, 121, 125, 129, 133, 135, 140, 145, 150, 153, 157, 160, 164, 167, 170, 173, 177, 181, 185, 187, 189, 192, 195, 197, 201, 204, 209, 214, 219, 223, 227, 231, 235, 239, 243, 246, 251, 256, 261, 264, 268, 272, 276, 280, 282, 284, 287, 290, 293, 295, 298, 301, 305, 309, 312, 316, 319, 322, 325, 328, 331, 334, 336, 342, 348, 354, 358, 362, 368, 374, 380, 386, 392, 398, 404, 410, 416, 422, 428, 434, 440, 446, 452, 458, 464, 470, 476, 482, 485, 488, 491, 493, 496, 499, 502, 504, 507, 510, 514, 518, 521, 524, 527, 530, 533, 536, 539, 542, 545, 547, 551, 555, 558, 562, 566, 570, 574, 578, 582, 586, 590, 594, 598, 602, 606, 610, 614, 618, 622, 626, 630, 634, 638, 641, 644, 647, 650, 653, 655, 659, 663, 666, 670, 675, 678, 681, 684, 689, 693, 697, 701, 704, 710, 713, 716, 718, 721, 724, 729, 734, 739, 744, 749, 754, 759, 764, 769, 774, 779, 784, 789, 794, 799, 804, 809, 814, 819, 824, 829, 834, 836, 839, 842, 845, 848, 850, 852, 855, 858, 861, 864, 867, 870, 872, 874, 876, 879, 882, 884, 887, 889, 892, 895, 897, 900, 903, 906, 909, 912, 914, 916, 920, 923, 926, 929, 931, 934, 937, 940, 942, 945, 949, 953, 956, 959, 962, 966, 970, 974, 977, 980, 983, 986, 989, 992, 994, 996, 998, 1000, 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1024, 1027, 1029, 1032, 1034, 1037, 1040, 1043, 1046, 1049, 1052, 1055, 1058, 1061, 1064, 1067, 1070, 1073, 1076, 1078, 1080, 1083, 1087, 1090, 1094, 1098, 1101, 1105, 1109, 1112, 1116, 1119, 1123, 1127, 1131, 1135, 1139, 1143, 1147, 1151, 1154, 1157, 1160, 1164, 1167, 1171, 1175, 1178, 1182, 1186, 1189, 1193, 1197, 1201, 1205, 1209, 1213, 1217, 1221, 1225, 1229, 1233, 1237, 1241, 1244, 1247, 1250, 1255, 1260, 1263, 1268, 1273, 1278, 1283, 1288, 1293, 1298, 1303, 1308, 1313, 1318, 1323, 1328, 1333, 1336, 1339, 1343, 1347, 1351, 1354, 1359, 1364, 1367, 1370, 1375, 1380, 1385, 1388, 1391, 1395, 1401, 1405, 1410, 1414, 1418, 1423, 1428, 1432, 1436, 1441, 1444, 1448, 1452, 1454, 1456, 1459, 1462, 1464, 1467, 1470, 1473, 1476, 1479, 1482, 1485, 1488, 1491, 1494, 1497, 1500, 1503, 1506, 1509, 1511, 1514, 1517, 1521, 1524, 1528, 1532, 1535, 1538, 1542, 1545, 1548, 1548, 1548, 1549, 1550, 1551, 1551, 1551, 1552, 1553, 1554, 1557, 1560, 1562, 1563, 1564, 1565, 1568, 1571, 1572, 1575, 1578, 1580, 1581, 1582, 1585, 1588, 1589, 1590, 1592, 1594, 1595, 1596, 1598, 1600, 1601, 1601, 1601, 1602, 1602, 1604, 1606, 1607, 1607, 1608, 1610, 1611, 1612, 1612, 1613, 1615, 1617, 1619, 1620, 1622, 1624, 1625, 1626, 1628, 1630, 1632, 1633, 1633, 1634, 1635, 1637, 1639, 1640, 1641, 1643, 1646, 1648, 1649, 1650, 1652, 1655, 1655, 1655, 1655, 1655, 1659, 1663, 1663, 1663, 1663, 1663, 1663, 1664, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1666, 1666, 1667, 1668, 1672, 1672, 1672, 1676, 1680, 1684, 1688, 1692, 1696, 1700, 1704, 1708, 1712, 1716, 1720, 1724, 1731, 1735, 1739, 1743, 1747, 1751, 1755, 1759, 1763, 1767, 1771, 1775, 1779, 1783, 1789, 1796, 1800, 1804, 1808, 1812, 1816, 1820, 1824, 1828, 1832, 1836, 1840, 1844, 1848, 1852, 1856, 1860, 1864, 1868, 1872, 1876, 1880, 1884, 1888, 1892, 1896, 1900, 1904, 1908, 1912, 1916, 1920, 1924, 1928, 1928, 1928, 1932, 1932, 1933, 1933, 1933, 1934, 1936, 1938, 1939, 1939, 1939, 1940, 1941, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1943, 1943, 1944, 1946, 1946, 1946, 1948, 1950, 1952, 1954, 1956, 1958, 1960, 1962, 1964, 1966, 1968, 1970, 1972, 1974, 1976, 1978, 1980, 1982, 1984, 1986, 1988, 1990, 1992, 1994, 1996, 1998, 2000, 2002, 2005, 2007, 2009, 2011, 2013, 2015, 2017, 2019, 2021, 2023, 2025, 2027, 2029, 2031, 2033, 2035, 2037, 2039, 2041, 2043, 2045, 2047, 2049, 2051, 2053, 2055, 2057, 2059, 2061, 2063, 2063, 2063, 2063, 2063, 2066, 2066, 2066, 2067, 2067, 2068, 2071, 2071, 2071, 2071, 2071, 2074, 2074, 2077, 2078, 2078, 2078, 2079, 2079, 2080, 2083, 2086, 2089, 2092, 2095, 2098, 2101, 2104, 2107, 2110, 2113, 2116, 2119, 2122, 2125, 2128, 2131, 2134, 2137, 2140, 2143, 2146, 2149, 2152, 2155, 2158, 2161, 2164, 2167, 2170, 2173, 2176, 2179, 2182, 2185, 2188, 2191, 2194, 2197, 2200, 2203, 2206, 2209, 2212, 2215, 2218, 2221, 2224, 2227, 2230, 2233, 2236, 2239, 2242, 2245, 2248, 2251, 2254, 2255, 2256, 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2262, 2263, 2264, 2264, 2264, 2265, 2266, 2266, 2267, 2267, 2268, 2268, 2269, 2270, 2271, 2272, 2273, 2273, 2274, 2274, 2275, 2276, 2277, 2278, 2278, 2279, 2280, 2281, 2283, 2285, 2287, 2288, 2289, 2291, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2295, 2296, 2296, 2297, 2297, 2297, 2298, 2298, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2314, 2314, 2314, 2314, 2315, 2315, 2315, 2315, 2315, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2346, 2346, 2348, 2349, 2351, 2353, 2355, 2357, 2359, 2361, 2363, 2366, 2368, 2370, 2372, 2374, 2376, 2378, 2380, 2382, 2384, 2386, 2386, 2386, 2388, 2390, 2393, 2393, 2396, 2397, 2398, 2399, 2400, 2402, 2404, 2406, 2408, 2409, 2410, 2411, 2413, 2415, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, 2435, 2435, 2436, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2467, 2467, 2467, 2467, 2467, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2477, 2478, 2479, 2480, 2481, 2482, 2485, 2489, 2489, 2489, 2492, 2493, 2494, 2494, 2494, 2494, 2494, 2496, 2496, 2496, 2496, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2497, 2499, 2503, 2507, 2511, 2515, 2522, 2526, 2530, 2534, 2538, 2542, 2546, 2550, 2554, 2558, 2562, 2563, 2566, 2567, 2570, 2572, 2573, 2574, 2578, 2583, 2587, 2591, 2595, 2599, 2603, 2607, 2611, 2615, 2619, 2626, 2630, 2634, 2638, 2642, 2646, 2648, 2652, 2656, 2662, 2666, 2670, 2674, 2678, 2682, 2686, 2690, 2694, 2698, 2702, 2706, 2710, 2714, 2718, 2722, 2726, 2730, 2734, 2738, 2742, 2746, 2750, 2754, 2758, 2762, 2766, 2770, 2774, 2778, 2782, 2786, 2790, 2794, 2798, 2802, 2806, 2810, 2814, 2818, 2822, 2826, 2830, 2831, 2831, 2835, 2835, 2835, 2837, 2837, 2837, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2839, 2841, 2843, 2845, 2847, 2849, 2851, 2853, 2855, 2857, 2859, 2861, 2863, 2865, 2867, 2868, 2869, 2871, 2872, 2874, 2875, 2876, 2878, 2881, 2883, 2885, 2887, 2889, 2891, 2893, 2895, 2897, 2899, 2901, 2903, 2905, 2907, 2909, 2910, 2911, 2913, 2914, 2916, 2917, 2918, 2921, 2923, 2924, 2925, 2927, 2929, 2931, 2933, 2935, 2937, 2939, 2941, 2943, 2945, 2947, 2949, 2951, 2953, 2955, 2957, 2959, 2961, 2963, 2965, 2967, 2969, 2971, 2973, 2975, 2977, 2979, 2981, 2983, 2985, 2987, 2989, 2991, 2993, 2995, 2997, 2999, 3001, 3003, 3005, 3007, 3007, 3007, 3009, 3009, 3009, 3009, 3009, 3010, 3010, 3013, 3016, 3019, 3022, 3025, 3028, 3031, 3034, 3037, 3040, 3043, 3046, 3049, 3052, 3055, 3056, 3057, 3059, 3060, 3062, 3065, 3069, 3072, 3075, 3078, 3081, 3084, 3087, 3090, 3093, 3096, 3099, 3102, 3105, 3108, 3109, 3110, 3112, 3113, 3115, 3119, 3122, 3125, 3128, 3131, 3134, 3137, 3140, 3143, 3146, 3149, 3152, 3155, 3158, 3161, 3164, 3167, 3170, 3173, 3176, 3179, 3182, 3185, 3188, 3191, 3194, 3197, 3200, 3203, 3206, 3209, 3212, 3215, 3218, 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3239, 3240, 3240, 3241, 3241, 3242, 3243, 3244, 3245, 3245, 3245, 3246, 3247, 3248, 3249, 3250, 3251, 3252, 3253, 3254, 3255, 3256, 3257, 3258, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3263, 3264, 3265, 3266, 3267, 3268, 3269, 3270, 3271, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3284, 3285, 3286, 3288, 3289, 3290, 3291, 3292, 3293, 3294, 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3304, 3306, 3308, 3310, 3312, 3314, 3316, 3318, 3320, 3322, 3324, 3326, 3328, 3328, 3329, 3329, 3329, 3330, 3331, 3332, 3333, 3334, 3335, 3336, 3337, 3338, 3339, 3340, 3341, 3342, 3343, 3344, 3345, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 3356, 3357, 3358, 3359, 3359, 3359, 3359, 3359, 3359, 3360, 3360, 3361, 3361, 3362, 3362, 3362, 3364, 3365, 3365, 3367, 3367, 3369, 3370, 3372, 3373, 3374, 3375, 3378, 3380, 3381, 3382, 3384, 3385, 3387, 3388, 3389, 3390, 3393, 3395, 3396, 3397, 3399, 3400, 3402, 3403, 3404, 3405, 3408, 3410, 3411, 3412, 3412, 3412, 3412, 3412, 3412, 3414, 3416, 3417, 3419, 3421, 3422, 3423, 3424, 3425, 3428, 3431, 3433, 3434, 3435, 3436, 3436, 3437, 3437, 3438, 3439, 3440, 3441, 3442, 3442, 3445, 3449, 3450, 3450, 3453, 3453, 3453, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3461, 3461, 3461, 3465, 3465, 3465, 3466, 3466, 3466, 3470, 3474, 3478, 3482, 3483, 3486, 3487, 3490, 3492, 3493, 3494, 3499, 3505, 3509, 3513, 3517, 3521, 3525, 3529, 3533, 3535, 3535, 3537, 3541, 3545, 3552, 3556, 3560, 3564, 3568, 3572, 3576, 3579, 3583, 3587, 3591, 3595, 3599, 3603, 3607, 3611, 3615, 3619, 3623, 3627, 3631, 3635, 3639, 3643, 3647, 3651, 3655, 3659, 3663, 3667, 3668, 3672, 3676, 3680, 3684, 3688, 3692, 3696, 3700, 3704, 3708, 3712, 3716, 3720, 3727, 3731, 3735, 3739, 3743, 3747, 3751, 3755, 3759, 3763, 3767, 3771, 3771, 3771, 3773, 3774, 3774, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3775, 3776, 3778, 3780, 3782, 3783, 3784, 3786, 3787, 3789, 3790, 3791, 3794, 3796, 3798, 3800, 3802, 3804, 3806, 3808, 3810, 3812, 3814, 3816, 3818, 3820, 3822, 3824, 3825, 3827, 3829, 3831, 3833, 3835, 3837, 3839, 3841, 3843, 3845, 3847, 3849, 3851, 3853, 3855, 3857, 3859, 3861, 3863, 3865, 3867, 3869, 3871, 3873, 3875, 3877, 3879, 3881, 3883, 3885, 3887, 3889, 3891, 3893, 3895, 3897, 3899, 3901, 3903, 3905, 3907, 3909, 3911, 3912, 3914, 3915, 3917, 3917, 3917, 3917, 3917, 3917, 3920, 3923, 3926, 3927, 3928, 3930, 3931, 3933, 3937, 3940, 3943, 3946, 3949, 3952, 3955, 3958, 3961, 3964, 3967, 3970, 3973, 3976, 3979, 3980, 3983, 3986, 3989, 3992, 3995, 3998, 4001, 4004, 4007, 4010, 4013, 4016, 4019, 4022, 4025, 4028, 4031, 4034, 4037, 4040, 4043, 4046, 4049, 4052, 4055, 4058, 4061, 4064, 4067, 4070, 4073, 4076, 4079, 4082, 4085, 4088, 4091, 4094, 4097, 4100, 4103, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4111, 4111, 4111, 4112, 4113, 4114, 4115, 4117, 4119, 4120, 4122, 4123, 4124, 4125, 4126, 4129, 4132, 4134, 4135, 4136, 4137, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4140, 4141, 4141, 4142, 4143, 4144, 4145, 4146, 4147, 4148, 4149, 4150, 4151, 4152, 4153, 4153, 4153, 4153, 4153, 4154, 4155, 4156, 4157, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, 4172, 4174, 4176, 4178, 4180, 4182, 4184, 4186, 4188, 4190, 4190, 4191, 4191, 4193, 4194, 4196, 4197, 4198, 4199, 4202, 4204, 4205, 4206, 4207, 4208, 4209, 4210, 4211, 4212, 4213, 4214, 4215, 4216, 4217, 4218, 4219, 4220, 4220, 4221, 4222, 4223, 4223, 4224, 4224, 4225, 4225, 4226, 4226, 4227, 4229, 4230, 4231, 4233, 4234, 4235, 4237, 4238, 4239, 4240, 4242, 4243, 4243, 4245, 4245, 4247, 4247, 4249, 4251, 4252, 4253, 4256, 4256, 4257, 4258, 4258, 4258, 4259, 4260, 4264, 4264, 4264, 4264, 4264, 4264, 4266, 4267, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4271, 4272, 4274, 4278, 4278, 4278, 4282, 4286, 4290, 4294, 4296, 4296, 4298, 4302, 4309, 4316, 4320, 4324, 4328, 4332, 4336, 4339, 4345, 4349, 4353, 4360, 4360, 4364, 4368, 4372, 4376, 4380, 4384, 4388, 4392, 4396, 4400, 4404, 4408, 4412, 4416, 4420, 4424, 4428, 4432, 4436, 4440, 4440, 4440, 4444, 4448, 4452, 4456, 4460, 4464, 4468, 4472, 4476, 4480, 4484, 4488, 4492, 4493, 4495, 4502, 4506, 4510, 4514, 4518, 4522, 4529, 4533, 4537, 4541, 4541, 4541, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4544, 4546, 4548, 4550, 4552, 4554, 4556, 4558, 4560, 4562, 4564, 4566, 4568, 4570, 4570, 4572, 4574, 4576, 4578, 4580, 4582, 4584, 4586, 4588, 4590, 4592, 4594, 4596, 4598, 4600, 4602, 4604, 4606, 4608, 4610, 4612, 4614, 4616, 4618, 4620, 4622, 4624, 4626, 4628, 4630, 4631, 4634, 4636, 4638, 4640, 4642, 4644, 4646, 4648, 4650, 4652, 4652, 4655, 4658, 4661, 4664, 4667, 4670, 4673, 4676, 4679, 4682, 4685, 4688, 4691, 4694, 4697, 4700, 4703, 4706, 4709, 4712, 4715, 4718, 4721, 4724, 4727, 4730, 4733, 4736, 4739, 4742, 4745, 4748, 4751, 4754, 4757, 4760, 4763, 4766, 4769, 4772, 4775, 4778, 4781, 4784, 4787, 4790, 4793, 4796, 4799, 4800, 4801, 4802, 4803, 4804, 4805, 4805, 4805, 4805, 4806, 4807, 4808, 4809, 4811, 4813, 4814, 4815, 4816, 4817, 4817, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4819, 4819, 4820, 4822, 4823, 4824, 4825, 4826, 4827, 4828, 4829, 4830, 4830, 4830, 4830, 4830, 4832, 4833, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841, 4842, 4843, 4845, 4847, 4849, 4851, 4853, 4855, 4857, 4859, 4859, 4859, 4861, 4862, 4863, 4864, 4865, 4866, 4867, 4868, 4869, 4870, 4871, 4872, 4873, 4874, 4875, 4876, 4876, 4876, 4876, 4877, 4877, 4879, 4881, 4881, 4883, 4883, 4883, 4883, 4883, 4883, 4884, 4887, 4888, 4888, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4889, 4890, 4890, 4891, 4895, 4895, 4895, 4895, 4898, 4901, 4901, 4905, 4909, 4913, 4917, 4921, 4925, 4929, 4933, 4937, 4941, 4943, 4945, 4946, 4950, 4954, 4954, 4958, 4962, 4966, 4970, 4974, 4978, 4982, 4986, 4990, 4994, 4998, 5002, 5006, 5010, 5014, 5021, 5021, 5021, 5025, 5029, 5036, 5040, 5044, 5048, 5052, 5056, 5060, 5063, 5064, 5068, 5072, 5076, 5076, 5076, 5076, 5078, 5078, 5078, 5078, 5078, 5078, 5078, 5078, 5078, 5078, 5078, 5078, 5078, 5080, 5082, 5084, 5086, 5088, 5090, 5092, 5094, 5096, 5098, 5098, 5100, 5102, 5104, 5106, 5108, 5110, 5112, 5114, 5116, 5118, 5120, 5122, 5124, 5126, 5128, 5130, 5132, 5134, 5136, 5138, 5140, 5142, 5144, 5144, 5144, 5145, 5145, 5148, 5151, 5154, 5157, 5160, 5163, 5166, 5169, 5172, 5175, 5178, 5181, 5184, 5187, 5190, 5193, 5196, 5199, 5202, 5205, 5208, 5211, 5214, 5217, 5220, 5223, 5226, 5229, 5232, 5233, 5234, 5235, 5236, 5238, 5238, 5238, 5238, 5239, 5240, 5242, 5243, 5243, 5243, 5243, 5243, 5243, 5243, 5243, 5245, 5246, 5247, 5248, 5249, 5250, 5250, 5250, 5250, 5250, 5250, 5251, 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, 5260, 5261, 5263, 5265, 5267, 5268, 5269, 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5276, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5277, 5281, 5281, 5282, 5283, 5284, 5284, 5287, 5287, 5290, 5290, 5290, 5291, 5295, 5299, 5303, 5306, 5310, 5314, 5318, 5322, 5322, 5329, 5333, 5337, 5341, 5345, 5349, 5353, 5357, 5361, 5365, 5368, 5368, 5368, 5372, 5376, 5380, 5384, 5388, 5392, 5396, 5400, 5402, 5402, 5402, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5406, 5408, 5410, 5412, 5414, 5416, 5418, 5418, 5420, 5422, 5424, 5426, 5428, 5430, 5432, 5434, 5436, 5438, 5440, 5442, 5444, 5446, 5446, 5447, 5447, 5447, 5448, 5451, 5454, 5457, 5460, 5463, 5466, 5469, 5472, 5475, 5478, 5481, 5484, 5487, 5490, 5493, 5496, 5497, 5498, 5500, 5501, 5501, 5502, 5502, 5502, 5503, 5504, 5504, 5504, 5504, 5504, 5506, 5507, 5508, 5508, 5508, 5508, 5508, 5508, 5508, 5508, 5509, 5510, 5511, 5512, 5513, 5514, 5515, 5516, 5518, 5519, 5520, 5521, 5522, 5522, 5522, 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5523, 5527, 5528, 5529, 5532, 5532, 5533, 5537, 5541, 5545, 5547, 5551, 5553, 5557, 5560, 5562, 5564, 5569, 5575, 5579, 5583, 5590, 5592, 5593, 5594, 5598, 5600, 5600, 5600, 5600, 5600, 5600, 5600, 5604, 5608, 5612, 5619, 5623, 5623, 5623, 5624, 5624, 5624, 5624, 5624, 5624, 5624, 5624, 5624, 5624, 5626, 5628, 5630, 5632, 5634, 5636, 5638, 5640, 5641, 5644, 5647, 5650, 5653, 5654, 5655, 5655, 5656, 5657, 5657, 5657, 5657, 5657, 5657, 5657, 5657, 5658, 5659, 5660, 5661, 5662, 5662, 5662, 5662, 5662, 5662, 5665, 5665, 5669, 5670, 5673, 5677, 5681, 5685, 5687, 5687, 5687, 5687, 5690, 5691, 5694, 5695, 5698, 5700, 5704, 5705, 5706, 5711, 5711, 5711, 5711, 5711, 5711, 5712, 5712, 5716, 5720, 5724, 5728, 5730, 5730, 5730, 5730, 5730, 5730, 5732, 5734, 5736, 5738, 5740, 5743, 5744, 5745, 5745, 5745, 5745, 5745, 5745, 5745, 5746, 5747, 5748, 5749, 5750, 5750, 5750, 5753, 5755, 5755, 5759, 5760, 5763, 5767, 5771, 5775, 5778, 5780, 5780, 5781, 5783, 5783, 5786, 5787, 5787, 5787, 5790, 5790, 5791, 5791, 5793, 5793, 5793, 5793, 5794, 5794, 5794, 5796, 5796, 5796, 5796, 5796, 5796, 5800, 5804, 5808, 5810, 5810, 5810, 5810, 5813, 5813, 5813, 5813, 5815, 5817, 5819, 5821, 5823, 5826, 5827, 5827, 5827, 5827, 5827, 5827, 5828, 5829, 5830, 5831, 5832, 5832, 5834, 5835, 5839, 5840, 5843, 5847, 5848, 5852, 5854, 5856, 5856, 5857, 5857, 5857, 5857, 5861, 5865, 5865, 5865, 5866, 5866, 5866, 5866, 5866, 5866, 5866, 5870, 5874, 5877, 5879, 5879, 5879, 5880, 5882, 5884, 5886, 5889, 5889, 5889, 5890, 5890, 5890, 5890, 5890, 5891, 5891, 5892, 5892, 5893, 5894, 5895, 5898, 5902, 5903, 5903, 5903, 5907, 5907, 5907, 5911, 5911, 5911, 5911, 5911, 5915, 5917, 5917, 5917, 5919, 5919, 5919, 5919, 5919, 5919, 5920, 5921, 5921, 5923, 5924, 5927, 5931, 5931, 5931, 5931, 5934, 5934, 5938, 5939, 5939, 5943, 5943, 5943, 5943, 5946, 5949, 5949, 5949, 5949, 5953, 5953, 5953, 5955, 5955, 5956, 5956, 5956, 5956, 5956, 5957, 5958, 5958, 5961, 5961, 5965, 5965, 5967, 5968, 5968, 5971, 5971, 5971, 5974, 5978, 5978, 5979, 5980, 5981, 5984, 5984, 5984, 5985, 5986, 5986, 5990, 5990, 5990, 5992, 5992, 5993, 5997, 5999, 6000, 6000, 6003, 6007, 6008, 6011, 6011, 6012, 6012, 6016, 6016, 6018, 6022, 6026, 6027, 6030, 6031, 6035, 6039, 6040, 6043, 6047, 6051, 6052, 6055, 6059, 6060, 6063, 6067, 6068, 6071, 6075, 6076, 6080, 6084, 6086, 6086 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 22, 22, 22, 22, 23, 23, 24, 25, 26, 27, 28, 1, 29, 30, 31, 32, 33, 34, 31, 35, 35, 36, 35, 37, 38, 35, 35, 39, 40, 35, 41, 42, 43, 35, 35, 44, 45, 46, 35, 47, 48, 49, 50, 51, 1, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 1, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82 } ; static yyconst flex_int32_t yy_meta[83] = { 0, 1, 2, 3, 4, 5, 1, 6, 1, 7, 1, 1, 8, 9, 10, 11, 1, 12, 13, 14, 15, 16, 16, 16, 17, 18, 19, 20, 1, 1, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 24, 25, 1, 26, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 27, 1, 28, 29, 30 } ; static yyconst flex_int16_t yy_base[3549] = { 0, 0, 3, 8, 31, 55, 69, 92, 106, 111, 143, 164, 183, 196, 233, 236, 255, 274, 287, 336, 22, 418, 41, 500, 131, 582, 132, 664, 160, 746, 169, 828, 199, 910, 200, 991, 1004, 1082, 213, 1028, 1032, 1162, 1190, 1237, 221, 1311, 222, 1393, 259, 1475, 291, 1557, 293, 1639, 304, 1721, 310, 1803, 312, 1885, 996, 1967, 1024, 2049, 1045,11526,27527, 1165,27527,27527,27527, 11,11518, 1166, 33, 0,27527, 0, 0, 50,11514, 0, 1176, 70, 0,27527, 0, 0, 71,11513, 1178, 72, 0, 1182, 0,11512, 0, 0, 73,11505, 1203, 107, 0, 1210, 0, 0, 0, 108,11504, 6, 1212, 123, 0, 61, 0, 0, 0,11489, 129,11492, 1223, 155,11450, 1222,27527,11442,11441, 251, 94, 204, 1224, 982, 0, 1229, 0, 0, 0,11468, 161,11479, 1250, 202, 1243, 1256, 2130,27527,27527, 2134,11430, 92,27527, 27527,27527,11446,27527, 214, 2119,11439,27527,27527, 2141, 2142, 2214,11427,27527,27527, 180, 1201, 95, 1222, 252, 1005, 2117, 2116, 1009, 66, 5, 2137, 2123, 2154, 220, 2186, 2165, 240, 2170, 1228,27527,27527, 2247, 2262, 2173, 305,11433,11388,11431, 14, 998,27527,11422, 167,27527, 155, 1278,27527, 300,11420, 994, 2218, 2278, 2288,11418, 2306, 2315, 2324, 2347, 2288, 2304, 2323, 2342, 2352, 2195, 2325, 2367, 2368, 2377, 2392, 2400, 2409, 2418, 2427, 2437, 127,27527, 2217,27527, 2502, 2507, 2511,27527, 2515,11394, 27527, 999,11417,11425, 2538,27527,27527,27527, 2543, 2552, 2564, 1047, 0, 1161,27527, 2568, 2580, 2598, 2607, 2616, 2643, 2591, 2600, 2621, 2637, 2653, 2470, 2592, 2668, 2662, 2678, 2680, 2693, 2699, 2711, 2719, 2471, 0,27527,27527, 0,27527, 2376, 0, 2150, 317,27527,11407, 204, 1172, 2702, 2274, 0,27527,11411, 2290, 2182, 0,27527,27527, 241, 0,11371,11348,11356,11363, 2298, 0,27527,27527, 27527,27527, 266, 0, 1164,11358, 2752,27527,27527,27527, 27527,27527, 12, 1048, 1192, 1193, 2608, 1194, 2781, 2777, 27527,27527,11383,11344, 204,11342,11322,11327, 994,11315, 11326, 1218, 74,11309,11306,11315, 2556, 2791, 2814, 2818, 1157,11342,27527, 2829, 2841, 2845, 2854, 2858, 2883, 2888, 2892, 2899, 2924, 2931, 2935, 2961, 2965, 2973,27527, 2977, 2986, 3000,27527, 0,27527,27527, 1249,27527,11358, 0, 11298,11285,11296,11278,11277,27527, 3006, 1281,27527, 2311, 27527, 0,27527,27527, 1284,27527,27527,11335, 0,11307, 11262,11263,11255,11252, 1151,11242,11252, 2103,11236,11233, 11241, 2316, 2253, 0,27527, 2356, 0,27527, 0,11250, 11216,11211,11198,11200, 2148,11196,11208, 2343,11194,11192, 11203,27527, 2333,27527,27527, 0,11197,27527,27527, 2427, 11237, 0,27527,27527, 2462, 2430, 0, 3014, 0, 0, 27527, 0, 0, 0, 2442,11236, 3084, 0, 2570, 2477, 3078, 3115, 3121,27527, 0,27527, 0,11204,11168, 1209, 11163,11165, 2188,11072, 2100, 2612,11070,11068,11077,27527, 3135,27527, 2805,27527, 0,27527,27527, 2479,11104,11071, 2834, 2529, 2940, 2559, 1057, 2249,27527, 2942, 2582, 2624, 2668, 0, 2340, 2303,27527,27527, 3019, 2593, 2783, 2672, 0, 2626, 2339, 0, 3025, 2679, 2784, 2808, 0,27527, 2727, 2418, 3031, 2746, 2902, 2993, 0,11082, 3125,27527, 2788, 2557, 0,27527,11077, 3141, 2994, 0, 2493,10968, 27527, 2820, 2585, 0, 3152, 3019, 3029,10933, 2873, 2858, 3026,10931,27527,10972, 3148, 3101, 3168, 3178, 0, 3039, 2864, 2767, 0, 3175, 2809, 3062, 3153, 3207,10936, 3215, 0, 3219, 3245, 3225,10944, 2860, 2917, 3251,27527, 3251, 0, 3274, 947,10888,10888, 2437,10877, 2080,10887, 2356, 2212, 3286, 3303,27527,27527,10883,10916, 3267, 966, 2239, 3077, 2122, 2841, 2303, 2414, 2366, 2781, 2469, 2897, 270, 2743, 3355, 2120, 2235, 2639, 2494, 2927, 964, 2170, 3003, 2568, 2912, 3002, 3181, 2536, 3198,10865, 2807, 2994, 2473, 2839, 2948, 2809, 1243, 3, 2895, 3120, 3228, 2611, 3255, 3034, 2969, 3265, 3107, 3048, 3083, 3250, 3046, 3093, 3178, 3271, 3334, 3147, 3274, 3204, 3127, 2654, 3278,10872, 3233, 3385, 3409, 3426, 3418, 3337, 3341, 3284,27527, 3442, 3452, 27527, 3236, 3444,27527,10903,10886, 2878,10847,10844, 3286, 10836, 3323,10841, 3320, 3133, 3443,27527,10861,27527, 3472, 10860,10855, 3481, 3490, 3499, 3508, 3526, 3535, 3544, 3562, 3572, 3590, 3602, 3617, 3680, 3645, 3713, 3731, 3751, 3761, 3771, 3635, 3786, 3814, 3824, 3839, 3849, 3920,10809, 3883, 3953, 3971, 3893, 3991, 4001, 4016, 4026, 4041, 4059, 4086, 4090, 4115, 4119, 4147, 3602, 3518, 3567, 3742, 3653, 3683, 3707, 3812, 4010, 3789, 3820, 3757, 3923, 4084, 4042, 4065, 3718,10854, 3958, 0, 4159, 3608, 4172, 4184, 4188,27527, 4211,10846,10838, 4217, 4225, 4236, 4240, 4249,27527, 4253, 4278,27527,10837,27527, 4282, 4300, 4309, 4318, 4327, 4345, 4354, 4363, 4381, 4408, 4412, 4437, 4463, 4526, 4488, 4492, 4564, 4576, 4608, 4635, 4639, 4664, 4673, 4691, 4709, 4780, 10784, 4734, 4752, 4819, 4831, 4851, 4863, 4888, 4892, 4917, 4921, 4952, 4956, 4981, 4985, 5018, 5022, 5047, 5051, 5078, 5098, 5116, 5136, 5148, 5166, 5186, 5211, 5231, 5243, 5261, 5270, 5290, 0, 0, 3714, 3414, 3477,10830, 3903, 3479, 10821,10820, 3330, 3528, 4006, 3533,27527,10821,10830,10819, 3650, 0,10772, 0,10757,10747,10750,10761, 3600, 0, 3577, 0, 3201,10759,10731, 4284,27527, 3197,27527, 4041, 3371,27527, 3859, 4139, 4442, 4203,10759,10728,10737,10736, 10715,10717,10716, 3674,10709,10711,10710,10703, 2915,10699, 10703,10694,10690,10695,10676, 4399,10710, 4815, 0, 5217, 4470, 3303, 5173, 5296, 5302,10708,10697, 5328, 5332, 5336, 5341, 5366, 5370, 5438, 5397, 5405, 5411, 5471, 5475, 5479, 5487, 5504, 5519, 4582, 4613, 3949, 5103, 5536, 5551,10657, 10645,10657,10641,27527, 5557, 0, 0,10630,10635,10637, 10612,10624, 5566, 0, 0,10644,10604,10600,10575,10580, 3791,10573,10577,10579,10573, 3340,10560,10558,10564,10563, 3796, 3892, 3983,27527, 0, 0,10583,10545,10558,10526, 10525, 0,10515,10518,10518,10512, 3429,10508,10493,10492, 10491, 0,10537, 3386,27527, 0, 5191, 5379, 5570,27527, 27527, 0, 0, 3394, 3444,27527, 5644,27527, 4091, 3473, 3514, 4051, 5672, 0, 0,10507,10470,10478,10464,10441, 10442, 5750,10432,10436,10439,10443,10445,10423, 3464,10416, 10414, 3771,10420, 5781,10454,10452,10451, 3550, 4174,10457, 3482,10465, 3871, 4230,10447, 3551, 3634,10448, 3729, 5543, 5577, 4389, 4259, 4241, 5592, 5680, 3745, 4405, 3791, 4295, 4545, 4455, 4310, 4463, 5686, 5693, 3825, 4474, 3863, 4115, 4426, 3544, 4494, 4479, 4594, 4640, 3971, 3580, 4104, 4692, 4700,10435, 3579,10434, 3603, 5064, 5095, 4154, 4719, 4720, 5183, 5699, 4198, 4440, 4571, 4372, 4669, 3298, 4541, 3521, 4120, 5788, 5836, 4741, 4770, 5819,27527,10434, 5759, 5862, 5223, 5878, 4036,10421, 5886, 4869, 0, 5707,10368,10374, 10367,10356,10352,10335,10323, 3396,10335,10319,10322,10317, 10307,10298, 5870, 4978,10344,10323, 5901, 5909, 2845, 3562, 3585, 5967, 3397, 3942, 3380, 3595, 3371, 2384, 3445, 4019, 3428, 3601,27527, 5914, 5995,27527,27527,10316, 6008, 3624, 10292, 4014, 3690, 3529, 3707, 3969, 4063, 3738, 4126, 4173, 6088, 4213, 4238, 3659, 4341, 3908, 6026, 4032, 3770, 4894, 3801, 4265, 4362, 4297, 4391, 3968, 4326, 3724, 3871, 3071, 4096, 4454, 4452, 3838, 4618, 4512, 3915, 4087, 4524, 4460, 4555, 4029, 4515, 4162, 4658, 4219, 3691, 2328, 3921, 4418, 4290, 4536, 4589, 4559, 4568, 4380, 4592, 4585, 3791, 4346, 4635, 4637, 6060, 6116, 6146,10264,10268, 6121, 5024, 5574, 4944, 5943,10243,10261,10252,10241,10237,10230,10224, 4362, 10241,10222,10225,10218,10205,10187, 4714,10233, 5510, 6172, 6181, 6199, 6270, 6225, 6243, 6303, 6321, 6341, 6356, 6366, 6381, 6391, 6409,27527, 5713,27527,10229,27527,10232,10227, 6421, 6436, 6451, 6466, 6476, 6486, 6506, 6515, 6524, 6542, 6594, 6533, 6627, 6551, 6666, 6675,27527, 5801,27527,10222, 27527,10225,10213, 6684, 6693, 5999, 4808, 6702, 6762, 6725, 6795, 6729, 6832, 6844, 6859, 6879, 6888, 6897, 6906, 6931, 6940, 6949, 6967, 6977, 6987, 7010, 7020, 7045, 7055, 7073, 7082, 7100, 7110, 7133, 7143, 7161, 7170, 7188, 7197, 7179, 7206, 7215, 7224, 7244, 7259, 7274, 7284, 6030, 5010, 5415, 4347, 6152, 6211,10208, 6054, 5374, 5805, 6066, 7304, 7316, 7336, 7407, 7363, 7367, 7440, 7458, 7478, 7498, 7507, 7516, 7536, 7545, 7571, 5730,27527,10204,27527, 7580, 7589, 7616, 7625, 7634, 7643, 7652, 7661, 7688, 7740, 7706, 7773, 7812, 7821, 7830, 7839, 6569,27527,10203,27527, 7848, 7857, 7866, 7926, 7898, 7959, 7996, 7886, 8014, 8023, 8032, 8058, 8062, 8092, 8101, 8110, 8119, 8128, 8148, 8157, 8182, 8200, 8220, 8229, 8254, 8266, 8284, 8293, 8322, 8331, 8340, 8360, 8369, 8396, 8405, 8425, 8434, 8454, 8474, 8494, 8512,10218, 4707, 0,10199,10156,10139,10146,10135,10130, 4453,10138,10116, 10117,10105,10095, 5934, 6219, 4677, 6182, 5405, 6409, 6632, 4901, 4839, 5129,10095,10088,10086,10099,10098,10089, 4759, 10077,10077,10061,10064,10067,10060,10052,10043,10038,10037, 10039, 6307, 6654, 6850, 5090, 6802, 6791, 7713, 7446, 7679, 7016, 6333,10065,10054, 7769, 7955, 7965, 7777, 8480, 8365, 8530, 8537, 8186, 8546, 8555, 4878, 4883,10016,10024,10006, 9993, 9983, 9976, 9981, 0, 9991, 9966, 9946, 9954, 9954, 9947, 9944, 9904, 9907, 9910, 9903, 9898, 9898, 9898, 9883, 9872, 9886, 9884, 9874, 9872, 9854, 9854, 9861, 9850, 9844, 9845, 9847, 9881,27527, 9870, 4804, 0, 7046, 7073, 4918, 4927, 5581, 7602, 7899, 4590, 5275, 4820, 9816, 9801, 9798, 9813, 9811, 0, 9804, 9797, 9783, 9788, 9776, 9775, 9782, 9771, 9770, 9774, 9755, 9754, 9796, 0, 4915, 9794, 4930, 27527, 9775,27527, 9787,27527, 0, 9783,27527,27527, 9782, 27527, 9779, 0, 9745, 0, 4844, 8189, 5083, 0, 0, 5382, 5630, 0, 9741, 0, 5307, 6923, 5345, 0, 0, 6254, 6256, 0, 9739, 0, 4192, 5344, 4643, 0, 0, 4910, 4925, 5117, 5085, 9752, 5180, 9733,27527, 9701, 4665, 5122, 9695, 5423, 5456, 6398, 5638, 9694, 5769, 9691, 5853, 5894, 5957, 5524, 5927, 4952, 4799, 4837, 4945, 4949, 8563, 8589, 8606, 8622, 8639, 8655, 8672, 7292, 0, 4764, 8519, 8581, 8691, 8714, 6078, 6622, 8737, 9679, 9662, 6820, 9670, 9656, 9662, 9656, 9639, 4918, 9647, 9637, 9646, 9626, 9630, 7128, 8745, 8761, 8773, 6827, 7354, 7503, 7541, 9670, 4764, 4992, 9623, 4961,27527, 8779, 8810,27527,27527, 9662, 7974, 9617, 6005, 5097, 4692, 5078, 4976, 3832, 5134, 4984, 8841, 8847,27527, 4994, 5201, 8896, 5007, 4819, 5077, 3966, 5089, 5219, 8924, 5250, 5248, 5106, 4060, 5258, 5294, 5330, 5427, 4965, 5465, 9605, 4877, 5458, 5431, 5499, 5172, 9602, 5533, 5203, 5286, 5482, 5324, 8979, 5546, 5537, 5555, 5584, 5576, 5526, 5614, 5571, 5662, 5612, 5650, 5402, 5673, 6323, 5720, 5548, 6164, 5679, 4674, 5005, 5632, 5531, 5744, 5779, 5796, 9601, 9602, 8989, 6401, 9636,27527, 6173, 7322, 8871, 9600, 9583, 0, 9600, 9586, 9587, 9582, 9566, 5749, 9569, 9557, 9567, 9551, 9553, 0, 6122, 6123, 6456, 8993, 8934, 9016, 27527, 6734,27527, 9590,27527, 9592, 9584, 9034, 9085, 9118, 9049, 9155, 9170, 9180, 9190, 9200, 9210, 9225, 9237, 9262, 9272, 9282, 9297, 7249, 9317, 9335, 9347, 9362, 9372, 9390, 9399, 9424, 9434, 9444, 9464, 9473, 9493, 9502, 9511, 9520, 9538, 9550, 9577, 9587, 9602, 9612, 9622, 9632, 9642, 9657, 9669, 9687, 9702, 9712, 9722, 9745, 9808, 9765, 9774, 9841, 9859, 9879, 9889, 9907, 9916, 9925, 9943, 7576, 7803, 5680, 5853, 8962, 9871, 7392, 8153, 9585, 9952, 9972, 9990, 9999, 8302,27527, 9580,27527,10008,10059,10028,10092,10129,10141, 10159,10168,10177,10202,10211,10220,10240,10249,10267,10279, 10297,10306,10315,10324,10342,10351,10360,10378,10390,10410, 10435,10439,10464,10468,10493,10502,10520,10529,10538,10556, 10582,10594,10612,10630,10648,10666,10691,10703,10728,10740, 10760,10772,10790,10802,10829,10856,10874,10883,10903,10915, 10933, 0, 9578, 1229, 9579,27527, 9528, 9528, 9527, 9525, 9502, 9502, 9504, 9514, 9509, 9501, 9488, 5195,27527, 6369, 5269, 6359, 9556, 7140, 6469, 5486,27527, 5871, 6551, 9550, 6627, 6376, 9472, 9478, 9465, 9465, 9478, 9452, 9462, 9459, 9444, 9445, 9438, 9442, 9427, 8705, 0, 8805, 5919, 9470, 10989, 9430, 9020, 9770, 9122, 9845, 9114,10098,10746, 8930, 11070, 9675, 9409, 9405, 9408, 9415, 9394, 9392, 9399, 9380, 6386, 6177, 6496, 6201, 6513, 6581, 6141, 6298, 6660, 6504, 9388, 9377, 9367, 9377, 9356, 9368, 9364, 9348, 9349, 9333, 9382,27527, 5934, 0, 9369, 0, 7396, 8059, 7685, 0, 0, 8050, 8251,11141, 9316, 9319, 9305, 9318, 9301, 9307, 9280, 9294, 9295, 9279, 9284, 9267, 9265, 0, 9303,27527, 27527, 9322, 6511, 9302,27527, 9301,27527, 9300,27527, 0, 6872, 8438, 0, 7004, 7174, 0, 6034, 6035, 9291,27527, 9290, 9289, 6662, 9280,27527, 9279, 9224, 6063, 6588, 6666, 27527, 9267, 6753, 7329, 6235, 9236, 6003, 6107,11222,10033, 11228,11251, 9195, 9183, 7348, 8326,27527, 9174, 9179, 9164, 9166, 9179, 9166, 5366, 9161, 9160, 9163, 9152, 9136, 8834, 9067,27527,11331, 9183, 9243, 5828, 5770, 9145, 6106,11074, 11264,27527, 6128,11387, 6797, 5665, 5733, 9144, 9141, 6172, 11468, 6884, 5934, 6108, 6368, 9138, 5957, 4507, 6137, 6388, 6165, 9131, 6667, 5997, 6086, 6181, 6259, 6465, 6403, 6207, 6431, 6507, 6509, 5651, 6696, 6813, 9121, 9107, 6577, 9121, 9115, 6288, 4946, 6610, 5195, 6817, 6824, 6669, 6437, 6245, 6471, 9141,27527,11538, 6631, 9091, 5349, 6644, 6365, 7435, 6653, 6673, 5864, 9076, 9071,10817, 9080, 9060, 9066, 9059, 9013, 9012, 2, 139, 6342, 271, 1011, 1119, 2200, 2253, 7046,11274,11084,11278,11301,11620,11305,11358,11420,11478, 11349,11482,11438, 6530, 2417,11505,11587,11659,11671,11691, 11701,11578,11716,11734,11746,11764,11773,11800,11810,11828, 11837,11846,11864,11884,11893,11902,11920,11929,11952,11961, 11979,11988,12006,12015,12038, 2561,27527,12090,12053,12123, 12162,12171,12180,12189,12207,11088, 8466,12216,12225,12234, 12252,12261,12287,12296,12305,12314,12340,12405,12372,12438, 12368,12456,12476,12494,12506,12533,12551,12560,12580,12589, 12598,12623,12635,12660,12664,12697,12706,12724,12733,12751, 12777,12781,12806,12818,12836,12848,12866,12918,12951,12988, 13000,13027,12875,13045,13054,13072, 2614, 5070, 2634, 2693, 2740, 2786, 2968, 2981, 3015, 3100, 3161, 3230, 3293, 6048, 27527, 6906, 3470, 6953, 3552, 3620,27527, 3646, 3680, 3710, 3784, 3952, 3995, 4152, 4196, 4228, 4303,10847, 4445,10921, 10959,11655,11511,11424,12129,12119,12955,13079,11335, 4409, 4455, 4574, 4706,13084,10563,11450,12445, 4789, 4807, 4832, 4913, 5140, 5219, 5253, 5451, 5479, 5509, 5555, 5612, 5724, 5761, 5778, 5819, 5932, 5938, 0, 8274, 8387, 5937,13090, 5968, 6013, 6092, 6147, 6154, 6175, 6196, 6228, 6247, 6262, 6300, 6982, 6312, 6353,27527, 6361,27527,27527, 6369,27527, 6447, 0, 6816, 6883, 6429,27527, 9148, 9255, 9545,27527, 6403, 6403, 6416, 6421, 6436, 6445, 6491, 6536, 6561, 6547, 6557, 6582,10123,10274,27527,13116,11741,11871, 0,12352, 13122, 7807,13167, 6728, 6751, 6683, 6680,13173, 6943, 6794, 6858, 6945,13221,13204,13237, 6914, 6889, 6595, 6955, 6950, 6783, 6885, 6998, 6965, 6770, 7032, 7052, 7071, 6993, 7008, 7081, 6991, 7012,13291, 6602, 6592, 7083, 7084, 7250, 7092, 7176, 7117, 6884, 7076, 7162,13263,13319, 7057, 7225, 7198, 6675, 6699, 6770,27527, 6775, 6840, 6889, 6887, 6956, 6961, 6981, 6983, 7042, 7034, 7051, 7093,13329,13361,13373,13393, 13402,12715,13420,13429,13447,13462, 7111,13474,13492,13501, 13510,13530,13539,13557,13566,13575,13593,13611,13629,13638, 13707,13671,13675,13746,13758,13788,13792,13815,13819,13842, 9582,10600,13860, 8613,13872,13890,13899,13919,13928,13937, 13955,13964,13973,13993,14011,14020,14040,14049,14067,14076, 14085,14103,14121,14139,14148,14175,14184,14202,14229,14247, 14259,14286,14295, 7212, 7116, 7106, 7126, 8679, 7120, 7150, 7184, 7184, 7185, 0, 7196, 7195, 7211, 7196, 7207, 7218, 7210, 0, 7551,14313,11569,13357,12947,13255, 7724, 7224, 7235, 7231,14321,27527, 7228, 7223, 7256, 7257, 7254, 7270, 7283, 7283, 7307, 7293, 7306, 7317, 7304, 7314, 7317, 7311, 7334, 7326, 7343, 7344, 7339, 7333, 7459,27527, 7391, 7621, 7352, 7385, 7394, 7395, 7396, 7391, 7396, 7402, 7413, 7407, 7404, 7442,10655,14327,14331,10568,10963,14356, 7450,14360, 8879, 9309,10698, 7462, 7495, 7465,14398, 7579, 7640, 7519, 7490, 7431,14447, 7587, 7533, 7644, 7599, 7667, 7892, 7961, 7583, 7705,14528, 7423, 7443, 7701, 7653, 7730, 7671, 7744, 7822, 7853, 7504,14475,14533, 7478, 7865, 8238, 7501, 7492, 7516, 7551, 7558, 7558, 7554, 7604, 7629, 7646, 7644, 7651, 14211,14412,14416,14546,14561,14581, 7676,14590,14608,14617, 14637,14646,14655,14664,14682,14692,14702,14720,14730,14748, 14757,11113,14775, 9353, 9979,10967,14791,14803,14830,14839, 14857,14875,14866,14893,14913,14938,14958,14970,14990,15015, 15019,15044, 7761, 7723, 0, 7733,11574,27527, 7748, 7742, 27527, 7781, 0, 7808, 7817, 7825, 8067,14942,15049, 7827, 7830, 7841, 7840, 7859, 7859, 7854, 7883, 7909, 7919, 7911, 7921, 7930, 7934, 7940, 7941, 7934, 7944, 7948, 7954, 7992, 8041, 8088, 7953, 7969, 7961, 7953, 7974, 7968, 7984, 7979, 7995, 8069,15056,15082,15086,11079,11117, 8067, 8056, 8063, 27527,15111,15116,27527,27527, 8049, 9365, 8045, 8050, 8109, 8115,15165,15246,15251,15277, 8166, 0, 8020, 8022, 8083, 8092, 8079, 8114, 8183, 8145, 8202, 8349, 8136, 8109, 8378, 27527, 8117, 8132, 8135, 8135, 8159, 8154, 8172, 8159, 8169, 15291,15303,15323,15332,15341,15350,15370,15379,11791,15388, 15413,15422,15440, 8226, 8159, 8180, 8194,27527, 8205, 8207, 8201, 8214, 8222, 8206, 8225, 8221, 8224, 8231, 8235, 8257, 8461, 8298, 8245, 8262, 8268,11956, 8255, 8367,15452,15467, 8373, 8348, 8422,15481, 8319, 9392, 8324,10673, 8343,15499, 15529, 8347, 8363,15578, 8437,14495, 0, 8314, 8330, 8332, 8354, 8349,27527, 8346, 8455, 8421, 8431,15606,11298, 8370, 8361, 8378, 8385, 8369,15542,15616,15648,15660,15675,15687, 8465, 8378, 8439, 8425, 8432, 8439, 8437, 8458, 8445, 8458, 8473, 8463, 8473, 8547, 8500,12065,12433, 8499, 8568,15705, 15712, 8531, 8543, 8549, 8597,11651, 8560,27527,15730,15746, 8560, 8565, 8616,10156,27527, 8649,15763,15789,27527,15544, 15838,15914, 8568,10339, 9319,12524, 8552, 8564, 8577, 8647, 8562, 8628, 8630, 8612,15933, 8622,11694, 8638,12154, 8597, 8618, 8617,15802,15943,15947,15972,15982,16002, 8720, 8607, 8610, 8629, 8613, 8619,13776, 8631, 8647,12630, 8646, 8640, 12813,12843, 8766,16020,16027, 8694,12008, 8691, 8750, 9575, 8789,27527, 0,13663, 8719, 0, 8653,16093,13737,14166, 14277, 8721, 8660, 8684, 9500, 8700, 8755, 8734, 8851,12537, 8706, 8703, 8752,16174,16037,16178,16203, 8828, 9036,13600, 8740, 8746,12900, 8756, 8762,12981, 8756, 8760,16235, 8807, 16210,16251, 8824, 8957, 8850,16320, 8769, 0,10046,16402, 8855,16484, 8762, 8791, 8837, 8884, 8817, 8817,16261, 9072, 9153, 8985, 8823, 8824, 8839, 8861, 8852, 8905,16565,16634, 8936,16716, 0,14404,16798,16880, 8861,15524,16569, 0, 16962, 0,12045, 9417, 9732,17044, 8995, 8879, 8909, 8886, 8885,16574, 9264,27527, 9315, 8899, 8901, 8898,17126,14787, 14821, 9471,12321, 8976, 8959,17208,17289,17294, 0, 0, 10396,17343, 8927,12906, 9749, 9775,14900, 9984, 0,10735, 17425, 9059, 8931, 8956, 8954, 8949,17506,15140, 9755, 8983, 0,17524,17531, 0, 8949,10204,10405,13097, 0, 8974, 9051, 9799,17541, 9046, 8965,10422,10195,10428, 9022, 8963, 10660, 9909, 9126,10091,10522,10614, 9023,10632,11771, 9004, 11798, 9035, 9088, 9044, 9073, 9274,17579,27527,17628,17658, 17688,17718,17748,17778,17808,17838,17868,17898,17928,17958, 17988,18018,18048,18078,18108,18138,18167,18197,18226,18255, 9459,18284,18313,18342,18371, 9938,18400, 9998,18415,10091, 18430,10434,18447,10488,18462,10698,18477,18507,18536,18565, 18594,10780,18609,10803,18624,10842,18653,10869,18668,10889, 18698,18713,10928,18742,18772,10956,18802,18832,11083,18847, 11103,18862,18892,18922,18952,18982,19012,19042,19072,19102, 11106,19131,19160,19190,19219, 9133,19249,19278,19307,19336, 19365,19395,11264,19424,19453,19483,19512,19541,19570,19585, 19600,19617,19641,19656,19671,19701,11702,19730,19759,19789, 19818,19833,19848,19877,19892,19907,19937,19967,19996,20026, 20041,20071,20086,20101,20131,20161,20191,20221,20251,20281, 20311,20341,20371,20401,20431,20461,20491,20521,20551,20581, 20611,20641,20671,20701,20731,20761,20791,20821,20851,20881, 20911,20941,20970,20999,21028,21057,21086,21115,21144, 9170, 21173,21202,21232,21262,21292,21321,21350,21379,21408,21437, 21467,21496,21525,21554,21583,21612,21642,21671,21700,21724, 21739,11759,21756,21771,21786,21816,21846,21876,21906,21936, 21965,21994,22023,22052,22082,22111,22126,22141,22156,22186, 22201,22231,22261,22291,22321,22351,22366,22390,22420,22450, 22480,22510,22540,22570,22600,22630,22660,22690,22720,22750, 22780,22810,22840,22870,22900,22930,22960,22990,23020,23050, 23080,23110,23140,23170,23200,23230,23260,23290,23320,23350, 23380,23410,23440,23470,23500,23530,23559,23588,23617,12059, 23646,23675,23704,23734,23764,23793,23822,23852,23881,23910, 23940,23970,23999,24028,24058,24087,24116,24145,24174,24203, 12247,24218,24233,24250,24265,24280,24310,24340,24370,24400, 24430,24460,24490,24520,24549,12358,24578,24607,24622,24651, 24666,24696,24726,24756,24786,24816,24846,24876,24891,12546, 24906,24936,24966,24996,25026,25056,25086,25116,25146,25176, 25206,25236,25266,25296,25326,25356,25386,25416,25446,25476, 25506,25536,25566,25596,25625,25654,25683,25712,25741,25770, 25799,25828,25857,25872,25887,25902,25917,25947,25977,26007, 26037,26067,26096,26120,26149,26178,26193,26208,26238,26268, 26298,26313,26328,26358,26388,26418,26448,26477,26506,12650, 26535,26564,26593,26622,26651,26680,26709,26724,26739,26754, 12671,26783,26812,26827,26842,26857,26872,26901,26931,26960, 26989,27018,27048,27078,27108,27138,27168,27198,27228,27258, 27288,27318,27348,27378,27408,27437,27466,27496 } ; static yyconst flex_int16_t yy_def[3549] = { 0, 3159, 3159, 3160, 3160, 3161, 3161, 3162, 3162, 3163, 3163, 3164, 3164, 3165, 3165, 3166, 3166, 3159, 3159, 3158, 19, 3158, 21, 3158, 23, 3158, 25, 3158, 27, 3158, 29, 3158, 31, 3158, 33, 3159, 3159, 3158, 37, 3159, 3159, 3167, 3167, 3159, 43, 3158, 45, 3158, 47, 3158, 49, 3158, 51, 3158, 53, 3158, 55, 3158, 57, 3158, 59, 3158, 61, 3158, 63, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3168, 3158, 3168, 3168, 3168, 3168, 3169, 3168, 3168, 3170, 3158, 3170, 3170, 3170, 3170, 3170, 3170, 3171, 3158, 3171, 3158, 3171, 3171, 3171, 3171, 3171, 3171, 3172, 3173, 3172, 3172, 3172, 3158, 3172, 3158, 3172, 3158, 3174, 3174, 3174, 3174, 3174, 3158, 3158, 3174, 3174, 3158, 3175, 3158, 3158, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3176, 3158, 3176, 3176, 3176, 3158, 3176, 3176, 3176, 3176, 3158, 3158, 3158, 3158, 3158, 3177, 3178, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3179, 3179, 162, 3158, 3158, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 3158, 3158, 3180, 3158, 3158, 3158, 3158, 3181, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3182, 3182, 3158, 3182, 3182, 3182, 3182, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3183, 3178, 3158, 3158, 3158, 3158, 3184, 3158, 3158, 3158, 3185, 3184, 3158, 3158, 3186, 3158, 3158, 3187, 3187, 3187, 3187, 3187, 3187, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, 3188, 3158, 3158, 3189, 3158, 3158, 3190, 3158, 3158, 3158, 3191, 3191, 3158, 3158, 3158, 3192, 3158, 3193, 3158, 3158, 3194, 3158, 3158, 3158, 3195, 3195, 3195, 3195, 3195, 3158, 3196, 3158, 3158, 3158, 3158, 3158, 3197, 3197, 3197, 3158, 3158, 3158, 3158, 3158, 3158, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3199, 3158, 3158, 3158, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3200, 3201, 3158, 3158, 3158, 3158, 3158, 3158, 3202, 3158, 3158, 3158, 3158, 3158, 3203, 3203, 3203, 3203, 3203, 3203, 3158, 3158, 3158, 3158, 3158, 3158, 3204, 3158, 3158, 3158, 3158, 3158, 3158, 3205, 3205, 3205, 3205, 3205, 3205, 3205, 3205, 3205, 3205, 3205, 3205, 3205, 3158, 3158, 3206, 3158, 3207, 3208, 3158, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3209, 3158, 3158, 3158, 3158, 3210, 3211, 3158, 3158, 3158, 3158, 3212, 3158, 3158, 3158, 3158, 3213, 3214, 3215, 3215, 3158, 3216, 3215, 3215, 3215, 3215, 3217, 3218, 3215, 3215, 3158, 3158, 3158, 3158, 3219, 3158, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3220, 3158, 3158, 3158, 3158, 3158, 3221, 3158, 3158, 3158, 3158, 3222, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3223, 3223, 3223, 3158, 3158, 3223, 3223, 3223, 3223, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3225, 3158, 3225, 3225, 3225, 3225, 3225, 3225, 3226, 3227, 3227, 3158, 3227, 3158, 3226, 3158, 3158, 3226, 3158, 3228, 3228, 3158, 3158, 3158, 3158, 3228, 3228, 3158, 3158, 3229, 3229, 3229, 3229, 3229, 3158, 3158, 3229, 3229, 3229, 3229, 3230, 3158, 3158, 3230, 3230, 3230, 3230, 3158, 3230, 3158, 3158, 3158, 3231, 3232, 3232, 3233, 3158, 3234, 3158, 3235, 3158, 3158, 3236, 3231, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 573, 3158, 3237, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 3232, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 612, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 3238, 3238, 3239, 3158, 3158, 3158, 3158, 3158, 3240, 3240, 3158, 3158, 3241, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3240, 3158, 3242, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 705, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, 3158, 3158, 3158, 3243, 3244, 3245, 3243, 3158, 3158, 3158, 3244, 3158, 3246, 3247, 3247, 3248, 3158, 3249, 3158, 3158, 3158, 3158, 3158, 3158, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 788, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3249, 3250, 3250, 3158, 3158, 3158, 3251, 3158, 3158, 3251, 3158, 3251, 3158, 3158, 3158, 3158, 3252, 3253, 3252, 3158, 3254, 3158, 3254, 3254, 3254, 3254, 3254, 3158, 3255, 3158, 3255, 3255, 3255, 3255, 3158, 3158, 3256, 3158, 3256, 3256, 3158, 3256, 3256, 3256, 3256, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3257, 3258, 3259, 3158, 3257, 3158, 3258, 3158, 3260, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3259, 3259, 3261, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3158, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3264, 3158, 3264, 3158, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3265, 3266, 3267, 3268, 3158, 3266, 3269, 3158, 3269, 3158, 3158, 3270, 3271, 3270, 3270, 3158, 3272, 3158, 3270, 3270, 3270, 3270, 3158, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3273, 3158, 3274, 3274, 3158, 3158, 3158, 3275, 3275, 3276, 3158, 3158, 3277, 3277, 3158, 3278, 3158, 3279, 3279, 3280, 3281, 3281, 3282, 3282, 3281, 3283, 3281, 3284, 3284, 3285, 3286, 3286, 3287, 3287, 3286, 3288, 3286, 3289, 3289, 3290, 3291, 3291, 3292, 3292, 3291, 3293, 3291, 3294, 3294, 3275, 3275, 3277, 3277, 3295, 3295, 3296, 3297, 3297, 3298, 3298, 3297, 3299, 3297, 3158, 3158, 3300, 3301, 3302, 3301, 3303, 3304, 3305, 3305, 3306, 3158, 3158, 3158, 3307, 3158, 3307, 3158, 3158, 3308, 3309, 3310, 3311, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3312, 3313, 3314, 3315, 3158, 3304, 1128, 1128, 1128, 3304, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 3158, 3158, 3158, 3158, 3158, 3158, 3313, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 3304, 1128, 1128, 1128, 1128, 1128, 3158, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 3158, 3158, 3316, 3158, 3158, 3317, 3318, 3318, 3158, 3319, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3320, 3321, 3158, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3158, 3158, 3158, 3158, 3158, 3158, 3321, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3158, 3158, 3158, 3158, 3158, 3158, 3321, 3317, 3317, 3158, 3158, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3322, 3323, 3323, 3324, 3325, 3326, 3327, 3158, 3158, 3158, 3328, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3158, 3158, 3158, 3158, 3158, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3158, 3158, 3158, 3158, 3158, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3330, 3331, 3332, 3333, 3158, 3334, 3334, 3334, 3334, 3158, 3158, 3335, 3335, 3335, 3335, 3336, 3336, 3337, 3338, 3338, 3339, 3339, 3338, 3340, 3338, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3341, 3342, 3343, 3158, 3344, 3344, 3344, 3344, 3344, 3158, 3158, 3158, 3345, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3344, 3158, 3346, 3158, 3158, 3158, 3158, 3347, 3347, 3347, 3347, 3347, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3349, 3350, 3158, 3158, 3158, 3351, 3352, 3352, 3353, 3354, 3354, 3355, 3355, 3354, 3356, 3354, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3358, 3359, 3158, 3360, 3158, 3158, 3158, 3158, 3361, 3158, 3362, 3363, 3158, 3158, 3364, 3158, 3365, 3366, 3366, 3366, 3367, 3368, 3369, 3366, 3366, 3370, 3371, 3372, 3372, 3372, 3373, 3374, 3375, 3372, 3372, 3376, 3377, 3378, 3378, 3378, 3379, 3380, 3381, 3378, 3378, 3382, 3383, 3384, 3385, 3386, 3385, 3158, 3158, 3387, 3387, 3387, 3387, 3388, 3388, 3389, 3390, 3387, 3387, 3387, 3391, 3391, 3392, 3158, 3158, 3158, 3393, 3394, 3395, 3396, 3158, 3158, 3397, 3398, 3158, 3158, 3399, 3158, 3400, 3158, 3400, 3158, 3401, 3401, 3402, 3402, 3403, 3158, 3158, 3404, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3405, 3406, 3406, 3398, 3407, 3158, 3158, 3158, 3158, 1664, 1664, 1664, 1664, 3158, 3158, 3158, 3158, 3158, 3158, 3408, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 3158, 3158, 3158, 1664, 1664, 3398, 1664, 1664, 1664, 1664, 1664, 1664, 3158, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 3158, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1695, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 3158, 3158, 3409, 3158, 3158, 3158, 3158, 3410, 3410, 3158, 3158, 3411, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3412, 3413, 3413, 3414, 3409, 3409, 3409, 3158, 3158, 3158, 3158, 3158, 3158, 3415, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3158, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3158, 3416, 3158, 3417, 3418, 3418, 3419, 3158, 3158, 3420, 3420, 3420, 3158, 3158, 3158, 3158, 3158, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3158, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3420, 3421, 3422, 3423, 3424, 3158, 3425, 3425, 3425, 3425, 3158, 3158, 3158, 3426, 3426, 3426, 3426, 3427, 3158, 3427, 3427, 3428, 3429, 3430, 3431, 3427, 3158, 3427, 3432, 3433, 3434, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3435, 3436, 3437, 3158, 3158, 3158, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3158, 3158, 3158, 3158, 3439, 3439, 3439, 3439, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3442, 3158, 3158, 3443, 3443, 3443, 3444, 3445, 3446, 3443, 3443, 3447, 3448, 3158, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3449, 3450, 3451, 3158, 3158, 3452, 3158, 3453, 3158, 3454, 3158, 3455, 3158, 3456, 3457, 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3158, 3465, 3466, 3158, 3467, 3158, 3468, 3469, 3469, 3470, 3470, 3158, 3471, 3472, 3472, 3158, 3158, 3473, 3474, 3475, 3476, 3477, 3478, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3475, 3158, 3479, 2103, 2103, 2103, 2103, 3158, 3158, 3158, 2103, 3475, 2114, 2103, 2103, 2103, 2103, 2103, 3158, 2103, 2103, 2103, 2114, 3158, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 3158, 3158, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 3158, 3158, 2114, 2103, 2103, 2103, 2103, 2103, 2114, 2103, 2103, 2103, 3158, 3158, 3480, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3481, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 2196, 3158, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3158, 3158, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3482, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3484, 3485, 3486, 3486, 3486, 3486, 3158, 3158, 3158, 3487, 3487, 3487, 3487, 3488, 3158, 3489, 3490, 3491, 3492, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3493, 3494, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3158, 3158, 3158, 3158, 3496, 3496, 3496, 3496, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3497, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3498, 3158, 3158, 3499, 3500, 3501, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3502, 3503, 3158, 3158, 3504, 3158, 3505, 3158, 3158, 3490, 3158, 3492, 3506, 3158, 3158, 3158, 3158, 3507, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3508, 3509, 3509, 3510, 3511, 3511, 3512, 3508, 2423, 2423, 2423, 2423, 3158, 2423, 2423, 2423, 2423, 3158, 3158, 3158, 2423, 2423, 3158, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 3508, 3158, 3158, 2423, 2423, 2454, 2423, 2423, 2423, 2423, 2423, 2423, 3158, 3158, 2423, 2423, 2423, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3158, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3514, 3514, 3515, 3516, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3518, 3519, 3519, 3519, 3519, 3158, 3158, 3158, 3520, 3520, 3520, 3520, 3158, 3158, 3158, 3158, 3158, 3158, 3521, 3522, 3523, 3158, 3523, 3523, 3523, 3158, 3158, 3158, 3158, 3158, 3158, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3525, 3525, 3525, 3526, 3526, 3526, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3527, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2423, 3509, 3528, 3528, 3158, 3158, 3511, 3529, 3511, 3530, 3530, 3531, 2423, 2423, 2423, 3158, 2423, 2423, 2423, 2423, 3158, 2454, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 3158, 3158, 3158, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 2423, 3158, 3158, 3158, 2423, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3513, 3513, 3513, 3513, 3513, 3513, 3158, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3158, 3515, 3516, 3516, 3532, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3517, 3518, 3519, 3519, 3519, 3158, 3158, 3158, 3158, 3158, 3520, 3533, 3158, 3158, 3158, 3522, 3523, 3523, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3524, 3524, 3524, 3524, 3524, 3524, 3524, 3525, 3526, 3527, 3527, 3527, 3527, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2423, 3528, 3528, 3511, 3158, 3531, 2423, 2423, 2423, 3158, 3158, 3158, 3158, 3158, 3158, 3534, 2423, 2423, 2423, 2423, 3158, 3158, 3158, 3158, 2423, 2653, 3158, 3158, 3158, 3158, 3158, 3158, 2423, 2423, 2423, 2643, 2423, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3513, 3532, 3517, 3517, 3517, 3517, 3518, 3519, 3158, 3520, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3524, 3524, 3524, 3524, 3524, 3158, 3158, 3158, 3158, 3158, 3535, 3158, 2423, 3528, 3511, 2423, 2423, 2423, 3158, 3536, 3534, 3536, 3158, 3537, 3537, 3537, 3158, 3537, 2792, 3537, 3538, 2874, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2423, 2423, 2423, 3158, 3539, 3158, 3158, 3158, 3158, 3158, 3513, 3513, 3513, 3513, 3513, 3517, 3518, 3519, 3158, 3158, 3158, 3158, 3158, 3158, 3524, 3524, 3524, 3524, 3524, 3158, 3158, 3158, 3158, 3158, 2423, 3528, 3511, 2423, 2423, 2423, 3158, 3158, 3537, 3158, 3537, 3537, 3158, 3537, 3537, 3540, 3158, 3158, 3537, 3537, 3158, 3538, 3158, 3538, 3541, 3540, 3542, 3537, 3158, 3158, 3158, 3158, 3158, 2423, 2423, 2423, 3158, 3543, 3539, 3543, 3158, 3158, 3158, 3158, 3513, 3513, 3513, 3513, 3513, 3517, 3518, 3158, 3158, 3158, 3158, 3158, 3524, 3524, 3524, 3524, 3524, 3158, 3158, 3158, 2874, 3528, 3511, 2423, 3544, 2423, 3158, 3537, 3158, 3158, 2941, 2941, 3537, 2874, 2874, 3158, 3537, 3537, 3537, 3537, 3158, 3158, 3158, 3158, 2423, 2423, 3158, 3158, 3158, 3158, 3545, 3513, 3513, 3513, 3517, 3158, 3546, 3158, 3158, 3158, 3158, 3158, 3524, 3158, 3524, 3158, 3537, 3158, 3528, 3511, 2423, 3537, 3537, 3158, 2874, 2998, 2998, 3158, 3537, 3158, 3158, 3158, 2423, 3158, 3158, 3158, 3513, 3546, 3546, 3547, 3158, 3158, 3524, 3524, 3158, 3158, 3528, 3158, 2423, 3158, 3036, 3036, 3158, 3158, 2874, 3537, 3537, 3040, 3158, 3071, 3042, 3060, 3060, 3158, 3158, 3158, 2423, 3158, 3158, 3513, 3158, 3158, 3547, 3158, 3158, 3158, 3158, 3537, 3537, 3060, 3548, 2423, 3062, 3158, 3537, 3537, 3065, 3066, 3066, 3158, 2874, 3071, 3089, 3089, 3537, 3060, 3076, 3076, 3158, 3158, 3158, 2423, 3158, 3158, 3513, 3537, 3089, 2423, 3096, 3537, 3537, 3102, 2874, 3089, 3060, 3537, 3111, 3158, 2423, 3158, 3513, 2423, 2874, 3089, 3060, 3158, 2423, 2874, 3089, 3060, 2423, 2874, 3089, 3060, 2423, 3089, 3060, 2423, 3089, 3060, 2423, 3089, 2423, 2423, 3158, 0, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158 } ; static yyconst flex_int16_t yy_nxt[27610] = { 0, 3158, 3158, 67, 68, 73, 67, 68, 73, 534, 535, 67, 68, 69, 70, 76, 69, 70, 3158, 869, 71, 77, 78, 74, 189, 668, 495, 189, 79, 72, 190, 496, 72, 82, 67, 68, 82, 80, 76, 596, 869, 671, 191, 73, 77, 78, 73, 69, 500, 70, 69, 83, 70, 501, 2479, 77, 81, 78, 67, 68, 80, 233, 596, 539, 1175, 503, 539, 85, 86, 87, 504, 90, 67, 68, 90, 88, 540, 631, 77, 81, 78, 85, 86, 87, 89, 509, 512, 517, 521, 91, 510, 513, 518, 522, 577, 93, 94, 577, 89, 95, 596, 552, 86, 81, 87, 96, 97, 578, 100, 93, 94, 100, 98, 95, 103, 104, 86, 81, 87, 96, 97, 99, 525, 495, 105, 106, 101, 526, 532, 596, 891, 107, 630, 251, 73, 99, 251, 73, 500, 96, 108, 97, 549, 537, 542, 110, 103, 104, 110, 543, 892, 252, 233, 96, 671, 97, 105, 106, 105, 109, 106, 605, 73, 111, 606, 73, 113, 67, 114, 113, 546, 291, 108, 674, 291, 547, 561, 115, 116, 117, 74, 562, 671, 674, 118, 120, 67, 114, 120, 74, 105, 109, 106, 119, 671, 2480, 115, 116, 117, 123, 124, 296, 291, 121, 296, 291, 668, 553, 554, 125, 126, 115, 119, 116, 596, 317, 127, 566, 317, 74, 74, 318, 567, 73, 368, 128, 73, 368, 842, 495, 115, 601, 116, 74, 496, 130, 123, 124, 130, 133, 134, 74, 74, 125, 129, 126, 125, 126, 497, 135, 136, 137, 549, 131, 596, 843, 138, 140, 133, 134, 140, 387, 128, 879, 387, 139, 550, 880, 135, 136, 137, 551, 642, 497, 596, 141, 643, 67, 68, 388, 125, 129, 126, 135, 139, 136, 596, 69, 70, 73, 67, 68, 73, 412, 71, 412, 412, 853, 412, 549, 69, 70, 135, 72, 136, 654, 412, 74, 611, 412, 655, 413, 445, 413, 445, 445, 72, 445, 612, 840, 500, 69, 840, 70, 413, 501, 675, 668, 613, 596, 446, 2483, 446, 861, 69, 1140, 70, 66, 142, 143, 144, 142, 145, 146, 66, 147, 145, 66, 148, 149, 150, 66, 151, 152, 153, 154, 155, 156, 156, 156, 157, 152, 158, 152, 159, 160, 161, 161, 161, 161, 161, 161, 161, 162, 161, 161, 161, 161, 163, 161, 161, 161, 161, 164, 145, 165, 66, 166, 167, 168, 169, 170, 171, 172, 173, 161, 174, 161, 161, 175, 176, 177, 178, 179, 161, 180, 181, 182, 183, 184, 185, 161, 161, 161, 186, 145, 187, 188, 161, 66, 66, 67, 68, 66, 192, 146, 66, 193, 194, 195, 148, 196, 197, 198, 199, 200, 201, 66, 202, 66, 66, 66, 66, 203, 204, 205, 206, 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 208, 208, 208, 208, 69, 66, 70, 210, 211, 212, 213, 214, 215, 216, 217, 218, 208, 219, 208, 208, 220, 221, 222, 223, 224, 208, 225, 226, 227, 228, 229, 230, 208, 208, 208, 186, 231, 66, 232, 208, 234, 235, 236, 237, 235, 234, 238, 234, 239, 234, 234, 240, 69, 241, 234, 234, 234, 234, 234, 242, 66, 66, 66, 243, 234, 234, 234, 234, 244, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 246, 234, 247, 234, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 234, 234, 248, 249, 250, 66, 66, 67, 68, 66, 192, 146, 66, 253, 194, 195, 148, 196, 197, 198, 199, 200, 254, 255, 202, 66, 66, 66, 66, 66, 204, 205, 206, 207, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 256, 256, 256, 256, 69, 66, 70, 210, 258, 259, 260, 261, 262, 263, 264, 265, 256, 266, 256, 256, 267, 268, 269, 270, 271, 256, 272, 273, 274, 275, 276, 277, 256, 256, 256, 66, 231, 187, 232, 256, 66, 66, 67, 68, 66, 66, 146, 66, 278, 66, 66, 279, 69, 70, 66, 66, 66, 66, 66, 71, 66, 66, 66, 66, 280, 66, 66, 66, 72, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 69, 66, 70, 66, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 282, 66, 66, 66, 281, 66, 283, 67, 68, 283, 66, 66, 66, 284, 285, 285, 66, 69, 70, 285, 66, 66, 66, 66, 71, 66, 66, 66, 286, 287, 66, 66, 66, 72, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 69, 66, 70, 285, 289, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 290, 66, 66, 66, 288, 66, 292, 67, 68, 292, 66, 66, 66, 293, 66, 66, 66, 69, 70, 66, 66, 66, 66, 66, 71, 66, 66, 66, 66, 294, 66, 66, 66, 72, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 69, 66, 70, 66, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 66, 66, 66, 66, 295, 66, 283, 297, 68, 283, 66, 66, 66, 298, 285, 285, 66, 69, 70, 285, 299, 66, 299, 66, 71, 66, 66, 66, 286, 287, 66, 300, 66, 301, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 69, 66, 70, 285, 302, 303, 302, 302, 302, 304, 302, 302, 302, 305, 302, 302, 302, 302, 302, 302, 302, 302, 302, 306, 302, 302, 302, 302, 302, 302, 302, 290, 66, 66, 66, 302, 283, 67, 68, 283, 557, 459, 1109, 672, 459, 558, 672, 69, 70, 291, 67, 68, 291, 1110, 71, 1128, 673, 495, 286, 460, 69, 70, 496, 72, 668, 676, 596, 74, 596, 481, 1158, 286, 481, 549, 67, 68, 72, 73, 67, 68, 73, 69, 596, 70, 319, 320, 596, 74, 319, 320, 491, 71, 884, 491, 69, 74, 70, 321, 869, 322, 72, 321, 885, 322, 72, 500, 1030, 626, 492, 627, 501, 614, 290, 615, 2484, 1031, 628, 629, 69, 869, 70, 616, 69, 617, 70, 290, 66, 307, 67, 68, 307, 66, 66, 66, 308, 66, 66, 66, 309, 70, 66, 299, 310, 299, 66, 71, 66, 66, 66, 66, 66, 311, 66, 312, 313, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 69, 66, 70, 66, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 315, 314, 314, 314, 314, 314, 316, 314, 314, 314, 314, 290, 66, 66, 66, 314, 67, 324, 493, 498, 66, 493, 498, 902, 2485, 844, 325, 326, 844, 507, 674, 515, 507, 327, 515, 493, 494, 499, 493, 671, 769, 66, 328, 329, 67, 324, 329, 508, 66, 516, 869, 869, 872, 494, 325, 326, 523, 951, 902, 523, 325, 330, 326, 529, 530, 536, 529, 952, 536, 66, 328, 869, 869, 869, 524, 493, 545, 555, 493, 545, 555, 531, 493, 499, 863, 493, 596, 864, 325, 540, 326, 67, 68, 494, 499, 556, 568, 568, 568, 568, 494, 69, 70, 564, 842, 602, 564, 596, 71, 570, 568, 568, 570, 596, 331, 495, 332, 72, 569, 1008, 496, 565, 603, 549, 604, 607, 1009, 494, 888, 889, 333, 569, 608, 659, 2298, 69, 609, 70, 660, 610, 890, 334, 335, 336, 495, 337, 338, 500, 339, 496, 495, 340, 501, 596, 341, 496, 671, 1174, 342, 343, 344, 345, 346, 66, 347, 348, 349, 347, 66, 66, 66, 350, 66, 66, 66, 69, 70, 351, 66, 66, 66, 66, 71, 66, 66, 66, 352, 66, 66, 66, 353, 72, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, 355, 354, 354, 354, 354, 69, 66, 70, 351, 354, 354, 356, 357, 358, 354, 359, 354, 354, 360, 354, 354, 361, 354, 354, 362, 354, 354, 354, 363, 354, 364, 365, 366, 354, 354, 354, 66, 66, 66, 367, 354, 369, 370, 371, 372, 370, 369, 369, 373, 374, 369, 369, 369, 375, 376, 369, 369, 369, 369, 369, 377, 369, 369, 369, 378, 378, 369, 369, 369, 379, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 375, 369, 376, 369, 380, 380, 380, 381, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 382, 380, 380, 380, 383, 384, 380, 385, 380, 380, 380, 380, 386, 369, 369, 369, 380, 389, 389, 390, 391, 389, 389, 389, 389, 392, 389, 389, 389, 393, 394, 389, 389, 389, 389, 389, 395, 389, 389, 389, 396, 397, 389, 389, 389, 398, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, 400, 399, 399, 399, 399, 393, 389, 394, 389, 399, 399, 401, 402, 403, 399, 404, 399, 399, 405, 399, 399, 406, 399, 399, 407, 399, 399, 399, 408, 399, 409, 410, 411, 399, 399, 399, 397, 389, 389, 389, 399, 389, 389, 390, 391, 389, 389, 389, 389, 414, 389, 389, 389, 415, 394, 389, 389, 389, 389, 389, 395, 389, 389, 389, 389, 397, 389, 389, 389, 398, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 393, 389, 394, 389, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 397, 389, 389, 389, 416, 389, 389, 390, 391, 389, 389, 389, 389, 417, 389, 389, 389, 393, 418, 389, 389, 389, 389, 389, 395, 389, 389, 389, 389, 389, 389, 389, 389, 398, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, 420, 419, 419, 419, 419, 393, 389, 394, 389, 419, 419, 421, 422, 423, 419, 424, 419, 419, 425, 419, 419, 426, 419, 419, 427, 419, 419, 419, 428, 419, 429, 430, 431, 419, 419, 419, 389, 389, 389, 389, 419, 432, 432, 433, 434, 432, 432, 435, 432, 436, 432, 432, 437, 438, 439, 432, 432, 432, 432, 432, 440, 432, 432, 432, 432, 432, 432, 432, 432, 441, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 443, 432, 444, 432, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 432, 432, 432, 432, 442, 432, 432, 433, 434, 432, 432, 435, 432, 447, 432, 432, 437, 438, 439, 432, 432, 432, 432, 432, 440, 432, 432, 432, 432, 432, 432, 432, 432, 441, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 443, 432, 444, 432, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, 432, 432, 432, 432, 448, 449, 449, 433, 450, 449, 449, 451, 449, 452, 449, 449, 449, 453, 454, 449, 449, 449, 449, 449, 455, 449, 449, 449, 449, 449, 449, 449, 449, 456, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 453, 458, 454, 449, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 449, 449, 449, 449, 457, 66, 461, 462, 463, 461, 66, 66, 464, 465, 66, 66, 66, 69, 70, 66, 66, 466, 66, 66, 71, 66, 66, 66, 66, 466, 66, 66, 66, 72, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 467, 468, 467, 467, 467, 467, 69, 66, 70, 66, 467, 467, 469, 470, 471, 467, 472, 467, 467, 473, 467, 467, 474, 467, 467, 475, 467, 467, 467, 476, 467, 477, 478, 479, 467, 467, 467, 480, 66, 66, 66, 467, 482, 482, 483, 484, 482, 482, 482, 482, 485, 482, 482, 482, 486, 487, 482, 482, 482, 482, 482, 488, 482, 482, 482, 482, 482, 482, 482, 482, 489, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 486, 482, 487, 482, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, 482, 482, 482, 482, 490, 568, 568, 568, 568, 568, 568, 568, 568, 580, 580, 580, 571, 592, 593, 593, 592, 497, 1116, 596, 596, 1117, 1015, 569, 594, 595, 596, 569, 595, 839, 839, 955, 956, 581, 839, 597, 595, 598, 618, 623, 596, 624, 1016, 957, 666, 635, 619, 666, 596, 620, 596, 625, 621, 493, 1152, 622, 493, 596, 632, 636, 595, 1131, 633, 581, 583, 637, 584, 585, 596, 839, 586, 494, 972, 596, 573, 638, 587, 588, 634, 589, 590, 591, 973, 639, 574, 592, 593, 593, 592, 596, 650, 656, 640, 651, 497, 641, 594, 595, 596, 657, 595, 500, 667, 652, 1159, 658, 501, 597, 595, 598, 653, 644, 1012, 671, 645, 646, 690, 599, 661, 661, 661, 661, 1013, 690, 1032, 662, 647, 690, 2486, 648, 722, 649, 595, 664, 568, 568, 664, 500, 1032, 665, 1121, 677, 501, 678, 679, 846, 626, 680, 846, 686, 1122, 499, 686, 681, 682, 569, 683, 684, 685, 686, 687, 851, 686, 596, 851, 688, 689, 596, 847, 859, 687, 691, 859, 692, 1153, 688, 689, 686, 1042, 499, 686, 691, 493, 692, 847, 493, 686, 498, 687, 686, 498, 693, 1042, 688, 689, 686, 1762, 687, 686, 691, 494, 692, 688, 689, 493, 499, 687, 493, 691, 690, 692, 688, 689, 704, 1052, 1040, 690, 691, 686, 692, 690, 686, 494, 705, 1041, 690, 694, 962, 1052, 687, 962, 596, 690, 706, 688, 689, 707, 695, 708, 690, 691, 596, 692, 1133, 710, 837, 690, 835, 709, 964, 835, 690, 711, 690, 696, 712, 697, 690, 713, 698, 690, 714, 699, 690, 1738, 715, 723, 716, 700, 836, 690, 976, 977, 690, 690, 701, 718, 717, 719, 702, 690, 1119, 703, 978, 690, 720, 721, 690, 724, 690, 727, 1135, 725, 1062, 596, 690, 690, 596, 690, 690, 690, 1120, 690, 690, 728, 690, 730, 1062, 726, 690, 729, 495, 690, 733, 500, 731, 496, 734, 732, 501, 690, 690, 626, 837, 690, 735, 994, 690, 736, 737, 690, 995, 690, 498, 741, 690, 498, 742, 2497, 690, 738, 690, 596, 739, 690, 740, 690, 743, 690, 1134, 690, 499, 745, 690, 744, 690, 747, 746, 690, 690, 749, 1001, 748, 495, 539, 750, 1002, 539, 496, 690, 1113, 1114, 690, 751, 751, 751, 751, 540, 753, 751, 751, 753, 751, 751, 751, 751, 751, 751, 751, 751, 1138, 775, 775, 754, 831, 752, 494, 596, 775, 832, 752, 596, 775, 775, 752, 804, 775, 1171, 752, 758, 759, 759, 758, 500, 764, 764, 764, 764, 501, 1155, 760, 765, 596, 758, 759, 759, 758, 896, 896, 896, 896, 762, 1032, 763, 760, 767, 751, 751, 767, 770, 771, 999, 770, 1028, 999, 762, 1032, 763, 1029, 897, 772, 770, 771, 499, 770, 773, 774, 752, 2474, 1000, 1032, 691, 772, 692, 596, 756, 1033, 773, 774, 770, 771, 1034, 770, 691, 1032, 692, 1166, 1043, 770, 771, 772, 770, 1044, 776, 869, 773, 774, 770, 771, 772, 770, 691, 870, 692, 773, 774, 596, 871, 772, 1035, 691, 1050, 692, 773, 774, 869, 1161, 842, 1036, 691, 1051, 692, 775, 775, 770, 771, 787, 770, 777, 775, 775, 775, 1037, 775, 775, 772, 788, 775, 775, 778, 773, 774, 789, 805, 790, 775, 691, 1017, 692, 596, 1018, 1019, 792, 1038, 791, 1180, 779, 1048, 780, 775, 793, 781, 1020, 794, 782, 2555, 795, 1038, 775, 796, 797, 1048, 798, 1053, 783, 775, 1039, 596, 1054, 775, 1049, 784, 799, 845, 775, 785, 845, 800, 786, 801, 1154, 775, 596, 775, 809, 775, 802, 803, 775, 806, 775, 499, 1208, 807, 775, 836, 775, 775, 810, 775, 775, 815, 1060, 775, 811, 816, 775, 812, 775, 808, 775, 1061, 775, 775, 775, 775, 813, 2556, 817, 814, 775, 818, 819, 866, 823, 775, 866, 824, 775, 867, 1063, 775, 775, 820, 775, 1064, 821, 825, 822, 775, 775, 499, 1088, 775, 826, 827, 775, 775, 829, 837, 828, 775, 873, 869, 830, 873, 1088, 869, 1045, 1055, 530, 875, 898, 896, 896, 898, 876, 1046, 1056, 1141, 874, 596, 1070, 2557, 869, 1142, 493, 1071, 869, 493, 494, 1047, 1057, 1058, 897, 896, 896, 896, 896, 896, 896, 896, 896, 1033, 494, 1072, 899, 1058, 1089, 837, 904, 896, 896, 904, 1073, 498, 1059, 897, 498, 596, 2558, 897, 904, 896, 896, 904, 904, 896, 896, 904, 1136, 1137, 906, 499, 907, 904, 896, 896, 904, 904, 896, 896, 904, 1076, 906, 596, 907, 596, 906, 1030, 907, 1098, 1077, 1168, 908, 553, 554, 906, 1031, 907, 1099, 906, 1132, 907, 904, 896, 896, 904, 596, 904, 896, 896, 904, 904, 896, 896, 904, 596, 901, 596, 904, 896, 896, 904, 1132, 549, 906, 1065, 907, 1172, 909, 906, 910, 907, 1671, 906, 1066, 907, 577, 911, 549, 577, 906, 912, 907, 904, 896, 896, 904, 1223, 1067, 578, 904, 896, 896, 904, 904, 896, 896, 904, 1224, 493, 914, 498, 493, 913, 498, 906, 1139, 907, 1176, 917, 915, 596, 906, 596, 907, 916, 906, 494, 907, 499, 904, 896, 896, 904, 924, 924, 924, 924, 596, 1162, 1454, 925, 927, 896, 896, 927, 928, 928, 929, 928, 918, 919, 906, 596, 907, 935, 928, 929, 935, 1455, 499, 1156, 920, 921, 897, 1157, 1068, 1038, 922, 929, 929, 929, 929, 494, 596, 943, 928, 929, 943, 1173, 1068, 1038, 923, 988, 988, 988, 988, 2559, 507, 1069, 1039, 507, 1074, 499, 515, 596, 1184, 515, 930, 1078, 523, 1075, 1038, 523, 2560, 990, 508, 930, 1086, 1087, 931, 1086, 516, 1078, 932, 1037, 1038, 933, 524, 931, 596, 930, 934, 932, 1169, 1039, 933, 930, 596, 596, 991, 934, 1170, 931, 1163, 1035, 1160, 932, 1164, 931, 933, 549, 2561, 932, 1036, 934, 933, 929, 929, 929, 929, 934, 992, 992, 1183, 992, 992, 992, 1037, 992, 596, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 596, 1196, 596, 992, 992, 992, 992, 992, 992, 1191, 596, 1079, 1003, 929, 929, 1003, 1080, 1719, 929, 929, 929, 929, 529, 530, 1129, 529, 992, 930, 992, 992, 494, 596, 1024, 929, 929, 1024, 1192, 596, 536, 931, 531, 536, 1130, 932, 549, 555, 933, 596, 555, 545, 499, 934, 545, 1197, 1090, 1193, 499, 992, 992, 992, 992, 596, 540, 556, 930, 1190, 2562, 499, 1090, 1081, 930, 1177, 564, 1132, 596, 564, 931, 1091, 1082, 1084, 932, 596, 931, 933, 930, 1207, 932, 1235, 934, 933, 565, 549, 1083, 1084, 934, 1167, 931, 1236, 1167, 869, 932, 596, 1085, 933, 568, 568, 568, 568, 934, 1203, 2563, 549, 570, 568, 568, 570, 592, 593, 593, 592, 869, 549, 1094, 1094, 1094, 1094, 569, 594, 595, 1095, 494, 595, 596, 672, 569, 596, 672, 1198, 597, 595, 598, 1165, 592, 593, 593, 592, 673, 1132, 1100, 1101, 1101, 1100, 596, 594, 595, 1102, 1430, 595, 596, 1206, 1103, 578, 1431, 595, 597, 595, 598, 580, 580, 580, 1104, 1108, 1108, 1108, 1108, 1125, 1125, 1178, 571, 2564, 1126, 1126, 596, 592, 593, 593, 592, 596, 1212, 595, 1127, 581, 1179, 569, 594, 595, 1565, 1194, 595, 1093, 593, 593, 593, 593, 596, 597, 595, 907, 1564, 596, 1181, 594, 595, 902, 1195, 595, 1182, 1185, 1186, 596, 1187, 581, 597, 595, 1188, 596, 1199, 1106, 596, 1204, 595, 1189, 596, 1209, 666, 1200, 1210, 666, 666, 1205, 2565, 666, 1125, 1216, 1217, 1227, 1228, 595, 902, 842, 574, 1143, 1144, 1145, 1145, 1144, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1146, 1147, 1143, 1143, 1147, 1143, 1143, 1143, 1233, 1436, 869, 1148, 1147, 1149, 1143, 1143, 1143, 1420, 1201, 661, 661, 661, 661, 1436, 1230, 596, 662, 1231, 1234, 667, 1504, 869, 1528, 667, 1143, 1143, 1147, 1143, 1202, 1526, 1526, 1529, 627, 3158, 3158, 3158, 3158, 596, 840, 1505, 3158, 840, 664, 568, 568, 664, 596, 1684, 665, 1150, 1213, 1214, 1214, 1213, 1683, 1143, 1143, 1143, 1143, 1151, 499, 594, 595, 596, 569, 595, 686, 686, 1219, 686, 686, 1219, 1530, 595, 907, 1220, 686, 687, 1654, 686, 1221, 673, 688, 689, 1655, 1132, 1530, 687, 691, 691, 692, 692, 688, 689, 596, 2047, 686, 595, 691, 686, 692, 844, 1688, 840, 844, 686, 840, 687, 686, 1517, 1531, 596, 688, 689, 686, 1532, 687, 686, 691, 3158, 692, 688, 689, 686, 1563, 687, 686, 691, 1518, 692, 688, 689, 686, 1218, 687, 686, 691, 1685, 692, 688, 689, 718, 1533, 687, 1549, 691, 1571, 692, 688, 689, 686, 1534, 844, 686, 691, 844, 692, 846, 1570, 686, 846, 687, 686, 1550, 1240, 1535, 688, 689, 686, 1565, 687, 686, 691, 1564, 692, 688, 689, 2049, 1557, 687, 847, 691, 1241, 692, 688, 689, 686, 1557, 3158, 686, 691, 1242, 692, 1563, 1243, 596, 686, 687, 690, 686, 690, 1558, 688, 689, 690, 1571, 1307, 687, 691, 1570, 692, 690, 688, 689, 686, 1695, 3158, 686, 691, 1244, 692, 1608, 1246, 1245, 859, 687, 686, 859, 596, 686, 688, 689, 1329, 1329, 1329, 1329, 691, 687, 692, 1330, 3158, 686, 688, 689, 686, 1608, 1249, 1308, 691, 690, 692, 596, 687, 690, 1247, 1248, 1672, 688, 689, 686, 690, 596, 686, 691, 1250, 692, 1309, 596, 1428, 686, 687, 1429, 686, 627, 851, 688, 689, 851, 1673, 1689, 687, 691, 690, 692, 690, 688, 689, 1306, 690, 1251, 596, 691, 499, 692, 2566, 1243, 1252, 847, 1450, 1693, 837, 1450, 1253, 1254, 1255, 1254, 1254, 1255, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1256, 1254, 1254, 1254, 1254, 1257, 1258, 1254, 1270, 884, 596, 1259, 1254, 1260, 1254, 1254, 1254, 1263, 690, 1569, 1312, 1569, 686, 835, 690, 686, 835, 751, 751, 751, 751, 690, 1706, 687, 1254, 1254, 1254, 1254, 688, 689, 686, 596, 596, 686, 691, 836, 692, 2567, 690, 752, 690, 687, 1737, 627, 690, 1313, 688, 689, 596, 1261, 686, 690, 691, 686, 692, 1254, 1254, 1254, 1254, 1262, 686, 687, 690, 686, 690, 596, 688, 689, 1314, 1696, 686, 687, 691, 686, 692, 690, 688, 689, 884, 596, 1264, 687, 691, 1717, 692, 686, 688, 689, 686, 837, 1450, 1310, 691, 1450, 692, 962, 687, 690, 962, 690, 1265, 688, 689, 690, 1572, 1699, 1572, 691, 1311, 692, 690, 596, 690, 686, 1322, 1266, 686, 964, 690, 1267, 1580, 1268, 1580, 686, 687, 690, 686, 1709, 1553, 688, 689, 1554, 596, 1269, 687, 691, 884, 692, 686, 688, 689, 686, 596, 626, 690, 691, 690, 692, 686, 687, 690, 686, 1271, 1319, 688, 689, 626, 690, 873, 687, 691, 873, 692, 869, 688, 689, 1582, 690, 1582, 1315, 691, 1272, 692, 690, 1566, 690, 874, 1320, 1316, 596, 690, 690, 686, 1566, 869, 686, 1273, 1321, 690, 2116, 1274, 962, 686, 687, 962, 686, 596, 1037, 688, 689, 1590, 1275, 1590, 687, 691, 1724, 692, 1243, 688, 689, 839, 839, 596, 964, 691, 839, 692, 1276, 1277, 1278, 1277, 1277, 1278, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1279, 1277, 1277, 1277, 1277, 1280, 1281, 1277, 1592, 1718, 1592, 1282, 1277, 1283, 1277, 1277, 1277, 1285, 1486, 596, 839, 1486, 1286, 1287, 1287, 1286, 596, 753, 751, 751, 753, 1291, 596, 687, 1277, 1277, 1277, 1277, 688, 689, 686, 627, 907, 686, 691, 494, 692, 1727, 690, 752, 690, 687, 962, 596, 690, 962, 688, 689, 1739, 1323, 686, 690, 691, 686, 692, 1277, 1277, 1277, 1277, 1284, 686, 687, 1682, 686, 964, 845, 688, 689, 845, 596, 596, 687, 691, 1288, 692, 686, 688, 689, 686, 1132, 884, 1289, 691, 499, 692, 686, 687, 836, 686, 1697, 596, 688, 689, 1290, 1715, 1639, 687, 691, 1639, 692, 686, 688, 689, 686, 1434, 869, 1600, 691, 1600, 692, 884, 687, 1292, 1435, 1536, 596, 688, 689, 686, 1317, 596, 686, 691, 1694, 692, 690, 869, 690, 1536, 687, 596, 690, 1243, 596, 688, 689, 1293, 1537, 690, 1318, 691, 837, 692, 719, 1294, 686, 1686, 1687, 686, 686, 999, 1731, 686, 999, 1295, 1708, 687, 690, 1326, 690, 687, 688, 689, 690, 596, 688, 689, 691, 1000, 692, 690, 691, 1296, 692, 686, 1561, 1698, 686, 686, 1561, 690, 686, 1327, 2129, 596, 687, 690, 1594, 596, 687, 688, 689, 519, 690, 688, 689, 691, 596, 692, 690, 691, 1324, 692, 869, 1325, 690, 686, 1298, 1297, 686, 1728, 1437, 690, 1299, 1565, 1564, 1438, 687, 758, 759, 759, 758, 688, 689, 869, 1300, 1720, 596, 691, 760, 692, 1332, 1332, 1332, 1332, 1700, 1301, 1559, 754, 1602, 762, 1602, 763, 758, 759, 759, 758, 759, 759, 759, 759, 1559, 1565, 752, 760, 1629, 1564, 1629, 760, 1614, 1560, 2568, 1302, 596, 1303, 762, 1442, 869, 1304, 762, 758, 759, 759, 758, 596, 1305, 764, 764, 764, 764, 1442, 760, 1701, 765, 3158, 3158, 3158, 3158, 869, 1443, 1733, 3158, 762, 1567, 763, 1336, 1337, 1337, 1336, 767, 751, 751, 767, 549, 1578, 2569, 760, 1567, 770, 771, 756, 770, 770, 771, 596, 770, 1039, 499, 1578, 772, 596, 752, 1577, 772, 773, 774, 1704, 1049, 773, 774, 691, 1577, 692, 1619, 691, 1619, 692, 771, 771, 596, 771, 770, 771, 866, 770, 1047, 866, 1736, 772, 867, 2570, 1705, 772, 773, 774, 1561, 1561, 773, 774, 770, 771, 499, 770, 691, 1561, 692, 596, 1584, 770, 771, 772, 770, 511, 1587, 1711, 773, 774, 770, 771, 772, 770, 691, 1587, 692, 773, 774, 770, 771, 772, 770, 691, 596, 692, 773, 774, 800, 1057, 772, 596, 691, 1561, 692, 773, 774, 770, 771, 1850, 770, 691, 1850, 692, 2571, 1741, 770, 771, 772, 770, 1713, 1339, 837, 773, 774, 770, 771, 772, 770, 691, 596, 692, 773, 774, 1086, 1087, 772, 1086, 691, 1340, 692, 773, 774, 770, 771, 596, 770, 691, 1341, 692, 596, 1342, 1565, 1564, 772, 1716, 1564, 1707, 1748, 773, 774, 896, 896, 896, 896, 691, 596, 692, 1571, 1570, 770, 771, 1570, 770, 770, 771, 1343, 770, 1712, 1345, 1344, 772, 1767, 897, 596, 772, 773, 774, 1768, 1561, 773, 774, 691, 1561, 692, 596, 691, 1564, 692, 770, 771, 519, 770, 1571, 1570, 1745, 1595, 1714, 1439, 869, 772, 1346, 1347, 1570, 2572, 773, 774, 1440, 1565, 1564, 1348, 691, 596, 692, 1349, 770, 771, 1564, 770, 1588, 869, 1441, 924, 924, 924, 924, 772, 1571, 1570, 925, 2579, 773, 774, 1588, 1740, 1598, 1570, 691, 1621, 692, 770, 771, 1059, 770, 770, 771, 596, 770, 596, 1598, 1597, 772, 1350, 1564, 596, 772, 773, 774, 1069, 1597, 773, 774, 691, 1931, 692, 1723, 691, 1132, 692, 1932, 1351, 1721, 1570, 1067, 2580, 1722, 1352, 1254, 1353, 1354, 1254, 1353, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1355, 1254, 1254, 1254, 1254, 1356, 1357, 1254, 1627, 1561, 1561, 1259, 1254, 1260, 1254, 1254, 1254, 596, 1561, 1360, 596, 511, 1627, 1132, 596, 1361, 1585, 770, 771, 596, 770, 1091, 1732, 1726, 1254, 1254, 1254, 1254, 772, 770, 771, 596, 770, 773, 774, 924, 924, 924, 924, 691, 772, 692, 925, 1132, 1561, 773, 774, 1729, 1568, 1358, 596, 691, 1568, 692, 596, 1254, 1254, 1254, 1254, 1359, 1594, 770, 771, 596, 770, 519, 3158, 3158, 3158, 3158, 549, 1725, 772, 3158, 1725, 1730, 1743, 773, 774, 1744, 596, 2581, 1362, 691, 596, 692, 1363, 596, 770, 771, 1364, 770, 770, 771, 1568, 770, 1742, 2047, 1568, 772, 1622, 2046, 1622, 772, 773, 774, 519, 1747, 773, 774, 691, 1595, 692, 596, 691, 1746, 692, 770, 771, 2021, 770, 2021, 1623, 1624, 1365, 1623, 770, 771, 772, 770, 596, 1565, 596, 773, 774, 1943, 1612, 772, 1749, 691, 1625, 692, 773, 774, 770, 771, 530, 770, 691, 1603, 692, 1750, 1366, 596, 530, 772, 1943, 1605, 1603, 1367, 773, 774, 770, 771, 549, 770, 691, 1775, 692, 1734, 1775, 1605, 1604, 772, 1776, 1368, 1615, 1616, 773, 774, 1606, 1735, 842, 2169, 691, 1615, 692, 770, 771, 1369, 770, 1616, 596, 1370, 1094, 1094, 1094, 1094, 772, 1083, 1085, 1095, 627, 773, 774, 770, 771, 1371, 770, 691, 596, 692, 1450, 1342, 1924, 1450, 772, 1639, 549, 549, 1639, 773, 774, 3158, 3158, 3158, 3158, 691, 2582, 692, 3158, 1372, 1277, 1373, 1374, 1277, 1373, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1375, 1277, 1277, 1277, 1277, 1376, 1377, 1277, 1379, 1565, 2106, 1282, 1277, 1283, 1277, 1277, 1277, 1287, 1287, 1287, 1287, 1564, 1380, 2012, 898, 896, 896, 898, 770, 771, 1381, 770, 2013, 2013, 1277, 1277, 1277, 1277, 596, 772, 770, 771, 494, 770, 773, 774, 897, 2047, 2592, 1571, 691, 772, 692, 1950, 1565, 1564, 773, 774, 1564, 2046, 770, 771, 691, 770, 692, 1277, 1277, 1277, 1277, 1378, 951, 772, 770, 771, 1950, 770, 773, 774, 1644, 1644, 1644, 1644, 691, 772, 692, 1645, 2123, 1486, 773, 774, 1486, 1382, 1486, 596, 691, 1486, 692, 770, 771, 1564, 770, 770, 771, 1167, 770, 2023, 1167, 2023, 772, 1383, 951, 907, 772, 773, 774, 869, 907, 773, 774, 691, 1571, 692, 1384, 691, 1570, 692, 770, 771, 1565, 770, 770, 771, 1564, 770, 1564, 2049, 869, 772, 2137, 2048, 2018, 772, 773, 774, 1342, 596, 773, 774, 691, 2018, 692, 596, 691, 1754, 692, 1571, 1754, 1710, 1385, 2049, 1386, 770, 771, 1535, 770, 770, 771, 1570, 770, 1755, 1756, 2048, 772, 1564, 2075, 951, 772, 773, 774, 2076, 1387, 773, 774, 691, 1388, 692, 1948, 691, 1948, 692, 770, 771, 2093, 770, 770, 771, 2094, 770, 1125, 1125, 2041, 772, 2041, 1126, 1126, 772, 773, 774, 626, 596, 773, 774, 691, 1127, 692, 2044, 691, 2044, 692, 1329, 1329, 1329, 1329, 1390, 1389, 2134, 1330, 770, 771, 1391, 770, 770, 771, 1219, 770, 596, 1219, 2109, 772, 596, 1220, 1392, 772, 773, 774, 1221, 673, 773, 774, 691, 596, 692, 1393, 691, 2115, 692, 770, 771, 596, 770, 770, 771, 2118, 770, 2119, 1125, 596, 772, 596, 2107, 2170, 772, 773, 774, 1561, 1561, 773, 774, 691, 596, 692, 596, 691, 1394, 692, 2122, 1610, 770, 771, 1395, 770, 548, 1397, 2047, 2046, 530, 1396, 2046, 772, 1969, 1342, 842, 1969, 773, 774, 1561, 1561, 770, 771, 691, 770, 692, 927, 896, 896, 927, 1399, 548, 772, 1611, 1398, 1970, 1612, 773, 774, 770, 771, 2060, 770, 691, 499, 692, 553, 554, 897, 1400, 772, 1401, 2046, 528, 2554, 773, 774, 869, 528, 770, 771, 691, 770, 692, 1611, 596, 596, 2124, 1402, 2114, 772, 770, 771, 2125, 770, 773, 774, 596, 869, 1403, 627, 691, 772, 692, 2061, 596, 2061, 773, 774, 770, 771, 549, 770, 691, 596, 692, 1463, 1463, 1463, 1463, 772, 1132, 1404, 899, 530, 773, 774, 1568, 1568, 770, 771, 691, 770, 692, 988, 988, 988, 988, 897, 1610, 772, 1405, 596, 869, 548, 773, 774, 2117, 1951, 1406, 1951, 691, 951, 692, 770, 771, 990, 770, 1407, 1408, 904, 896, 896, 904, 869, 772, 1101, 1101, 1101, 1101, 773, 774, 1618, 2141, 770, 771, 691, 770, 692, 1409, 596, 991, 906, 801, 907, 772, 770, 771, 1104, 770, 773, 774, 596, 1132, 1410, 901, 691, 772, 692, 2064, 2144, 2064, 773, 774, 770, 771, 2120, 770, 691, 596, 692, 596, 1411, 770, 771, 772, 770, 869, 951, 1571, 773, 774, 1412, 1570, 772, 1570, 691, 596, 692, 773, 774, 626, 1413, 770, 771, 691, 770, 692, 869, 904, 896, 896, 904, 2127, 772, 904, 896, 896, 904, 773, 774, 1565, 1564, 1414, 2128, 691, 596, 692, 596, 2593, 1564, 897, 1415, 907, 1570, 1416, 596, 906, 2130, 907, 1417, 904, 896, 896, 904, 904, 896, 896, 904, 904, 896, 896, 904, 2145, 904, 896, 896, 904, 2045, 2047, 2046, 1418, 2045, 906, 596, 907, 1564, 906, 2046, 907, 519, 906, 596, 907, 2131, 519, 906, 914, 907, 904, 896, 896, 904, 904, 896, 896, 904, 1336, 1337, 1337, 1336, 1132, 988, 988, 988, 988, 1571, 1570, 760, 1467, 1570, 906, 596, 907, 2046, 906, 2132, 907, 596, 1466, 904, 896, 896, 904, 990, 1132, 596, 1468, 904, 896, 896, 904, 1945, 869, 904, 896, 896, 904, 3158, 3158, 3158, 3158, 906, 2407, 907, 3158, 1945, 1565, 1564, 991, 906, 1570, 907, 2408, 869, 1443, 906, 1470, 907, 1469, 1277, 1471, 1472, 1472, 1471, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 2065, 2066, 2160, 1473, 1277, 1474, 1277, 1277, 1277, 914, 596, 1476, 1614, 1477, 904, 896, 896, 904, 904, 896, 896, 904, 904, 896, 896, 904, 1277, 1277, 1277, 1277, 904, 896, 896, 904, 869, 596, 906, 2133, 907, 596, 906, 2139, 907, 2594, 906, 1614, 907, 904, 896, 896, 904, 2138, 906, 686, 907, 869, 686, 1277, 1277, 1277, 1277, 1475, 904, 896, 896, 904, 596, 1623, 1624, 906, 1623, 907, 2595, 596, 1479, 691, 2135, 692, 1478, 928, 928, 929, 928, 2146, 906, 1625, 907, 1561, 1561, 1481, 596, 1561, 2140, 1480, 929, 929, 929, 929, 1482, 1574, 935, 928, 929, 935, 502, 1483, 972, 596, 1484, 943, 928, 929, 943, 988, 988, 988, 988, 3158, 494, 1485, 3158, 1561, 1561, 2153, 3158, 1561, 2143, 499, 2019, 3158, 3158, 930, 1561, 502, 596, 990, 1568, 1568, 1575, 596, 1568, 596, 2019, 931, 2171, 596, 930, 932, 1574, 2150, 933, 1537, 930, 502, 596, 934, 596, 2149, 931, 2165, 991, 930, 932, 596, 931, 933, 1561, 972, 932, 2151, 934, 933, 2156, 931, 2049, 2048, 934, 932, 2048, 596, 933, 1568, 2047, 2046, 596, 934, 992, 992, 626, 992, 992, 992, 596, 992, 2152, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 2154, 2158, 972, 992, 992, 992, 992, 992, 992, 1003, 929, 929, 1003, 2048, 596, 2155, 596, 1850, 1568, 1568, 1850, 2070, 1568, 1185, 1568, 1568, 992, 494, 992, 992, 502, 1568, 1568, 1568, 596, 1575, 1584, 1568, 1568, 2159, 1568, 511, 596, 511, 1108, 1108, 1108, 1108, 1585, 548, 686, 571, 596, 686, 1612, 2452, 596, 992, 992, 992, 992, 930, 2157, 1568, 596, 2430, 569, 771, 771, 1568, 771, 2161, 691, 931, 692, 596, 1568, 932, 772, 2114, 933, 596, 1618, 773, 774, 934, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1097, 553, 554, 1277, 1277, 1277, 1277, 1277, 1277, 1637, 1637, 1637, 1024, 929, 929, 1024, 596, 574, 596, 1630, 1631, 1631, 1630, 2164, 972, 2431, 1277, 1277, 1277, 1277, 499, 595, 686, 1637, 595, 686, 1337, 1337, 1337, 1337, 596, 569, 595, 907, 2172, 2184, 549, 760, 972, 2185, 1634, 1635, 1635, 1634, 691, 596, 692, 1277, 1277, 1277, 1277, 1543, 595, 1637, 930, 595, 595, 592, 593, 593, 592, 2424, 2596, 595, 907, 596, 931, 2173, 594, 595, 932, 627, 595, 933, 1850, 1571, 1570, 1850, 934, 597, 595, 598, 596, 1100, 1101, 1101, 1100, 595, 2423, 2597, 1102, 1662, 1662, 1662, 1662, 1103, 578, 869, 1663, 1101, 1101, 1101, 1101, 596, 595, 1104, 1638, 1641, 1101, 1101, 1641, 3158, 3158, 569, 1102, 1633, 2071, 2072, 869, 1103, 1621, 1104, 1667, 1668, 1668, 1667, 1642, 1642, 1642, 1104, 592, 593, 593, 592, 2470, 1690, 1691, 1691, 1690, 596, 1969, 594, 595, 1969, 1669, 595, 1692, 595, 1623, 1624, 595, 1623, 597, 595, 598, 1664, 1561, 597, 595, 907, 1939, 1621, 1106, 1524, 1757, 1524, 1625, 1757, 1940, 1524, 1665, 1220, 1670, 868, 2365, 2365, 1221, 595, 1106, 2049, 2048, 1939, 595, 1758, 1758, 1758, 1106, 1674, 1675, 1676, 1676, 1675, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1677, 1678, 1674, 1674, 1678, 1674, 1674, 1674, 2436, 2598, 596, 1679, 1678, 1680, 1674, 1674, 1674, 1691, 1691, 1691, 1691, 1286, 1287, 1287, 1286, 2074, 2047, 1167, 1692, 595, 1167, 2439, 595, 596, 1674, 1674, 1678, 1674, 2046, 597, 595, 1125, 1125, 691, 1012, 692, 1126, 1126, 1167, 593, 593, 1167, 1848, 751, 751, 1848, 1127, 2047, 2049, 594, 595, 2046, 2048, 595, 595, 1674, 1674, 1674, 1674, 1681, 597, 595, 907, 596, 752, 869, 1855, 1855, 1855, 1855, 2443, 2113, 1213, 1214, 1214, 1213, 553, 554, 1336, 1337, 1337, 1336, 596, 594, 595, 595, 869, 595, 1856, 760, 1644, 1644, 1644, 1644, 1012, 595, 907, 1645, 1125, 1143, 1144, 1145, 1145, 1702, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1146, 1147, 1143, 1143, 1147, 1143, 1143, 1143, 595, 2049, 549, 1148, 1147, 1149, 1143, 1143, 1143, 1214, 1214, 1214, 1214, 2048, 686, 1775, 3158, 686, 1775, 3158, 594, 595, 1776, 3158, 595, 687, 1143, 1143, 1147, 1143, 688, 689, 595, 596, 3158, 1703, 691, 3158, 692, 1213, 1214, 1214, 1213, 2603, 2444, 1332, 1332, 1332, 1332, 2426, 594, 595, 754, 596, 595, 596, 595, 1143, 1143, 1143, 1143, 1151, 595, 907, 1132, 686, 1757, 752, 686, 1757, 3158, 2427, 1753, 3158, 686, 596, 687, 686, 1221, 1944, 869, 688, 689, 2352, 596, 687, 595, 691, 1944, 692, 688, 689, 686, 2370, 3158, 686, 691, 3158, 692, 1132, 1012, 869, 1441, 687, 1852, 1852, 1852, 1852, 688, 689, 2166, 1853, 596, 1561, 691, 2167, 692, 1939, 686, 596, 2168, 686, 596, 2432, 756, 868, 752, 1132, 596, 687, 1941, 2349, 2392, 1778, 688, 689, 686, 1012, 1939, 686, 691, 2392, 692, 2445, 1779, 1012, 2350, 687, 1571, 1570, 2049, 2048, 688, 689, 596, 2393, 2448, 1570, 691, 2048, 692, 1780, 1781, 1782, 1781, 1781, 1782, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1783, 1781, 1781, 1781, 1781, 1784, 1785, 1781, 1243, 1854, 2604, 1786, 1781, 1787, 1781, 1781, 1781, 3158, 596, 1570, 3158, 2048, 686, 1789, 2605, 686, 904, 896, 896, 904, 2606, 2460, 596, 687, 1781, 1781, 1781, 1781, 688, 689, 686, 1027, 1675, 686, 691, 1675, 692, 626, 897, 2607, 907, 687, 896, 896, 896, 896, 688, 689, 2162, 2163, 686, 596, 691, 686, 692, 1781, 1781, 1781, 1781, 1788, 627, 687, 1790, 2385, 897, 686, 688, 689, 686, 1565, 2353, 2387, 691, 1943, 692, 686, 687, 1675, 686, 2388, 1675, 688, 689, 869, 719, 1450, 687, 691, 1450, 692, 686, 688, 689, 686, 1943, 1450, 1941, 691, 1450, 692, 686, 687, 1791, 686, 869, 2481, 688, 689, 2045, 2045, 1754, 687, 691, 1754, 692, 2482, 688, 689, 686, 1568, 548, 686, 691, 1947, 692, 548, 1755, 1756, 596, 687, 686, 1940, 718, 686, 688, 689, 868, 2465, 2437, 2316, 691, 687, 692, 1792, 1947, 686, 688, 689, 686, 2348, 1795, 596, 691, 2068, 692, 2440, 687, 2390, 1793, 1794, 686, 688, 689, 686, 2396, 686, 596, 691, 686, 692, 2447, 687, 1796, 2611, 2612, 686, 688, 689, 686, 2047, 2613, 1797, 691, 2313, 692, 686, 687, 691, 686, 692, 2449, 688, 689, 2614, 596, 686, 687, 691, 686, 692, 596, 688, 689, 627, 2313, 3158, 687, 691, 3158, 692, 1798, 688, 689, 3158, 2615, 686, 3158, 691, 686, 692, 2382, 2616, 3158, 2382, 686, 3158, 687, 686, 596, 719, 2461, 688, 689, 686, 596, 687, 686, 691, 2383, 692, 688, 689, 686, 2446, 687, 686, 691, 1243, 692, 688, 689, 686, 2617, 687, 686, 691, 1799, 692, 688, 689, 686, 1571, 687, 686, 691, 1950, 692, 688, 689, 1800, 596, 687, 596, 691, 951, 692, 688, 689, 771, 771, 2355, 771, 691, 1802, 692, 2450, 1950, 2451, 690, 772, 3158, 951, 1801, 3158, 773, 774, 1806, 2618, 2047, 2046, 2496, 1803, 1254, 1255, 1254, 1254, 1804, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1256, 1254, 1254, 1254, 1254, 1257, 1258, 1254, 2397, 2619, 1808, 1259, 1254, 1260, 1254, 1254, 1254, 3158, 3158, 3158, 3158, 2620, 686, 2049, 3158, 686, 596, 2315, 1568, 2070, 2351, 2621, 1947, 687, 1254, 1254, 1254, 1254, 688, 689, 868, 2457, 2642, 1805, 691, 1941, 692, 2654, 2315, 1463, 1463, 1463, 1463, 1947, 2655, 3158, 899, 2382, 3158, 596, 2382, 686, 2388, 2389, 686, 1254, 1254, 1254, 1254, 1262, 686, 897, 687, 686, 626, 2383, 1807, 688, 689, 686, 596, 687, 686, 691, 2462, 692, 688, 689, 686, 2464, 687, 686, 691, 596, 692, 688, 689, 686, 2468, 687, 686, 691, 596, 692, 688, 689, 596, 2070, 687, 596, 691, 2354, 692, 688, 689, 1809, 596, 2441, 596, 691, 686, 692, 596, 686, 686, 2442, 2469, 686, 901, 686, 2636, 687, 686, 2114, 719, 687, 688, 689, 626, 2668, 688, 689, 691, 2453, 692, 596, 691, 2669, 692, 2049, 2048, 691, 1810, 692, 596, 1811, 1277, 1278, 1277, 1277, 1278, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1279, 1277, 1277, 1277, 1277, 1280, 1281, 1277, 718, 596, 1814, 1282, 1277, 1283, 1277, 1277, 1277, 2635, 904, 896, 896, 904, 686, 2474, 1675, 686, 2074, 1675, 596, 904, 896, 896, 904, 687, 1277, 1277, 1277, 1277, 688, 689, 906, 596, 907, 1812, 691, 1132, 692, 2085, 2086, 2086, 2085, 906, 596, 907, 661, 661, 661, 661, 2087, 686, 2644, 662, 686, 2670, 1132, 1277, 1277, 1277, 1277, 1284, 687, 686, 1813, 2429, 686, 688, 689, 1463, 1463, 1463, 1463, 691, 687, 692, 1967, 914, 686, 688, 689, 686, 1971, 2639, 2454, 691, 596, 692, 2459, 687, 596, 897, 2047, 2046, 688, 689, 2046, 596, 686, 626, 691, 686, 692, 2434, 2435, 2435, 2434, 686, 596, 687, 686, 2609, 1815, 2609, 688, 689, 686, 1816, 687, 686, 691, 2671, 692, 688, 689, 686, 2047, 687, 686, 691, 2313, 692, 688, 689, 596, 596, 687, 2046, 691, 596, 692, 688, 689, 2045, 2045, 1817, 627, 691, 901, 692, 686, 2313, 2045, 686, 2645, 511, 1819, 596, 1132, 686, 511, 687, 686, 2672, 596, 1818, 688, 689, 686, 2673, 687, 686, 691, 2049, 692, 688, 689, 2315, 2610, 687, 2610, 691, 627, 692, 688, 689, 686, 1820, 2045, 686, 691, 2641, 692, 596, 1821, 596, 686, 687, 2315, 686, 596, 2382, 688, 689, 2382, 596, 686, 687, 691, 686, 692, 1822, 688, 689, 2638, 596, 2640, 687, 691, 2383, 692, 2643, 688, 689, 2047, 2046, 1824, 1823, 691, 686, 692, 627, 686, 2046, 2646, 904, 896, 896, 904, 686, 687, 596, 686, 596, 2674, 688, 689, 2675, 596, 1825, 687, 691, 2676, 692, 2677, 688, 689, 897, 596, 907, 1826, 691, 596, 692, 686, 686, 1561, 686, 686, 2046, 1561, 1132, 1561, 2650, 686, 687, 1827, 686, 2015, 2651, 688, 689, 596, 992, 1243, 687, 691, 691, 692, 692, 688, 689, 686, 1561, 1132, 686, 691, 1561, 692, 1561, 2652, 686, 596, 687, 686, 992, 1828, 596, 688, 689, 2016, 1561, 687, 1762, 691, 2647, 692, 688, 689, 686, 2678, 596, 686, 691, 2648, 692, 596, 1829, 1830, 686, 687, 596, 686, 596, 596, 688, 689, 1132, 1561, 2679, 687, 691, 596, 692, 2649, 688, 689, 2100, 2101, 2101, 2100, 691, 686, 692, 2454, 686, 2656, 2662, 2102, 1832, 2045, 1831, 686, 687, 2311, 686, 2680, 596, 688, 689, 2657, 1833, 868, 687, 691, 2659, 692, 868, 688, 689, 686, 1835, 2687, 686, 691, 2311, 692, 2724, 1834, 686, 2661, 687, 686, 2725, 2049, 2048, 688, 689, 686, 2726, 687, 686, 691, 2048, 692, 688, 689, 686, 2729, 687, 686, 691, 596, 692, 688, 689, 686, 1836, 687, 686, 691, 2730, 692, 688, 689, 686, 596, 687, 686, 691, 1837, 692, 688, 689, 686, 2663, 687, 686, 691, 2048, 692, 688, 689, 686, 1838, 687, 686, 691, 596, 692, 688, 689, 1839, 842, 687, 2731, 691, 2564, 692, 688, 689, 1243, 1841, 686, 2660, 691, 686, 692, 686, 1675, 1840, 686, 1675, 2732, 687, 596, 2564, 884, 686, 688, 689, 686, 2733, 1842, 2734, 691, 626, 692, 2735, 687, 691, 2736, 692, 686, 688, 689, 686, 1843, 884, 2723, 691, 2740, 692, 686, 687, 2667, 686, 2579, 2741, 688, 689, 2747, 1844, 2748, 687, 691, 718, 692, 2658, 688, 689, 1097, 2205, 770, 771, 691, 770, 692, 1845, 2749, 1637, 1637, 1637, 2750, 772, 770, 771, 2751, 770, 773, 774, 1757, 2752, 1846, 1757, 691, 772, 692, 1220, 2390, 2391, 773, 774, 1221, 1637, 770, 771, 691, 770, 692, 1758, 1758, 1758, 2753, 1847, 951, 772, 2398, 2399, 2399, 2398, 773, 774, 1668, 1668, 1668, 1668, 691, 2400, 692, 2754, 951, 770, 771, 1637, 770, 770, 771, 972, 770, 2755, 1857, 972, 772, 2074, 2104, 1012, 772, 773, 774, 1009, 1016, 773, 774, 691, 1858, 692, 1017, 691, 2756, 692, 764, 764, 764, 764, 2757, 1565, 2758, 765, 2759, 1564, 1012, 1564, 2760, 1859, 1781, 1860, 1861, 1781, 1860, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1862, 1781, 1781, 1781, 1781, 1863, 1864, 1781, 1661, 1342, 1866, 1786, 1781, 1787, 1781, 1781, 1781, 2466, 2467, 2467, 2466, 2763, 770, 771, 1564, 770, 2764, 2765, 904, 896, 896, 904, 2397, 772, 1781, 1781, 1781, 1781, 773, 774, 770, 771, 2766, 770, 691, 1559, 692, 2767, 2768, 2769, 906, 772, 907, 2770, 2771, 596, 773, 774, 1666, 1559, 770, 771, 691, 770, 692, 1781, 1781, 1781, 1781, 1865, 1661, 772, 1867, 2802, 2772, 596, 773, 774, 596, 1973, 770, 771, 691, 770, 692, 1667, 1668, 1668, 1667, 770, 771, 772, 770, 2778, 801, 2803, 773, 774, 770, 771, 772, 770, 691, 596, 692, 773, 774, 2104, 596, 772, 2809, 691, 1868, 692, 773, 774, 1132, 596, 770, 771, 691, 770, 692, 1668, 1668, 1668, 1668, 770, 771, 772, 770, 1132, 596, 1969, 773, 774, 1969, 2668, 772, 626, 691, 1132, 692, 773, 774, 2104, 596, 800, 1774, 691, 2780, 692, 2812, 770, 771, 1970, 770, 1869, 1848, 751, 751, 1848, 770, 771, 772, 770, 1870, 1871, 1872, 773, 774, 770, 771, 772, 770, 691, 1132, 692, 773, 774, 752, 1873, 772, 2813, 691, 1568, 692, 773, 774, 1568, 2814, 1568, 596, 691, 1762, 692, 596, 2015, 770, 771, 596, 770, 992, 2761, 2762, 2815, 2761, 770, 771, 772, 770, 2779, 596, 1874, 773, 774, 770, 771, 772, 770, 691, 2790, 692, 773, 774, 770, 771, 772, 770, 691, 1568, 692, 773, 774, 770, 771, 772, 770, 691, 2122, 692, 773, 774, 770, 771, 772, 770, 691, 2792, 692, 773, 774, 801, 596, 772, 2816, 691, 596, 692, 773, 774, 904, 896, 896, 904, 691, 596, 692, 2047, 1342, 770, 771, 2046, 770, 2046, 2817, 627, 1875, 2791, 1876, 596, 772, 2818, 906, 596, 907, 773, 774, 770, 771, 2819, 770, 691, 1878, 692, 904, 896, 896, 904, 772, 2804, 2820, 1877, 1132, 773, 774, 929, 929, 929, 929, 691, 1974, 692, 2046, 596, 1774, 2806, 906, 596, 907, 1879, 1254, 1353, 1354, 1254, 1880, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1355, 1254, 1254, 1254, 1254, 1356, 1357, 1254, 2796, 1882, 596, 1259, 1254, 1260, 1254, 1254, 1254, 1132, 904, 896, 896, 904, 770, 771, 596, 770, 904, 896, 896, 904, 1972, 2805, 842, 772, 1254, 1254, 1254, 1254, 773, 774, 906, 2558, 907, 1881, 691, 2835, 692, 2807, 906, 934, 907, 2731, 1848, 751, 751, 1848, 2631, 2631, 2631, 2631, 2836, 770, 771, 2632, 770, 1254, 1254, 1254, 1254, 1359, 770, 771, 772, 770, 752, 2834, 1883, 773, 774, 770, 771, 772, 770, 691, 2837, 692, 773, 774, 770, 771, 772, 770, 691, 1976, 692, 773, 774, 770, 771, 772, 770, 691, 596, 692, 773, 774, 770, 771, 772, 770, 691, 2733, 692, 773, 774, 770, 771, 772, 770, 691, 2317, 692, 773, 774, 1885, 1884, 772, 884, 691, 2839, 692, 773, 774, 596, 2808, 770, 771, 691, 770, 692, 2840, 2793, 2794, 801, 2793, 596, 772, 770, 771, 1568, 770, 773, 774, 1568, 2841, 1568, 1132, 691, 772, 692, 2842, 992, 2843, 773, 774, 2844, 2016, 2845, 1132, 691, 1886, 692, 596, 1887, 1277, 1373, 1374, 1277, 1373, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1375, 1277, 1277, 1277, 1277, 1376, 1377, 1277, 1568, 2846, 1891, 1282, 1277, 1283, 1277, 1277, 1277, 800, 904, 896, 896, 904, 770, 771, 2795, 770, 2847, 2795, 904, 896, 896, 904, 2848, 772, 1277, 1277, 1277, 1277, 773, 774, 906, 2849, 907, 1888, 691, 2850, 692, 2344, 1125, 1125, 906, 2344, 907, 1126, 1126, 596, 951, 972, 1554, 770, 771, 2370, 770, 1127, 1012, 1277, 1277, 1277, 1277, 1378, 772, 2370, 1889, 2610, 914, 773, 774, 770, 771, 2853, 770, 691, 1975, 692, 2854, 2397, 770, 771, 772, 770, 2397, 2855, 2856, 773, 774, 770, 771, 772, 770, 691, 2397, 692, 773, 774, 2761, 2762, 772, 2761, 691, 2397, 692, 773, 774, 1890, 1571, 1125, 2857, 691, 1570, 692, 1570, 770, 771, 2045, 770, 770, 771, 2045, 770, 2045, 1969, 1892, 772, 1969, 1123, 992, 772, 773, 774, 596, 992, 773, 774, 691, 596, 692, 2879, 691, 2880, 692, 596, 2851, 1970, 1893, 2851, 770, 771, 596, 770, 1570, 2861, 596, 1894, 596, 770, 771, 772, 770, 2045, 2852, 1895, 773, 774, 770, 771, 772, 770, 691, 2863, 692, 773, 774, 770, 771, 772, 770, 691, 2862, 692, 773, 774, 770, 771, 772, 770, 691, 1896, 692, 773, 774, 2881, 2858, 772, 596, 691, 2882, 692, 773, 774, 596, 2883, 770, 771, 691, 770, 692, 1855, 1855, 1855, 1855, 770, 771, 772, 770, 1897, 1898, 1185, 773, 774, 2884, 596, 772, 2114, 691, 2890, 692, 773, 774, 1856, 596, 1900, 1899, 691, 2891, 692, 770, 771, 2892, 770, 904, 896, 896, 904, 2045, 2045, 1901, 772, 2045, 2886, 1762, 596, 773, 774, 770, 771, 502, 770, 691, 1132, 692, 502, 906, 1762, 907, 772, 1342, 2893, 596, 1762, 773, 774, 1902, 1132, 770, 771, 691, 770, 692, 1762, 1762, 2894, 2902, 770, 771, 772, 770, 596, 2903, 2045, 773, 774, 2810, 914, 772, 2810, 691, 2811, 692, 773, 774, 2564, 842, 1903, 2885, 691, 2049, 692, 770, 771, 2048, 770, 2048, 2579, 2887, 2579, 2811, 1904, 2904, 772, 770, 771, 2905, 770, 773, 774, 2906, 2907, 1905, 2047, 691, 772, 692, 2046, 2901, 2046, 773, 774, 770, 771, 2908, 770, 691, 2909, 692, 2910, 2911, 770, 771, 772, 770, 2048, 1906, 2912, 773, 774, 771, 771, 772, 771, 691, 2913, 692, 773, 774, 2914, 1907, 772, 2915, 691, 2856, 692, 773, 774, 2046, 2397, 770, 771, 1908, 770, 2399, 2399, 2399, 2399, 2918, 770, 771, 772, 770, 1909, 1910, 2400, 773, 774, 770, 771, 772, 770, 691, 2925, 692, 773, 774, 2888, 2925, 772, 2888, 691, 2928, 692, 773, 774, 1911, 2936, 770, 771, 691, 770, 692, 904, 896, 896, 904, 770, 771, 772, 770, 2889, 2928, 2947, 773, 774, 2810, 596, 772, 2810, 691, 2811, 692, 773, 774, 906, 2049, 907, 1342, 691, 2048, 692, 2048, 1912, 770, 771, 596, 770, 2948, 2949, 2811, 1913, 596, 770, 771, 772, 770, 2950, 2951, 2922, 773, 774, 1342, 2883, 772, 2923, 691, 1978, 692, 773, 774, 1914, 2960, 770, 771, 691, 770, 692, 2961, 2919, 1762, 2048, 770, 771, 772, 770, 1762, 2049, 2048, 773, 774, 2048, 2962, 772, 2725, 691, 2928, 692, 773, 774, 596, 596, 770, 771, 691, 770, 692, 2941, 1915, 2851, 596, 1916, 2851, 772, 2521, 2521, 2521, 2521, 773, 774, 2924, 2522, 770, 771, 691, 770, 692, 2852, 904, 896, 896, 904, 2048, 772, 596, 842, 1917, 2953, 773, 774, 2731, 2970, 770, 771, 691, 770, 692, 2971, 2972, 2973, 906, 1918, 907, 772, 2954, 800, 2974, 2952, 773, 774, 770, 771, 2975, 770, 691, 2969, 692, 2080, 2080, 2080, 2080, 772, 1919, 2976, 1638, 2977, 773, 774, 904, 896, 896, 904, 691, 2978, 692, 904, 896, 896, 904, 1104, 2979, 1977, 1920, 2524, 904, 896, 896, 904, 2980, 2392, 906, 2397, 907, 904, 896, 896, 904, 906, 2392, 907, 596, 1630, 1631, 1631, 1630, 2987, 906, 2986, 907, 2928, 2936, 1921, 596, 595, 2928, 906, 595, 907, 596, 1641, 1101, 1101, 1641, 569, 595, 907, 1979, 1631, 1631, 1631, 1631, 1103, 1465, 1980, 1981, 2989, 1106, 596, 2989, 595, 3003, 1104, 595, 1982, 1630, 1631, 1631, 1630, 595, 569, 595, 2704, 2704, 2704, 2704, 2988, 595, 1970, 2705, 595, 592, 593, 593, 592, 2950, 2928, 569, 595, 907, 3004, 3006, 594, 595, 2983, 595, 595, 2941, 1634, 1635, 1635, 1634, 596, 597, 595, 598, 3005, 3009, 2991, 3005, 595, 2991, 595, 595, 1635, 1635, 1635, 1635, 596, 2992, 596, 595, 907, 3009, 3011, 3008, 595, 3012, 595, 595, 1762, 1634, 1635, 1635, 1634, 3020, 3021, 595, 2727, 2727, 2727, 2727, 3022, 595, 3023, 595, 595, 3024, 3025, 2079, 1641, 1101, 1101, 1641, 595, 907, 3007, 1102, 2923, 2975, 2728, 595, 1103, 3027, 904, 896, 896, 904, 3028, 1642, 1642, 1642, 1104, 1641, 1101, 1101, 1641, 3037, 595, 3018, 1102, 596, 3018, 3033, 596, 1103, 897, 3043, 907, 2928, 3019, 2928, 1642, 1642, 1642, 1104, 1641, 1101, 1101, 1641, 3036, 842, 3042, 1102, 1662, 1662, 1662, 1662, 1103, 2989, 3044, 1663, 2989, 2950, 2728, 2081, 2081, 2081, 1104, 2923, 3158, 3158, 3158, 3158, 596, 3029, 569, 3158, 3029, 1106, 3047, 3048, 592, 593, 593, 592, 3030, 1239, 2110, 2111, 2111, 2110, 3158, 594, 595, 596, 1132, 595, 2991, 2112, 595, 2991, 1106, 595, 597, 595, 598, 3053, 3020, 2992, 597, 595, 907, 3045, 904, 896, 896, 904, 1664, 2111, 2111, 2111, 2111, 3054, 3055, 1106, 3056, 3057, 2936, 595, 2112, 595, 3067, 1665, 595, 595, 906, 3018, 907, 3077, 3018, 597, 595, 2413, 2414, 2414, 2413, 2103, 3019, 3158, 1690, 1691, 1691, 1690, 2415, 3078, 1691, 1691, 1691, 1691, 3046, 1692, 595, 3046, 596, 595, 595, 1692, 595, 3061, 2928, 595, 597, 595, 907, 2928, 3080, 596, 597, 595, 1757, 3062, 1970, 1757, 3081, 3086, 3071, 1220, 2631, 2631, 2631, 2631, 1221, 3046, 3087, 2632, 3046, 595, 3079, 1758, 1758, 1758, 2975, 595, 1674, 2121, 1676, 1676, 2121, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1677, 1678, 1674, 1674, 1678, 1674, 1674, 1674, 2975, 3088, 2936, 1679, 1678, 1680, 1674, 1674, 1674, 1690, 1691, 1691, 1690, 3103, 3113, 904, 896, 896, 904, 686, 1692, 595, 686, 3115, 595, 596, 1674, 1674, 1678, 1674, 687, 597, 595, 907, 3116, 688, 689, 906, 3020, 907, 3020, 691, 3034, 692, 3114, 3034, 2856, 1852, 1852, 1852, 1852, 2927, 596, 2928, 1853, 3094, 595, 1674, 1674, 1674, 1674, 1681, 3125, 2126, 1725, 593, 593, 1725, 3130, 752, 3083, 2337, 596, 3083, 686, 594, 595, 686, 686, 595, 3112, 686, 3084, 3112, 2193, 687, 597, 595, 907, 687, 688, 689, 596, 3132, 688, 689, 691, 1762, 692, 3134, 691, 686, 692, 3135, 686, 904, 896, 896, 904, 3131, 3120, 595, 687, 2950, 3140, 3144, 2147, 688, 689, 686, 596, 3050, 686, 691, 3050, 692, 1854, 906, 3051, 907, 687, 3058, 2148, 3153, 686, 688, 689, 686, 596, 596, 3058, 691, 2176, 692, 3112, 687, 2192, 3112, 3143, 3150, 688, 689, 2414, 2414, 2414, 2414, 691, 3050, 692, 3139, 3050, 2478, 596, 2415, 3051, 2477, 2332, 596, 2194, 1277, 1278, 1277, 1277, 1278, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1279, 1277, 1277, 1277, 1277, 1280, 1281, 1277, 596, 3156, 719, 1282, 1277, 1283, 1277, 1277, 1277, 2476, 904, 896, 896, 904, 686, 596, 2923, 686, 904, 896, 896, 904, 3155, 2475, 1762, 687, 1277, 1277, 1277, 1277, 688, 689, 906, 1774, 907, 2195, 691, 2472, 692, 2471, 906, 2463, 907, 1107, 2085, 2086, 2086, 2085, 1107, 3158, 3147, 686, 3158, 596, 686, 2087, 3158, 1277, 1277, 1277, 1277, 1284, 687, 2396, 2334, 1132, 686, 688, 689, 686, 2333, 2458, 2456, 691, 719, 692, 686, 687, 2455, 686, 1107, 1132, 688, 689, 2438, 1107, 686, 687, 691, 686, 692, 626, 688, 689, 1132, 2425, 686, 687, 691, 686, 692, 2417, 688, 689, 2397, 2412, 686, 687, 691, 686, 692, 2411, 688, 689, 2410, 2409, 2406, 687, 691, 1243, 692, 686, 688, 689, 686, 2405, 2404, 2403, 691, 2402, 692, 2401, 687, 686, 2197, 2196, 686, 688, 689, 2418, 2418, 2418, 2418, 691, 687, 692, 2419, 2397, 1661, 688, 689, 2398, 2399, 2399, 2398, 691, 2198, 692, 686, 2394, 3083, 686, 2400, 3083, 2071, 2199, 549, 2200, 686, 687, 3157, 686, 3084, 3157, 688, 689, 2065, 2387, 686, 687, 691, 686, 692, 2201, 688, 689, 2063, 530, 530, 687, 691, 2202, 692, 686, 688, 689, 686, 2049, 2047, 2385, 691, 596, 692, 2421, 687, 3158, 3158, 3158, 3158, 688, 689, 3083, 3158, 686, 3083, 691, 686, 692, 2422, 2043, 2927, 1027, 1243, 3084, 687, 2203, 2928, 2927, 2380, 688, 689, 686, 2379, 2927, 686, 691, 2378, 692, 2377, 2204, 2376, 2999, 687, 686, 2375, 1012, 686, 688, 689, 2704, 2704, 2704, 2704, 691, 687, 692, 2705, 2374, 686, 688, 689, 686, 718, 2206, 2373, 691, 2372, 692, 686, 687, 1012, 686, 2867, 2867, 688, 689, 2371, 1126, 1126, 687, 691, 2370, 692, 2016, 688, 689, 686, 2868, 1524, 686, 691, 2927, 692, 2927, 2207, 686, 2363, 687, 686, 2867, 2867, 2362, 688, 689, 1126, 1126, 687, 2361, 691, 2360, 692, 688, 689, 3107, 2868, 1243, 3107, 691, 2359, 692, 686, 972, 2208, 686, 2939, 2358, 904, 896, 896, 904, 686, 687, 972, 686, 2357, 2209, 688, 689, 2356, 2867, 686, 687, 691, 686, 692, 2347, 688, 689, 906, 2346, 907, 687, 691, 2210, 692, 2345, 688, 689, 2211, 2344, 686, 2343, 691, 686, 692, 2342, 2867, 3107, 2341, 686, 3107, 687, 686, 2340, 669, 669, 688, 689, 2939, 669, 687, 2213, 691, 669, 692, 688, 689, 2212, 2329, 686, 2327, 691, 686, 692, 2326, 2331, 3005, 2325, 686, 3005, 687, 686, 2324, 2323, 2322, 688, 689, 686, 2214, 687, 686, 691, 2321, 692, 688, 689, 686, 884, 687, 686, 691, 2216, 692, 688, 689, 2215, 2320, 687, 2319, 691, 884, 692, 688, 689, 686, 2318, 2317, 686, 691, 2217, 692, 2399, 2399, 2399, 2399, 687, 686, 1571, 2147, 686, 688, 689, 2400, 1565, 2309, 2308, 691, 687, 692, 2307, 2306, 2305, 688, 689, 2148, 2218, 2220, 2304, 691, 2303, 692, 3034, 2219, 686, 3034, 2302, 686, 2301, 2521, 2521, 2521, 2521, 2928, 686, 687, 2522, 686, 2300, 2221, 688, 689, 2299, 849, 3035, 687, 691, 842, 692, 686, 688, 689, 686, 774, 2247, 2222, 691, 1239, 692, 686, 687, 1237, 686, 689, 2190, 688, 689, 2189, 2188, 686, 687, 691, 686, 692, 2187, 688, 689, 2186, 1243, 686, 687, 691, 686, 692, 2183, 688, 689, 2182, 2181, 686, 687, 691, 686, 692, 2180, 688, 689, 2179, 2178, 2177, 687, 691, 2223, 692, 686, 688, 689, 686, 2524, 1756, 2175, 691, 2174, 692, 2142, 687, 686, 2136, 2224, 686, 688, 689, 904, 896, 896, 904, 691, 687, 692, 596, 2225, 1123, 688, 689, 686, 2108, 2226, 686, 691, 2105, 692, 2099, 2098, 2227, 906, 687, 907, 2097, 718, 686, 688, 689, 686, 2228, 2096, 2095, 691, 2092, 692, 686, 687, 2091, 686, 2090, 2089, 688, 689, 2088, 2229, 686, 687, 691, 686, 692, 2230, 688, 689, 2084, 2083, 3107, 687, 691, 3107, 692, 549, 688, 689, 549, 549, 2339, 2939, 691, 686, 692, 549, 686, 3091, 2231, 1608, 3091, 2063, 2232, 3091, 687, 1595, 3091, 1585, 2939, 688, 689, 1575, 2233, 686, 2939, 691, 686, 692, 904, 896, 896, 904, 686, 3091, 687, 686, 3091, 2234, 2049, 688, 689, 1571, 2047, 687, 2939, 691, 1565, 692, 688, 689, 906, 1563, 907, 2043, 691, 3108, 692, 3138, 3138, 3138, 3138, 2038, 2037, 2036, 2235, 1781, 1782, 1781, 1781, 1782, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1783, 1781, 1781, 1781, 1781, 2236, 2237, 1781, 1012, 2035, 2034, 1786, 1781, 1787, 1781, 1781, 1781, 2033, 2238, 2032, 914, 3126, 686, 2239, 2031, 686, 904, 896, 896, 904, 2030, 2029, 2028, 687, 1781, 1781, 1781, 1781, 688, 689, 686, 1012, 2027, 686, 691, 2026, 692, 2025, 906, 1012, 907, 687, 3158, 3158, 3158, 3158, 688, 689, 2024, 3158, 686, 1524, 691, 686, 692, 1781, 1781, 1781, 1781, 1788, 686, 687, 1524, 686, 3158, 2240, 688, 689, 2010, 972, 2241, 687, 691, 2009, 692, 2242, 688, 689, 686, 2008, 3107, 686, 691, 3107, 692, 914, 2007, 686, 2006, 687, 686, 2939, 2005, 1243, 688, 689, 686, 2004, 687, 686, 691, 972, 692, 688, 689, 2003, 2243, 687, 2002, 691, 972, 692, 688, 689, 686, 2001, 1243, 686, 691, 2000, 692, 3158, 951, 770, 771, 687, 770, 1999, 768, 768, 688, 689, 1998, 768, 772, 1997, 691, 768, 692, 773, 774, 1996, 1995, 770, 771, 691, 770, 692, 2244, 3146, 3158, 3158, 3158, 3158, 772, 3107, 2245, 3158, 3107, 773, 774, 770, 771, 2246, 770, 691, 2939, 692, 719, 1994, 770, 771, 772, 770, 951, 1993, 1992, 773, 774, 770, 771, 772, 770, 691, 951, 692, 773, 774, 833, 833, 772, 2248, 691, 833, 692, 773, 774, 833, 1991, 770, 771, 691, 770, 692, 2080, 2080, 2080, 2080, 2249, 3127, 772, 1638, 1990, 1989, 1988, 773, 774, 2927, 3158, 2927, 2927, 691, 1987, 692, 2927, 1986, 1104, 1985, 2250, 1277, 1373, 1374, 1277, 1373, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1375, 1277, 1277, 1277, 1277, 1376, 1377, 1277, 1984, 1983, 1465, 1282, 1277, 1283, 1277, 1277, 1277, 1464, 801, 1965, 884, 3029, 770, 771, 3029, 770, 1964, 1963, 904, 896, 896, 904, 3058, 772, 1277, 1277, 1277, 1277, 773, 774, 838, 838, 1106, 2251, 691, 838, 692, 1962, 1961, 838, 906, 1960, 907, 2413, 2414, 2414, 2413, 1959, 1958, 770, 771, 1957, 770, 884, 2415, 1277, 1277, 1277, 1277, 1378, 772, 770, 771, 1956, 770, 773, 774, 2335, 1955, 801, 1954, 691, 772, 692, 1953, 884, 1952, 773, 774, 770, 771, 2927, 770, 691, 1937, 692, 1936, 2943, 770, 771, 772, 770, 2927, 2927, 2927, 773, 774, 770, 771, 772, 770, 691, 2990, 692, 773, 774, 1935, 1934, 772, 1933, 691, 1930, 692, 773, 774, 3107, 1929, 1342, 3107, 691, 1928, 692, 770, 771, 3091, 770, 2939, 3091, 1927, 1926, 1342, 770, 771, 772, 770, 2939, 849, 2252, 773, 774, 770, 771, 772, 770, 691, 1922, 692, 773, 774, 774, 774, 772, 2927, 691, 1335, 692, 773, 774, 2253, 1239, 770, 771, 691, 770, 692, 3142, 2254, 1237, 689, 770, 771, 772, 770, 1239, 1237, 689, 773, 774, 3136, 1239, 772, 1774, 691, 2255, 692, 773, 774, 770, 771, 2256, 770, 691, 1773, 692, 2414, 2414, 2414, 2414, 772, 770, 771, 1772, 770, 773, 774, 2415, 1771, 2257, 1770, 691, 772, 692, 1769, 1766, 1342, 773, 774, 770, 771, 1765, 770, 691, 1764, 692, 1763, 1762, 770, 771, 772, 770, 2258, 1761, 1760, 773, 774, 770, 771, 772, 770, 691, 1752, 692, 773, 774, 770, 771, 772, 770, 691, 1751, 692, 773, 774, 2205, 596, 772, 800, 691, 1123, 692, 773, 774, 770, 771, 2927, 770, 691, 2259, 692, 1666, 2943, 770, 771, 772, 770, 2927, 2927, 2927, 773, 774, 770, 771, 772, 770, 691, 2990, 692, 773, 774, 2260, 1465, 772, 1661, 691, 1660, 692, 773, 774, 770, 771, 1659, 770, 691, 1658, 692, 1657, 1656, 1342, 2261, 772, 770, 771, 1653, 770, 773, 774, 2927, 3158, 2927, 2927, 691, 772, 692, 2927, 1652, 3107, 773, 774, 3107, 2262, 770, 771, 691, 770, 692, 2927, 2939, 1651, 2263, 1650, 1649, 772, 3091, 2264, 1648, 3091, 773, 774, 3138, 3138, 3138, 3138, 691, 2939, 692, 770, 771, 1647, 770, 770, 771, 2266, 770, 1640, 1097, 2265, 772, 1607, 1607, 1571, 772, 773, 774, 848, 848, 773, 774, 691, 848, 692, 1562, 691, 848, 692, 770, 771, 1565, 770, 770, 771, 1562, 770, 3137, 1556, 1027, 772, 1027, 1555, 2267, 772, 773, 774, 1552, 1551, 773, 774, 691, 1548, 692, 3141, 691, 2269, 692, 770, 771, 1547, 770, 1546, 1545, 1544, 2268, 1012, 770, 771, 772, 770, 1542, 852, 852, 773, 774, 1541, 852, 772, 2270, 691, 852, 692, 773, 774, 770, 771, 3091, 770, 691, 3091, 692, 1540, 1539, 770, 771, 772, 770, 2939, 1538, 2271, 773, 774, 770, 771, 772, 770, 691, 1012, 692, 773, 774, 1524, 1522, 772, 1521, 691, 2273, 692, 773, 774, 770, 771, 2272, 770, 691, 1520, 692, 3158, 3158, 3158, 3158, 772, 2626, 2627, 2627, 2626, 773, 774, 2274, 1519, 1516, 1515, 691, 594, 692, 1514, 770, 771, 972, 770, 3158, 2275, 3158, 1513, 2104, 3148, 1342, 772, 770, 771, 1512, 770, 773, 774, 3158, 3158, 3158, 3158, 691, 772, 692, 3158, 1511, 1510, 773, 774, 770, 771, 3107, 770, 691, 3107, 692, 972, 1509, 2590, 1508, 772, 2276, 2939, 1507, 1506, 773, 774, 770, 771, 3091, 770, 691, 3091, 692, 1503, 1502, 3158, 1501, 772, 951, 2939, 1500, 1499, 773, 774, 770, 771, 1498, 770, 691, 2277, 692, 3158, 3158, 3158, 3158, 772, 3091, 2278, 3158, 3091, 773, 774, 770, 771, 1497, 770, 691, 2939, 692, 2926, 1668, 1668, 2926, 772, 3149, 3158, 951, 800, 773, 774, 2279, 1496, 1495, 1494, 691, 1493, 692, 770, 771, 1492, 770, 1669, 3151, 2280, 2776, 2776, 2776, 2776, 772, 770, 771, 1491, 770, 773, 774, 594, 3145, 1490, 2281, 691, 772, 692, 1489, 860, 860, 773, 774, 1488, 860, 1465, 2282, 691, 860, 692, 770, 771, 1464, 770, 903, 1461, 3158, 2927, 3158, 2927, 2927, 772, 770, 771, 2927, 770, 773, 774, 904, 896, 896, 904, 691, 772, 692, 1460, 2283, 2284, 773, 774, 1459, 1458, 770, 771, 691, 770, 692, 1457, 1456, 1453, 906, 1452, 907, 772, 770, 771, 1451, 770, 773, 774, 884, 1449, 2285, 1448, 691, 772, 692, 1447, 1446, 1445, 773, 774, 770, 771, 1444, 770, 691, 884, 692, 2286, 1433, 936, 936, 772, 770, 771, 936, 770, 773, 774, 936, 2336, 1432, 1427, 691, 772, 692, 1426, 1425, 686, 773, 774, 686, 2287, 944, 944, 691, 1424, 692, 944, 687, 770, 771, 944, 770, 2473, 2474, 1423, 849, 1421, 849, 691, 772, 692, 1419, 842, 2288, 773, 774, 904, 896, 896, 904, 691, 842, 692, 775, 2290, 770, 771, 2289, 770, 2291, 961, 961, 774, 1335, 2292, 961, 772, 1333, 906, 961, 907, 773, 774, 770, 771, 757, 770, 691, 690, 692, 1239, 1237, 770, 771, 772, 770, 689, 965, 965, 773, 774, 1342, 965, 772, 1232, 691, 965, 692, 773, 774, 1229, 1226, 770, 771, 691, 770, 692, 982, 982, 1225, 671, 2293, 982, 772, 770, 771, 982, 770, 773, 774, 904, 896, 896, 904, 691, 772, 692, 671, 1211, 1342, 773, 774, 770, 771, 596, 770, 691, 1123, 692, 596, 1118, 1115, 906, 772, 907, 1112, 987, 987, 773, 774, 1111, 987, 2294, 1097, 691, 987, 692, 582, 2575, 896, 896, 2575, 2627, 2627, 2627, 2627, 1337, 1337, 1337, 1337, 2574, 2295, 553, 594, 993, 993, 549, 760, 549, 993, 906, 2296, 907, 993, 2104, 541, 801, 1277, 1471, 1472, 1472, 1471, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 905, 905, 905, 1473, 1277, 1474, 1277, 1277, 1277, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 1277, 1277, 1277, 1277, 905, 905, 905, 905, 905, 2330, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, 1277, 1277, 1277, 1277, 1475, 904, 896, 896, 904, 2110, 2111, 2111, 2110, 534, 2776, 2776, 2776, 2776, 530, 686, 2112, 595, 686, 686, 595, 594, 686, 906, 1027, 907, 687, 597, 595, 907, 687, 688, 689, 1004, 1004, 688, 689, 691, 1004, 692, 497, 691, 1004, 692, 2702, 2702, 2702, 2702, 2776, 2776, 2776, 2776, 595, 1025, 1025, 760, 1092, 1092, 1025, 594, 1023, 1092, 1025, 1022, 1021, 1092, 1856, 1014, 2520, 2488, 2338, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1005, 1005, 1005, 1277, 1277, 1277, 1277, 1277, 1277, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1277, 1277, 1277, 1277, 1005, 1005, 1005, 1005, 1005, 2369, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1277, 1277, 1277, 1277, 1543, 592, 593, 593, 592, 1011, 1010, 1641, 1101, 1101, 1641, 1007, 594, 595, 1102, 1006, 595, 2395, 2396, 1103, 996, 985, 984, 597, 595, 598, 2081, 2081, 2081, 1104, 1641, 1101, 1101, 1641, 981, 980, 979, 1102, 975, 974, 971, 970, 1103, 2111, 2111, 2111, 2111, 969, 595, 1642, 1642, 1642, 1104, 686, 2112, 595, 686, 686, 595, 968, 686, 967, 1328, 1328, 687, 597, 595, 1328, 687, 688, 689, 1328, 960, 688, 689, 691, 959, 692, 958, 691, 686, 692, 954, 686, 686, 953, 1106, 686, 2958, 2958, 595, 687, 950, 1126, 1126, 687, 688, 689, 949, 948, 688, 689, 691, 2959, 692, 947, 691, 2489, 692, 1106, 592, 593, 593, 592, 904, 896, 896, 904, 946, 497, 942, 594, 595, 2487, 941, 595, 3158, 3158, 686, 940, 2490, 686, 597, 595, 598, 939, 906, 686, 907, 687, 686, 938, 497, 903, 688, 689, 895, 2492, 687, 894, 691, 893, 692, 688, 689, 2958, 887, 595, 886, 691, 883, 692, 882, 2578, 2416, 1674, 2428, 1676, 1676, 2428, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1677, 1678, 1674, 1674, 1678, 1674, 1674, 1674, 881, 2494, 878, 1679, 1678, 1680, 1674, 1674, 1674, 877, 865, 858, 857, 2493, 686, 856, 855, 686, 904, 896, 896, 904, 849, 842, 497, 687, 1674, 1674, 1678, 1674, 688, 689, 686, 757, 576, 686, 691, 671, 692, 668, 906, 671, 907, 687, 3158, 3158, 3158, 3158, 688, 689, 671, 670, 668, 600, 691, 582, 692, 1674, 1674, 1674, 1674, 1681, 2433, 2111, 2111, 2433, 579, 3158, 1243, 3158, 576, 914, 686, 2112, 595, 686, 686, 595, 563, 686, 560, 549, 549, 687, 597, 595, 907, 687, 688, 689, 549, 544, 688, 689, 691, 1243, 692, 2344, 691, 686, 692, 541, 686, 533, 497, 904, 896, 896, 904, 595, 687, 520, 514, 505, 2147, 688, 689, 497, 3158, 3158, 3158, 691, 3158, 692, 3158, 3158, 718, 906, 2495, 907, 2148, 1143, 1144, 1145, 1145, 1144, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1146, 1147, 1143, 1143, 1147, 1143, 1143, 1143, 2498, 3158, 3158, 1148, 1147, 1149, 1143, 1143, 1143, 3158, 3158, 3158, 2575, 896, 896, 2575, 3158, 2727, 2727, 2727, 2727, 686, 3158, 914, 686, 3158, 1143, 1143, 1147, 1143, 686, 3158, 687, 686, 897, 3158, 907, 688, 689, 2728, 3158, 687, 3158, 691, 3158, 692, 688, 689, 3158, 627, 3158, 3158, 691, 3158, 692, 3158, 3158, 1143, 1143, 1143, 1143, 1151, 1781, 1782, 1781, 1781, 1782, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1783, 1781, 1781, 1781, 1781, 1784, 1785, 1781, 3158, 1243, 2500, 1786, 1781, 1787, 1781, 1781, 1781, 3158, 3158, 2728, 2926, 1668, 1668, 2926, 904, 896, 896, 904, 686, 3158, 3158, 686, 3158, 3158, 1781, 1781, 1781, 1781, 2491, 687, 686, 3158, 2104, 686, 688, 689, 906, 3158, 907, 3158, 691, 687, 692, 3158, 3158, 3158, 688, 689, 3158, 3158, 686, 3158, 691, 686, 692, 1781, 1781, 1781, 1781, 1788, 686, 687, 3158, 686, 2958, 2958, 688, 689, 914, 1126, 1126, 687, 691, 3158, 692, 686, 688, 689, 686, 2959, 1462, 1462, 691, 3158, 692, 1462, 687, 1243, 2499, 1462, 3158, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 2418, 2418, 2418, 2418, 687, 686, 3158, 2623, 686, 688, 689, 3158, 3158, 3158, 1243, 691, 687, 692, 3158, 1243, 3158, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 3107, 2958, 686, 3107, 687, 686, 2501, 1422, 1422, 688, 689, 2939, 1422, 687, 3158, 691, 1422, 692, 688, 689, 1337, 1337, 1337, 1337, 691, 3158, 692, 3091, 2502, 686, 3091, 760, 686, 3158, 2625, 3158, 3158, 3158, 2939, 686, 687, 3158, 686, 3158, 2503, 688, 689, 3158, 3158, 2422, 687, 691, 3158, 692, 3158, 688, 689, 686, 3158, 3158, 686, 691, 718, 692, 3158, 3158, 686, 3152, 687, 686, 3158, 2504, 3158, 688, 689, 686, 3158, 687, 686, 691, 3158, 692, 688, 689, 3158, 3158, 687, 2505, 691, 3158, 692, 688, 689, 686, 3154, 3158, 686, 691, 3158, 692, 2418, 2418, 2418, 2418, 687, 3158, 3158, 2623, 2506, 688, 689, 3158, 3158, 686, 3158, 691, 686, 692, 2508, 3158, 3158, 3158, 686, 3158, 687, 686, 2507, 1243, 3158, 688, 689, 686, 3158, 687, 686, 691, 3158, 692, 688, 689, 3158, 3158, 687, 3158, 691, 3158, 692, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 3158, 3158, 686, 3158, 687, 686, 2509, 3158, 2625, 688, 689, 2510, 3158, 687, 3158, 691, 3158, 692, 688, 689, 1243, 3158, 3158, 2422, 691, 686, 692, 3158, 686, 2916, 2917, 2086, 2916, 3158, 686, 3158, 687, 686, 719, 3158, 2087, 688, 689, 3158, 3158, 687, 718, 691, 3158, 692, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 3158, 3158, 686, 3158, 687, 686, 3158, 3158, 3158, 688, 689, 3158, 718, 687, 3158, 691, 3158, 692, 688, 689, 686, 1243, 3158, 686, 691, 3158, 692, 2511, 3158, 686, 3158, 687, 686, 1125, 1125, 3158, 688, 689, 1126, 1126, 687, 3158, 691, 3158, 692, 688, 689, 3158, 1127, 718, 3158, 691, 686, 692, 3158, 686, 3158, 3158, 3158, 2927, 3158, 2927, 2927, 687, 3158, 3158, 2927, 686, 688, 689, 686, 1243, 3158, 3158, 691, 3158, 692, 719, 687, 2981, 2982, 2399, 2981, 688, 689, 3158, 3158, 3158, 3158, 691, 2400, 692, 1105, 1105, 3158, 3158, 2512, 1105, 3158, 3158, 1125, 1105, 2513, 1254, 1255, 1254, 1254, 1255, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1256, 1254, 1254, 1254, 1254, 1257, 1258, 1254, 3074, 3158, 2514, 1259, 1254, 1260, 1254, 1254, 1254, 3158, 904, 896, 896, 904, 686, 2927, 3158, 686, 3158, 3158, 904, 896, 896, 904, 3158, 687, 1254, 1254, 1254, 1254, 688, 689, 906, 3158, 907, 3158, 691, 3158, 692, 3158, 3158, 3158, 906, 3158, 907, 3010, 1668, 1668, 3010, 719, 3158, 3158, 3158, 686, 3158, 3158, 686, 1254, 1254, 1254, 1254, 1262, 686, 3158, 687, 686, 914, 1669, 2515, 688, 689, 686, 3158, 687, 686, 691, 3158, 692, 688, 689, 686, 3158, 687, 686, 691, 3158, 692, 688, 689, 914, 3158, 687, 3158, 691, 3158, 692, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 3158, 1243, 770, 771, 687, 770, 3158, 2516, 3158, 688, 689, 770, 771, 772, 770, 691, 3158, 692, 773, 774, 770, 771, 772, 770, 691, 2518, 692, 773, 774, 2517, 3158, 772, 3158, 691, 3158, 692, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 770, 771, 772, 770, 2519, 1923, 1923, 773, 774, 3158, 1923, 772, 3158, 691, 1923, 692, 773, 774, 2526, 3158, 3158, 3158, 691, 2527, 692, 2525, 770, 771, 3158, 770, 3158, 3158, 3158, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 2528, 773, 774, 770, 771, 772, 770, 691, 3158, 692, 773, 774, 770, 771, 772, 770, 691, 3158, 692, 773, 774, 3158, 2529, 772, 2927, 691, 3158, 692, 773, 774, 2928, 2927, 3158, 3158, 691, 3158, 692, 2927, 770, 771, 3158, 770, 3158, 3158, 3158, 2999, 2530, 3158, 1342, 772, 2626, 2627, 2627, 2626, 773, 774, 3158, 800, 3158, 3158, 691, 594, 692, 3158, 2531, 3158, 770, 771, 3158, 770, 770, 771, 1669, 770, 2629, 1968, 1968, 772, 3158, 3158, 1968, 772, 773, 774, 1968, 3158, 773, 774, 691, 3158, 692, 3158, 691, 3158, 692, 2927, 3158, 2927, 3158, 3158, 3158, 1342, 1781, 1860, 1861, 1781, 1860, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1862, 1781, 1781, 1781, 1781, 1863, 1864, 1781, 2533, 3158, 3158, 1786, 1781, 1787, 1781, 1781, 1781, 2982, 2982, 2399, 2982, 1342, 770, 771, 3158, 770, 3158, 3158, 2400, 3158, 3158, 3158, 3158, 772, 1781, 1781, 1781, 1781, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 3158, 2532, 772, 3158, 3158, 3158, 3158, 773, 774, 3158, 3158, 770, 771, 691, 770, 692, 1781, 1781, 1781, 1781, 1865, 3158, 772, 3158, 3158, 3158, 1342, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 2591, 3158, 772, 770, 771, 3158, 770, 773, 774, 3158, 3158, 2534, 3158, 691, 772, 692, 3158, 3158, 3158, 773, 774, 3000, 1668, 3001, 3000, 691, 3158, 692, 3158, 3158, 770, 771, 2928, 770, 3010, 1668, 1668, 3010, 3158, 3158, 3158, 772, 1342, 3002, 3158, 1342, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 2104, 770, 771, 772, 770, 3158, 2039, 2039, 773, 774, 2535, 2039, 772, 3158, 691, 2039, 692, 773, 774, 3158, 3158, 770, 771, 691, 770, 692, 3158, 3158, 3158, 3158, 770, 771, 772, 770, 3158, 2536, 3158, 773, 774, 770, 771, 772, 770, 691, 3158, 692, 773, 774, 3158, 3158, 772, 3158, 691, 3158, 692, 773, 774, 2537, 3158, 3158, 3158, 691, 3158, 692, 770, 771, 3158, 770, 3158, 3158, 2538, 3026, 3026, 3026, 3026, 772, 770, 771, 3158, 770, 773, 774, 2584, 3158, 3158, 3158, 691, 772, 692, 3158, 800, 3158, 773, 774, 3158, 3158, 3158, 2540, 691, 2539, 692, 770, 771, 3158, 770, 770, 771, 3158, 770, 3158, 2420, 2420, 772, 3158, 3158, 2420, 772, 773, 774, 2420, 3158, 773, 774, 691, 3158, 692, 3158, 691, 3158, 692, 3158, 2573, 2573, 2541, 3158, 3158, 2573, 3158, 770, 771, 2573, 770, 3158, 3158, 3158, 2542, 3158, 770, 771, 772, 770, 3158, 3158, 2543, 773, 774, 686, 1342, 772, 686, 691, 3158, 692, 773, 774, 770, 771, 687, 770, 691, 3158, 692, 688, 689, 770, 771, 772, 770, 691, 3158, 692, 773, 774, 3158, 3158, 772, 3158, 691, 3158, 692, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 1342, 3158, 772, 3158, 3158, 3158, 2544, 773, 774, 3158, 3158, 3158, 3158, 691, 3158, 692, 3158, 770, 771, 3158, 770, 770, 771, 3158, 770, 2684, 800, 801, 772, 3158, 3158, 3158, 772, 773, 774, 3158, 3158, 773, 774, 691, 3158, 692, 3158, 691, 3158, 692, 770, 771, 3158, 770, 3158, 3158, 3158, 2981, 2982, 2399, 2981, 772, 770, 771, 800, 770, 773, 774, 2400, 3158, 3158, 3158, 691, 772, 692, 3158, 1342, 1342, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 2982, 2982, 2399, 2982, 772, 770, 771, 3158, 770, 773, 774, 2400, 3158, 3158, 3158, 691, 772, 692, 3158, 800, 3158, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 3158, 773, 774, 3158, 3158, 772, 1342, 691, 3158, 692, 773, 774, 801, 3158, 3158, 3158, 691, 3158, 692, 3026, 3026, 3026, 3026, 3158, 3158, 2927, 3158, 2927, 2927, 3158, 2584, 3158, 2927, 3158, 2545, 2546, 1254, 1353, 1354, 1254, 1353, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1355, 1254, 1254, 1254, 1254, 1356, 1357, 1254, 3158, 2550, 3158, 1259, 1254, 1260, 1254, 1254, 1254, 3158, 904, 896, 896, 904, 770, 771, 3158, 770, 904, 896, 896, 904, 3158, 3158, 3158, 772, 1254, 1254, 1254, 1254, 773, 774, 906, 3105, 907, 3158, 691, 3158, 692, 3158, 906, 3158, 907, 3158, 3026, 3026, 3026, 3026, 2927, 801, 3158, 770, 771, 3158, 770, 2584, 3158, 1254, 1254, 1254, 1254, 1359, 772, 770, 771, 3158, 770, 773, 774, 3158, 3158, 2739, 2547, 691, 772, 692, 3158, 3158, 3158, 773, 774, 2576, 3158, 3158, 3158, 691, 3158, 692, 3158, 3158, 770, 771, 3158, 770, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 772, 3158, 3158, 3158, 2548, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 1342, 770, 771, 772, 770, 3158, 3158, 3158, 773, 774, 3158, 3158, 772, 3158, 691, 3158, 692, 773, 774, 770, 771, 3158, 770, 691, 2549, 692, 904, 896, 896, 904, 772, 2583, 2583, 2583, 2583, 773, 774, 929, 929, 929, 929, 691, 2551, 692, 3128, 2776, 3128, 3128, 906, 3158, 907, 3158, 3158, 3158, 2584, 2939, 2584, 3158, 3158, 2552, 3158, 3158, 3158, 592, 593, 593, 592, 3158, 2553, 2626, 2627, 2627, 2626, 3158, 594, 595, 3158, 3158, 595, 3158, 594, 3158, 3158, 2585, 2577, 597, 595, 598, 3158, 2599, 3158, 1669, 3158, 2629, 3158, 2586, 3158, 3158, 3158, 2587, 2588, 2600, 2589, 3158, 3158, 2601, 3158, 934, 2602, 3158, 595, 3158, 3158, 934, 592, 593, 593, 592, 3158, 3158, 2637, 2111, 2111, 2637, 3158, 594, 595, 3158, 3158, 595, 2622, 2112, 595, 3158, 2630, 595, 597, 595, 598, 3158, 3158, 3158, 597, 595, 907, 2634, 3158, 3158, 3158, 3158, 3158, 2434, 2435, 2435, 2434, 3158, 3158, 3158, 3158, 3158, 3158, 595, 594, 595, 3158, 3158, 595, 595, 2433, 2111, 2111, 2433, 3158, 597, 595, 907, 3158, 3158, 3158, 2112, 595, 3158, 3158, 595, 2435, 2435, 2435, 2435, 3158, 3158, 597, 595, 907, 3158, 3158, 594, 595, 3158, 595, 595, 3158, 3158, 904, 896, 896, 904, 597, 595, 3158, 3158, 2664, 2665, 2665, 2664, 3158, 595, 3158, 3158, 3158, 3158, 2147, 2112, 595, 3158, 906, 595, 907, 3158, 3158, 3158, 3158, 595, 597, 595, 907, 3158, 2148, 1674, 2653, 1676, 1676, 2653, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1677, 1678, 1674, 1674, 1678, 1674, 1674, 1674, 595, 3158, 3158, 1679, 1678, 1680, 1674, 1674, 1674, 2665, 2665, 2665, 2665, 3158, 914, 3158, 2666, 3158, 3158, 686, 2112, 595, 686, 3158, 595, 3158, 1674, 1674, 1678, 1674, 687, 597, 595, 3158, 3158, 688, 689, 3158, 3158, 3158, 3158, 691, 3158, 692, 3158, 3158, 3158, 904, 896, 896, 904, 686, 3158, 3158, 686, 3158, 595, 1674, 1674, 1674, 1674, 1681, 687, 686, 3158, 3158, 686, 688, 689, 906, 3158, 907, 2666, 691, 687, 692, 3158, 3158, 3158, 688, 689, 2681, 3158, 686, 3158, 691, 686, 692, 3158, 3158, 3158, 3158, 686, 3158, 687, 686, 3158, 3158, 3158, 688, 689, 2738, 3158, 687, 3158, 691, 3158, 692, 688, 689, 686, 3158, 3158, 686, 691, 2682, 692, 3158, 1243, 686, 3158, 687, 686, 3158, 3158, 3158, 688, 689, 3158, 3158, 687, 3158, 691, 3158, 692, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 2683, 3158, 718, 3158, 687, 3158, 3158, 3158, 686, 688, 689, 686, 3158, 3158, 3158, 691, 3158, 692, 3158, 687, 686, 3158, 3158, 686, 688, 689, 3158, 2685, 3158, 3158, 691, 687, 692, 3158, 3158, 719, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 3158, 3158, 686, 3158, 687, 686, 2686, 3158, 3158, 688, 689, 686, 3158, 687, 686, 691, 3158, 692, 688, 689, 3158, 3158, 687, 3158, 691, 3158, 692, 688, 689, 3158, 3158, 686, 719, 691, 686, 692, 3158, 719, 3158, 3158, 686, 3158, 687, 686, 3158, 1243, 3158, 688, 689, 3158, 3158, 687, 2688, 691, 3158, 692, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 1243, 3158, 686, 3158, 687, 686, 3158, 3158, 3158, 688, 689, 686, 3158, 687, 686, 691, 2689, 692, 688, 689, 3158, 3158, 687, 3158, 691, 3158, 692, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 2583, 2583, 2583, 2583, 687, 3158, 1243, 3158, 3158, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 3158, 2691, 3158, 2690, 687, 2584, 3158, 2584, 3158, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 3158, 3158, 686, 3158, 687, 686, 1243, 3158, 3158, 688, 689, 1243, 3158, 687, 3158, 691, 3158, 692, 688, 689, 3158, 3158, 3158, 3158, 691, 3158, 692, 2927, 3158, 2927, 2927, 3158, 3158, 2745, 2927, 686, 3158, 3158, 686, 686, 934, 3158, 686, 3158, 2692, 3158, 687, 2693, 3158, 2927, 687, 688, 689, 3158, 3158, 688, 689, 691, 3158, 692, 3158, 691, 3158, 692, 3158, 3158, 3158, 3158, 3158, 2694, 1781, 1782, 1781, 1781, 1782, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1783, 1781, 1781, 1781, 1781, 1784, 1785, 1781, 3158, 2996, 3158, 1786, 1781, 1787, 1781, 1781, 1781, 2696, 3158, 3001, 1668, 3001, 3001, 3158, 2927, 3158, 2697, 3158, 686, 3158, 2928, 686, 3158, 3158, 1781, 1781, 1781, 1781, 2695, 687, 686, 3041, 3158, 686, 688, 689, 3158, 3158, 3158, 3158, 691, 687, 692, 3158, 3158, 3158, 688, 689, 929, 929, 929, 929, 691, 3158, 692, 1781, 1781, 1781, 1781, 1788, 686, 3158, 3158, 686, 686, 3158, 3158, 686, 3158, 3158, 3158, 687, 2698, 3158, 3158, 687, 688, 689, 3158, 3158, 688, 689, 691, 3158, 692, 1243, 691, 686, 692, 3158, 686, 686, 3158, 3158, 686, 3158, 3158, 3158, 687, 3158, 2585, 3158, 687, 688, 689, 3158, 3158, 688, 689, 691, 3158, 692, 2586, 691, 686, 692, 2587, 686, 2700, 2589, 3158, 3158, 2699, 3158, 934, 687, 3158, 3158, 3158, 3158, 688, 689, 2702, 2702, 2702, 2702, 691, 3158, 692, 3158, 3158, 3158, 3158, 760, 770, 771, 3158, 770, 1243, 3158, 3158, 3158, 2701, 3158, 1856, 772, 763, 3158, 3158, 3158, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 3158, 773, 774, 3158, 3158, 772, 718, 691, 3158, 692, 773, 774, 3158, 3158, 770, 771, 691, 770, 692, 3158, 3158, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 2707, 773, 774, 770, 771, 772, 770, 691, 3158, 692, 773, 774, 3158, 3158, 772, 3158, 691, 2708, 692, 773, 774, 770, 771, 1342, 770, 691, 3158, 692, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 3158, 773, 774, 770, 771, 772, 770, 691, 3158, 692, 773, 774, 800, 3158, 772, 3158, 691, 3158, 692, 773, 774, 3158, 3158, 770, 771, 691, 770, 692, 2709, 3158, 3158, 3158, 3158, 3158, 772, 3158, 801, 3158, 3158, 773, 774, 770, 771, 2710, 770, 691, 3158, 692, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 3158, 773, 774, 3158, 801, 772, 3158, 691, 3158, 692, 773, 774, 801, 3158, 770, 771, 691, 770, 692, 1342, 3158, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 3158, 773, 774, 3158, 3158, 772, 2711, 691, 3158, 692, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 1342, 3158, 770, 771, 772, 770, 3158, 3158, 3158, 773, 774, 770, 771, 772, 770, 691, 2712, 692, 773, 774, 3158, 3158, 772, 3158, 691, 3158, 692, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 3158, 3158, 772, 3158, 1342, 3158, 3158, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 2714, 3158, 2713, 772, 3158, 3158, 3158, 3158, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 770, 771, 772, 770, 1342, 3158, 3158, 773, 774, 1342, 3158, 772, 3158, 691, 3158, 692, 773, 774, 3000, 1668, 3001, 3000, 691, 3158, 692, 3158, 3158, 770, 771, 2928, 770, 3158, 3158, 3158, 3158, 3158, 770, 771, 772, 770, 3041, 3158, 2715, 773, 774, 2716, 3158, 772, 3158, 691, 3158, 692, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 686, 2717, 772, 686, 3158, 3158, 3158, 773, 774, 3158, 3158, 687, 3158, 691, 3158, 692, 688, 689, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 2719, 3158, 772, 3158, 3158, 3158, 2718, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 3158, 1342, 772, 770, 771, 3158, 770, 773, 774, 1243, 3158, 3158, 3158, 691, 772, 692, 3158, 3158, 3158, 773, 774, 3001, 1668, 3001, 3001, 691, 3158, 692, 3158, 3158, 770, 771, 2928, 770, 3158, 2720, 3158, 3158, 3158, 770, 771, 772, 770, 3041, 3158, 2721, 773, 774, 3158, 3158, 772, 3158, 691, 3158, 692, 773, 774, 904, 896, 896, 904, 691, 3158, 692, 1342, 2583, 2583, 2583, 2583, 3158, 3158, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 2627, 906, 3158, 907, 594, 3158, 3158, 3158, 594, 3158, 2584, 3158, 2584, 2722, 3158, 2104, 3158, 2629, 3158, 2104, 3158, 2629, 2626, 2627, 2627, 2626, 2626, 2627, 2627, 2626, 800, 3158, 3158, 594, 3158, 3158, 3158, 594, 3158, 2742, 3158, 3158, 914, 3158, 1669, 3158, 2629, 3158, 1669, 3158, 2629, 2743, 3158, 3158, 3158, 2744, 2745, 3158, 2746, 3158, 3158, 3158, 2774, 934, 2637, 2111, 2111, 2637, 3158, 3158, 2927, 3158, 2927, 2927, 3158, 2112, 595, 2927, 686, 595, 2775, 686, 686, 3158, 3158, 686, 597, 595, 907, 687, 3158, 3158, 2927, 687, 688, 689, 3158, 3158, 688, 689, 691, 3158, 692, 3158, 691, 3158, 692, 3158, 3158, 3158, 3158, 595, 2781, 2782, 2783, 2783, 2782, 2781, 2781, 2781, 2781, 2781, 2781, 2781, 2784, 2785, 2781, 2781, 2785, 2781, 2781, 2781, 2821, 3158, 3158, 2786, 2785, 2787, 2781, 2781, 2781, 2664, 2665, 2665, 2664, 3158, 3158, 1243, 3158, 2927, 3158, 3158, 2112, 595, 3158, 3158, 595, 3158, 2781, 2781, 2785, 2781, 2788, 597, 595, 907, 2927, 3158, 3158, 3158, 3158, 3158, 2943, 2944, 3158, 3158, 3158, 2945, 2945, 2927, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2946, 595, 2781, 2781, 2781, 2781, 2789, 2797, 2111, 2111, 2797, 3158, 2665, 2665, 2665, 2665, 3158, 2666, 2112, 595, 3158, 3158, 595, 2112, 595, 686, 3158, 595, 686, 597, 595, 907, 3158, 3158, 597, 595, 687, 3158, 3158, 3158, 686, 688, 689, 686, 3158, 3158, 3158, 691, 3158, 692, 2927, 687, 2944, 3158, 595, 3158, 688, 689, 3158, 595, 686, 2798, 691, 686, 692, 2799, 3158, 3158, 3158, 686, 3158, 687, 686, 3158, 2800, 2666, 688, 689, 2801, 719, 687, 3158, 691, 3158, 692, 688, 689, 686, 3158, 2822, 686, 691, 3158, 692, 3158, 3158, 686, 3158, 687, 686, 3158, 3158, 3158, 688, 689, 3158, 3158, 687, 3158, 691, 3158, 692, 688, 689, 3158, 3158, 686, 3158, 691, 686, 692, 3158, 3158, 3158, 3158, 686, 3158, 687, 686, 1243, 1243, 3158, 688, 689, 686, 3158, 687, 686, 691, 2823, 692, 688, 689, 686, 3158, 687, 686, 691, 3158, 692, 688, 689, 3158, 3158, 687, 3158, 691, 3158, 692, 688, 689, 686, 3158, 1243, 686, 691, 3158, 692, 3158, 3158, 1243, 686, 687, 3158, 686, 3158, 3158, 688, 689, 2824, 3158, 686, 687, 691, 686, 692, 3158, 688, 689, 3158, 3158, 3158, 687, 691, 3158, 692, 3158, 688, 689, 686, 3158, 1243, 686, 691, 3158, 692, 3158, 3158, 2825, 686, 687, 3158, 686, 2826, 3158, 688, 689, 3158, 3158, 3158, 687, 691, 3158, 692, 3158, 688, 689, 686, 3158, 3158, 686, 691, 3158, 692, 2827, 1243, 686, 3158, 687, 686, 3158, 3158, 3158, 688, 689, 3158, 3158, 687, 3158, 691, 3158, 692, 688, 689, 2702, 2702, 2702, 2702, 691, 3158, 692, 3158, 2828, 1243, 3158, 760, 3090, 2627, 3091, 3090, 770, 771, 3158, 770, 3158, 3158, 1856, 3058, 763, 3158, 718, 772, 770, 771, 3158, 770, 773, 774, 3041, 3158, 1243, 3158, 691, 772, 692, 3158, 3158, 3158, 773, 774, 3091, 2627, 3091, 3091, 691, 3158, 692, 3158, 3158, 770, 771, 2939, 770, 3158, 3158, 3158, 3158, 3158, 770, 771, 772, 770, 3041, 3158, 1342, 773, 774, 3158, 3158, 772, 3158, 691, 3158, 692, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 1342, 773, 774, 770, 771, 772, 770, 691, 3158, 692, 773, 774, 801, 3158, 772, 3158, 691, 3158, 692, 773, 774, 770, 771, 3158, 770, 691, 3158, 692, 3107, 2627, 3091, 3107, 772, 3158, 3158, 3158, 1342, 773, 774, 2939, 3158, 770, 771, 691, 770, 692, 1342, 3158, 3158, 3158, 3041, 3158, 772, 3158, 3158, 2830, 3158, 773, 774, 3158, 3158, 1342, 3158, 691, 3158, 692, 770, 771, 3158, 770, 904, 896, 896, 904, 3158, 1342, 3158, 772, 3158, 3158, 3158, 3158, 773, 774, 3158, 3158, 770, 771, 691, 770, 692, 3158, 906, 3158, 907, 2831, 3158, 772, 770, 771, 3158, 770, 773, 774, 3158, 3158, 3158, 3158, 691, 772, 692, 3158, 3158, 3158, 773, 774, 3158, 3158, 770, 771, 691, 770, 692, 914, 3158, 3158, 3158, 3158, 3158, 772, 3158, 3158, 3158, 1342, 773, 774, 3158, 3158, 3158, 3158, 691, 3158, 692, 770, 771, 3158, 770, 770, 771, 2832, 770, 3158, 1342, 3158, 772, 3158, 3158, 3158, 772, 773, 774, 3158, 3158, 773, 774, 691, 3158, 692, 3158, 691, 3158, 692, 770, 771, 3158, 770, 3158, 904, 896, 896, 904, 2833, 3158, 772, 2627, 2627, 2627, 2627, 773, 774, 3158, 3158, 3158, 3158, 691, 594, 692, 1342, 3158, 906, 800, 907, 3158, 3158, 3158, 3158, 2104, 3158, 2629, 3158, 2627, 2627, 2627, 2627, 2626, 2627, 2627, 2626, 3158, 3158, 3158, 594, 3158, 3158, 3158, 594, 1342, 3158, 3158, 3158, 3158, 2331, 2104, 3158, 2629, 3158, 1669, 3158, 2629, 2864, 2111, 2111, 2864, 3158, 2111, 2111, 2111, 2111, 3158, 3158, 2112, 595, 3158, 3158, 595, 2112, 595, 3158, 3158, 595, 3158, 597, 595, 2865, 2859, 3158, 597, 595, 3118, 2627, 3091, 3118, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3058, 3158, 2860, 3158, 3158, 3158, 3158, 595, 3158, 3158, 3158, 3041, 595, 2869, 2870, 1676, 2871, 2870, 2869, 2869, 2869, 2869, 2869, 2869, 2869, 2872, 2873, 2869, 2869, 2873, 2869, 2869, 2869, 2874, 2874, 2874, 2875, 2873, 2876, 2869, 2869, 2869, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2869, 2869, 2873, 2869, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2869, 2869, 2869, 2869, 2877, 2793, 2794, 593, 2793, 3158, 2794, 2794, 593, 2794, 3158, 3158, 594, 595, 3158, 3158, 595, 594, 595, 3158, 3158, 595, 3158, 597, 595, 907, 3158, 3158, 597, 595, 3158, 3158, 2795, 593, 593, 2795, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 594, 595, 3158, 686, 595, 595, 686, 3158, 3158, 3158, 595, 597, 595, 907, 687, 686, 3158, 3158, 686, 688, 689, 3158, 3158, 3158, 3158, 691, 687, 692, 3158, 3158, 3158, 688, 689, 3158, 3158, 686, 595, 691, 686, 692, 3158, 2878, 3158, 3158, 686, 3158, 687, 686, 3158, 3158, 3158, 688, 689, 686, 3158, 687, 686, 691, 3158, 692, 688, 689, 686, 3158, 687, 686, 691, 2896, 692, 688, 689, 2895, 3158, 687, 3158, 691, 3158, 692, 688, 689, 3158, 3158, 686, 3158, 691, 686, 692, 3158, 3158, 1243, 3158, 686, 3158, 687, 686, 3158, 3158, 1243, 688, 689, 770, 771, 687, 770, 691, 3158, 692, 688, 689, 3158, 3158, 772, 2898, 691, 3158, 692, 773, 774, 3158, 3158, 2897, 3158, 691, 3158, 692, 770, 771, 3158, 770, 3158, 3158, 3158, 3158, 3158, 770, 771, 772, 770, 3158, 3158, 2899, 773, 774, 3158, 3158, 772, 3158, 691, 3158, 692, 773, 774, 770, 771, 1342, 770, 691, 3158, 692, 3158, 1243, 3158, 3158, 772, 2627, 2627, 2627, 2627, 773, 774, 3158, 3158, 3158, 3158, 691, 594, 692, 3158, 1342, 2626, 2627, 2627, 2626, 3158, 3158, 3158, 2104, 3158, 2629, 3158, 594, 3158, 2900, 2864, 2111, 2111, 2864, 3158, 3158, 3158, 3158, 1669, 3158, 2629, 2112, 595, 3158, 3158, 595, 3158, 3158, 2929, 2111, 2930, 2929, 597, 595, 2865, 3158, 3158, 3158, 1342, 2931, 2932, 3158, 3158, 2932, 3158, 3158, 2921, 3158, 2920, 3158, 2933, 2932, 2934, 3068, 1214, 3069, 3068, 595, 2930, 2111, 2930, 2930, 3158, 3158, 2939, 2932, 3158, 3158, 2932, 2935, 2932, 686, 3158, 2932, 686, 2932, 2932, 2934, 2927, 3158, 2933, 2932, 687, 3158, 2943, 2944, 3158, 688, 689, 2945, 2945, 2927, 3158, 691, 3158, 692, 3158, 3158, 3158, 2946, 2932, 3158, 3158, 3158, 3158, 2932, 2927, 2937, 593, 2938, 2937, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2939, 2932, 2927, 2927, 2932, 2927, 2927, 2927, 3158, 3158, 3158, 2933, 2932, 2940, 2927, 2927, 2927, 2955, 2111, 2111, 2955, 3158, 2963, 3158, 3158, 3158, 3158, 686, 2112, 595, 686, 2927, 595, 2944, 2927, 2927, 2932, 2927, 687, 597, 595, 2956, 3158, 688, 689, 3158, 3158, 3158, 3158, 691, 3158, 692, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 686, 3158, 3158, 686, 3158, 595, 2927, 2927, 2927, 2927, 2874, 687, 686, 3158, 3158, 686, 688, 689, 2964, 3158, 3158, 3158, 691, 687, 692, 3158, 3158, 686, 688, 689, 686, 3158, 3158, 3158, 691, 3158, 692, 3158, 687, 770, 771, 3158, 770, 688, 689, 3158, 3158, 3158, 3158, 691, 772, 692, 3158, 3158, 2965, 773, 774, 2627, 2627, 2627, 2627, 691, 3158, 692, 2626, 2627, 2627, 2626, 594, 3158, 3158, 3158, 3158, 3158, 3158, 594, 3158, 3158, 3158, 2104, 2966, 2629, 2929, 2111, 2930, 2929, 1669, 3158, 2629, 3158, 3158, 3158, 3158, 2931, 2932, 3158, 3158, 2932, 2930, 2111, 2930, 2930, 2967, 3158, 2933, 2932, 2934, 2984, 3158, 2935, 2932, 3158, 3158, 2932, 2968, 2937, 593, 2938, 2937, 3158, 2933, 2932, 3158, 3158, 3158, 3158, 2939, 2932, 3158, 2932, 2932, 3158, 3158, 2985, 3158, 3158, 3158, 2933, 2932, 2934, 3158, 2938, 593, 2938, 2938, 2932, 3158, 3158, 3158, 3158, 3158, 3158, 2939, 2932, 686, 3158, 2932, 686, 3158, 3158, 3158, 3158, 2932, 2933, 2932, 687, 3158, 3158, 3158, 3158, 688, 689, 3158, 3158, 3158, 3158, 691, 3158, 3013, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2932, 2927, 2993, 1662, 2993, 2993, 2927, 2927, 2927, 2994, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2995, 2927, 2927, 2927, 2927, 2927, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2927, 2927, 2927, 2927, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2997, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2996, 2927, 2927, 2927, 2998, 2996, 2927, 3158, 3158, 3158, 3158, 3158, 2943, 2944, 3158, 3158, 3158, 2945, 2945, 2927, 2955, 2111, 2111, 2955, 3158, 3158, 3158, 2946, 3158, 3158, 686, 2112, 595, 686, 686, 595, 3158, 686, 3158, 3158, 3158, 687, 597, 595, 2956, 687, 688, 689, 3158, 3158, 688, 689, 691, 3158, 692, 3158, 691, 3158, 692, 686, 3158, 3158, 686, 3158, 3158, 3158, 3158, 595, 3158, 686, 687, 3158, 686, 3158, 3158, 688, 689, 2927, 3158, 2944, 687, 691, 3158, 692, 3158, 688, 689, 3158, 3158, 770, 771, 691, 770, 692, 3158, 3158, 3158, 3158, 3014, 3158, 772, 3158, 3158, 3015, 3158, 773, 774, 2627, 2627, 2627, 2627, 691, 3158, 692, 2626, 2627, 2627, 2626, 594, 3158, 3158, 3158, 3158, 3016, 686, 594, 3158, 686, 2963, 2104, 3158, 2629, 3158, 3158, 3158, 687, 1669, 3158, 2629, 3158, 688, 689, 3158, 3017, 3158, 3158, 691, 3158, 692, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3049, 3158, 3158, 3031, 3158, 3032, 2927, 3038, 661, 3038, 3038, 2927, 2927, 2927, 3039, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 2927, 2927, 2927, 2927, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 2927, 2927, 2927, 2927, 3040, 686, 3158, 3158, 686, 686, 3158, 3158, 686, 3158, 3158, 3158, 687, 3158, 3158, 3158, 687, 688, 689, 3158, 3158, 688, 689, 691, 3158, 692, 3158, 691, 3158, 692, 770, 771, 3158, 770, 3158, 3158, 3158, 2627, 2627, 2627, 2627, 772, 3158, 3158, 3158, 3158, 773, 774, 594, 3158, 3158, 3158, 691, 3158, 692, 3158, 3158, 3158, 1243, 2104, 3158, 2629, 3029, 593, 2938, 3029, 3158, 3158, 3158, 3158, 2963, 3158, 3158, 3058, 2932, 3158, 3158, 2932, 2626, 2627, 2627, 2626, 3158, 1342, 2933, 2932, 2934, 3158, 686, 594, 3158, 686, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 687, 1669, 3059, 2629, 3158, 688, 689, 3158, 3158, 3158, 2932, 691, 3158, 692, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3082, 3158, 3158, 3158, 3158, 3060, 2927, 3063, 1108, 3063, 3063, 2927, 2927, 2927, 3064, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2995, 2927, 2927, 2927, 2927, 2927, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 2927, 2927, 2927, 2927, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 2927, 2927, 2927, 3066, 3065, 2927, 3068, 1214, 3069, 3068, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2939, 2932, 2927, 2927, 2932, 2927, 2927, 2927, 3070, 3070, 3070, 2927, 2932, 2934, 2927, 2927, 2927, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 2927, 2927, 2932, 2927, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 2927, 2927, 2927, 2927, 3070, 2927, 3072, 2418, 3072, 3072, 2927, 2927, 2927, 3073, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 2927, 2927, 2927, 2927, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3075, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 2927, 2927, 2927, 3076, 3074, 2627, 2627, 2627, 2627, 3069, 1214, 3069, 3069, 3158, 686, 3158, 594, 686, 3158, 3158, 2939, 2932, 3158, 3158, 2932, 687, 3158, 2104, 3158, 2629, 688, 689, 2932, 3158, 3158, 3158, 691, 3158, 692, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2932, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3117, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3089, 2927, 3090, 2627, 3091, 3090, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3030, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3092, 3092, 3092, 3002, 2927, 3093, 2927, 2927, 2927, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 2927, 2927, 2927, 2927, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 3092, 2927, 2927, 2927, 2927, 3092, 2927, 2927, 3158, 2927, 2927, 2927, 2927, 2927, 3095, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 2927, 2927, 2927, 2927, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 2927, 2927, 2927, 2927, 3096, 2927, 3097, 1631, 3098, 3097, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2928, 2932, 2927, 2927, 2932, 2927, 2927, 2927, 3099, 3099, 3099, 2995, 2932, 2934, 2927, 2927, 2927, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 2927, 2927, 2932, 2927, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 2927, 2927, 2927, 2927, 3099, 2927, 3100, 1094, 3100, 3100, 2927, 2927, 2927, 3101, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 2927, 2927, 2927, 2927, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 2927, 2927, 2927, 2927, 3102, 2927, 3072, 2418, 3072, 3072, 2927, 2927, 2927, 3104, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 2927, 2927, 2927, 2927, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3106, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 3105, 2927, 2927, 2927, 3076, 3105, 2927, 3109, 2631, 3109, 3109, 2927, 2927, 2927, 3110, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 2927, 2927, 2927, 2927, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 2927, 2927, 2927, 2927, 3111, 2927, 3118, 2627, 3091, 3118, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3030, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3119, 3119, 3119, 3041, 2927, 3093, 2927, 2927, 2927, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 2927, 2927, 2927, 2927, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 3119, 2927, 2927, 2927, 2927, 3119, 2927, 3034, 3158, 2927, 3034, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2928, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3121, 3121, 3121, 3035, 2927, 2927, 2927, 2927, 2927, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 2927, 2927, 2927, 2927, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 3121, 2927, 2927, 2927, 2927, 3121, 3097, 1631, 3098, 3097, 3158, 3098, 1631, 3098, 3098, 3158, 3158, 2928, 2932, 3158, 3158, 2932, 2928, 2932, 3158, 3158, 2932, 3158, 2995, 2932, 2934, 3158, 3158, 2995, 2932, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2932, 3158, 3158, 3158, 3158, 2932, 2927, 3122, 1635, 3123, 3122, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2928, 2932, 2927, 2927, 2932, 2927, 2927, 2927, 3124, 3124, 3124, 2927, 2932, 2934, 2927, 2927, 2927, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 2927, 2927, 2932, 2927, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 3124, 2927, 2927, 2927, 2927, 3124, 2927, 3128, 2776, 3128, 3128, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2939, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 3129, 3129, 3129, 2927, 2927, 2927, 2927, 2927, 2927, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 2927, 2927, 2927, 2927, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 3129, 2927, 2927, 2927, 2927, 3129, 686, 3158, 3158, 686, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 687, 3158, 3158, 3158, 3158, 688, 689, 3122, 1635, 3123, 3122, 691, 3158, 692, 3123, 1635, 3123, 3123, 2928, 2932, 3158, 3158, 2932, 3158, 686, 2928, 2932, 686, 3158, 2932, 2932, 2934, 3158, 3158, 3158, 687, 3158, 2932, 3158, 3158, 688, 689, 3158, 3158, 3158, 3158, 691, 3158, 692, 3158, 3158, 3158, 3158, 3158, 2932, 3158, 3158, 3133, 3158, 3158, 3158, 2932, 3157, 593, 593, 3157, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 594, 595, 3158, 3158, 595, 3158, 3158, 3158, 3158, 3158, 3158, 597, 595, 907, 3158, 3158, 3158, 3158, 3158, 3158, 2963, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 595, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 502, 502, 3158, 3158, 502, 3158, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 3158, 502, 502, 502, 502, 502, 502, 506, 506, 3158, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, 511, 511, 3158, 3158, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 519, 519, 3158, 519, 519, 3158, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 527, 527, 3158, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 3158, 527, 527, 527, 527, 527, 527, 527, 527, 3158, 527, 527, 527, 527, 527, 527, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 538, 538, 3158, 538, 538, 538, 538, 538, 538, 538, 3158, 538, 538, 538, 3158, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 548, 548, 3158, 3158, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 559, 559, 3158, 559, 559, 559, 559, 559, 559, 559, 3158, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 572, 572, 572, 572, 3158, 572, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 572, 3158, 3158, 3158, 572, 572, 3158, 3158, 3158, 572, 3158, 3158, 572, 572, 575, 575, 3158, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 596, 596, 596, 596, 3158, 3158, 3158, 596, 596, 3158, 596, 3158, 3158, 3158, 596, 596, 596, 596, 3158, 596, 596, 3158, 3158, 596, 596, 3158, 3158, 3158, 596, 663, 663, 663, 663, 3158, 663, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 663, 663, 3158, 3158, 3158, 663, 3158, 3158, 3158, 663, 690, 3158, 3158, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 690, 3158, 690, 690, 3158, 690, 3158, 690, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 755, 755, 755, 755, 3158, 755, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 755, 3158, 3158, 3158, 755, 755, 3158, 3158, 3158, 755, 3158, 3158, 755, 755, 761, 761, 761, 761, 3158, 3158, 3158, 761, 3158, 3158, 3158, 3158, 3158, 3158, 761, 761, 3158, 761, 3158, 761, 761, 3158, 3158, 3158, 761, 3158, 3158, 3158, 761, 766, 766, 766, 766, 3158, 766, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 766, 766, 3158, 3158, 3158, 766, 3158, 3158, 3158, 766, 775, 775, 3158, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 775, 3158, 775, 775, 3158, 775, 3158, 775, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 834, 3158, 3158, 3158, 3158, 834, 834, 3158, 3158, 3158, 834, 3158, 3158, 3158, 834, 841, 841, 3158, 3158, 3158, 841, 841, 3158, 3158, 3158, 841, 3158, 3158, 3158, 841, 850, 3158, 850, 3158, 3158, 3158, 3158, 850, 850, 3158, 3158, 3158, 850, 3158, 3158, 3158, 850, 854, 3158, 3158, 3158, 3158, 854, 854, 3158, 3158, 3158, 854, 3158, 3158, 3158, 854, 862, 3158, 3158, 3158, 3158, 862, 862, 3158, 3158, 3158, 862, 3158, 3158, 3158, 862, 868, 868, 3158, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 900, 900, 900, 900, 3158, 900, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 900, 3158, 3158, 3158, 900, 900, 3158, 3158, 3158, 900, 3158, 3158, 900, 900, 905, 905, 905, 905, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 905, 905, 3158, 905, 3158, 905, 905, 3158, 3158, 3158, 905, 3158, 3158, 3158, 905, 926, 926, 926, 926, 3158, 926, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 926, 926, 3158, 3158, 3158, 926, 3158, 3158, 3158, 926, 937, 3158, 3158, 3158, 3158, 937, 937, 3158, 3158, 3158, 937, 3158, 3158, 3158, 937, 945, 3158, 3158, 3158, 3158, 945, 945, 3158, 3158, 3158, 945, 3158, 3158, 3158, 945, 963, 3158, 3158, 963, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 963, 963, 3158, 3158, 3158, 963, 963, 3158, 3158, 3158, 963, 3158, 3158, 3158, 963, 966, 3158, 3158, 3158, 3158, 966, 966, 3158, 3158, 3158, 966, 3158, 3158, 3158, 966, 983, 983, 3158, 983, 3158, 983, 983, 3158, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 983, 986, 3158, 3158, 3158, 3158, 986, 986, 3158, 3158, 3158, 986, 3158, 3158, 3158, 986, 989, 989, 989, 989, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 989, 989, 3158, 3158, 3158, 989, 989, 3158, 3158, 989, 989, 3158, 3158, 3158, 989, 992, 992, 3158, 992, 992, 3158, 3158, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 3158, 992, 992, 992, 992, 992, 992, 997, 997, 3158, 997, 997, 3158, 3158, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 3158, 997, 997, 997, 997, 997, 997, 998, 998, 3158, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 998, 1005, 3158, 3158, 3158, 3158, 1005, 1005, 3158, 3158, 3158, 1005, 3158, 3158, 3158, 1005, 1026, 1026, 3158, 3158, 3158, 1026, 1026, 3158, 3158, 3158, 1026, 3158, 3158, 3158, 1026, 502, 502, 3158, 3158, 502, 3158, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 3158, 502, 502, 502, 502, 502, 502, 511, 511, 3158, 3158, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 519, 519, 3158, 519, 519, 3158, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 527, 527, 3158, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 527, 3158, 527, 527, 527, 527, 527, 527, 527, 527, 3158, 527, 527, 527, 527, 527, 527, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 538, 538, 3158, 538, 538, 538, 538, 538, 538, 538, 3158, 538, 538, 538, 3158, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 548, 548, 3158, 3158, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 559, 559, 3158, 559, 559, 559, 559, 559, 559, 559, 3158, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 596, 596, 596, 596, 3158, 3158, 3158, 596, 596, 3158, 596, 3158, 3158, 3158, 596, 596, 596, 596, 3158, 596, 596, 3158, 3158, 596, 596, 3158, 3158, 3158, 596, 1096, 1096, 1096, 1096, 3158, 1096, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1096, 1096, 3158, 3158, 3158, 1096, 3158, 3158, 3158, 1096, 575, 575, 3158, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 1105, 1105, 1105, 1105, 3158, 1105, 3158, 3158, 1105, 1105, 3158, 3158, 3158, 3158, 3158, 1105, 3158, 3158, 3158, 1105, 1105, 3158, 3158, 3158, 1105, 3158, 3158, 1105, 1105, 1124, 1124, 3158, 1124, 1124, 3158, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 3158, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 3158, 1124, 1124, 1124, 663, 663, 663, 663, 3158, 663, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 663, 663, 3158, 3158, 3158, 663, 3158, 3158, 3158, 663, 1215, 1215, 1215, 1215, 3158, 3158, 3158, 1215, 1215, 3158, 1215, 3158, 3158, 3158, 1215, 3158, 1215, 1215, 3158, 1215, 1215, 3158, 3158, 1215, 1215, 3158, 3158, 3158, 1215, 690, 3158, 3158, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 690, 3158, 690, 690, 3158, 690, 3158, 690, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 1222, 3158, 3158, 1222, 3158, 1222, 3158, 3158, 1222, 1222, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1222, 1222, 3158, 3158, 3158, 1222, 3158, 3158, 3158, 1222, 1238, 1238, 3158, 1238, 1238, 1238, 1238, 1238, 3158, 3158, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 3158, 1238, 1238, 1238, 3158, 1238, 3158, 1238, 3158, 3158, 1238, 1238, 761, 761, 761, 761, 3158, 3158, 3158, 761, 3158, 3158, 3158, 3158, 3158, 3158, 761, 761, 3158, 761, 3158, 761, 761, 3158, 3158, 3158, 761, 3158, 3158, 3158, 761, 1331, 1331, 1331, 1331, 3158, 1331, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1331, 1331, 3158, 3158, 3158, 1331, 3158, 3158, 3158, 1331, 1334, 1334, 3158, 1334, 1334, 3158, 1334, 1334, 3158, 3158, 1334, 1334, 1334, 1334, 3158, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 3158, 3158, 1334, 1334, 766, 766, 766, 766, 3158, 766, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 766, 766, 3158, 3158, 3158, 766, 3158, 3158, 3158, 766, 1338, 1338, 1338, 1338, 3158, 3158, 3158, 1338, 3158, 3158, 3158, 3158, 3158, 3158, 1338, 3158, 3158, 3158, 3158, 1338, 1338, 3158, 3158, 3158, 1338, 3158, 3158, 3158, 1338, 775, 775, 3158, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 775, 3158, 775, 775, 3158, 775, 3158, 775, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 834, 3158, 3158, 3158, 3158, 834, 834, 3158, 3158, 3158, 834, 3158, 3158, 3158, 834, 841, 841, 3158, 3158, 3158, 841, 841, 3158, 3158, 3158, 841, 3158, 3158, 3158, 841, 850, 3158, 850, 3158, 3158, 3158, 3158, 850, 850, 3158, 3158, 3158, 850, 3158, 3158, 3158, 850, 1422, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1422, 1422, 3158, 3158, 3158, 1422, 3158, 3158, 3158, 1422, 854, 3158, 3158, 3158, 3158, 854, 854, 3158, 3158, 3158, 854, 3158, 3158, 3158, 854, 862, 3158, 3158, 3158, 3158, 862, 862, 3158, 3158, 3158, 862, 3158, 3158, 3158, 862, 868, 868, 3158, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 905, 905, 905, 905, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 905, 905, 3158, 905, 3158, 905, 905, 3158, 3158, 3158, 905, 3158, 3158, 3158, 905, 926, 926, 926, 926, 3158, 926, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 926, 926, 3158, 3158, 3158, 926, 3158, 3158, 3158, 926, 1125, 1125, 3158, 1125, 1125, 3158, 1125, 1125, 1125, 1125, 1125, 1125, 3158, 3158, 3158, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 3158, 1125, 1125, 1125, 1487, 3158, 3158, 1487, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1487, 3158, 3158, 1487, 3158, 1487, 1487, 3158, 3158, 3158, 1487, 3158, 3158, 3158, 1487, 937, 3158, 3158, 3158, 3158, 937, 937, 3158, 3158, 3158, 937, 3158, 3158, 3158, 937, 945, 3158, 3158, 3158, 3158, 945, 945, 3158, 3158, 3158, 945, 3158, 3158, 3158, 945, 963, 3158, 3158, 963, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 963, 963, 3158, 3158, 3158, 963, 963, 3158, 3158, 3158, 963, 3158, 3158, 3158, 963, 966, 3158, 3158, 3158, 3158, 966, 966, 3158, 3158, 3158, 966, 3158, 3158, 3158, 966, 986, 3158, 3158, 3158, 3158, 986, 986, 3158, 3158, 3158, 986, 3158, 3158, 3158, 986, 1523, 1523, 3158, 1523, 3158, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 1523, 3158, 1523, 1523, 1523, 1523, 1523, 1523, 1525, 1525, 3158, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 989, 989, 989, 989, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 989, 989, 3158, 3158, 3158, 989, 989, 3158, 3158, 989, 989, 3158, 3158, 3158, 989, 992, 992, 3158, 992, 992, 3158, 3158, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 3158, 992, 992, 992, 992, 992, 992, 1527, 3158, 3158, 3158, 3158, 1527, 1527, 3158, 3158, 3158, 1527, 3158, 3158, 3158, 1527, 997, 997, 3158, 997, 997, 3158, 3158, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 3158, 997, 997, 997, 997, 997, 997, 1005, 3158, 3158, 3158, 3158, 1005, 1005, 3158, 3158, 3158, 1005, 3158, 3158, 3158, 1005, 1026, 1026, 3158, 3158, 3158, 1026, 1026, 3158, 3158, 3158, 1026, 3158, 3158, 3158, 1026, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 3158, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 3158, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1568, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 502, 502, 3158, 3158, 502, 3158, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 3158, 502, 502, 502, 502, 502, 502, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1579, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1583, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 511, 511, 3158, 3158, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1589, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1593, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 519, 519, 3158, 519, 519, 3158, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 548, 548, 3158, 3158, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1617, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 559, 559, 3158, 559, 559, 559, 559, 559, 559, 559, 3158, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1632, 1632, 1632, 1632, 3158, 3158, 3158, 3158, 1632, 3158, 1632, 3158, 3158, 3158, 1632, 1632, 1632, 1632, 3158, 1632, 1632, 3158, 3158, 1632, 1632, 3158, 3158, 3158, 1632, 596, 596, 596, 596, 3158, 3158, 3158, 596, 596, 3158, 596, 3158, 3158, 3158, 596, 596, 596, 596, 3158, 596, 596, 3158, 3158, 596, 596, 3158, 3158, 3158, 596, 1096, 1096, 1096, 1096, 3158, 1096, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1096, 1096, 3158, 3158, 3158, 1096, 3158, 3158, 3158, 1096, 1636, 1636, 1636, 1636, 3158, 3158, 3158, 3158, 1636, 3158, 1636, 3158, 3158, 3158, 1636, 3158, 1636, 1636, 3158, 1636, 1636, 3158, 3158, 1636, 1636, 3158, 3158, 3158, 1636, 1105, 1105, 1105, 1105, 3158, 1105, 3158, 3158, 1105, 1105, 3158, 3158, 3158, 3158, 3158, 1105, 3158, 3158, 3158, 1105, 1105, 3158, 3158, 3158, 1105, 3158, 3158, 1105, 1105, 1643, 1643, 1643, 1643, 3158, 1643, 3158, 3158, 1643, 3158, 3158, 3158, 3158, 3158, 1643, 1643, 3158, 3158, 3158, 1643, 1643, 3158, 3158, 3158, 1643, 3158, 3158, 1643, 1643, 1646, 1646, 1646, 1646, 3158, 1646, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1646, 1646, 3158, 3158, 3158, 1646, 3158, 3158, 3158, 1646, 1092, 1092, 1092, 1092, 3158, 1092, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1092, 3158, 3158, 3158, 1092, 1092, 3158, 3158, 3158, 1092, 3158, 3158, 1092, 1092, 572, 572, 572, 572, 3158, 572, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 572, 3158, 3158, 3158, 572, 572, 3158, 3158, 3158, 572, 3158, 3158, 572, 572, 1124, 1124, 3158, 1124, 1124, 3158, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 3158, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 3158, 1124, 1124, 1124, 1125, 1125, 3158, 1125, 1125, 3158, 1125, 1125, 1125, 1125, 1125, 1125, 3158, 3158, 3158, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 3158, 1125, 1125, 1125, 1126, 1126, 3158, 1126, 1126, 3158, 1126, 1126, 3158, 3158, 1126, 1126, 1126, 1126, 3158, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 3158, 3158, 1126, 1126, 1215, 1215, 1215, 1215, 3158, 3158, 3158, 1215, 1215, 3158, 1215, 3158, 3158, 3158, 1215, 3158, 1215, 1215, 3158, 1215, 1215, 3158, 3158, 1215, 1215, 3158, 3158, 3158, 1215, 690, 3158, 3158, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 690, 3158, 690, 690, 3158, 690, 3158, 690, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 1222, 3158, 3158, 1222, 3158, 1222, 3158, 3158, 1222, 1222, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1222, 1222, 3158, 3158, 3158, 1222, 3158, 3158, 3158, 1222, 1759, 3158, 3158, 1759, 3158, 1759, 3158, 3158, 1759, 3158, 3158, 3158, 3158, 3158, 1759, 3158, 3158, 3158, 3158, 1759, 1759, 3158, 3158, 3158, 1759, 3158, 3158, 3158, 1759, 1777, 3158, 3158, 1777, 3158, 1777, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1777, 1777, 3158, 3158, 3158, 1777, 3158, 3158, 3158, 1777, 1238, 1238, 3158, 1238, 1238, 1238, 1238, 1238, 3158, 3158, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 3158, 1238, 1238, 1238, 3158, 1238, 3158, 1238, 3158, 3158, 1238, 1238, 1849, 1849, 1849, 1849, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1849, 1849, 3158, 3158, 3158, 1849, 1849, 3158, 3158, 3158, 1849, 3158, 3158, 3158, 1849, 1331, 1331, 1331, 1331, 3158, 1331, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1331, 1331, 3158, 3158, 3158, 1331, 3158, 3158, 3158, 1331, 1851, 3158, 3158, 1851, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1851, 3158, 3158, 3158, 3158, 1851, 1851, 3158, 3158, 3158, 1851, 3158, 3158, 3158, 1851, 1328, 1328, 1328, 1328, 3158, 1328, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1328, 3158, 3158, 3158, 1328, 1328, 3158, 3158, 3158, 1328, 3158, 3158, 1328, 1328, 755, 755, 755, 755, 3158, 755, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 755, 3158, 3158, 3158, 755, 755, 3158, 3158, 3158, 755, 3158, 3158, 755, 755, 1334, 1334, 3158, 1334, 1334, 3158, 1334, 1334, 3158, 3158, 1334, 1334, 1334, 1334, 3158, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 3158, 3158, 1334, 1334, 1338, 1338, 1338, 1338, 3158, 3158, 3158, 1338, 3158, 3158, 3158, 3158, 3158, 3158, 1338, 3158, 3158, 3158, 3158, 1338, 1338, 3158, 3158, 3158, 1338, 3158, 3158, 3158, 1338, 775, 775, 3158, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 775, 3158, 775, 775, 3158, 775, 3158, 775, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 1923, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1923, 1923, 3158, 3158, 3158, 1923, 3158, 3158, 3158, 1923, 841, 841, 3158, 3158, 3158, 841, 841, 3158, 3158, 3158, 841, 3158, 3158, 3158, 841, 1925, 3158, 1925, 3158, 3158, 3158, 3158, 1925, 1925, 3158, 3158, 3158, 1925, 3158, 3158, 3158, 1925, 854, 3158, 3158, 3158, 3158, 854, 854, 3158, 3158, 3158, 854, 3158, 3158, 3158, 854, 862, 3158, 3158, 3158, 3158, 862, 862, 3158, 3158, 3158, 862, 3158, 3158, 3158, 862, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1938, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 868, 868, 3158, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1946, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1966, 1966, 1966, 1966, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1966, 1966, 3158, 1966, 3158, 1966, 1966, 3158, 3158, 3158, 1966, 3158, 3158, 3158, 1966, 1462, 1462, 1462, 1462, 3158, 1462, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1462, 3158, 3158, 3158, 1462, 1462, 3158, 3158, 3158, 1462, 3158, 3158, 1462, 1462, 1968, 1968, 1968, 1968, 3158, 1968, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1968, 3158, 3158, 3158, 1968, 1968, 3158, 3158, 3158, 1968, 3158, 3158, 1968, 1968, 905, 905, 905, 905, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 905, 905, 3158, 905, 3158, 905, 905, 3158, 3158, 3158, 905, 3158, 3158, 3158, 905, 1125, 1125, 3158, 1125, 1125, 3158, 1125, 1125, 1125, 1125, 1125, 1125, 3158, 3158, 3158, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 3158, 1125, 1125, 1125, 1487, 3158, 3158, 1487, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1487, 3158, 3158, 1487, 3158, 1487, 1487, 3158, 3158, 3158, 1487, 3158, 3158, 3158, 1487, 937, 3158, 3158, 3158, 3158, 937, 937, 3158, 3158, 3158, 937, 3158, 3158, 3158, 937, 945, 3158, 3158, 3158, 3158, 945, 945, 3158, 3158, 3158, 945, 3158, 3158, 3158, 945, 966, 3158, 3158, 3158, 3158, 966, 966, 3158, 3158, 3158, 966, 3158, 3158, 3158, 966, 2011, 2011, 3158, 2011, 3158, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 3158, 2011, 2011, 2011, 2011, 2011, 2011, 1527, 3158, 3158, 3158, 3158, 1527, 1527, 3158, 3158, 3158, 1527, 3158, 3158, 3158, 1527, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2014, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 992, 992, 3158, 992, 992, 3158, 3158, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 3158, 992, 992, 992, 992, 992, 992, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 1005, 3158, 3158, 3158, 3158, 1005, 1005, 3158, 3158, 3158, 1005, 3158, 3158, 3158, 1005, 2039, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2039, 2039, 3158, 3158, 3158, 2039, 3158, 3158, 3158, 2039, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 3158, 2040, 2040, 2040, 3158, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2040, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 3158, 2045, 2045, 2045, 3158, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2045, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 502, 502, 3158, 3158, 502, 3158, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 3158, 502, 502, 502, 502, 502, 502, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 1576, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2050, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 1581, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 511, 511, 3158, 3158, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 1591, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 519, 519, 3158, 519, 519, 3158, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 1596, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2056, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 1601, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 2059, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 548, 548, 3158, 3158, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 1613, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 1626, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 1632, 1632, 1632, 1632, 3158, 3158, 3158, 3158, 1632, 3158, 1632, 3158, 3158, 3158, 1632, 1632, 1632, 1632, 3158, 1632, 1632, 3158, 3158, 1632, 1632, 3158, 3158, 3158, 1632, 596, 596, 596, 596, 3158, 3158, 3158, 596, 596, 3158, 596, 3158, 3158, 3158, 596, 596, 596, 596, 3158, 596, 596, 3158, 3158, 596, 596, 3158, 3158, 3158, 596, 1636, 1636, 1636, 1636, 3158, 3158, 3158, 3158, 1636, 3158, 1636, 3158, 3158, 3158, 1636, 3158, 1636, 1636, 3158, 1636, 1636, 3158, 3158, 1636, 1636, 3158, 3158, 3158, 1636, 1643, 1643, 1643, 1643, 3158, 1643, 3158, 3158, 1643, 3158, 3158, 3158, 3158, 3158, 1643, 1643, 3158, 3158, 3158, 1643, 1643, 3158, 3158, 3158, 1643, 3158, 3158, 1643, 1643, 1646, 1646, 1646, 1646, 3158, 1646, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1646, 1646, 3158, 3158, 3158, 1646, 3158, 3158, 3158, 1646, 2082, 2082, 2082, 2082, 3158, 2082, 3158, 3158, 2082, 3158, 3158, 3158, 3158, 3158, 2082, 2082, 3158, 3158, 3158, 2082, 2082, 3158, 3158, 3158, 2082, 3158, 3158, 2082, 2082, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 3158, 1674, 1674, 1674, 1674, 3158, 3158, 1674, 1674, 1674, 3158, 1674, 1674, 1674, 1674, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 3158, 1143, 1143, 1143, 1143, 3158, 3158, 1143, 1143, 1143, 3158, 1143, 1143, 1143, 1143, 572, 572, 572, 572, 3158, 572, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 572, 3158, 3158, 3158, 572, 572, 3158, 3158, 3158, 572, 3158, 3158, 572, 572, 663, 663, 663, 663, 3158, 663, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 663, 663, 3158, 3158, 3158, 663, 3158, 3158, 3158, 663, 1124, 1124, 3158, 1124, 1124, 3158, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 3158, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 3158, 1124, 1124, 1124, 690, 3158, 3158, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 690, 3158, 690, 690, 3158, 690, 3158, 690, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 1759, 3158, 3158, 1759, 3158, 1759, 3158, 3158, 1759, 3158, 3158, 3158, 3158, 3158, 1759, 3158, 3158, 3158, 3158, 1759, 1759, 3158, 3158, 3158, 1759, 3158, 3158, 3158, 1759, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 1781, 3158, 1781, 1781, 1781, 1781, 3158, 3158, 1781, 1781, 1781, 3158, 1781, 1781, 1781, 1781, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 3158, 1254, 1254, 1254, 1254, 3158, 3158, 1254, 1254, 1254, 3158, 1254, 1254, 1254, 1254, 1777, 3158, 3158, 1777, 3158, 1777, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1777, 1777, 3158, 3158, 3158, 1777, 3158, 3158, 3158, 1777, 2191, 3158, 3158, 2191, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2191, 2191, 3158, 2191, 3158, 2191, 2191, 3158, 3158, 3158, 2191, 3158, 3158, 3158, 2191, 1238, 1238, 3158, 1238, 1238, 1238, 1238, 1238, 3158, 3158, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 3158, 1238, 1238, 1238, 3158, 1238, 3158, 1238, 3158, 3158, 1238, 1238, 1849, 1849, 1849, 1849, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1849, 1849, 3158, 3158, 3158, 1849, 1849, 3158, 3158, 3158, 1849, 3158, 3158, 3158, 1849, 1851, 3158, 3158, 1851, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1851, 3158, 3158, 3158, 3158, 1851, 1851, 3158, 3158, 3158, 1851, 3158, 3158, 3158, 1851, 755, 755, 755, 755, 3158, 755, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 755, 3158, 3158, 3158, 755, 755, 3158, 3158, 3158, 755, 3158, 3158, 755, 755, 766, 766, 766, 766, 3158, 766, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 766, 766, 3158, 3158, 3158, 766, 3158, 3158, 3158, 766, 775, 775, 3158, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 775, 3158, 775, 775, 3158, 775, 3158, 775, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 2297, 2297, 3158, 3158, 3158, 2297, 2297, 3158, 3158, 3158, 2297, 3158, 3158, 3158, 2297, 841, 841, 3158, 3158, 3158, 841, 841, 3158, 3158, 3158, 841, 3158, 3158, 3158, 841, 1925, 3158, 1925, 3158, 3158, 3158, 3158, 1925, 1925, 3158, 3158, 3158, 1925, 3158, 3158, 3158, 1925, 854, 3158, 3158, 3158, 3158, 854, 854, 3158, 3158, 3158, 854, 3158, 3158, 3158, 854, 862, 3158, 3158, 3158, 3158, 862, 862, 3158, 3158, 3158, 862, 3158, 3158, 3158, 862, 868, 868, 3158, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2310, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1949, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 1966, 1966, 1966, 1966, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1966, 1966, 3158, 1966, 3158, 1966, 1966, 3158, 3158, 3158, 1966, 3158, 3158, 3158, 1966, 2328, 2328, 2328, 2328, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2328, 2328, 3158, 2328, 3158, 2328, 2328, 3158, 3158, 3158, 2328, 3158, 3158, 3158, 2328, 905, 905, 905, 905, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 905, 905, 3158, 905, 3158, 905, 905, 3158, 3158, 3158, 905, 3158, 3158, 3158, 905, 937, 3158, 3158, 3158, 3158, 937, 937, 3158, 3158, 3158, 937, 3158, 3158, 3158, 937, 945, 3158, 3158, 945, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 945, 3158, 3158, 3158, 3158, 945, 945, 3158, 3158, 3158, 945, 3158, 3158, 3158, 945, 966, 3158, 3158, 3158, 3158, 966, 966, 3158, 3158, 3158, 966, 3158, 3158, 3158, 966, 2364, 2364, 3158, 2364, 3158, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 2364, 3158, 2364, 2364, 2364, 2364, 2364, 2364, 992, 992, 3158, 992, 992, 3158, 3158, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 3158, 992, 992, 992, 992, 992, 992, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2366, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2022, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 1005, 3158, 3158, 3158, 3158, 1005, 1005, 3158, 3158, 3158, 1005, 3158, 3158, 3158, 1005, 2381, 2381, 3158, 3158, 3158, 2381, 2381, 3158, 3158, 3158, 2381, 3158, 3158, 3158, 2381, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2042, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 502, 502, 3158, 3158, 502, 3158, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, 3158, 502, 502, 502, 502, 502, 502, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2051, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 2052, 511, 511, 3158, 3158, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 3158, 511, 511, 511, 511, 511, 511, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2054, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 2055, 519, 519, 3158, 519, 519, 3158, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2057, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 2058, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 528, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2062, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 1564, 548, 548, 3158, 3158, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 2069, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 1570, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2077, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 596, 596, 596, 596, 3158, 3158, 3158, 596, 596, 3158, 596, 596, 596, 3158, 596, 596, 596, 596, 3158, 596, 596, 3158, 3158, 596, 596, 3158, 3158, 3158, 596, 1105, 1105, 1105, 1105, 3158, 1105, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 1105, 3158, 3158, 3158, 1105, 1105, 3158, 3158, 3158, 1105, 3158, 3158, 1105, 1105, 2082, 2082, 2082, 2082, 3158, 2082, 3158, 3158, 2082, 3158, 3158, 3158, 3158, 3158, 2082, 2082, 3158, 3158, 3158, 2082, 2082, 3158, 3158, 3158, 2082, 3158, 3158, 2082, 2082, 1643, 1643, 1643, 1643, 3158, 1643, 3158, 3158, 1643, 3158, 3158, 3158, 3158, 3158, 1643, 1643, 3158, 3158, 3158, 1643, 1643, 3158, 3158, 3158, 1643, 3158, 3158, 1643, 1643, 2420, 2420, 2420, 2420, 3158, 2420, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2420, 2420, 3158, 3158, 3158, 2420, 3158, 3158, 2420, 2420, 690, 3158, 3158, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 690, 3158, 690, 690, 3158, 690, 3158, 690, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 2191, 3158, 3158, 2191, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2191, 2191, 3158, 2191, 3158, 2191, 2191, 3158, 3158, 3158, 2191, 3158, 3158, 3158, 2191, 2523, 2523, 2523, 2523, 3158, 2523, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2523, 2523, 3158, 3158, 3158, 2523, 3158, 3158, 2523, 2523, 775, 775, 3158, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 775, 3158, 775, 775, 3158, 775, 3158, 775, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 2297, 2297, 3158, 3158, 3158, 2297, 2297, 3158, 3158, 3158, 2297, 3158, 3158, 3158, 2297, 841, 841, 3158, 3158, 3158, 841, 841, 3158, 3158, 3158, 841, 3158, 3158, 3158, 841, 854, 3158, 3158, 3158, 3158, 854, 854, 3158, 3158, 3158, 854, 3158, 3158, 3158, 854, 862, 3158, 3158, 3158, 3158, 862, 862, 3158, 3158, 3158, 862, 3158, 3158, 3158, 862, 868, 868, 3158, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2312, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2046, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2314, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2048, 2328, 2328, 2328, 2328, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2328, 2328, 3158, 2328, 3158, 2328, 2328, 3158, 3158, 3158, 2328, 3158, 3158, 3158, 2328, 2573, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2573, 2573, 3158, 3158, 3158, 2573, 3158, 3158, 3158, 2573, 905, 905, 905, 905, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 905, 905, 3158, 905, 3158, 905, 905, 3158, 3158, 3158, 905, 3158, 3158, 3158, 905, 937, 937, 937, 937, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 937, 3158, 937, 3158, 937, 937, 937, 3158, 3158, 3158, 937, 937, 3158, 3158, 937, 945, 3158, 3158, 3158, 3158, 945, 945, 3158, 3158, 3158, 945, 3158, 3158, 3158, 945, 966, 3158, 3158, 3158, 3158, 966, 966, 3158, 3158, 3158, 966, 3158, 3158, 3158, 966, 992, 992, 3158, 992, 992, 3158, 3158, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 992, 3158, 992, 992, 992, 992, 992, 992, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2367, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 2368, 1005, 3158, 3158, 3158, 3158, 1005, 1005, 3158, 3158, 3158, 1005, 3158, 3158, 3158, 1005, 2381, 2381, 3158, 3158, 3158, 2381, 2381, 3158, 3158, 3158, 2381, 3158, 3158, 3158, 2381, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2384, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2386, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 3158, 2608, 2608, 2608, 3158, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 2608, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 3158, 1674, 1674, 1674, 1674, 3158, 3158, 1674, 1674, 1674, 3158, 1674, 1674, 1674, 1674, 596, 596, 596, 596, 3158, 3158, 3158, 596, 596, 3158, 596, 3158, 3158, 3158, 596, 596, 596, 596, 3158, 596, 596, 3158, 3158, 596, 596, 3158, 3158, 3158, 596, 2624, 2624, 2624, 2624, 3158, 2624, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2624, 2624, 3158, 3158, 3158, 2624, 3158, 3158, 2624, 2624, 2628, 2628, 2628, 2628, 3158, 3158, 3158, 2628, 3158, 3158, 3158, 3158, 3158, 3158, 2628, 2628, 3158, 2628, 3158, 2628, 2628, 3158, 3158, 3158, 2628, 3158, 3158, 3158, 2628, 2633, 2633, 2633, 2633, 3158, 2633, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2633, 2633, 3158, 3158, 3158, 2633, 3158, 3158, 3158, 2633, 690, 3158, 3158, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 690, 3158, 690, 690, 3158, 690, 3158, 690, 690, 3158, 3158, 3158, 690, 3158, 3158, 3158, 690, 2523, 2523, 2523, 2523, 3158, 2523, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2523, 2523, 3158, 3158, 3158, 2523, 3158, 3158, 2523, 2523, 2703, 2703, 2703, 2703, 3158, 3158, 3158, 2703, 3158, 3158, 3158, 3158, 3158, 3158, 2703, 2703, 3158, 2703, 3158, 2703, 2703, 3158, 3158, 3158, 2703, 3158, 3158, 3158, 2703, 2706, 2706, 2706, 2706, 3158, 2706, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2706, 2706, 3158, 3158, 3158, 2706, 3158, 3158, 3158, 2706, 775, 775, 3158, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 775, 3158, 775, 775, 3158, 775, 3158, 775, 775, 3158, 3158, 3158, 775, 3158, 3158, 3158, 775, 841, 841, 3158, 3158, 3158, 841, 841, 3158, 3158, 3158, 841, 3158, 3158, 3158, 841, 854, 3158, 3158, 3158, 3158, 854, 854, 3158, 3158, 3158, 854, 3158, 3158, 3158, 854, 862, 3158, 3158, 3158, 3158, 862, 862, 3158, 3158, 3158, 862, 3158, 3158, 3158, 862, 2737, 3158, 3158, 2737, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2737, 2737, 3158, 3158, 3158, 2737, 2737, 3158, 3158, 3158, 2737, 3158, 3158, 3158, 2737, 905, 905, 905, 905, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 905, 905, 3158, 905, 3158, 905, 905, 3158, 3158, 3158, 905, 3158, 3158, 3158, 905, 937, 3158, 3158, 3158, 3158, 937, 937, 3158, 3158, 3158, 937, 3158, 3158, 3158, 937, 945, 3158, 3158, 3158, 3158, 945, 945, 3158, 3158, 3158, 945, 3158, 3158, 3158, 945, 966, 3158, 3158, 3158, 3158, 966, 966, 3158, 3158, 3158, 966, 3158, 3158, 3158, 966, 1005, 3158, 3158, 3158, 3158, 1005, 1005, 3158, 3158, 3158, 1005, 3158, 3158, 3158, 1005, 2773, 2773, 2773, 2773, 3158, 3158, 3158, 2773, 3158, 3158, 3158, 3158, 3158, 3158, 2773, 2773, 3158, 2773, 3158, 2773, 2773, 3158, 3158, 3158, 2773, 3158, 3158, 3158, 2773, 1126, 1126, 3158, 1126, 1126, 3158, 1126, 1126, 3158, 3158, 1126, 1126, 1126, 1126, 3158, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 3158, 3158, 1126, 1126, 2633, 2633, 2633, 2633, 3158, 2633, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 2633, 2633, 3158, 3158, 3158, 2633, 3158, 3158, 3158, 2633, 2777, 2777, 2777, 2777, 3158, 3158, 3158, 2777, 3158, 3158, 3158, 3158, 3158, 3158, 2777, 3158, 3158, 3158, 3158, 2777, 2777, 3158, 3158, 3158, 2777, 3158, 3158, 3158, 2777, 2829, 2829, 2829, 2829, 3158, 3158, 3158, 2829, 3158, 3158, 3158, 3158, 3158, 3158, 2829, 3158, 3158, 3158, 3158, 2829, 2829, 3158, 3158, 3158, 2829, 3158, 3158, 3158, 2829, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 3158, 2838, 2838, 2838, 2838, 3158, 3158, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2838, 2866, 2866, 3158, 2866, 2866, 3158, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 3158, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 2866, 3158, 2866, 2866, 2866, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 3158, 1674, 1674, 1674, 1674, 3158, 3158, 1674, 1674, 1674, 3158, 1674, 1674, 1674, 1674, 2867, 2867, 3158, 2867, 2867, 3158, 2867, 2867, 2867, 2867, 2867, 2867, 3158, 3158, 3158, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 3158, 2867, 2867, 2867, 2927, 2927, 3158, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2927, 2942, 2942, 3158, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2942, 2957, 2957, 3158, 2957, 2957, 3158, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 3158, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 2957, 3158, 2957, 2957, 2957, 2944, 2944, 3158, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 2944, 1125, 1125, 3158, 1125, 1125, 3158, 1125, 1125, 1125, 1125, 1125, 1125, 3158, 3158, 3158, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 3158, 1125, 1125, 1125, 2945, 2945, 3158, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2958, 2958, 3158, 2958, 2958, 3158, 2958, 2958, 2958, 2958, 2958, 2958, 3158, 3158, 3158, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 2958, 3158, 2958, 2958, 2958, 1124, 1124, 3158, 1124, 1124, 3158, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 3158, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 3158, 1124, 1124, 1124, 1238, 1238, 3158, 1238, 1238, 1238, 1238, 1238, 3158, 3158, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 3158, 1238, 1238, 1238, 3158, 1238, 3158, 1238, 3158, 3158, 1238, 1238, 3052, 3158, 3158, 3052, 3158, 3052, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3052, 3052, 3158, 3158, 3158, 3052, 3158, 3158, 3158, 3052, 3085, 3158, 3158, 3085, 3158, 3158, 3158, 3158, 3085, 3158, 3158, 3158, 3158, 3158, 3085, 3158, 3158, 3158, 3158, 3085, 3085, 3158, 3158, 3158, 3085, 3158, 3158, 3158, 3085, 2945, 2945, 3158, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 2945, 65, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158 } ; static yyconst flex_int16_t yy_chk[27610] = { 0, 0, 0, 1, 1, 2, 2, 2, 2, 109, 109, 3, 3, 1, 1, 3, 2, 2, 0, 323, 1, 3, 3, 2, 20, 195, 71, 20, 3, 1, 20, 71, 2, 4, 4, 4, 4, 3, 4, 176, 323, 195, 20, 22, 4, 4, 22, 1, 74, 1, 2, 4, 2, 74, 2183, 3, 3, 3, 5, 5, 4, 22, 635, 113, 635, 79, 113, 5, 5, 5, 79, 6, 6, 6, 6, 5, 113, 176, 4, 4, 4, 6, 6, 6, 5, 83, 88, 91, 98, 6, 83, 88, 91, 98, 149, 7, 7, 149, 6, 7, 175, 128, 5, 5, 5, 7, 7, 149, 8, 8, 8, 8, 7, 8, 9, 9, 6, 6, 6, 8, 8, 7, 101, 107, 9, 9, 8, 101, 107, 168, 343, 9, 175, 24, 26, 8, 24, 26, 111, 7, 9, 7, 128, 111, 118, 10, 10, 10, 10, 118, 343, 24, 26, 8, 231, 8, 10, 10, 9, 9, 9, 168, 28, 10, 168, 28, 11, 11, 11, 11, 121, 30, 10, 201, 30, 121, 138, 11, 11, 11, 28, 138, 201, 199, 11, 12, 12, 12, 12, 30, 10, 10, 10, 11, 199, 2184, 12, 12, 12, 13, 13, 32, 34, 12, 32, 34, 231, 129, 129, 13, 13, 11, 12, 11, 166, 38, 13, 141, 38, 32, 34, 38, 141, 44, 46, 13, 44, 46, 289, 155, 12, 166, 12, 38, 155, 14, 14, 14, 14, 15, 15, 44, 46, 13, 13, 13, 14, 14, 301, 15, 15, 15, 129, 14, 180, 289, 15, 16, 16, 16, 16, 48, 14, 335, 48, 15, 127, 335, 16, 16, 16, 127, 180, 313, 183, 16, 180, 17, 17, 48, 14, 14, 14, 15, 16, 15, 170, 17, 17, 18, 18, 18, 18, 50, 17, 52, 50, 301, 52, 127, 18, 18, 16, 17, 16, 183, 54, 18, 170, 54, 183, 50, 56, 52, 58, 56, 18, 58, 170, 286, 191, 17, 286, 17, 54, 191, 204, 204, 170, 610, 56, 2186, 58, 313, 18, 610, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 35, 35, 35, 35, 131, 60, 583, 196, 60, 131, 196, 35, 35, 36, 36, 36, 36, 583, 35, 599, 196, 242, 35, 60, 36, 36, 242, 35, 206, 206, 618, 36, 599, 62, 618, 36, 62, 131, 39, 39, 36, 40, 40, 40, 40, 35, 171, 35, 39, 39, 174, 62, 40, 40, 64, 39, 339, 64, 36, 40, 36, 39, 324, 39, 39, 40, 339, 40, 40, 252, 495, 174, 64, 174, 252, 171, 35, 171, 2187, 495, 174, 174, 39, 324, 39, 171, 40, 171, 40, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 41, 41, 67, 73, 41, 67, 73, 351, 2188, 290, 41, 41, 290, 82, 254, 90, 82, 41, 90, 93, 67, 73, 93, 254, 254, 41, 41, 42, 42, 42, 42, 82, 42, 90, 325, 326, 328, 93, 42, 42, 100, 405, 351, 100, 41, 42, 41, 103, 103, 110, 103, 405, 110, 42, 42, 325, 326, 328, 100, 123, 120, 130, 123, 120, 130, 103, 133, 110, 315, 133, 167, 315, 42, 120, 42, 43, 43, 123, 120, 130, 142, 142, 142, 142, 133, 43, 43, 140, 1924, 167, 140, 169, 43, 143, 143, 143, 143, 185, 43, 377, 43, 43, 142, 470, 377, 140, 167, 130, 167, 169, 470, 143, 342, 342, 43, 143, 169, 185, 1924, 43, 169, 43, 185, 169, 342, 43, 43, 43, 202, 43, 43, 388, 43, 202, 395, 43, 388, 634, 43, 395, 202, 634, 43, 43, 43, 43, 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 144, 144, 144, 144, 147, 147, 147, 147, 156, 156, 156, 147, 161, 161, 161, 161, 160, 588, 173, 172, 588, 475, 144, 161, 161, 178, 147, 161, 285, 285, 408, 408, 156, 285, 161, 161, 161, 172, 173, 177, 173, 475, 408, 190, 178, 172, 190, 613, 172, 602, 173, 172, 297, 613, 172, 297, 179, 177, 178, 161, 602, 177, 156, 160, 178, 160, 160, 182, 285, 160, 297, 425, 184, 147, 179, 160, 160, 177, 160, 160, 160, 425, 179, 147, 162, 162, 162, 162, 181, 182, 184, 179, 182, 207, 179, 162, 162, 619, 184, 162, 233, 190, 182, 619, 184, 233, 162, 162, 162, 182, 181, 473, 233, 181, 181, 220, 162, 188, 188, 188, 188, 473, 220, 496, 188, 181, 220, 2189, 181, 220, 181, 162, 189, 189, 189, 189, 413, 496, 189, 591, 207, 413, 207, 207, 292, 600, 207, 292, 208, 591, 189, 208, 207, 207, 189, 207, 207, 207, 209, 208, 296, 209, 614, 296, 208, 208, 600, 292, 307, 209, 208, 307, 208, 614, 209, 209, 211, 504, 296, 211, 209, 390, 209, 296, 390, 212, 412, 211, 212, 412, 209, 504, 211, 211, 213, 2190, 212, 213, 211, 390, 211, 212, 212, 433, 412, 213, 433, 212, 215, 212, 213, 213, 215, 513, 503, 215, 213, 214, 213, 215, 214, 433, 215, 503, 216, 211, 416, 513, 214, 416, 604, 216, 215, 214, 214, 216, 212, 216, 216, 214, 1198, 214, 604, 217, 307, 221, 283, 216, 416, 283, 217, 217, 221, 212, 217, 212, 221, 217, 213, 221, 217, 213, 218, 1198, 218, 221, 218, 214, 283, 218, 428, 428, 219, 218, 214, 219, 218, 219, 214, 219, 590, 214, 428, 219, 219, 219, 219, 222, 223, 223, 606, 222, 522, 606, 222, 223, 1138, 224, 222, 223, 590, 222, 223, 223, 224, 224, 522, 222, 224, 223, 440, 224, 225, 446, 224, 440, 225, 224, 446, 225, 226, 1138, 283, 225, 226, 455, 225, 226, 226, 227, 455, 226, 445, 227, 226, 445, 227, 2205, 228, 226, 227, 605, 226, 227, 226, 228, 227, 229, 605, 228, 445, 228, 228, 227, 229, 229, 228, 230, 229, 230, 460, 229, 488, 539, 230, 460, 539, 488, 230, 586, 586, 230, 235, 235, 235, 235, 539, 236, 236, 236, 236, 237, 237, 237, 237, 239, 239, 239, 239, 608, 267, 277, 239, 277, 235, 236, 608, 267, 277, 236, 630, 267, 277, 237, 267, 277, 630, 239, 245, 245, 245, 245, 492, 249, 249, 249, 249, 492, 616, 245, 249, 616, 250, 250, 250, 250, 347, 347, 347, 347, 245, 532, 245, 250, 251, 251, 251, 251, 256, 256, 459, 256, 494, 459, 250, 532, 250, 494, 347, 256, 257, 257, 251, 257, 256, 256, 251, 2236, 459, 543, 256, 257, 256, 625, 239, 499, 257, 257, 258, 258, 499, 258, 257, 543, 257, 625, 508, 259, 259, 258, 259, 508, 257, 327, 258, 258, 260, 260, 259, 260, 258, 327, 258, 259, 259, 621, 327, 260, 500, 259, 512, 259, 260, 260, 327, 621, 2297, 500, 260, 512, 260, 262, 268, 261, 261, 262, 261, 258, 262, 268, 263, 500, 262, 268, 261, 262, 268, 263, 259, 261, 261, 263, 268, 263, 263, 261, 476, 261, 639, 476, 476, 264, 501, 263, 639, 259, 510, 259, 264, 264, 260, 476, 264, 260, 2299, 264, 501, 265, 264, 265, 510, 265, 516, 261, 265, 501, 615, 516, 265, 510, 261, 265, 291, 266, 261, 291, 266, 261, 266, 615, 266, 657, 270, 270, 266, 266, 266, 266, 269, 270, 291, 657, 269, 270, 291, 269, 270, 270, 271, 269, 272, 521, 269, 270, 272, 271, 271, 272, 269, 271, 521, 272, 271, 273, 272, 271, 2300, 273, 271, 274, 273, 273, 317, 274, 273, 317, 274, 273, 317, 524, 274, 275, 273, 274, 524, 273, 274, 273, 275, 276, 317, 562, 275, 274, 275, 275, 276, 276, 291, 275, 276, 329, 330, 276, 329, 562, 329, 509, 517, 531, 330, 348, 348, 348, 348, 330, 509, 517, 611, 329, 611, 531, 2301, 330, 611, 483, 531, 329, 483, 348, 509, 517, 518, 348, 349, 349, 349, 349, 350, 350, 350, 350, 565, 483, 542, 350, 518, 565, 317, 354, 354, 354, 354, 542, 491, 518, 349, 491, 607, 2302, 350, 355, 355, 355, 355, 356, 356, 356, 356, 607, 607, 354, 491, 354, 357, 357, 357, 357, 358, 358, 358, 358, 550, 355, 628, 355, 633, 356, 561, 356, 576, 550, 628, 355, 549, 549, 357, 561, 357, 576, 358, 633, 358, 359, 359, 359, 359, 1129, 360, 360, 360, 360, 361, 361, 361, 361, 631, 350, 603, 362, 362, 362, 362, 603, 550, 359, 525, 359, 631, 356, 360, 357, 360, 1129, 361, 525, 361, 577, 357, 549, 577, 362, 358, 362, 363, 363, 363, 363, 677, 525, 577, 364, 364, 364, 364, 365, 365, 365, 365, 677, 493, 360, 498, 493, 359, 498, 363, 609, 363, 636, 362, 360, 636, 364, 609, 364, 361, 365, 493, 365, 498, 366, 366, 366, 366, 367, 367, 367, 367, 622, 622, 889, 367, 368, 368, 368, 368, 370, 370, 370, 370, 363, 363, 366, 617, 366, 371, 371, 371, 371, 889, 368, 617, 363, 364, 368, 617, 526, 537, 365, 372, 372, 372, 372, 371, 632, 387, 387, 387, 387, 632, 526, 537, 366, 448, 448, 448, 448, 2303, 507, 526, 537, 507, 546, 387, 515, 642, 642, 515, 370, 551, 523, 546, 547, 523, 2304, 448, 507, 371, 560, 560, 370, 560, 515, 551, 370, 546, 547, 370, 523, 371, 629, 372, 370, 371, 629, 547, 371, 387, 623, 620, 448, 371, 629, 372, 623, 566, 620, 372, 623, 387, 372, 551, 2305, 387, 566, 372, 387, 461, 461, 461, 461, 387, 457, 457, 641, 457, 457, 457, 566, 457, 641, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 457, 648, 648, 645, 457, 457, 457, 457, 457, 457, 645, 1180, 556, 462, 462, 462, 462, 556, 1180, 463, 463, 463, 463, 529, 529, 601, 529, 457, 461, 457, 457, 462, 601, 481, 481, 481, 481, 646, 646, 536, 461, 529, 536, 601, 461, 556, 555, 461, 649, 555, 545, 481, 461, 545, 649, 567, 646, 536, 457, 457, 457, 457, 644, 545, 555, 462, 644, 2306, 545, 567, 557, 463, 637, 564, 644, 637, 564, 462, 567, 557, 558, 462, 656, 463, 462, 481, 656, 463, 685, 462, 463, 564, 555, 557, 558, 463, 626, 481, 685, 626, 868, 481, 653, 558, 481, 568, 568, 568, 568, 481, 653, 2307, 557, 570, 570, 570, 570, 572, 572, 572, 572, 868, 558, 574, 574, 574, 574, 568, 572, 572, 574, 570, 572, 650, 672, 570, 624, 672, 650, 572, 572, 572, 624, 573, 573, 573, 573, 672, 624, 578, 578, 578, 578, 626, 573, 573, 578, 863, 573, 655, 655, 578, 578, 863, 572, 573, 573, 573, 580, 580, 580, 578, 582, 582, 582, 582, 598, 598, 638, 582, 2308, 598, 598, 638, 592, 592, 592, 592, 660, 660, 573, 598, 580, 638, 582, 592, 592, 1088, 647, 592, 573, 593, 593, 593, 593, 647, 592, 592, 592, 1088, 640, 640, 593, 593, 902, 647, 593, 640, 643, 643, 643, 643, 580, 593, 593, 643, 651, 651, 578, 654, 654, 592, 643, 658, 658, 665, 651, 658, 665, 666, 654, 2309, 666, 598, 667, 667, 680, 680, 593, 902, 843, 582, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 612, 684, 871, 871, 612, 612, 612, 612, 612, 612, 843, 652, 661, 661, 661, 661, 871, 682, 652, 661, 682, 684, 665, 956, 871, 994, 666, 612, 612, 612, 612, 652, 984, 984, 994, 652, 662, 662, 662, 662, 1137, 836, 956, 662, 836, 664, 664, 664, 664, 1135, 1137, 664, 612, 663, 663, 663, 663, 1135, 612, 612, 612, 612, 612, 664, 663, 663, 1133, 664, 663, 669, 686, 673, 669, 686, 673, 995, 663, 663, 673, 670, 669, 1116, 670, 673, 673, 669, 669, 1116, 1133, 995, 670, 669, 686, 669, 686, 670, 670, 1141, 2313, 690, 663, 670, 690, 670, 837, 1141, 840, 837, 693, 840, 690, 693, 977, 1000, 1139, 690, 690, 694, 1000, 693, 694, 690, 1031, 690, 693, 693, 695, 1031, 694, 695, 693, 977, 693, 694, 694, 696, 670, 695, 696, 694, 1139, 694, 695, 695, 693, 1001, 696, 1019, 695, 1090, 695, 696, 696, 697, 1001, 844, 697, 696, 844, 696, 846, 1090, 698, 846, 697, 698, 1019, 694, 1001, 697, 697, 699, 1062, 698, 699, 697, 1062, 697, 698, 698, 2315, 1028, 699, 846, 698, 694, 698, 699, 699, 700, 1028, 1036, 700, 699, 695, 699, 1036, 696, 1154, 701, 700, 736, 701, 736, 1028, 700, 700, 736, 1068, 736, 701, 700, 1068, 700, 736, 701, 701, 702, 1154, 1073, 702, 701, 697, 701, 1073, 699, 698, 859, 702, 703, 859, 1130, 703, 702, 702, 756, 756, 756, 756, 702, 703, 702, 756, 1075, 704, 703, 703, 704, 1075, 701, 737, 703, 737, 703, 1131, 704, 737, 700, 700, 1130, 704, 704, 712, 737, 1136, 712, 704, 702, 704, 737, 1142, 861, 706, 712, 861, 706, 1136, 851, 712, 712, 851, 1131, 1142, 706, 712, 735, 712, 735, 706, 706, 735, 735, 703, 1150, 706, 851, 706, 2316, 735, 704, 851, 884, 1150, 859, 884, 704, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 705, 712, 2318, 1164, 705, 705, 705, 705, 705, 705, 706, 739, 1037, 739, 1037, 707, 835, 739, 707, 835, 751, 751, 751, 751, 739, 1164, 707, 705, 705, 705, 705, 707, 707, 708, 1153, 1197, 708, 707, 835, 707, 2319, 740, 751, 740, 708, 1197, 1153, 740, 740, 708, 708, 1155, 705, 709, 740, 708, 709, 708, 705, 705, 705, 705, 705, 710, 709, 741, 710, 741, 1178, 709, 709, 741, 1155, 711, 710, 709, 711, 709, 741, 710, 710, 2320, 1158, 707, 711, 710, 1178, 710, 713, 711, 711, 713, 835, 951, 738, 711, 951, 711, 961, 713, 738, 961, 738, 708, 713, 713, 738, 1039, 1158, 1039, 713, 738, 713, 738, 1169, 746, 714, 746, 709, 714, 961, 746, 709, 1047, 710, 1047, 715, 714, 746, 715, 1169, 1022, 714, 714, 1022, 1209, 711, 715, 714, 2321, 714, 716, 715, 715, 716, 1171, 1209, 744, 715, 744, 715, 717, 716, 744, 717, 713, 744, 716, 716, 1171, 744, 873, 717, 716, 873, 716, 873, 717, 717, 1049, 742, 1049, 742, 717, 714, 717, 742, 1033, 745, 873, 745, 742, 1184, 742, 745, 720, 1033, 873, 720, 715, 745, 745, 1687, 715, 962, 723, 720, 962, 723, 1687, 1033, 720, 720, 1057, 716, 1057, 723, 720, 1184, 720, 716, 723, 723, 839, 839, 1179, 962, 723, 839, 723, 717, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, 1059, 1179, 1059, 718, 718, 718, 718, 718, 718, 720, 926, 1166, 839, 926, 721, 721, 721, 721, 1187, 753, 753, 753, 753, 723, 1199, 721, 718, 718, 718, 718, 721, 721, 722, 1166, 926, 722, 721, 753, 721, 1187, 747, 753, 747, 722, 963, 1134, 747, 963, 722, 722, 1199, 747, 724, 747, 722, 724, 722, 718, 718, 718, 718, 718, 725, 724, 1134, 725, 963, 845, 724, 724, 845, 1176, 1156, 725, 724, 721, 724, 726, 725, 725, 726, 1699, 2322, 721, 725, 845, 725, 727, 726, 845, 727, 1156, 1699, 726, 726, 722, 1176, 1103, 727, 726, 1103, 726, 728, 727, 727, 728, 870, 870, 1067, 727, 1067, 727, 2323, 728, 724, 870, 1002, 1152, 728, 728, 729, 743, 1140, 729, 728, 1152, 728, 743, 870, 743, 1002, 729, 1192, 743, 725, 1168, 729, 729, 726, 1002, 743, 743, 729, 845, 729, 743, 727, 730, 1140, 1140, 730, 731, 999, 1192, 731, 999, 728, 1168, 730, 749, 749, 749, 731, 730, 730, 749, 1157, 731, 731, 730, 999, 730, 749, 731, 729, 731, 732, 1060, 1157, 732, 733, 1060, 750, 733, 750, 1706, 1706, 732, 750, 1060, 1188, 733, 732, 732, 1060, 750, 733, 733, 732, 1181, 732, 748, 733, 748, 733, 874, 748, 748, 734, 731, 730, 734, 1188, 874, 748, 731, 1078, 1078, 874, 734, 755, 755, 755, 755, 734, 734, 874, 732, 1181, 1159, 734, 755, 734, 757, 757, 757, 757, 1159, 733, 1029, 757, 1069, 755, 1069, 755, 758, 758, 758, 758, 759, 759, 759, 759, 1029, 1596, 757, 758, 1091, 1596, 1091, 759, 1078, 1029, 2324, 734, 1194, 734, 758, 876, 876, 734, 759, 761, 761, 761, 761, 1160, 734, 764, 764, 764, 764, 876, 761, 1160, 764, 765, 765, 765, 765, 876, 876, 1194, 765, 761, 1034, 761, 766, 766, 766, 766, 767, 767, 767, 767, 1083, 1044, 2325, 766, 1034, 768, 768, 757, 768, 770, 770, 1162, 770, 1034, 767, 1044, 768, 1196, 767, 1043, 770, 768, 768, 1162, 1044, 770, 770, 768, 1043, 768, 1083, 770, 1083, 770, 771, 771, 1163, 771, 775, 775, 866, 775, 1043, 866, 1196, 771, 866, 2326, 1163, 775, 771, 771, 1050, 1050, 775, 775, 776, 776, 866, 776, 775, 1050, 775, 1172, 1050, 777, 777, 776, 777, 1050, 1053, 1172, 776, 776, 778, 778, 777, 778, 776, 1053, 776, 777, 777, 779, 779, 778, 779, 777, 1201, 777, 778, 778, 776, 1053, 779, 1174, 778, 1050, 778, 779, 779, 780, 780, 1331, 780, 779, 1331, 779, 2327, 1201, 781, 781, 780, 781, 1174, 777, 866, 780, 780, 782, 782, 781, 782, 780, 1177, 780, 781, 781, 1086, 1086, 782, 1086, 781, 777, 781, 782, 782, 783, 783, 1165, 783, 782, 778, 782, 1210, 779, 1042, 1042, 783, 1177, 1042, 1165, 1210, 783, 783, 896, 896, 896, 896, 783, 1173, 783, 1048, 1048, 784, 784, 1048, 784, 785, 785, 780, 785, 1173, 782, 781, 784, 1230, 896, 1206, 785, 784, 784, 1230, 1061, 785, 785, 784, 1061, 784, 1175, 785, 1042, 785, 786, 786, 1061, 786, 1084, 1084, 1206, 1061, 1175, 875, 875, 786, 783, 783, 1048, 2329, 786, 786, 875, 1052, 1052, 784, 786, 1200, 786, 785, 787, 787, 1052, 787, 1054, 875, 875, 901, 901, 901, 901, 787, 1058, 1058, 901, 2340, 787, 787, 1054, 1200, 1064, 1058, 787, 1084, 787, 789, 789, 1054, 789, 790, 790, 1183, 790, 1182, 1064, 1063, 789, 786, 1052, 1190, 790, 789, 789, 1064, 1063, 790, 790, 789, 1428, 789, 1183, 790, 1190, 790, 1428, 787, 1182, 1058, 1063, 2341, 1182, 787, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 1089, 1051, 1051, 788, 788, 788, 788, 788, 788, 1186, 1051, 789, 1193, 1051, 1089, 2128, 2128, 790, 1051, 791, 791, 1189, 791, 1089, 1193, 1186, 788, 788, 788, 788, 791, 792, 792, 1202, 792, 791, 791, 924, 924, 924, 924, 791, 792, 791, 924, 1202, 1051, 792, 792, 1189, 1065, 788, 1191, 792, 1065, 792, 1204, 788, 788, 788, 788, 788, 1065, 793, 793, 1205, 793, 1065, 925, 925, 925, 925, 1085, 1185, 793, 925, 1185, 1191, 1204, 793, 793, 1205, 1208, 2342, 791, 793, 1203, 793, 791, 1207, 794, 794, 792, 794, 795, 795, 1066, 795, 1203, 1598, 1066, 794, 1085, 1598, 1085, 795, 794, 794, 1066, 1208, 795, 795, 794, 1066, 794, 1185, 795, 1207, 795, 796, 796, 1535, 796, 1535, 1087, 1087, 793, 1087, 797, 797, 796, 797, 1211, 1436, 1212, 796, 796, 1436, 1610, 797, 1211, 796, 1087, 796, 797, 797, 798, 798, 1070, 798, 797, 1070, 797, 1212, 794, 1195, 1071, 798, 1436, 1071, 1070, 795, 798, 798, 799, 799, 1610, 799, 798, 1237, 798, 1195, 1237, 1071, 1070, 799, 1237, 796, 1079, 1080, 799, 799, 1071, 1195, 1420, 1744, 799, 1079, 799, 802, 802, 797, 802, 1080, 1744, 797, 1094, 1094, 1094, 1094, 802, 1079, 1080, 1094, 1684, 802, 802, 803, 803, 798, 803, 802, 1684, 802, 1450, 798, 1420, 1450, 803, 1639, 1079, 1080, 1639, 803, 803, 1095, 1095, 1095, 1095, 803, 2343, 803, 1095, 799, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 802, 1626, 1670, 800, 800, 800, 800, 800, 800, 1287, 1287, 1287, 1287, 1626, 803, 1526, 898, 898, 898, 898, 804, 804, 803, 804, 1526, 1526, 800, 800, 800, 800, 1670, 804, 805, 805, 898, 805, 804, 804, 898, 1627, 2348, 1442, 804, 805, 804, 1442, 1576, 1576, 805, 805, 1576, 1627, 806, 806, 805, 806, 805, 800, 800, 800, 800, 800, 2349, 806, 807, 807, 1442, 807, 806, 806, 1106, 1106, 1106, 1106, 806, 807, 806, 1106, 1697, 1486, 807, 807, 1486, 804, 1487, 1697, 807, 1487, 807, 808, 808, 1576, 808, 809, 809, 1170, 809, 1537, 1170, 1537, 808, 805, 2350, 1486, 809, 808, 808, 1441, 1487, 809, 809, 808, 1601, 808, 806, 809, 1601, 809, 810, 810, 1530, 810, 811, 811, 1530, 811, 1530, 1602, 1441, 810, 1714, 1602, 1531, 811, 810, 810, 807, 1170, 811, 811, 810, 1531, 810, 1714, 811, 1221, 811, 1628, 1221, 1170, 808, 1629, 809, 812, 812, 1531, 812, 813, 813, 1628, 813, 1221, 1221, 1629, 812, 1530, 1625, 2351, 813, 812, 812, 1625, 810, 813, 813, 812, 811, 812, 1441, 813, 1441, 813, 814, 814, 1655, 814, 815, 815, 1655, 815, 1124, 1124, 1558, 814, 1558, 1124, 1124, 815, 814, 814, 2153, 2153, 815, 815, 814, 1124, 814, 1560, 815, 1560, 815, 1329, 1329, 1329, 1329, 813, 812, 1711, 1329, 816, 816, 813, 816, 817, 817, 1219, 817, 1673, 1219, 1673, 816, 1711, 1219, 814, 817, 816, 816, 1219, 1219, 817, 817, 816, 1686, 816, 815, 817, 1686, 817, 818, 818, 1689, 818, 819, 819, 1689, 819, 1693, 1124, 1671, 818, 1693, 1671, 1745, 819, 818, 818, 1076, 1076, 819, 819, 818, 1745, 818, 1696, 819, 816, 819, 1696, 1076, 820, 820, 816, 820, 1076, 817, 1578, 1578, 1604, 816, 1578, 820, 1465, 817, 2298, 1465, 820, 820, 1077, 1077, 821, 821, 820, 821, 820, 927, 927, 927, 927, 819, 1077, 821, 1076, 818, 1465, 1077, 821, 821, 822, 822, 1603, 822, 821, 927, 821, 1611, 1611, 927, 819, 822, 820, 1578, 1603, 2298, 822, 822, 1443, 1603, 823, 823, 822, 823, 822, 1077, 1698, 1685, 1698, 820, 1685, 823, 824, 824, 1700, 824, 823, 823, 1700, 1443, 821, 1683, 823, 824, 823, 1604, 1683, 1604, 824, 824, 825, 825, 1611, 825, 824, 1705, 824, 903, 903, 903, 903, 825, 1705, 822, 903, 1606, 825, 825, 1081, 1081, 826, 826, 825, 826, 825, 987, 987, 987, 987, 903, 1081, 826, 823, 1688, 1938, 1081, 826, 826, 1688, 1443, 824, 1443, 826, 2352, 826, 827, 827, 987, 827, 824, 825, 900, 900, 900, 900, 1938, 827, 1101, 1101, 1101, 1101, 827, 827, 1081, 1718, 828, 828, 827, 828, 827, 825, 1718, 987, 900, 825, 900, 828, 829, 829, 1101, 829, 828, 828, 2155, 2155, 826, 903, 828, 829, 828, 1606, 1721, 1606, 829, 829, 830, 830, 1694, 830, 829, 1694, 829, 1721, 827, 831, 831, 830, 831, 1941, 2353, 1536, 830, 830, 827, 1536, 831, 1536, 830, 1701, 830, 831, 831, 1701, 828, 832, 832, 831, 832, 831, 1941, 904, 904, 904, 904, 1703, 832, 905, 905, 905, 905, 832, 832, 1586, 1586, 829, 1704, 832, 1704, 832, 1703, 2354, 1586, 904, 830, 904, 1536, 830, 1707, 905, 1707, 905, 831, 908, 908, 908, 908, 909, 909, 909, 909, 910, 910, 910, 910, 1722, 911, 911, 911, 911, 1597, 1588, 1588, 832, 1597, 908, 1722, 908, 1586, 909, 1588, 909, 1597, 910, 1708, 910, 1708, 1597, 911, 908, 911, 912, 912, 912, 912, 913, 913, 913, 913, 1336, 1336, 1336, 1336, 1724, 988, 988, 988, 988, 1581, 1581, 1336, 910, 1581, 912, 1724, 912, 1588, 913, 1709, 913, 1709, 909, 915, 915, 915, 915, 988, 2167, 2167, 911, 916, 916, 916, 916, 1438, 1438, 917, 917, 917, 917, 1330, 1330, 1330, 1330, 915, 2094, 915, 1330, 1438, 1613, 1613, 988, 916, 1581, 916, 2094, 1438, 1438, 917, 913, 917, 912, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, 1614, 1614, 1737, 914, 914, 914, 914, 914, 914, 915, 1737, 916, 1613, 917, 918, 918, 918, 918, 919, 919, 919, 919, 920, 920, 920, 920, 914, 914, 914, 914, 921, 921, 921, 921, 1946, 1710, 918, 1710, 918, 1716, 919, 1716, 919, 2355, 920, 1614, 920, 922, 922, 922, 922, 1715, 921, 1239, 921, 1946, 1239, 914, 914, 914, 914, 914, 923, 923, 923, 923, 1715, 1623, 1623, 922, 1623, 922, 2356, 1712, 919, 1239, 1712, 1239, 918, 928, 928, 928, 928, 1723, 923, 1623, 923, 1040, 1040, 920, 1723, 1040, 1717, 919, 929, 929, 929, 929, 921, 1040, 935, 935, 935, 935, 1040, 922, 2357, 1717, 922, 943, 943, 943, 943, 989, 989, 989, 989, 1220, 935, 923, 1220, 1041, 1041, 1731, 1220, 1041, 1720, 943, 1532, 1220, 1220, 928, 1040, 1041, 1731, 989, 1045, 1045, 1041, 1747, 1045, 1720, 1532, 928, 1747, 1727, 929, 928, 1045, 1727, 928, 1532, 935, 1045, 1726, 928, 1741, 1726, 929, 1741, 989, 943, 929, 1728, 935, 929, 1041, 2358, 935, 1728, 929, 935, 1733, 943, 1582, 1582, 935, 943, 1582, 1733, 943, 1045, 1616, 1616, 1730, 943, 997, 997, 1730, 997, 997, 997, 1729, 997, 1729, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 997, 1732, 1735, 2359, 997, 997, 997, 997, 997, 997, 1003, 1003, 1003, 1003, 1582, 1735, 1732, 1732, 1850, 1046, 1046, 1850, 1616, 1046, 1746, 1055, 1055, 997, 1003, 997, 997, 1046, 1056, 1056, 1055, 1746, 1046, 1055, 1082, 1082, 1736, 1056, 1055, 2144, 1056, 1108, 1108, 1108, 1108, 1056, 1082, 1255, 1108, 1736, 1255, 1082, 2144, 2116, 997, 997, 997, 997, 1003, 1734, 1046, 1734, 2116, 1108, 1354, 1354, 1055, 1354, 1738, 1255, 1003, 1255, 1738, 1056, 1003, 1354, 1743, 1003, 1743, 1082, 1354, 1354, 1003, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1099, 1618, 1618, 1012, 1012, 1012, 1012, 1012, 1012, 1099, 1099, 1099, 1024, 1024, 1024, 1024, 1740, 1108, 2117, 1092, 1092, 1092, 1092, 1740, 2360, 2117, 1012, 1012, 1012, 1012, 1024, 1092, 1278, 1099, 1092, 1278, 1337, 1337, 1337, 1337, 1748, 1092, 1092, 1092, 1748, 1768, 1618, 1337, 2361, 1768, 1096, 1096, 1096, 1096, 1278, 2107, 1278, 1012, 1012, 1012, 1012, 1012, 1096, 1099, 1024, 1096, 1092, 1093, 1093, 1093, 1093, 2107, 2362, 1096, 1096, 1749, 1024, 1749, 1093, 1093, 1024, 1750, 1093, 1024, 1851, 1620, 1620, 1851, 1024, 1093, 1093, 1093, 1750, 1100, 1100, 1100, 1100, 1096, 2106, 2363, 1100, 1123, 1123, 1123, 1123, 1100, 1100, 1948, 1123, 1102, 1102, 1102, 1102, 2106, 1093, 1100, 1102, 1105, 1105, 1105, 1105, 1102, 1102, 1123, 1105, 1093, 1621, 1621, 1948, 1105, 1620, 1102, 1127, 1127, 1127, 1127, 1105, 1105, 1105, 1105, 1128, 1128, 1128, 1128, 2173, 1144, 1144, 1144, 1144, 2173, 1969, 1128, 1128, 1969, 1127, 1128, 1144, 1144, 1624, 1624, 1144, 1624, 1128, 1128, 1128, 1123, 1434, 1144, 1144, 1144, 1434, 1621, 1100, 2364, 1222, 2013, 1624, 1222, 1434, 2365, 1123, 1222, 1128, 1434, 2013, 2013, 1222, 1128, 1102, 1622, 1622, 1434, 1144, 1222, 1222, 1222, 1105, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 2123, 2369, 2123, 1132, 1132, 1132, 1132, 1132, 1132, 1145, 1145, 1145, 1145, 1286, 1286, 1286, 1286, 1622, 2077, 1682, 1145, 1145, 1682, 2127, 1145, 2127, 1132, 1132, 1132, 1132, 2077, 1145, 1145, 1149, 1149, 1286, 2371, 1286, 1149, 1149, 1167, 1167, 1167, 1167, 1328, 1328, 1328, 1328, 1149, 2057, 2058, 1167, 1167, 2057, 2058, 1167, 1145, 1132, 1132, 1132, 1132, 1132, 1167, 1167, 1167, 2134, 1328, 2310, 1335, 1335, 1335, 1335, 2134, 1682, 1213, 1213, 1213, 1213, 2068, 2068, 1338, 1338, 1338, 1338, 1682, 1213, 1213, 1167, 2310, 1213, 1335, 1338, 1644, 1644, 1644, 1644, 2372, 1213, 1213, 1644, 1149, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1213, 2078, 2068, 1161, 1161, 1161, 1161, 1161, 1161, 1214, 1214, 1214, 1214, 2078, 1218, 1775, 1776, 1218, 1775, 1776, 1214, 1214, 1775, 1776, 1214, 1218, 1161, 1161, 1161, 1161, 1218, 1218, 1214, 2135, 1997, 1161, 1218, 1997, 1218, 1215, 1215, 1215, 1215, 2373, 2135, 1332, 1332, 1332, 1332, 2109, 1215, 1215, 1332, 2109, 1215, 2124, 1214, 1161, 1161, 1161, 1161, 1161, 1215, 1215, 2124, 1240, 1757, 1332, 1240, 1757, 1992, 2113, 1218, 1992, 1241, 2113, 1240, 1241, 1757, 1437, 1437, 1240, 1240, 1997, 2129, 1241, 1215, 1240, 1437, 1240, 1241, 1241, 1242, 2374, 1994, 1242, 1241, 1994, 1241, 2129, 2375, 1437, 1437, 1242, 1333, 1333, 1333, 1333, 1242, 1242, 1742, 1333, 2131, 1435, 1242, 1742, 1242, 1435, 1244, 2120, 1742, 1244, 1742, 2120, 1332, 1435, 1333, 2131, 2136, 1244, 1435, 1992, 2075, 1240, 1244, 1244, 1245, 2376, 1435, 1245, 1244, 2075, 1244, 2136, 1241, 2377, 1994, 1245, 1591, 1591, 1592, 1592, 1245, 1245, 2140, 2075, 2140, 1591, 1245, 1592, 1245, 1242, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1244, 1333, 2378, 1243, 1243, 1243, 1243, 1243, 1243, 1998, 2160, 1591, 1998, 1592, 1246, 1245, 2379, 1246, 1462, 1462, 1462, 1462, 2380, 2160, 2137, 1246, 1243, 1243, 1243, 1243, 1246, 1246, 1247, 2381, 1739, 1247, 1246, 1739, 1246, 2137, 1462, 2383, 1462, 1247, 1472, 1472, 1472, 1472, 1247, 1247, 1739, 1739, 1248, 2152, 1247, 1248, 1247, 1243, 1243, 1243, 1243, 1243, 2152, 1248, 1246, 2384, 1472, 1249, 1248, 1248, 1249, 1942, 1998, 2386, 1248, 1942, 1248, 1250, 1249, 2125, 1250, 2389, 2125, 1249, 1249, 1940, 1247, 1952, 1250, 1249, 1952, 1249, 1251, 1250, 1250, 1251, 1942, 1991, 1940, 1250, 1991, 1250, 1252, 1251, 1248, 1252, 1940, 2185, 1251, 1251, 1615, 1615, 1754, 1252, 1251, 1754, 1251, 2185, 1252, 1252, 1253, 1439, 1615, 1253, 1252, 1439, 1252, 1615, 1754, 1754, 2169, 1253, 1261, 1439, 1249, 1261, 1253, 1253, 1439, 2169, 2125, 1952, 1253, 1261, 1253, 1250, 1439, 1262, 1261, 1261, 1262, 1991, 1252, 2130, 1261, 1615, 1261, 2130, 1262, 2391, 1251, 1251, 1263, 1262, 1262, 1263, 2395, 1777, 2139, 1262, 1777, 1262, 2139, 1263, 1253, 2401, 2402, 1264, 1263, 1263, 1264, 1945, 2403, 1261, 1263, 1945, 1263, 1265, 1264, 1777, 1265, 1777, 2141, 1264, 1264, 2404, 2141, 1266, 1265, 1264, 1266, 1264, 2159, 1265, 1265, 2159, 1945, 1993, 1266, 1265, 1993, 1265, 1263, 1266, 1266, 2000, 2405, 1267, 2000, 1266, 1267, 1266, 2043, 2406, 1995, 2043, 1268, 1995, 1267, 1268, 2138, 1264, 2161, 1267, 1267, 1269, 2161, 1268, 1269, 1267, 2043, 1267, 1268, 1268, 1272, 2138, 1269, 1272, 1268, 1265, 1268, 1269, 1269, 1270, 2407, 1272, 1270, 1269, 1266, 1269, 1272, 1272, 1274, 1949, 1270, 1274, 1272, 1949, 1272, 1270, 1270, 1267, 2142, 1274, 2143, 1270, 1993, 1270, 1274, 1274, 1374, 1374, 2000, 1374, 1274, 1269, 1274, 2142, 1949, 2143, 2204, 1374, 1996, 1995, 1268, 1996, 1374, 1374, 1272, 2408, 2069, 2069, 2204, 1270, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 2409, 2410, 1274, 1271, 1271, 1271, 1271, 1271, 1271, 1645, 1645, 1645, 1645, 2411, 1273, 1951, 1645, 1273, 2149, 1951, 1440, 2069, 1996, 2412, 1440, 1273, 1271, 1271, 1271, 1271, 1273, 1273, 1440, 2149, 2438, 1271, 1273, 1440, 1273, 2455, 1951, 1463, 1463, 1463, 1463, 1440, 2456, 1999, 1463, 2063, 1999, 2154, 2063, 1275, 2070, 2070, 1275, 1271, 1271, 1271, 1271, 1271, 1276, 1463, 1275, 1276, 2154, 2063, 1273, 1275, 1275, 1284, 2165, 1276, 1284, 1275, 2165, 1275, 1276, 1276, 1285, 2168, 1284, 1285, 1276, 2168, 1276, 1284, 1284, 1288, 2171, 1285, 1288, 1284, 2171, 1284, 1285, 1285, 2427, 2070, 1288, 2426, 1285, 1999, 1285, 1288, 1288, 1275, 2133, 2133, 2158, 1288, 1290, 1288, 2172, 1290, 1292, 2133, 2172, 1292, 1463, 1782, 2426, 1290, 1782, 2158, 1276, 1292, 1290, 1290, 2427, 2471, 1292, 1292, 1290, 2145, 1290, 2145, 1292, 2472, 1292, 2073, 2073, 1782, 1285, 1782, 2424, 1288, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1290, 2425, 1292, 1289, 1289, 1289, 1289, 1289, 1289, 2424, 1467, 1467, 1467, 1467, 1291, 2473, 2115, 1291, 2073, 2115, 2445, 1466, 1466, 1466, 1466, 1291, 1289, 1289, 1289, 1289, 1291, 1291, 1467, 2441, 1467, 1289, 1291, 2425, 1291, 1649, 1649, 1649, 1649, 1466, 2430, 1466, 1665, 1665, 1665, 1665, 1649, 1293, 2441, 1665, 1293, 2475, 2445, 1289, 1289, 1289, 1289, 1289, 1293, 1294, 1291, 2115, 1294, 1293, 1293, 1464, 1464, 1464, 1464, 1293, 1294, 1293, 1464, 1467, 1295, 1294, 1294, 1295, 1466, 2430, 2146, 1294, 2146, 1294, 2156, 1295, 2156, 1464, 2051, 2051, 1295, 1295, 2051, 2157, 1296, 2157, 1295, 1296, 1295, 2122, 2122, 2122, 2122, 1297, 2431, 1296, 1297, 2393, 1293, 2393, 1296, 1296, 1298, 1294, 1297, 1298, 1296, 2476, 1296, 1297, 1297, 1299, 2312, 1298, 1299, 1297, 2312, 1297, 1298, 1298, 2463, 2442, 1299, 2051, 1298, 2437, 1298, 1299, 1299, 1587, 1587, 1295, 2431, 1299, 1464, 1299, 1300, 2312, 1587, 1300, 2442, 1587, 1297, 2122, 2463, 1301, 1587, 1300, 1301, 2477, 2436, 1296, 1300, 1300, 1302, 2478, 1301, 1302, 1300, 2314, 1300, 1301, 1301, 2314, 2394, 1302, 2394, 1301, 2437, 1301, 1302, 1302, 1303, 1298, 1587, 1303, 1302, 2436, 1302, 2429, 1299, 2432, 1304, 1303, 2314, 1304, 2440, 2382, 1303, 1303, 2382, 2439, 1305, 1304, 1303, 1305, 1303, 1300, 1304, 1304, 2429, 2444, 2432, 1305, 1304, 2382, 1304, 2440, 1305, 1305, 2054, 2054, 1302, 1301, 1305, 1306, 1305, 2439, 1306, 2054, 2444, 1471, 1471, 1471, 1471, 1307, 1306, 2452, 1307, 2449, 2479, 1306, 1306, 2480, 2443, 1303, 1307, 1306, 2481, 1306, 2482, 1307, 1307, 1471, 2450, 1471, 1304, 1307, 2453, 1307, 1308, 2191, 1528, 1308, 2191, 2054, 1528, 2443, 1528, 2449, 1309, 1308, 1305, 1309, 1528, 2452, 1308, 1308, 2446, 1528, 1306, 1309, 1308, 2191, 1308, 2191, 1309, 1309, 1310, 1529, 2450, 1310, 1309, 1529, 1309, 1529, 2453, 1311, 2447, 1310, 1311, 1529, 1307, 2468, 1310, 1310, 1529, 1528, 1311, 2483, 1310, 2446, 1310, 1311, 1311, 1312, 2484, 2448, 1312, 1311, 2447, 1311, 2464, 1308, 1309, 1313, 1312, 2451, 1313, 2457, 2458, 1312, 1312, 2468, 1529, 2485, 1313, 1312, 2460, 1312, 2448, 1313, 1313, 1661, 1661, 1661, 1661, 1313, 1314, 1313, 2451, 1314, 2457, 2464, 1661, 1311, 1944, 1310, 1315, 1314, 1944, 1315, 2486, 2462, 1314, 1314, 2458, 1311, 1944, 1315, 1314, 2460, 1314, 1944, 1315, 1315, 1316, 1313, 2497, 1316, 1315, 1944, 1315, 2555, 1312, 1317, 2462, 1316, 1317, 2556, 2055, 2055, 1316, 1316, 1320, 2557, 1317, 1320, 1316, 2055, 1316, 1317, 1317, 1318, 2559, 1320, 1318, 1317, 2465, 1317, 1320, 1320, 1319, 1314, 1318, 1319, 1320, 2560, 1320, 1318, 1318, 1321, 2461, 1319, 1321, 1318, 1315, 1318, 1319, 1319, 1322, 2465, 1321, 1322, 1319, 2055, 1319, 1321, 1321, 1323, 1316, 1322, 1323, 1321, 2470, 1321, 1322, 1322, 1317, 2554, 1323, 2561, 1322, 2562, 1322, 1323, 1323, 1318, 1320, 1324, 2461, 1323, 1324, 1323, 1804, 2459, 1319, 1804, 2459, 2563, 1324, 2469, 2565, 2566, 1325, 1324, 1324, 1325, 2567, 1321, 2568, 1324, 2470, 1324, 2569, 1325, 1804, 2570, 1804, 1326, 1325, 1325, 1326, 1322, 2571, 2554, 1325, 2580, 1325, 1327, 1326, 2469, 1327, 2581, 2582, 1326, 1326, 2585, 1323, 2586, 1327, 1326, 1324, 1326, 2459, 1327, 1327, 1637, 1804, 1339, 1339, 1327, 1339, 1327, 1325, 2587, 1637, 1637, 1637, 2588, 1339, 1340, 1340, 2589, 1340, 1339, 1339, 1758, 2590, 1326, 1758, 1339, 1340, 1339, 1758, 2074, 2074, 1340, 1340, 1758, 1637, 1341, 1341, 1340, 1341, 1340, 1758, 1758, 1758, 2591, 1327, 2592, 1341, 2085, 2085, 2085, 2085, 1341, 1341, 1666, 1666, 1666, 1666, 1341, 2085, 1341, 2593, 2594, 1343, 1343, 1637, 1343, 1344, 1344, 2595, 1344, 2596, 1339, 2597, 1343, 2074, 1666, 2598, 1344, 1343, 1343, 2599, 2600, 1344, 1344, 1343, 1340, 1343, 2601, 1344, 2602, 1344, 1854, 1854, 1854, 1854, 2603, 2017, 2604, 1854, 2605, 2017, 2606, 2017, 2609, 1341, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 2611, 1343, 1344, 1342, 1342, 1342, 1342, 1342, 1342, 2170, 2170, 2170, 2170, 2612, 1345, 1345, 2017, 1345, 2613, 2614, 1469, 1469, 1469, 1469, 2615, 1345, 1342, 1342, 1342, 1342, 1345, 1345, 1346, 1346, 2616, 1346, 1345, 2607, 1345, 2617, 2618, 2619, 1469, 1346, 1469, 2620, 2621, 2622, 1346, 1346, 2629, 2607, 1347, 1347, 1346, 1347, 1346, 1342, 1342, 1342, 1342, 1342, 2642, 1347, 1345, 2654, 2622, 2634, 1347, 1347, 2636, 1469, 1348, 1348, 1347, 1348, 1347, 1667, 1667, 1667, 1667, 1349, 1349, 1348, 1349, 2634, 1346, 2655, 1348, 1348, 1350, 1350, 1349, 1350, 1348, 2641, 1348, 1349, 1349, 1667, 2635, 1350, 2666, 1349, 1347, 1349, 1350, 1350, 2636, 2663, 1351, 1351, 1350, 1351, 1350, 1668, 1668, 1668, 1668, 1352, 1352, 1351, 1352, 2635, 2640, 2573, 1351, 1351, 2573, 2669, 1352, 2663, 1351, 2641, 1351, 1352, 1352, 1668, 2645, 1348, 2670, 1352, 2640, 1352, 2671, 1353, 1353, 2573, 1353, 1349, 1848, 1848, 1848, 1848, 1358, 1358, 1353, 1358, 1350, 1350, 1351, 1353, 1353, 1359, 1359, 1358, 1359, 1353, 2645, 1353, 1358, 1358, 1848, 1352, 1359, 2672, 1358, 1533, 1358, 1359, 1359, 1533, 2673, 1533, 2638, 1359, 2674, 1359, 2651, 1533, 1360, 1360, 2644, 1360, 1533, 2610, 2610, 2675, 2610, 1361, 1361, 1360, 1361, 2638, 2647, 1358, 1360, 1360, 1362, 1362, 1361, 1362, 1360, 2644, 1360, 1361, 1361, 1363, 1363, 1362, 1363, 1361, 1533, 1361, 1362, 1362, 1364, 1364, 1363, 1364, 1362, 2651, 1362, 1363, 1363, 1365, 1365, 1364, 1365, 1363, 2647, 1363, 1364, 1364, 1360, 2639, 1365, 2676, 1364, 2646, 1364, 1365, 1365, 1470, 1470, 1470, 1470, 1365, 2657, 1365, 2019, 1361, 1366, 1366, 2019, 1366, 2019, 2677, 2639, 1362, 2646, 1363, 2648, 1366, 2678, 1470, 2659, 1470, 1366, 1366, 1368, 1368, 2679, 1368, 1366, 1365, 1366, 1468, 1468, 1468, 1468, 1368, 2657, 2680, 1364, 2648, 1368, 1368, 2579, 2579, 2579, 2579, 1368, 1470, 1368, 2019, 2656, 2687, 2659, 1468, 2652, 1468, 1366, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 2652, 1368, 2658, 1367, 1367, 1367, 1367, 1367, 1367, 2656, 1475, 1475, 1475, 1475, 1369, 1369, 2660, 1369, 1478, 1478, 1478, 1478, 1468, 2658, 2723, 1369, 1367, 1367, 1367, 1367, 1369, 1369, 1475, 2724, 1475, 1367, 1369, 2726, 1369, 2660, 1478, 2579, 1478, 2729, 1849, 1849, 1849, 1849, 2422, 2422, 2422, 2422, 2730, 1370, 1370, 2422, 1370, 1367, 1367, 1367, 1367, 1367, 1371, 1371, 1370, 1371, 1849, 2723, 1369, 1370, 1370, 1372, 1372, 1371, 1372, 1370, 2732, 1370, 1371, 1371, 1373, 1373, 1372, 1373, 1371, 1478, 1371, 1372, 1372, 1378, 1378, 1373, 1378, 1372, 2661, 1372, 1373, 1373, 1379, 1379, 1378, 1379, 1373, 2734, 1373, 1378, 1378, 1380, 1380, 1379, 1380, 1378, 2735, 1378, 1379, 1379, 1371, 1370, 1380, 2736, 1379, 2740, 1379, 1380, 1380, 2662, 2661, 1385, 1385, 1380, 1385, 1380, 2741, 2649, 2649, 1372, 2649, 2667, 1385, 1382, 1382, 1534, 1382, 1385, 1385, 1534, 2742, 1534, 2662, 1385, 1382, 1385, 2743, 1534, 2744, 1382, 1382, 2745, 1534, 2746, 2667, 1382, 1379, 1382, 2649, 1380, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1534, 2747, 1385, 1381, 1381, 1381, 1381, 1381, 1381, 1382, 1476, 1476, 1476, 1476, 1383, 1383, 2650, 1383, 2748, 2650, 1477, 1477, 1477, 1477, 2749, 1383, 1381, 1381, 1381, 1381, 1383, 1383, 1476, 2750, 1476, 1381, 1383, 2751, 1383, 2752, 1680, 1680, 1477, 2753, 1477, 1680, 1680, 2650, 2754, 2755, 2756, 1384, 1384, 2757, 1384, 1680, 2758, 1381, 1381, 1381, 1381, 1381, 1384, 2759, 1383, 2760, 1476, 1384, 1384, 1386, 1386, 2763, 1386, 1384, 1477, 1384, 2764, 2765, 1387, 1387, 1386, 1387, 2766, 2767, 2768, 1386, 1386, 1388, 1388, 1387, 1388, 1386, 2769, 1386, 1387, 1387, 2761, 2761, 1388, 2761, 1387, 2770, 1387, 1388, 1388, 1384, 2022, 1680, 2771, 1388, 2022, 1388, 2022, 1389, 1389, 2018, 1389, 1390, 1390, 2018, 1390, 2018, 2737, 1386, 1389, 2737, 2786, 2018, 1390, 1389, 1389, 2788, 2018, 1390, 1390, 1389, 2789, 1389, 2798, 1390, 2799, 1390, 2779, 2762, 2737, 1387, 2762, 1391, 1391, 2780, 1391, 2022, 2778, 2778, 1388, 2772, 1392, 1392, 1391, 1392, 2018, 2762, 1389, 1391, 1391, 1393, 1393, 1392, 1393, 1391, 2780, 1391, 1392, 1392, 1394, 1394, 1393, 1394, 1392, 2779, 1392, 1393, 1393, 1395, 1395, 1394, 1395, 1393, 1390, 1393, 1394, 1394, 2800, 2772, 1395, 2790, 1394, 2801, 1394, 1395, 1395, 2791, 2802, 1396, 1396, 1395, 1396, 1395, 1855, 1855, 1855, 1855, 1397, 1397, 1396, 1397, 1391, 1392, 2790, 1396, 1396, 2803, 2808, 1397, 2791, 1396, 2809, 1396, 1397, 1397, 1855, 2805, 1394, 1393, 1397, 2812, 1397, 1398, 1398, 2813, 1398, 1483, 1483, 1483, 1483, 1577, 1577, 1395, 1398, 1577, 2805, 2814, 2796, 1398, 1398, 1399, 1399, 1577, 1399, 1398, 2808, 1398, 1577, 1483, 2815, 1483, 1399, 1397, 2816, 2804, 2817, 1399, 1399, 1396, 2796, 1400, 1400, 1399, 1400, 1399, 2818, 2819, 2820, 2835, 1401, 1401, 1400, 1401, 2806, 2836, 1577, 1400, 1400, 2668, 1483, 1401, 2668, 1400, 2668, 1400, 1401, 1401, 2837, 2834, 1398, 2804, 1401, 2023, 1401, 1402, 1402, 2023, 1402, 2023, 2839, 2806, 2840, 2668, 1399, 2841, 1402, 1403, 1403, 2842, 1403, 1402, 1402, 2843, 2844, 1400, 2367, 1402, 1403, 1402, 2367, 2834, 2367, 1403, 1403, 1404, 1404, 2845, 1404, 1403, 2846, 1403, 2847, 2848, 1405, 1405, 1404, 1405, 2023, 1401, 2849, 1404, 1404, 1861, 1861, 1405, 1861, 1404, 2850, 1404, 1405, 1405, 2852, 1402, 1861, 2853, 1405, 2854, 1405, 1861, 1861, 2367, 2855, 1406, 1406, 1402, 1406, 2086, 2086, 2086, 2086, 2857, 1407, 1407, 1406, 1407, 1403, 1404, 2086, 1406, 1406, 1408, 1408, 1407, 1408, 1406, 2865, 1406, 1407, 1407, 2807, 2867, 1408, 2807, 1407, 2869, 1407, 1408, 1408, 1405, 2872, 1409, 1409, 1408, 1409, 1408, 1480, 1480, 1480, 1480, 1410, 1410, 1409, 1410, 2807, 2873, 2878, 1409, 1409, 2810, 2862, 1410, 2810, 1409, 2810, 1409, 1410, 1410, 1480, 2368, 1480, 1406, 1410, 2368, 1410, 2368, 1407, 1411, 1411, 2858, 1411, 2879, 2880, 2810, 1408, 2861, 1412, 1412, 1411, 1412, 2881, 2882, 2861, 1411, 1411, 1409, 2884, 1412, 2862, 1411, 1480, 1411, 1412, 1412, 1410, 2890, 1413, 1413, 1412, 1413, 1412, 2891, 2858, 2892, 2368, 1414, 1414, 1413, 1414, 2893, 2052, 2052, 1413, 1413, 2052, 2894, 1414, 2902, 1413, 2875, 1413, 1414, 1414, 2886, 2863, 1415, 1415, 1414, 1415, 1414, 2875, 1411, 2851, 2887, 1412, 2851, 1415, 2247, 2247, 2247, 2247, 1415, 1415, 2863, 2247, 1416, 1416, 1415, 1416, 1415, 2851, 1479, 1479, 1479, 1479, 2052, 1416, 2885, 2901, 1413, 2886, 1416, 1416, 2903, 2904, 1417, 1417, 1416, 1417, 1416, 2905, 2906, 2907, 1479, 1414, 1479, 1417, 2887, 1415, 2908, 2885, 1417, 1417, 1418, 1418, 2909, 1418, 1417, 2901, 1417, 1640, 1640, 1640, 1640, 1418, 1416, 2910, 1640, 2911, 1418, 1418, 1481, 1481, 1481, 1481, 1418, 2912, 1418, 1482, 1482, 1482, 1482, 1640, 2913, 1479, 1417, 2247, 1484, 1484, 1484, 1484, 2915, 2914, 1481, 2918, 1481, 1485, 1485, 1485, 1485, 1482, 2914, 1482, 2922, 1630, 1630, 1630, 1630, 2923, 1484, 2922, 1484, 2927, 2931, 1418, 2923, 1630, 2932, 1485, 1630, 1485, 2924, 1641, 1641, 1641, 1641, 1630, 1630, 1630, 1481, 1631, 1631, 1631, 1631, 1641, 2943, 1482, 1484, 2925, 1640, 2919, 2925, 1631, 2947, 1641, 1631, 1485, 1632, 1632, 1632, 1632, 1630, 1631, 1631, 2524, 2524, 2524, 2524, 2924, 1632, 2925, 2524, 1632, 1633, 1633, 1633, 1633, 2948, 2933, 1632, 1632, 1632, 2949, 2951, 1633, 1633, 2919, 1631, 1633, 2933, 1634, 1634, 1634, 1634, 2954, 1633, 1633, 1633, 2950, 2956, 2936, 2950, 1634, 2936, 1632, 1634, 1635, 1635, 1635, 1635, 2952, 2936, 2953, 1634, 1634, 2958, 2960, 2954, 1635, 2961, 1633, 1635, 2962, 1636, 1636, 1636, 1636, 2970, 2971, 1635, 2558, 2558, 2558, 2558, 2972, 1636, 2973, 1634, 1636, 2974, 2976, 1633, 1642, 1642, 1642, 1642, 1636, 1636, 2952, 1642, 2953, 2977, 2558, 1635, 1642, 2979, 1966, 1966, 1966, 1966, 2980, 1642, 1642, 1642, 1642, 1643, 1643, 1643, 1643, 2997, 1636, 2969, 1643, 2988, 2969, 2986, 2986, 1643, 1966, 3003, 1966, 2995, 2969, 3002, 1643, 1643, 1643, 1643, 1646, 1646, 1646, 1646, 2995, 2969, 3002, 1646, 1662, 1662, 1662, 1662, 1646, 2989, 3004, 1662, 2989, 3006, 2558, 1646, 1646, 1646, 1646, 2988, 1663, 1663, 1663, 1663, 3008, 2983, 1662, 1663, 2983, 1642, 3011, 3012, 1664, 1664, 1664, 1664, 2983, 3013, 1675, 1675, 1675, 1675, 1663, 1664, 1664, 3007, 3008, 1664, 2991, 1675, 1675, 2991, 1643, 1675, 1664, 1664, 1664, 3021, 3022, 2991, 1675, 1675, 1675, 3007, 1968, 1968, 1968, 1968, 1662, 1676, 1676, 1676, 1676, 3024, 3025, 1646, 3027, 3028, 3030, 1664, 1676, 1676, 3037, 1662, 1676, 1675, 1968, 3018, 1968, 3043, 3018, 1676, 1676, 2100, 2100, 2100, 2100, 1664, 3018, 1663, 1690, 1690, 1690, 1690, 2100, 3044, 1691, 1691, 1691, 1691, 3009, 1690, 1690, 3009, 3033, 1690, 1676, 1691, 1691, 3033, 3035, 1691, 1690, 1690, 1690, 3041, 3047, 3045, 1691, 1691, 1759, 3035, 3009, 1759, 3048, 3053, 3041, 1759, 2631, 2631, 2631, 2631, 1759, 3046, 3054, 2631, 3046, 1690, 3045, 1759, 1759, 1759, 3055, 1691, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 3056, 3057, 3058, 1695, 1695, 1695, 1695, 1695, 1695, 1702, 1702, 1702, 1702, 3067, 3078, 1980, 1980, 1980, 1980, 1779, 1702, 1702, 1779, 3080, 1702, 3079, 1695, 1695, 1695, 1695, 1779, 1702, 1702, 1702, 3081, 1779, 1779, 1980, 3086, 1980, 3087, 1779, 3034, 1779, 3079, 3034, 3088, 1852, 1852, 1852, 1852, 3095, 3061, 3034, 1852, 3061, 1702, 1695, 1695, 1695, 1695, 1695, 3103, 1702, 1725, 1725, 1725, 1725, 3113, 1852, 3052, 1980, 3114, 3052, 1753, 1725, 1725, 1753, 1778, 1725, 3077, 1778, 3052, 3077, 1779, 1753, 1725, 1725, 1725, 1778, 1753, 1753, 3094, 3115, 1778, 1778, 1753, 3116, 1753, 3120, 1778, 1780, 1778, 3125, 1780, 1973, 1973, 1973, 1973, 3114, 3094, 1725, 1780, 3130, 3135, 3140, 1725, 1780, 1780, 1788, 3150, 3019, 1788, 1780, 3019, 1780, 1852, 1973, 3019, 1973, 1788, 3152, 1725, 3150, 1791, 1788, 1788, 1791, 3139, 3147, 3154, 1788, 1753, 1788, 3112, 1791, 1778, 3112, 3139, 3147, 1791, 1791, 2101, 2101, 2101, 2101, 1791, 3050, 1791, 3134, 3050, 2182, 3134, 2101, 3050, 2181, 1973, 3131, 1780, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 3155, 3155, 1791, 1789, 1789, 1789, 1789, 1789, 1789, 2180, 1977, 1977, 1977, 1977, 1790, 3153, 3131, 1790, 1975, 1975, 1975, 1975, 3153, 2179, 2178, 1790, 1789, 1789, 1789, 1789, 1790, 1790, 1977, 2177, 1977, 1789, 1790, 2175, 1790, 2174, 1975, 2166, 1975, 3236, 2397, 2397, 2397, 2397, 3236, 3051, 3143, 1792, 3051, 3143, 1792, 2397, 3051, 1789, 1789, 1789, 1789, 1789, 1792, 2162, 1977, 2151, 1793, 1792, 1792, 1793, 1975, 2150, 2148, 1792, 1790, 1792, 1794, 1793, 2147, 1794, 3310, 2132, 1793, 1793, 2126, 3310, 1795, 1794, 1793, 1795, 1793, 2119, 1794, 1794, 2118, 2108, 1796, 1795, 1794, 1796, 1794, 2104, 1795, 1795, 2099, 2098, 1797, 1796, 1795, 1797, 1795, 2097, 1796, 1796, 2096, 2095, 2093, 1797, 1796, 1792, 1796, 1798, 1797, 1797, 1798, 2092, 2091, 2090, 1797, 2089, 1797, 2088, 1798, 1799, 1794, 1793, 1799, 1798, 1798, 2105, 2105, 2105, 2105, 1798, 1799, 1798, 2105, 2084, 2083, 1799, 1799, 2398, 2398, 2398, 2398, 1799, 1795, 1799, 1800, 2076, 3083, 1800, 2398, 3083, 2072, 1796, 2067, 1797, 1801, 1800, 3156, 1801, 3083, 3156, 1800, 1800, 2066, 2064, 1802, 1801, 1800, 1802, 1800, 1798, 1801, 1801, 2062, 2061, 2059, 1802, 1801, 1799, 1801, 1803, 1802, 1802, 1803, 2048, 2046, 2044, 1802, 3156, 1802, 2105, 1803, 2632, 2632, 2632, 2632, 1803, 1803, 3085, 2632, 1805, 3085, 1803, 1805, 1803, 2105, 2042, 2945, 2039, 1801, 3085, 1805, 1800, 2945, 2945, 2037, 1805, 1805, 1806, 2036, 2945, 1806, 1805, 2035, 1805, 2034, 1802, 2033, 2945, 1806, 1807, 2032, 2031, 1807, 1806, 1806, 2704, 2704, 2704, 2704, 1806, 1807, 1806, 2704, 2030, 1808, 1807, 1807, 1808, 1803, 1805, 2029, 1807, 2028, 1807, 1809, 1808, 2027, 1809, 2787, 2787, 1808, 1808, 2026, 2787, 2787, 1809, 1808, 2025, 1808, 2015, 1809, 1809, 1810, 2787, 2011, 1810, 1809, 2945, 1809, 2945, 1806, 1811, 2010, 1810, 1811, 2866, 2866, 2009, 1810, 1810, 2866, 2866, 1811, 2008, 1810, 2007, 1810, 1811, 1811, 3074, 2866, 1807, 3074, 1811, 2006, 1811, 1812, 2005, 1808, 1812, 3074, 2004, 1972, 1972, 1972, 1972, 1813, 1812, 2003, 1813, 2002, 1809, 1812, 1812, 2001, 2787, 1814, 1813, 1812, 1814, 1812, 1990, 1813, 1813, 1972, 1989, 1972, 1814, 1813, 1810, 1813, 1988, 1814, 1814, 1811, 1987, 1815, 1986, 1814, 1815, 1814, 1985, 2866, 3092, 1984, 1816, 3092, 1815, 1816, 1983, 3181, 3181, 1815, 1815, 3092, 3181, 1816, 1813, 1815, 3181, 1815, 1816, 1816, 1812, 1970, 1817, 1965, 1816, 1817, 1816, 1964, 1972, 3005, 1963, 1818, 3005, 1817, 1818, 1962, 1961, 1960, 1817, 1817, 1819, 1814, 1818, 1819, 1817, 1959, 1817, 1818, 1818, 1820, 1958, 1819, 1820, 1818, 1816, 1818, 1819, 1819, 1815, 1957, 1820, 1956, 1819, 1955, 1819, 1820, 1820, 1821, 1954, 1953, 1821, 1820, 1817, 1820, 2399, 2399, 2399, 2399, 1821, 1822, 1950, 3005, 1822, 1821, 1821, 2399, 1943, 1937, 1936, 1821, 1822, 1821, 1935, 1934, 1933, 1822, 1822, 3005, 1818, 1820, 1932, 1822, 1931, 1822, 2990, 1819, 1823, 2990, 1930, 1823, 1929, 2521, 2521, 2521, 2521, 2990, 1824, 1823, 2521, 1824, 1928, 1821, 1823, 1823, 1927, 1925, 2990, 1824, 1823, 1923, 1823, 1825, 1824, 1824, 1825, 1863, 1856, 1822, 1824, 1787, 1824, 1826, 1825, 1786, 1826, 1784, 1773, 1825, 1825, 1772, 1771, 1827, 1826, 1825, 1827, 1825, 1770, 1826, 1826, 1769, 1823, 1828, 1827, 1826, 1828, 1826, 1767, 1827, 1827, 1766, 1765, 1829, 1828, 1827, 1829, 1827, 1764, 1828, 1828, 1763, 1761, 1760, 1829, 1828, 1824, 1828, 1830, 1829, 1829, 1830, 2521, 1755, 1752, 1829, 1751, 1829, 1719, 1830, 1831, 1713, 1825, 1831, 1830, 1830, 1982, 1982, 1982, 1982, 1830, 1831, 1830, 1681, 1826, 1679, 1831, 1831, 1832, 1672, 1827, 1832, 1831, 1669, 1831, 1660, 1659, 1829, 1982, 1832, 1982, 1658, 1828, 1833, 1832, 1832, 1833, 1830, 1657, 1656, 1832, 1654, 1832, 1834, 1833, 1653, 1834, 1652, 1651, 1833, 1833, 1650, 1830, 1835, 1834, 1833, 1835, 1833, 1831, 1834, 1834, 1648, 1647, 3075, 1835, 1834, 3075, 1834, 1619, 1835, 1835, 1617, 1612, 1982, 3075, 1835, 1836, 1835, 1609, 1836, 3105, 1832, 1607, 3105, 1605, 1833, 3119, 1836, 1594, 3119, 1584, 3105, 1836, 1836, 1574, 1834, 1838, 3119, 1836, 1838, 1836, 1974, 1974, 1974, 1974, 1839, 3106, 1838, 1839, 3106, 1835, 1572, 1838, 1838, 1570, 1567, 1839, 3106, 1838, 1564, 1838, 1839, 1839, 1974, 1562, 1974, 1559, 1839, 3075, 1839, 3132, 3132, 3132, 3132, 1556, 1555, 1554, 1836, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1553, 1552, 1551, 1837, 1837, 1837, 1837, 1837, 1837, 1550, 1838, 1549, 1974, 3106, 1840, 1839, 1548, 1840, 1976, 1976, 1976, 1976, 1547, 1546, 1545, 1840, 1837, 1837, 1837, 1837, 1840, 1840, 1841, 1544, 1542, 1841, 1840, 1541, 1840, 1540, 1976, 1539, 1976, 1841, 1853, 1853, 1853, 1853, 1841, 1841, 1538, 1853, 1842, 1525, 1841, 1842, 1841, 1837, 1837, 1837, 1837, 1837, 1843, 1842, 1523, 1843, 1853, 1840, 1842, 1842, 1522, 1521, 1840, 1843, 1842, 1520, 1842, 1840, 1843, 1843, 1844, 1519, 3142, 1844, 1843, 3142, 1843, 1976, 1518, 1845, 1517, 1844, 1845, 3142, 1516, 1841, 1844, 1844, 1846, 1515, 1845, 1846, 1844, 1514, 1844, 1845, 1845, 1513, 1842, 1846, 1512, 1845, 1511, 1845, 1846, 1846, 1847, 1510, 1843, 1847, 1846, 1509, 1846, 1853, 1508, 1857, 1857, 1847, 1857, 1507, 3186, 3186, 1847, 1847, 1506, 3186, 1857, 1505, 1847, 3186, 1847, 1857, 1857, 1504, 1503, 1858, 1858, 1857, 1858, 1857, 1844, 3142, 2705, 2705, 2705, 2705, 1858, 3108, 1845, 2705, 3108, 1858, 1858, 1859, 1859, 1846, 1859, 1858, 3108, 1858, 1847, 1502, 1860, 1860, 1859, 1860, 1501, 1500, 1499, 1859, 1859, 1865, 1865, 1860, 1865, 1859, 1498, 1859, 1860, 1860, 3188, 3188, 1865, 1857, 1860, 3188, 1860, 1865, 1865, 3188, 1497, 1867, 1867, 1865, 1867, 1865, 2080, 2080, 2080, 2080, 1858, 3108, 1867, 2080, 1496, 1494, 1493, 1867, 1867, 3039, 3039, 3039, 3039, 1867, 1492, 1867, 3039, 1491, 2080, 1490, 1859, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1866, 1489, 1488, 1474, 1866, 1866, 1866, 1866, 1866, 1866, 1473, 1867, 1461, 1460, 3144, 1868, 1868, 3144, 1868, 1459, 1458, 1978, 1978, 1978, 1978, 3144, 1868, 1866, 1866, 1866, 1866, 1868, 1868, 3190, 3190, 2080, 1866, 1868, 3190, 1868, 1457, 1456, 3190, 1978, 1455, 1978, 2413, 2413, 2413, 2413, 1454, 1453, 1869, 1869, 1452, 1869, 1451, 2413, 1866, 1866, 1866, 1866, 1866, 1869, 1870, 1870, 1449, 1870, 1869, 1869, 1978, 1448, 1868, 1447, 1869, 1870, 1869, 1446, 1445, 1444, 1870, 1870, 1871, 1871, 2934, 1871, 1870, 1433, 1870, 1432, 2934, 1872, 1872, 1871, 1872, 2934, 2934, 2934, 1871, 1871, 1873, 1873, 1872, 1873, 1871, 2934, 1871, 1872, 1872, 1431, 1430, 1873, 1429, 1872, 1427, 1872, 1873, 1873, 3137, 1426, 1869, 3137, 1873, 1425, 1873, 1874, 1874, 3126, 1874, 3137, 3126, 1424, 1423, 1870, 1875, 1875, 1874, 1875, 3126, 1422, 1871, 1874, 1874, 1876, 1876, 1875, 1876, 1874, 1419, 1874, 1875, 1875, 1376, 1356, 1876, 2934, 1875, 1334, 1875, 1876, 1876, 1872, 1283, 1877, 1877, 1876, 1877, 1876, 3137, 1873, 1282, 1280, 1878, 1878, 1877, 1878, 1260, 1259, 1257, 1877, 1877, 3126, 1238, 1878, 1236, 1877, 1874, 1877, 1878, 1878, 1879, 1879, 1875, 1879, 1878, 1235, 1878, 2414, 2414, 2414, 2414, 1879, 1880, 1880, 1234, 1880, 1879, 1879, 2414, 1233, 1876, 1232, 1879, 1880, 1879, 1231, 1229, 1877, 1880, 1880, 1881, 1881, 1228, 1881, 1880, 1227, 1880, 1226, 1225, 1882, 1882, 1881, 1882, 1878, 1224, 1223, 1881, 1881, 1883, 1883, 1882, 1883, 1881, 1217, 1881, 1882, 1882, 1884, 1884, 1883, 1884, 1882, 1216, 1882, 1883, 1883, 1880, 1151, 1884, 1879, 1883, 1148, 1883, 1884, 1884, 1885, 1885, 2944, 1885, 1884, 1881, 1884, 1126, 2944, 1886, 1886, 1885, 1886, 2944, 2944, 2944, 1885, 1885, 1887, 1887, 1886, 1887, 1885, 2944, 1885, 1886, 1886, 1882, 1125, 1887, 1122, 1886, 1121, 1886, 1887, 1887, 1888, 1888, 1120, 1888, 1887, 1119, 1887, 1118, 1117, 1883, 1884, 1888, 1889, 1889, 1115, 1889, 1888, 1888, 3101, 3101, 3101, 3101, 1888, 1889, 1888, 3101, 1114, 3127, 1889, 1889, 3127, 1885, 1890, 1890, 1889, 1890, 1889, 2944, 3127, 1113, 1886, 1112, 1111, 1890, 3136, 1887, 1110, 3136, 1890, 1890, 3138, 3138, 3138, 3138, 1890, 3136, 1890, 1891, 1891, 1109, 1891, 1892, 1892, 1889, 1892, 1104, 1098, 1888, 1891, 1074, 1072, 1038, 1892, 1891, 1891, 3192, 3192, 1892, 1892, 1891, 3192, 1891, 1035, 1892, 3192, 1892, 1893, 1893, 1032, 1893, 1894, 1894, 1030, 1894, 3127, 1027, 1026, 1893, 1025, 1023, 1890, 1894, 1893, 1893, 1021, 1020, 1894, 1894, 1893, 1018, 1893, 3136, 1894, 1892, 1894, 1895, 1895, 1017, 1895, 1016, 1015, 1014, 1891, 1013, 1896, 1896, 1895, 1896, 1011, 3194, 3194, 1895, 1895, 1010, 3194, 1896, 1893, 1895, 3194, 1895, 1896, 1896, 1897, 1897, 3145, 1897, 1896, 3145, 1896, 1009, 1008, 1898, 1898, 1897, 1898, 3145, 1007, 1894, 1897, 1897, 1899, 1899, 1898, 1899, 1897, 1006, 1897, 1898, 1898, 983, 981, 1899, 980, 1898, 1896, 1898, 1899, 1899, 1900, 1900, 1895, 1900, 1899, 979, 1899, 2345, 2345, 2345, 2345, 1900, 2626, 2626, 2626, 2626, 1900, 1900, 1897, 978, 976, 975, 1900, 2626, 1900, 974, 1901, 1901, 973, 1901, 2345, 1898, 2345, 971, 2626, 3145, 1899, 1901, 1902, 1902, 970, 1902, 1901, 1901, 2522, 2522, 2522, 2522, 1901, 1902, 1901, 2522, 969, 968, 1902, 1902, 1903, 1903, 3146, 1903, 1902, 3146, 1902, 967, 960, 2345, 959, 1903, 1900, 3146, 958, 957, 1903, 1903, 1904, 1904, 3148, 1904, 1903, 3148, 1903, 955, 954, 2345, 953, 1904, 952, 3148, 950, 949, 1904, 1904, 1905, 1905, 948, 1905, 1904, 1901, 1904, 2623, 2623, 2623, 2623, 1905, 3141, 1902, 2623, 3141, 1905, 1905, 1906, 1906, 947, 1906, 1905, 3141, 1905, 2868, 2868, 2868, 2868, 1906, 3146, 2522, 946, 1903, 1906, 1906, 1904, 942, 941, 940, 1906, 939, 1906, 1907, 1907, 938, 1907, 2868, 3148, 1905, 2633, 2633, 2633, 2633, 1907, 1908, 1908, 933, 1908, 1907, 1907, 2633, 3141, 932, 1905, 1907, 1908, 1907, 931, 3196, 3196, 1908, 1908, 930, 3196, 907, 1906, 1908, 3196, 1908, 1909, 1909, 906, 1909, 897, 895, 2623, 3110, 3110, 3110, 3110, 1909, 1910, 1910, 3110, 1910, 1909, 1909, 1979, 1979, 1979, 1979, 1909, 1910, 1909, 894, 1907, 1908, 1910, 1910, 893, 892, 1911, 1911, 1910, 1911, 1910, 891, 890, 888, 1979, 887, 1979, 1911, 1912, 1912, 886, 1912, 1911, 1911, 885, 883, 1909, 882, 1911, 1912, 1911, 881, 880, 879, 1912, 1912, 1913, 1913, 878, 1913, 1912, 877, 1912, 1910, 865, 3202, 3202, 1913, 1914, 1914, 3202, 1914, 1913, 1913, 3202, 1979, 864, 858, 1913, 1914, 1913, 857, 856, 2176, 1914, 1914, 2176, 1911, 3204, 3204, 1914, 855, 1914, 3204, 2176, 1915, 1915, 3204, 1915, 2176, 2176, 853, 850, 849, 848, 2176, 1915, 2176, 842, 841, 1912, 1915, 1915, 2328, 2328, 2328, 2328, 1915, 838, 1915, 801, 1914, 1916, 1916, 1913, 1916, 1914, 3206, 3206, 773, 763, 1914, 3206, 1916, 762, 2328, 3206, 2328, 1916, 1916, 1917, 1917, 752, 1917, 1916, 719, 1916, 692, 691, 1918, 1918, 1917, 1918, 688, 3208, 3208, 1917, 1917, 1915, 3208, 1918, 683, 1917, 3208, 1917, 1918, 1918, 681, 679, 1919, 1919, 1918, 1919, 1918, 3210, 3210, 678, 676, 1916, 3210, 1919, 1920, 1920, 3210, 1920, 1919, 1919, 2330, 2330, 2330, 2330, 1919, 1920, 1919, 675, 659, 1917, 1920, 1920, 1921, 1921, 627, 1921, 1920, 597, 1920, 596, 589, 587, 2330, 1921, 2330, 585, 3213, 3213, 1921, 1921, 584, 3213, 1918, 575, 1921, 3213, 1921, 569, 2331, 2331, 2331, 2331, 2627, 2627, 2627, 2627, 2706, 2706, 2706, 2706, 2330, 1919, 554, 2627, 3216, 3216, 552, 2706, 548, 3216, 2331, 1920, 2331, 3216, 2627, 540, 1921, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1971, 1981, 1981, 1981, 1981, 2110, 2110, 2110, 2110, 535, 2776, 2776, 2776, 2776, 528, 2193, 2110, 2110, 2193, 2246, 2110, 2776, 2246, 1981, 490, 1981, 2193, 2110, 2110, 2110, 2246, 2193, 2193, 3219, 3219, 2246, 2246, 2193, 3219, 2193, 489, 2246, 3219, 2246, 2702, 2702, 2702, 2702, 2777, 2777, 2777, 2777, 2110, 3221, 3221, 2702, 3231, 3231, 3221, 2777, 479, 3231, 3221, 478, 477, 3231, 2702, 474, 2246, 2193, 1981, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2024, 2079, 2079, 2079, 2079, 472, 471, 2081, 2081, 2081, 2081, 469, 2079, 2079, 2081, 468, 2079, 2079, 2079, 2081, 456, 441, 437, 2079, 2079, 2079, 2081, 2081, 2081, 2081, 2082, 2082, 2082, 2082, 431, 430, 429, 2082, 427, 426, 424, 423, 2082, 2111, 2111, 2111, 2111, 422, 2079, 2082, 2082, 2082, 2082, 2192, 2111, 2111, 2192, 2194, 2111, 421, 2194, 420, 3243, 3243, 2192, 2111, 2111, 3243, 2194, 2192, 2192, 3243, 411, 2194, 2194, 2192, 410, 2192, 409, 2194, 2195, 2194, 407, 2195, 2197, 406, 2081, 2197, 2889, 2889, 2111, 2195, 404, 2889, 2889, 2197, 2195, 2195, 403, 402, 2197, 2197, 2195, 2889, 2195, 401, 2197, 2194, 2197, 2082, 2103, 2103, 2103, 2103, 2339, 2339, 2339, 2339, 400, 398, 385, 2103, 2103, 2192, 384, 2103, 2103, 2103, 2201, 383, 2195, 2201, 2103, 2103, 2103, 382, 2339, 2198, 2339, 2201, 2198, 381, 379, 352, 2201, 2201, 346, 2197, 2198, 345, 2201, 344, 2201, 2198, 2198, 2889, 341, 2103, 340, 2198, 338, 2198, 337, 2339, 2103, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 2114, 336, 2201, 334, 2114, 2114, 2114, 2114, 2114, 2114, 333, 316, 306, 305, 2198, 2199, 304, 303, 2199, 2334, 2334, 2334, 2334, 295, 288, 244, 2199, 2114, 2114, 2114, 2114, 2199, 2199, 2203, 243, 240, 2203, 2199, 210, 2199, 205, 2334, 198, 2334, 2203, 2346, 2346, 2346, 2346, 2203, 2203, 194, 193, 192, 163, 2203, 157, 2203, 2114, 2114, 2114, 2114, 2114, 2121, 2121, 2121, 2121, 153, 2346, 2199, 2346, 148, 2334, 2200, 2121, 2121, 2200, 2202, 2121, 139, 2202, 137, 126, 125, 2200, 2121, 2121, 2121, 2202, 2200, 2200, 122, 119, 2202, 2202, 2200, 2203, 2200, 2346, 2202, 2206, 2202, 117, 2206, 108, 99, 2333, 2333, 2333, 2333, 2121, 2206, 95, 89, 80, 2121, 2206, 2206, 72, 65, 0, 2346, 2206, 0, 2206, 0, 0, 2200, 2333, 2202, 2333, 2121, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2164, 2206, 0, 0, 2164, 2164, 2164, 2164, 2164, 2164, 0, 0, 0, 2575, 2575, 2575, 2575, 0, 2727, 2727, 2727, 2727, 2212, 0, 2333, 2212, 0, 2164, 2164, 2164, 2164, 2207, 0, 2212, 2207, 2575, 0, 2575, 2212, 2212, 2727, 0, 2207, 0, 2212, 0, 2212, 2207, 2207, 0, 2164, 0, 0, 2207, 0, 2207, 0, 0, 2164, 2164, 2164, 2164, 2164, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 2196, 0, 2207, 2212, 2196, 2196, 2196, 2196, 2196, 2196, 0, 0, 2727, 2926, 2926, 2926, 2926, 2332, 2332, 2332, 2332, 2208, 0, 0, 2208, 0, 0, 2196, 2196, 2196, 2196, 2196, 2208, 2209, 0, 2926, 2209, 2208, 2208, 2332, 0, 2332, 0, 2208, 2209, 2208, 0, 0, 0, 2209, 2209, 0, 0, 2210, 0, 2209, 2210, 2209, 2196, 2196, 2196, 2196, 2196, 2211, 2210, 0, 2211, 2957, 2957, 2210, 2210, 2332, 2957, 2957, 2211, 2210, 0, 2210, 2213, 2211, 2211, 2213, 2957, 3257, 3257, 2211, 0, 2211, 3257, 2213, 2208, 2209, 3257, 0, 2213, 2213, 2214, 0, 0, 2214, 2213, 0, 2213, 2417, 2417, 2417, 2417, 2214, 2215, 0, 2417, 2215, 2214, 2214, 0, 0, 0, 2211, 2214, 2215, 2214, 0, 2210, 0, 2215, 2215, 2216, 0, 0, 2216, 2215, 0, 2215, 3149, 2957, 2217, 3149, 2216, 2217, 2213, 3332, 3332, 2216, 2216, 3149, 3332, 2217, 0, 2216, 3332, 2216, 2217, 2217, 2829, 2829, 2829, 2829, 2217, 0, 2217, 3151, 2214, 2218, 3151, 2829, 2218, 0, 2417, 0, 0, 0, 3151, 2219, 2218, 0, 2219, 0, 2215, 2218, 2218, 0, 0, 2417, 2219, 2218, 0, 2218, 0, 2219, 2219, 2220, 0, 0, 2220, 2219, 2216, 2219, 0, 0, 2221, 3149, 2220, 2221, 0, 2217, 0, 2220, 2220, 2222, 0, 2221, 2222, 2220, 0, 2220, 2221, 2221, 0, 0, 2222, 2218, 2221, 0, 2221, 2222, 2222, 2223, 3151, 0, 2223, 2222, 0, 2222, 2418, 2418, 2418, 2418, 2223, 0, 0, 2418, 2219, 2223, 2223, 0, 0, 2224, 0, 2223, 2224, 2223, 2221, 0, 0, 0, 2225, 0, 2224, 2225, 2220, 2222, 0, 2224, 2224, 2226, 0, 2225, 2226, 2224, 0, 2224, 2225, 2225, 0, 0, 2226, 0, 2225, 0, 2225, 2226, 2226, 2227, 0, 0, 2227, 2226, 0, 2226, 0, 0, 2228, 0, 2227, 2228, 2223, 0, 2418, 2227, 2227, 2224, 0, 2228, 0, 2227, 0, 2227, 2228, 2228, 2225, 0, 0, 2418, 2228, 2229, 2228, 0, 2229, 2856, 2856, 2856, 2856, 0, 2230, 0, 2229, 2230, 2226, 0, 2856, 2229, 2229, 0, 0, 2230, 2227, 2229, 0, 2229, 2230, 2230, 2231, 0, 0, 2231, 2230, 0, 2230, 0, 0, 2232, 0, 2231, 2232, 0, 0, 0, 2231, 2231, 0, 2228, 2232, 0, 2231, 0, 2231, 2232, 2232, 2233, 2229, 0, 2233, 2232, 0, 2232, 2230, 0, 2234, 0, 2233, 2234, 2987, 2987, 0, 2233, 2233, 2987, 2987, 2234, 0, 2233, 0, 2233, 2234, 2234, 0, 2987, 2231, 0, 2234, 2235, 2234, 0, 2235, 0, 0, 0, 3073, 3073, 3073, 3073, 2235, 0, 0, 3073, 2239, 2235, 2235, 2239, 2232, 0, 0, 2235, 0, 2235, 2233, 2239, 2916, 2916, 2916, 2916, 2239, 2239, 0, 0, 0, 0, 2239, 2916, 2239, 3400, 3400, 0, 0, 2234, 3400, 0, 0, 2987, 3400, 2235, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 3073, 0, 2239, 2238, 2238, 2238, 2238, 2238, 2238, 0, 2336, 2336, 2336, 2336, 2240, 3073, 0, 2240, 0, 0, 2335, 2335, 2335, 2335, 0, 2240, 2238, 2238, 2238, 2238, 2240, 2240, 2336, 0, 2336, 0, 2240, 0, 2240, 0, 0, 0, 2335, 0, 2335, 2959, 2959, 2959, 2959, 2238, 0, 0, 0, 2241, 0, 0, 2241, 2238, 2238, 2238, 2238, 2238, 2242, 0, 2241, 2242, 2336, 2959, 2240, 2241, 2241, 2243, 0, 2242, 2243, 2241, 0, 2241, 2242, 2242, 2244, 0, 2243, 2244, 2242, 0, 2242, 2243, 2243, 2335, 0, 2244, 0, 2243, 0, 2243, 2244, 2244, 2245, 0, 0, 2245, 2244, 0, 2244, 0, 2241, 2248, 2248, 2245, 2248, 0, 2242, 0, 2245, 2245, 2249, 2249, 2248, 2249, 2245, 0, 2245, 2248, 2248, 2250, 2250, 2249, 2250, 2248, 2244, 2248, 2249, 2249, 2243, 0, 2250, 0, 2249, 0, 2249, 2250, 2250, 2251, 2251, 0, 2251, 2250, 0, 2250, 0, 0, 2252, 2252, 2251, 2252, 2245, 3421, 3421, 2251, 2251, 0, 3421, 2252, 0, 2251, 3421, 2251, 2252, 2252, 2249, 0, 0, 0, 2252, 2250, 2252, 2248, 2253, 2253, 0, 2253, 0, 0, 0, 0, 0, 2254, 2254, 2253, 2254, 0, 0, 2251, 2253, 2253, 2255, 2255, 2254, 2255, 2253, 0, 2253, 2254, 2254, 2256, 2256, 2255, 2256, 2254, 0, 2254, 2255, 2255, 0, 2252, 2256, 3093, 2255, 0, 2255, 2256, 2256, 3093, 3093, 0, 0, 2256, 0, 2256, 3093, 2257, 2257, 0, 2257, 0, 0, 0, 3093, 2253, 0, 2254, 2257, 2420, 2420, 2420, 2420, 2257, 2257, 0, 2255, 0, 0, 2257, 2420, 2257, 0, 2256, 0, 2261, 2261, 0, 2261, 2259, 2259, 2420, 2259, 2420, 3436, 3436, 2261, 0, 0, 3436, 2259, 2261, 2261, 3436, 0, 2259, 2259, 2261, 0, 2261, 0, 2259, 0, 2259, 3093, 0, 3093, 0, 0, 0, 2257, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2258, 2259, 0, 0, 2258, 2258, 2258, 2258, 2258, 2258, 2917, 2917, 2917, 2917, 2261, 2260, 2260, 0, 2260, 0, 0, 2917, 2347, 2347, 2347, 2347, 2260, 2258, 2258, 2258, 2258, 2260, 2260, 2262, 2262, 0, 2262, 2260, 0, 2260, 0, 0, 0, 2258, 2262, 2347, 0, 2347, 0, 2262, 2262, 0, 0, 2263, 2263, 2262, 2263, 2262, 2258, 2258, 2258, 2258, 2258, 0, 2263, 0, 0, 0, 2260, 2263, 2263, 2264, 2264, 0, 2264, 2263, 0, 2263, 0, 0, 2347, 0, 2264, 2265, 2265, 0, 2265, 2264, 2264, 0, 0, 2262, 0, 2264, 2265, 2264, 0, 0, 2347, 2265, 2265, 2946, 2946, 2946, 2946, 2265, 0, 2265, 0, 0, 2266, 2266, 2946, 2266, 3010, 3010, 3010, 3010, 0, 0, 0, 2266, 2263, 2946, 0, 2264, 2266, 2266, 2267, 2267, 0, 2267, 2266, 0, 2266, 0, 3010, 2268, 2268, 2267, 2268, 0, 3450, 3450, 2267, 2267, 2265, 3450, 2268, 0, 2267, 3450, 2267, 2268, 2268, 0, 0, 2269, 2269, 2268, 2269, 2268, 0, 0, 0, 0, 2270, 2270, 2269, 2270, 0, 2266, 0, 2269, 2269, 2271, 2271, 2270, 2271, 2269, 0, 2269, 2270, 2270, 0, 0, 2271, 0, 2270, 0, 2270, 2271, 2271, 2267, 0, 0, 0, 2271, 0, 2271, 2272, 2272, 0, 2272, 0, 0, 2268, 2978, 2978, 2978, 2978, 2272, 2273, 2273, 0, 2273, 2272, 2272, 2978, 0, 0, 0, 2272, 2273, 2272, 0, 2269, 0, 2273, 2273, 0, 0, 0, 2271, 2273, 2270, 2273, 2274, 2274, 0, 2274, 2275, 2275, 0, 2275, 0, 3510, 3510, 2274, 0, 0, 3510, 2275, 2274, 2274, 3510, 0, 2275, 2275, 2274, 0, 2274, 0, 2275, 0, 2275, 0, 3521, 3521, 2272, 0, 0, 3521, 0, 2276, 2276, 3521, 2276, 0, 0, 0, 2273, 0, 2277, 2277, 2276, 2277, 0, 0, 2274, 2276, 2276, 2492, 2275, 2277, 2492, 2276, 0, 2276, 2277, 2277, 2278, 2278, 2492, 2278, 2277, 0, 2277, 2492, 2492, 2279, 2279, 2278, 2279, 2492, 0, 2492, 2278, 2278, 0, 0, 2279, 0, 2278, 0, 2278, 2279, 2279, 2280, 2280, 0, 2280, 2279, 0, 2279, 0, 0, 2277, 0, 2280, 0, 0, 0, 2276, 2280, 2280, 0, 0, 0, 0, 2280, 0, 2280, 0, 2281, 2281, 0, 2281, 2282, 2282, 0, 2282, 2492, 2279, 2278, 2281, 0, 0, 0, 2282, 2281, 2281, 0, 0, 2282, 2282, 2281, 0, 2281, 0, 2282, 0, 2282, 2283, 2283, 0, 2283, 0, 0, 0, 2981, 2981, 2981, 2981, 2283, 2284, 2284, 2280, 2284, 2283, 2283, 2981, 0, 0, 0, 2283, 2284, 2283, 0, 2281, 2282, 2284, 2284, 2285, 2285, 0, 2285, 2284, 0, 2284, 2982, 2982, 2982, 2982, 2285, 2286, 2286, 0, 2286, 2285, 2285, 2982, 0, 0, 0, 2285, 2286, 2285, 0, 2283, 0, 2286, 2286, 2287, 2287, 0, 2287, 2286, 0, 2286, 0, 0, 2293, 2293, 2287, 2293, 0, 0, 0, 2287, 2287, 0, 0, 2293, 2284, 2287, 0, 2287, 2293, 2293, 2285, 0, 0, 0, 2293, 0, 2293, 3023, 3023, 3023, 3023, 0, 0, 3104, 3104, 3104, 3104, 0, 3023, 0, 3104, 0, 2286, 2287, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 0, 2293, 0, 2288, 2288, 2288, 2288, 2288, 2288, 0, 2577, 2577, 2577, 2577, 2289, 2289, 0, 2289, 2337, 2337, 2337, 2337, 0, 0, 0, 2289, 2288, 2288, 2288, 2288, 2289, 2289, 2577, 3104, 2577, 0, 2289, 0, 2289, 0, 2337, 0, 2337, 0, 3026, 3026, 3026, 3026, 3104, 2288, 0, 2290, 2290, 0, 2290, 3026, 0, 2288, 2288, 2288, 2288, 2288, 2290, 2291, 2291, 0, 2291, 2290, 2290, 0, 0, 2577, 2289, 2290, 2291, 2290, 0, 0, 0, 2291, 2291, 2337, 0, 0, 0, 2291, 0, 2291, 0, 0, 2292, 2292, 0, 2292, 0, 0, 0, 0, 0, 0, 0, 2292, 0, 0, 0, 2290, 2292, 2292, 2294, 2294, 0, 2294, 2292, 0, 2292, 0, 2291, 2295, 2295, 2294, 2295, 0, 0, 0, 2294, 2294, 0, 0, 2295, 0, 2294, 0, 2294, 2295, 2295, 2296, 2296, 0, 2296, 2295, 2292, 2295, 2338, 2338, 2338, 2338, 2296, 2344, 2344, 2344, 2344, 2296, 2296, 2370, 2370, 2370, 2370, 2296, 2294, 2296, 3128, 3128, 3128, 3128, 2338, 0, 2338, 0, 0, 0, 2344, 3128, 2344, 0, 0, 2295, 0, 0, 0, 2416, 2416, 2416, 2416, 0, 2296, 2421, 2421, 2421, 2421, 0, 2416, 2416, 0, 0, 2416, 0, 2421, 0, 0, 2344, 2338, 2416, 2416, 2416, 0, 2370, 0, 2421, 0, 2421, 0, 2344, 0, 0, 0, 2344, 2344, 2370, 2344, 0, 0, 2370, 0, 2344, 2370, 0, 2416, 0, 0, 2370, 2423, 2423, 2423, 2423, 0, 0, 2428, 2428, 2428, 2428, 0, 2423, 2423, 0, 0, 2423, 2416, 2428, 2428, 0, 2421, 2428, 2423, 2423, 2423, 0, 0, 0, 2428, 2428, 2428, 2423, 0, 0, 0, 0, 0, 2434, 2434, 2434, 2434, 0, 0, 0, 0, 0, 0, 2423, 2434, 2434, 0, 0, 2434, 2428, 2433, 2433, 2433, 2433, 0, 2434, 2434, 2434, 0, 0, 0, 2433, 2433, 0, 0, 2433, 2435, 2435, 2435, 2435, 0, 0, 2433, 2433, 2433, 0, 0, 2435, 2435, 0, 2434, 2435, 0, 0, 2578, 2578, 2578, 2578, 2435, 2435, 0, 0, 2466, 2466, 2466, 2466, 0, 2433, 0, 0, 0, 0, 2433, 2466, 2466, 0, 2578, 2466, 2578, 0, 0, 0, 0, 2435, 2466, 2466, 2466, 0, 2433, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2466, 0, 0, 2454, 2454, 2454, 2454, 2454, 2454, 2467, 2467, 2467, 2467, 0, 2578, 0, 2466, 0, 0, 2487, 2467, 2467, 2487, 0, 2467, 0, 2454, 2454, 2454, 2454, 2487, 2467, 2467, 0, 0, 2487, 2487, 0, 0, 0, 0, 2487, 0, 2487, 0, 0, 0, 2576, 2576, 2576, 2576, 2488, 0, 0, 2488, 0, 2467, 2454, 2454, 2454, 2454, 2454, 2488, 2489, 0, 0, 2489, 2488, 2488, 2576, 0, 2576, 2467, 2488, 2489, 2488, 0, 0, 0, 2489, 2489, 2487, 0, 2490, 0, 2489, 2490, 2489, 0, 0, 0, 0, 2491, 0, 2490, 2491, 0, 0, 0, 2490, 2490, 2576, 0, 2491, 0, 2490, 0, 2490, 2491, 2491, 2493, 0, 0, 2493, 2491, 2489, 2491, 0, 2488, 2494, 0, 2493, 2494, 0, 0, 0, 2493, 2493, 0, 0, 2494, 0, 2493, 0, 2493, 2494, 2494, 2495, 0, 0, 2495, 2494, 0, 2494, 2491, 0, 2490, 0, 2495, 0, 0, 0, 2496, 2495, 2495, 2496, 0, 0, 0, 2495, 0, 2495, 0, 2496, 2498, 0, 0, 2498, 2496, 2496, 0, 2494, 0, 0, 2496, 2498, 2496, 0, 0, 2493, 2498, 2498, 2499, 0, 0, 2499, 2498, 0, 2498, 0, 0, 2500, 0, 2499, 2500, 2495, 0, 0, 2499, 2499, 2501, 0, 2500, 2501, 2499, 0, 2499, 2500, 2500, 0, 0, 2501, 0, 2500, 0, 2500, 2501, 2501, 0, 0, 2502, 2498, 2501, 2502, 2501, 0, 2496, 0, 0, 2503, 0, 2502, 2503, 0, 2499, 0, 2502, 2502, 0, 0, 2503, 2500, 2502, 0, 2502, 2503, 2503, 2504, 0, 0, 2504, 2503, 0, 2503, 2501, 0, 2505, 0, 2504, 2505, 0, 0, 0, 2504, 2504, 2506, 0, 2505, 2506, 2504, 2502, 2504, 2505, 2505, 0, 0, 2506, 0, 2505, 0, 2505, 2506, 2506, 2507, 0, 0, 2507, 2506, 0, 2506, 3020, 3020, 3020, 3020, 2507, 0, 2503, 0, 0, 2507, 2507, 2508, 0, 0, 2508, 2507, 0, 2507, 0, 2505, 0, 2504, 2508, 3020, 0, 3020, 0, 2508, 2508, 2509, 0, 0, 2509, 2508, 0, 2508, 0, 0, 2510, 0, 2509, 2510, 2506, 0, 0, 2509, 2509, 2507, 0, 2510, 0, 2509, 0, 2509, 2510, 2510, 0, 0, 0, 0, 2510, 0, 2510, 2994, 2994, 2994, 2994, 0, 0, 3020, 2994, 2512, 0, 0, 2512, 2513, 3020, 0, 2513, 0, 2508, 0, 2512, 2509, 0, 2994, 2513, 2512, 2512, 0, 0, 2513, 2513, 2512, 0, 2512, 0, 2513, 0, 2513, 0, 0, 0, 0, 0, 2510, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 2511, 0, 2994, 0, 2511, 2511, 2511, 2511, 2511, 2511, 2512, 0, 2999, 2999, 2999, 2999, 0, 2994, 0, 2513, 0, 2514, 0, 2999, 2514, 0, 0, 2511, 2511, 2511, 2511, 2511, 2514, 2515, 2999, 0, 2515, 2514, 2514, 0, 0, 0, 0, 2514, 2515, 2514, 0, 0, 0, 2515, 2515, 2975, 2975, 2975, 2975, 2515, 0, 2515, 2511, 2511, 2511, 2511, 2511, 2516, 0, 0, 2516, 2517, 0, 0, 2517, 0, 0, 0, 2516, 2514, 0, 0, 2517, 2516, 2516, 0, 0, 2517, 2517, 2516, 0, 2516, 2515, 2517, 2518, 2517, 0, 2518, 2519, 0, 0, 2519, 0, 0, 0, 2518, 0, 2975, 0, 2519, 2518, 2518, 0, 0, 2519, 2519, 2518, 0, 2518, 2975, 2519, 2520, 2519, 2975, 2520, 2517, 2975, 0, 0, 2516, 0, 2975, 2520, 0, 0, 0, 0, 2520, 2520, 2523, 2523, 2523, 2523, 2520, 0, 2520, 0, 0, 0, 0, 2523, 2525, 2525, 0, 2525, 2518, 0, 0, 0, 2519, 0, 2523, 2525, 2523, 0, 0, 0, 2525, 2525, 2526, 2526, 0, 2526, 2525, 0, 2525, 0, 0, 2527, 2527, 2526, 2527, 0, 0, 0, 2526, 2526, 0, 0, 2527, 2520, 2526, 0, 2526, 2527, 2527, 0, 0, 2528, 2528, 2527, 2528, 2527, 0, 0, 0, 0, 2529, 2529, 2528, 2529, 0, 0, 2525, 2528, 2528, 2530, 2530, 2529, 2530, 2528, 0, 2528, 2529, 2529, 0, 0, 2530, 0, 2529, 2527, 2529, 2530, 2530, 2531, 2531, 2526, 2531, 2530, 0, 2530, 0, 0, 2532, 2532, 2531, 2532, 0, 0, 0, 2531, 2531, 2533, 2533, 2532, 2533, 2531, 0, 2531, 2532, 2532, 2528, 0, 2533, 0, 2532, 0, 2532, 2533, 2533, 0, 0, 2534, 2534, 2533, 2534, 2533, 2529, 0, 0, 0, 0, 0, 2534, 0, 2530, 0, 0, 2534, 2534, 2535, 2535, 2531, 2535, 2534, 0, 2534, 0, 0, 2536, 2536, 2535, 2536, 0, 0, 0, 2535, 2535, 0, 2533, 2536, 0, 2535, 0, 2535, 2536, 2536, 2532, 0, 2537, 2537, 2536, 2537, 2536, 2534, 0, 0, 0, 2538, 2538, 2537, 2538, 0, 0, 0, 2537, 2537, 0, 0, 2538, 2535, 2537, 0, 2537, 2538, 2538, 2539, 2539, 0, 2539, 2538, 0, 2538, 2536, 0, 2540, 2540, 2539, 2540, 0, 0, 0, 2539, 2539, 2541, 2541, 2540, 2541, 2539, 2537, 2539, 2540, 2540, 0, 0, 2541, 0, 2540, 0, 2540, 2541, 2541, 2542, 2542, 0, 2542, 2541, 0, 2541, 0, 0, 0, 0, 2542, 0, 2538, 0, 0, 2542, 2542, 2543, 2543, 0, 2543, 2542, 0, 2542, 0, 2540, 0, 2539, 2543, 0, 0, 0, 0, 2543, 2543, 2544, 2544, 0, 2544, 2543, 0, 2543, 0, 0, 2545, 2545, 2544, 2545, 2541, 0, 0, 2544, 2544, 2542, 0, 2545, 0, 2544, 0, 2544, 2545, 2545, 3000, 3000, 3000, 3000, 2545, 0, 2545, 0, 0, 2546, 2546, 3000, 2546, 0, 0, 0, 0, 0, 2547, 2547, 2546, 2547, 3000, 0, 2543, 2546, 2546, 2544, 0, 2547, 0, 2546, 0, 2546, 2547, 2547, 2548, 2548, 0, 2548, 2547, 0, 2547, 0, 0, 2681, 2545, 2548, 2681, 0, 0, 0, 2548, 2548, 0, 0, 2681, 0, 2548, 0, 2548, 2681, 2681, 2549, 2549, 0, 2549, 2681, 0, 2681, 0, 0, 2547, 0, 2549, 0, 0, 0, 2546, 2549, 2549, 2550, 2550, 0, 2550, 2549, 0, 2549, 0, 0, 0, 2548, 2550, 2551, 2551, 0, 2551, 2550, 2550, 2681, 0, 0, 0, 2550, 2551, 2550, 0, 0, 0, 2551, 2551, 3001, 3001, 3001, 3001, 2551, 0, 2551, 0, 0, 2552, 2552, 3001, 2552, 0, 2549, 0, 0, 0, 2553, 2553, 2552, 2553, 3001, 0, 2550, 2552, 2552, 0, 0, 2553, 0, 2552, 0, 2552, 2553, 2553, 2574, 2574, 2574, 2574, 2553, 0, 2553, 2551, 2583, 2583, 2583, 2583, 0, 0, 2624, 2624, 2624, 2624, 2625, 2625, 2625, 2625, 2574, 0, 2574, 2624, 0, 0, 0, 2625, 0, 2583, 0, 2583, 2552, 0, 2624, 0, 2624, 0, 2625, 0, 2625, 2628, 2628, 2628, 2628, 2630, 2630, 2630, 2630, 2553, 0, 0, 2628, 0, 0, 0, 2630, 0, 2583, 0, 0, 2574, 0, 2628, 0, 2628, 0, 2630, 0, 2630, 2583, 0, 0, 0, 2583, 2583, 0, 2583, 0, 0, 0, 2625, 2583, 2637, 2637, 2637, 2637, 0, 0, 3064, 3064, 3064, 3064, 0, 2637, 2637, 3064, 2682, 2637, 2630, 2682, 2683, 0, 0, 2683, 2637, 2637, 2637, 2682, 0, 0, 3064, 2683, 2682, 2682, 0, 0, 2683, 2683, 2682, 0, 2682, 0, 2683, 0, 2683, 0, 0, 0, 0, 2637, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2643, 2683, 0, 0, 2643, 2643, 2643, 2643, 2643, 2643, 2664, 2664, 2664, 2664, 0, 0, 2682, 0, 3064, 0, 0, 2664, 2664, 0, 0, 2664, 0, 2643, 2643, 2643, 2643, 2643, 2664, 2664, 2664, 2876, 0, 0, 0, 0, 0, 2876, 2876, 0, 0, 0, 2876, 2876, 2876, 0, 0, 0, 0, 0, 0, 0, 2876, 2664, 2643, 2643, 2643, 2643, 2643, 2653, 2653, 2653, 2653, 0, 2665, 2665, 2665, 2665, 0, 2664, 2653, 2653, 0, 0, 2653, 2665, 2665, 2684, 0, 2665, 2684, 2653, 2653, 2653, 0, 0, 2665, 2665, 2684, 0, 0, 0, 2685, 2684, 2684, 2685, 0, 0, 0, 2684, 0, 2684, 2876, 2685, 2876, 0, 2653, 0, 2685, 2685, 0, 2665, 2686, 2653, 2685, 2686, 2685, 2653, 0, 0, 0, 2688, 0, 2686, 2688, 0, 2653, 2665, 2686, 2686, 2653, 2684, 2688, 0, 2686, 0, 2686, 2688, 2688, 2689, 0, 2685, 2689, 2688, 0, 2688, 0, 0, 2690, 0, 2689, 2690, 0, 0, 0, 2689, 2689, 0, 0, 2690, 0, 2689, 0, 2689, 2690, 2690, 0, 0, 2691, 0, 2690, 2691, 2690, 0, 0, 0, 0, 2692, 0, 2691, 2692, 2686, 2688, 0, 2691, 2691, 2693, 0, 2692, 2693, 2691, 2689, 2691, 2692, 2692, 2694, 0, 2693, 2694, 2692, 0, 2692, 2693, 2693, 0, 0, 2694, 0, 2693, 0, 2693, 2694, 2694, 2695, 0, 2690, 2695, 2694, 0, 2694, 0, 0, 2691, 2696, 2695, 0, 2696, 0, 0, 2695, 2695, 2692, 0, 2697, 2696, 2695, 2697, 2695, 0, 2696, 2696, 0, 0, 0, 2697, 2696, 0, 2696, 0, 2697, 2697, 2698, 0, 2693, 2698, 2697, 0, 2697, 0, 0, 2694, 2699, 2698, 0, 2699, 2695, 0, 2698, 2698, 0, 0, 0, 2699, 2698, 0, 2698, 0, 2699, 2699, 2700, 0, 0, 2700, 2699, 0, 2699, 2696, 2697, 2701, 0, 2700, 2701, 0, 0, 0, 2700, 2700, 0, 0, 2701, 0, 2700, 0, 2700, 2701, 2701, 2703, 2703, 2703, 2703, 2701, 0, 2701, 0, 2698, 2699, 0, 2703, 3090, 3090, 3090, 3090, 2707, 2707, 0, 2707, 0, 0, 2703, 3090, 2703, 0, 2700, 2707, 2708, 2708, 0, 2708, 2707, 2707, 3090, 0, 2701, 0, 2707, 2708, 2707, 0, 0, 0, 2708, 2708, 3091, 3091, 3091, 3091, 2708, 0, 2708, 0, 0, 2709, 2709, 3091, 2709, 0, 0, 0, 0, 0, 2710, 2710, 2709, 2710, 3091, 0, 2707, 2709, 2709, 0, 0, 2710, 0, 2709, 0, 2709, 2710, 2710, 2711, 2711, 0, 2711, 2710, 0, 2710, 0, 0, 2713, 2713, 2711, 2713, 0, 0, 2708, 2711, 2711, 2712, 2712, 2713, 2712, 2711, 0, 2711, 2713, 2713, 2709, 0, 2712, 0, 2713, 0, 2713, 2712, 2712, 2714, 2714, 0, 2714, 2712, 0, 2712, 3107, 3107, 3107, 3107, 2714, 0, 0, 0, 2710, 2714, 2714, 3107, 0, 2715, 2715, 2714, 2715, 2714, 2711, 0, 0, 0, 3107, 0, 2715, 0, 0, 2712, 0, 2715, 2715, 0, 0, 2713, 0, 2715, 0, 2715, 2716, 2716, 0, 2716, 2738, 2738, 2738, 2738, 0, 2714, 0, 2716, 0, 0, 0, 0, 2716, 2716, 0, 0, 2717, 2717, 2716, 2717, 2716, 0, 2738, 0, 2738, 2715, 0, 2717, 2718, 2718, 0, 2718, 2717, 2717, 0, 0, 0, 0, 2717, 2718, 2717, 0, 0, 0, 2718, 2718, 0, 0, 2719, 2719, 2718, 2719, 2718, 2738, 0, 0, 0, 0, 0, 2719, 0, 0, 0, 2716, 2719, 2719, 0, 0, 0, 0, 2719, 0, 2719, 2720, 2720, 0, 2720, 2721, 2721, 2717, 2721, 0, 2718, 0, 2720, 0, 0, 0, 2721, 2720, 2720, 0, 0, 2721, 2721, 2720, 0, 2720, 0, 2721, 0, 2721, 2722, 2722, 0, 2722, 0, 2739, 2739, 2739, 2739, 2719, 0, 2722, 2773, 2773, 2773, 2773, 2722, 2722, 0, 0, 0, 0, 2722, 2773, 2722, 2720, 0, 2739, 2721, 2739, 0, 0, 0, 0, 2773, 0, 2773, 0, 2774, 2774, 2774, 2774, 2775, 2775, 2775, 2775, 0, 0, 0, 2774, 0, 0, 0, 2775, 2722, 0, 0, 0, 0, 2739, 2774, 0, 2774, 0, 2775, 0, 2775, 2782, 2782, 2782, 2782, 0, 2783, 2783, 2783, 2783, 0, 0, 2782, 2782, 0, 0, 2782, 2783, 2783, 0, 0, 2783, 0, 2782, 2782, 2782, 2774, 0, 2783, 2783, 3118, 3118, 3118, 3118, 0, 0, 0, 0, 0, 0, 0, 3118, 0, 2775, 0, 0, 0, 0, 2782, 0, 0, 0, 3118, 2783, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2793, 2793, 2793, 2793, 0, 2794, 2794, 2794, 2794, 0, 0, 2793, 2793, 0, 0, 2793, 2794, 2794, 0, 0, 2794, 0, 2793, 2793, 2793, 0, 0, 2794, 2794, 0, 0, 2795, 2795, 2795, 2795, 0, 0, 0, 0, 0, 0, 0, 2795, 2795, 0, 2821, 2795, 2793, 2821, 0, 0, 0, 2794, 2795, 2795, 2795, 2821, 2822, 0, 0, 2822, 2821, 2821, 0, 0, 0, 0, 2821, 2822, 2821, 0, 0, 0, 2822, 2822, 0, 0, 2823, 2795, 2822, 2823, 2822, 0, 2795, 0, 0, 2824, 0, 2823, 2824, 0, 0, 0, 2823, 2823, 2825, 0, 2824, 2825, 2823, 0, 2823, 2824, 2824, 2826, 0, 2825, 2826, 2824, 2822, 2824, 2825, 2825, 2821, 0, 2826, 0, 2825, 0, 2825, 2826, 2826, 0, 0, 2827, 0, 2826, 2827, 2826, 0, 0, 2823, 0, 2828, 0, 2827, 2828, 0, 0, 2824, 2827, 2827, 2830, 2830, 2828, 2830, 2827, 0, 2827, 2828, 2828, 0, 0, 2830, 2826, 2828, 0, 2828, 2830, 2830, 0, 0, 2825, 0, 2830, 0, 2830, 2831, 2831, 0, 2831, 0, 0, 0, 0, 0, 2832, 2832, 2831, 2832, 0, 0, 2827, 2831, 2831, 0, 0, 2832, 0, 2831, 0, 2831, 2832, 2832, 2833, 2833, 2830, 2833, 2832, 0, 2832, 0, 2828, 0, 0, 2833, 2859, 2859, 2859, 2859, 2833, 2833, 0, 0, 0, 0, 2833, 2859, 2833, 0, 2831, 2860, 2860, 2860, 2860, 0, 0, 0, 2859, 0, 2859, 0, 2860, 0, 2832, 2864, 2864, 2864, 2864, 0, 0, 0, 0, 2860, 0, 2860, 2864, 2864, 0, 0, 2864, 0, 0, 2870, 2870, 2870, 2870, 2864, 2864, 2864, 0, 0, 0, 2833, 2870, 2870, 0, 0, 2870, 0, 0, 2860, 0, 2859, 0, 2870, 2870, 2870, 3068, 3068, 3068, 3068, 2864, 2871, 2871, 2871, 2871, 0, 0, 3068, 3068, 0, 0, 3068, 2871, 2871, 2895, 0, 2871, 2895, 2870, 3068, 3068, 2940, 0, 2871, 2871, 2895, 0, 2940, 2940, 0, 2895, 2895, 2940, 2940, 2940, 0, 2895, 0, 2895, 0, 0, 0, 2940, 3068, 0, 0, 0, 0, 2871, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 0, 0, 0, 2874, 2874, 2874, 2874, 2874, 2874, 2888, 2888, 2888, 2888, 0, 2895, 0, 0, 0, 0, 2896, 2888, 2888, 2896, 2940, 2888, 2940, 2874, 2874, 2874, 2874, 2896, 2888, 2888, 2888, 0, 2896, 2896, 0, 0, 0, 0, 2896, 0, 2896, 0, 0, 0, 0, 0, 0, 0, 2897, 0, 0, 2897, 0, 2888, 2874, 2874, 2874, 2874, 2874, 2897, 2898, 0, 0, 2898, 2897, 2897, 2896, 0, 0, 0, 2897, 2898, 2897, 0, 0, 2899, 2898, 2898, 2899, 0, 0, 0, 2898, 0, 2898, 0, 2899, 2900, 2900, 0, 2900, 2899, 2899, 0, 0, 0, 0, 2899, 2900, 2899, 0, 0, 2897, 2900, 2900, 2920, 2920, 2920, 2920, 2900, 0, 2900, 2921, 2921, 2921, 2921, 2920, 0, 0, 0, 0, 0, 0, 2921, 0, 0, 0, 2920, 2898, 2920, 2929, 2929, 2929, 2929, 2921, 0, 2921, 0, 0, 0, 0, 2929, 2929, 0, 0, 2929, 2930, 2930, 2930, 2930, 2899, 0, 2929, 2929, 2929, 2920, 0, 2930, 2930, 0, 0, 2930, 2900, 2937, 2937, 2937, 2937, 0, 2930, 2930, 0, 0, 0, 0, 2937, 2937, 0, 2929, 2937, 0, 0, 2921, 0, 0, 0, 2937, 2937, 2937, 0, 2938, 2938, 2938, 2938, 2930, 0, 0, 0, 0, 0, 0, 2938, 2938, 2963, 0, 2938, 2963, 0, 0, 0, 0, 2937, 2938, 2938, 2963, 0, 0, 0, 0, 2963, 2963, 0, 0, 0, 0, 2963, 0, 2963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2938, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2941, 2942, 0, 0, 0, 0, 0, 2942, 2942, 0, 0, 0, 2942, 2942, 2942, 2955, 2955, 2955, 2955, 0, 0, 0, 2942, 0, 0, 2964, 2955, 2955, 2964, 2965, 2955, 0, 2965, 0, 0, 0, 2964, 2955, 2955, 2955, 2965, 2964, 2964, 0, 0, 2965, 2965, 2964, 0, 2964, 0, 2965, 0, 2965, 2966, 0, 0, 2966, 0, 0, 0, 0, 2955, 0, 2967, 2966, 0, 2967, 0, 0, 2966, 2966, 2942, 0, 2942, 2967, 2966, 0, 2966, 0, 2967, 2967, 0, 0, 2968, 2968, 2967, 2968, 2967, 0, 0, 0, 0, 2964, 0, 2968, 0, 0, 2965, 0, 2968, 2968, 2984, 2984, 2984, 2984, 2968, 0, 2968, 2985, 2985, 2985, 2985, 2984, 0, 0, 0, 0, 2967, 3015, 2985, 0, 3015, 2966, 2984, 0, 2984, 0, 0, 0, 3015, 2985, 0, 2985, 0, 3015, 3015, 0, 2968, 0, 0, 3015, 0, 3015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3015, 0, 0, 2984, 0, 2985, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 3014, 0, 0, 3014, 3016, 0, 0, 3016, 0, 0, 0, 3014, 0, 0, 0, 3016, 3014, 3014, 0, 0, 3016, 3016, 3014, 0, 3014, 0, 3016, 0, 3016, 3017, 3017, 0, 3017, 0, 0, 0, 3031, 3031, 3031, 3031, 3017, 0, 0, 0, 0, 3017, 3017, 3031, 0, 0, 0, 3017, 0, 3017, 0, 0, 0, 3016, 3031, 0, 3031, 3029, 3029, 3029, 3029, 0, 0, 0, 0, 3014, 0, 0, 3029, 3029, 0, 0, 3029, 3032, 3032, 3032, 3032, 0, 3017, 3029, 3029, 3029, 0, 3049, 3032, 0, 3049, 0, 0, 0, 0, 0, 0, 0, 3049, 3032, 3031, 3032, 0, 3049, 3049, 0, 0, 0, 3029, 3049, 0, 3049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3049, 0, 0, 0, 0, 3032, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3036, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3040, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3042, 3059, 3059, 3059, 3059, 3069, 3069, 3069, 3069, 0, 3082, 0, 3059, 3082, 0, 0, 3069, 3069, 0, 0, 3069, 3082, 0, 3059, 0, 3059, 3082, 3082, 3069, 0, 0, 0, 3082, 0, 3082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3069, 0, 0, 0, 0, 0, 0, 0, 3082, 0, 0, 0, 0, 0, 0, 0, 3059, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3060, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3065, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3066, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3071, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3096, 3096, 0, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3097, 3097, 3097, 3097, 0, 3098, 3098, 3098, 3098, 0, 0, 3097, 3097, 0, 0, 3097, 3098, 3098, 0, 0, 3098, 0, 3097, 3097, 3097, 0, 0, 3098, 3098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3097, 0, 0, 0, 0, 3098, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3111, 3117, 0, 0, 3117, 0, 0, 0, 0, 0, 0, 0, 3117, 0, 0, 0, 0, 3117, 3117, 3122, 3122, 3122, 3122, 3117, 0, 3117, 3123, 3123, 3123, 3123, 3122, 3122, 0, 0, 3122, 0, 3133, 3123, 3123, 3133, 0, 3123, 3122, 3122, 0, 0, 0, 3133, 0, 3123, 0, 0, 3133, 3133, 0, 0, 0, 0, 3133, 0, 3133, 0, 0, 0, 0, 0, 3122, 0, 0, 3117, 0, 0, 0, 3123, 3157, 3157, 3157, 3157, 0, 0, 0, 0, 0, 0, 0, 3157, 3157, 0, 0, 3157, 0, 0, 0, 0, 0, 0, 3157, 3157, 3157, 0, 0, 0, 0, 0, 0, 3133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3157, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3162, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3164, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3165, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3167, 3168, 3168, 0, 0, 3168, 0, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 0, 3168, 3168, 3168, 3168, 3168, 3168, 3169, 3169, 0, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3170, 3170, 0, 0, 3170, 3170, 3170, 0, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 3170, 0, 3170, 3170, 3170, 3170, 3170, 3170, 3171, 3171, 0, 3171, 3171, 0, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3171, 3172, 3172, 0, 3172, 3172, 3172, 3172, 3172, 3172, 3172, 3172, 3172, 3172, 3172, 0, 3172, 3172, 3172, 3172, 3172, 3172, 3172, 3172, 0, 3172, 3172, 3172, 3172, 3172, 3172, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3173, 3174, 3174, 0, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 0, 3174, 3174, 3174, 0, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3174, 3175, 3175, 0, 0, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3175, 3176, 3176, 0, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 0, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3176, 3177, 3177, 3177, 3177, 0, 3177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3177, 0, 0, 0, 3177, 3177, 0, 0, 0, 3177, 0, 0, 3177, 3177, 3178, 3178, 0, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3178, 3179, 3179, 3179, 3179, 0, 0, 0, 3179, 3179, 0, 3179, 0, 0, 0, 3179, 3179, 3179, 3179, 0, 3179, 3179, 0, 0, 3179, 3179, 0, 0, 0, 3179, 3180, 3180, 3180, 3180, 0, 3180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3180, 3180, 0, 0, 0, 3180, 0, 0, 0, 3180, 3182, 0, 0, 3182, 0, 0, 0, 3182, 0, 0, 0, 3182, 3182, 0, 3182, 3182, 0, 3182, 0, 3182, 3182, 0, 0, 0, 3182, 0, 0, 0, 3182, 3183, 3183, 3183, 3183, 0, 3183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3183, 0, 0, 0, 3183, 3183, 0, 0, 0, 3183, 0, 0, 3183, 3183, 3184, 3184, 3184, 3184, 0, 0, 0, 3184, 0, 0, 0, 0, 0, 0, 3184, 3184, 0, 3184, 0, 3184, 3184, 0, 0, 0, 3184, 0, 0, 0, 3184, 3185, 3185, 3185, 3185, 0, 3185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3185, 3185, 0, 0, 0, 3185, 0, 0, 0, 3185, 3187, 3187, 0, 3187, 0, 0, 0, 3187, 0, 0, 0, 3187, 3187, 0, 3187, 3187, 0, 3187, 0, 3187, 3187, 0, 0, 0, 3187, 0, 0, 0, 3187, 3189, 0, 0, 0, 0, 3189, 3189, 0, 0, 0, 3189, 0, 0, 0, 3189, 3191, 3191, 0, 0, 0, 3191, 3191, 0, 0, 0, 3191, 0, 0, 0, 3191, 3193, 0, 3193, 0, 0, 0, 0, 3193, 3193, 0, 0, 0, 3193, 0, 0, 0, 3193, 3195, 0, 0, 0, 0, 3195, 3195, 0, 0, 0, 3195, 0, 0, 0, 3195, 3197, 0, 0, 0, 0, 3197, 3197, 0, 0, 0, 3197, 0, 0, 0, 3197, 3198, 3198, 0, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3198, 3199, 3199, 3199, 3199, 0, 3199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3199, 0, 0, 0, 3199, 3199, 0, 0, 0, 3199, 0, 0, 3199, 3199, 3200, 3200, 3200, 3200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3200, 3200, 0, 3200, 0, 3200, 3200, 0, 0, 0, 3200, 0, 0, 0, 3200, 3201, 3201, 3201, 3201, 0, 3201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3201, 3201, 0, 0, 0, 3201, 0, 0, 0, 3201, 3203, 0, 0, 0, 0, 3203, 3203, 0, 0, 0, 3203, 0, 0, 0, 3203, 3205, 0, 0, 0, 0, 3205, 3205, 0, 0, 0, 3205, 0, 0, 0, 3205, 3207, 0, 0, 3207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3207, 3207, 0, 0, 0, 3207, 3207, 0, 0, 0, 3207, 0, 0, 0, 3207, 3209, 0, 0, 0, 0, 3209, 3209, 0, 0, 0, 3209, 0, 0, 0, 3209, 3211, 3211, 0, 3211, 0, 3211, 3211, 0, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3212, 0, 0, 0, 0, 3212, 3212, 0, 0, 0, 3212, 0, 0, 0, 3212, 3214, 3214, 3214, 3214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3214, 3214, 0, 0, 0, 3214, 3214, 0, 0, 3214, 3214, 0, 0, 0, 3214, 3215, 3215, 0, 3215, 3215, 0, 0, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 3215, 0, 3215, 3215, 3215, 3215, 3215, 3215, 3217, 3217, 0, 3217, 3217, 0, 0, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 3217, 0, 3217, 3217, 3217, 3217, 3217, 3217, 3218, 3218, 0, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3218, 3220, 0, 0, 0, 0, 3220, 3220, 0, 0, 0, 3220, 0, 0, 0, 3220, 3222, 3222, 0, 0, 0, 3222, 3222, 0, 0, 0, 3222, 0, 0, 0, 3222, 3223, 3223, 0, 0, 3223, 0, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 3223, 0, 3223, 3223, 3223, 3223, 3223, 3223, 3224, 3224, 0, 0, 3224, 3224, 3224, 0, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 3224, 0, 3224, 3224, 3224, 3224, 3224, 3224, 3225, 3225, 0, 3225, 3225, 0, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3226, 3226, 0, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 0, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 0, 3226, 3226, 3226, 3226, 3226, 3226, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3227, 3228, 3228, 0, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 0, 3228, 3228, 3228, 0, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3228, 3229, 3229, 0, 0, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3229, 3230, 3230, 0, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 0, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3232, 3232, 3232, 3232, 0, 0, 0, 3232, 3232, 0, 3232, 0, 0, 0, 3232, 3232, 3232, 3232, 0, 3232, 3232, 0, 0, 3232, 3232, 0, 0, 0, 3232, 3233, 3233, 3233, 3233, 0, 3233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3233, 3233, 0, 0, 0, 3233, 0, 0, 0, 3233, 3234, 3234, 0, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3235, 3235, 3235, 3235, 0, 3235, 0, 0, 3235, 3235, 0, 0, 0, 0, 0, 3235, 0, 0, 0, 3235, 3235, 0, 0, 0, 3235, 0, 0, 3235, 3235, 3237, 3237, 0, 3237, 3237, 0, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 0, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 3237, 0, 3237, 3237, 3237, 3238, 3238, 3238, 3238, 0, 3238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3238, 3238, 0, 0, 0, 3238, 0, 0, 0, 3238, 3239, 3239, 3239, 3239, 0, 0, 0, 3239, 3239, 0, 3239, 0, 0, 0, 3239, 0, 3239, 3239, 0, 3239, 3239, 0, 0, 3239, 3239, 0, 0, 0, 3239, 3240, 0, 0, 3240, 0, 0, 0, 3240, 0, 0, 0, 3240, 3240, 0, 3240, 3240, 0, 3240, 0, 3240, 3240, 0, 0, 0, 3240, 0, 0, 0, 3240, 3241, 0, 0, 3241, 0, 3241, 0, 0, 3241, 3241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3241, 3241, 0, 0, 0, 3241, 0, 0, 0, 3241, 3242, 3242, 0, 3242, 3242, 3242, 3242, 3242, 0, 0, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 0, 3242, 3242, 3242, 0, 3242, 0, 3242, 0, 0, 3242, 3242, 3244, 3244, 3244, 3244, 0, 0, 0, 3244, 0, 0, 0, 0, 0, 0, 3244, 3244, 0, 3244, 0, 3244, 3244, 0, 0, 0, 3244, 0, 0, 0, 3244, 3245, 3245, 3245, 3245, 0, 3245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3245, 3245, 0, 0, 0, 3245, 0, 0, 0, 3245, 3246, 3246, 0, 3246, 3246, 0, 3246, 3246, 0, 0, 3246, 3246, 3246, 3246, 0, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 3246, 0, 0, 3246, 3246, 3247, 3247, 3247, 3247, 0, 3247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3247, 3247, 0, 0, 0, 3247, 0, 0, 0, 3247, 3248, 3248, 3248, 3248, 0, 0, 0, 3248, 0, 0, 0, 0, 0, 0, 3248, 0, 0, 0, 0, 3248, 3248, 0, 0, 0, 3248, 0, 0, 0, 3248, 3249, 3249, 0, 3249, 0, 0, 0, 3249, 0, 0, 0, 3249, 3249, 0, 3249, 3249, 0, 3249, 0, 3249, 3249, 0, 0, 0, 3249, 0, 0, 0, 3249, 3250, 0, 0, 0, 0, 3250, 3250, 0, 0, 0, 3250, 0, 0, 0, 3250, 3251, 3251, 0, 0, 0, 3251, 3251, 0, 0, 0, 3251, 0, 0, 0, 3251, 3252, 0, 3252, 0, 0, 0, 0, 3252, 3252, 0, 0, 0, 3252, 0, 0, 0, 3252, 3253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3253, 3253, 0, 0, 0, 3253, 0, 0, 0, 3253, 3254, 0, 0, 0, 0, 3254, 3254, 0, 0, 0, 3254, 0, 0, 0, 3254, 3255, 0, 0, 0, 0, 3255, 3255, 0, 0, 0, 3255, 0, 0, 0, 3255, 3256, 3256, 0, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3258, 3258, 3258, 3258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3258, 3258, 0, 3258, 0, 3258, 3258, 0, 0, 0, 3258, 0, 0, 0, 3258, 3259, 3259, 3259, 3259, 0, 3259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3259, 3259, 0, 0, 0, 3259, 0, 0, 0, 3259, 3260, 3260, 0, 3260, 3260, 0, 3260, 3260, 3260, 3260, 3260, 3260, 0, 0, 0, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 0, 3260, 3260, 3260, 3261, 0, 0, 3261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3261, 0, 0, 3261, 0, 3261, 3261, 0, 0, 0, 3261, 0, 0, 0, 3261, 3262, 0, 0, 0, 0, 3262, 3262, 0, 0, 0, 3262, 0, 0, 0, 3262, 3263, 0, 0, 0, 0, 3263, 3263, 0, 0, 0, 3263, 0, 0, 0, 3263, 3264, 0, 0, 3264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3264, 3264, 0, 0, 0, 3264, 3264, 0, 0, 0, 3264, 0, 0, 0, 3264, 3265, 0, 0, 0, 0, 3265, 3265, 0, 0, 0, 3265, 0, 0, 0, 3265, 3266, 0, 0, 0, 0, 3266, 3266, 0, 0, 0, 3266, 0, 0, 0, 3266, 3267, 3267, 0, 3267, 0, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 0, 3267, 3267, 3267, 3267, 3267, 3267, 3268, 3268, 0, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3268, 3269, 3269, 3269, 3269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3269, 3269, 0, 0, 0, 3269, 3269, 0, 0, 3269, 3269, 0, 0, 0, 3269, 3270, 3270, 0, 3270, 3270, 0, 0, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 3270, 0, 3270, 3270, 3270, 3270, 3270, 3270, 3271, 0, 0, 0, 0, 3271, 3271, 0, 0, 0, 3271, 0, 0, 0, 3271, 3272, 3272, 0, 3272, 3272, 0, 0, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 0, 3272, 3272, 3272, 3272, 3272, 3272, 3273, 0, 0, 0, 0, 3273, 3273, 0, 0, 0, 3273, 0, 0, 0, 3273, 3274, 3274, 0, 0, 0, 3274, 3274, 0, 0, 0, 3274, 0, 0, 0, 3274, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 0, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3276, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 0, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3277, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3278, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3281, 3281, 0, 0, 3281, 0, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 3281, 0, 3281, 3281, 3281, 3281, 3281, 3281, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3282, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3284, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3285, 3286, 3286, 0, 0, 3286, 3286, 3286, 0, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 0, 3286, 3286, 3286, 3286, 3286, 3286, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3287, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3289, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3290, 3291, 3291, 0, 3291, 3291, 0, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3292, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3297, 3297, 0, 0, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3300, 3301, 3301, 0, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 0, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3302, 3303, 3303, 3303, 3303, 0, 0, 0, 0, 3303, 0, 3303, 0, 0, 0, 3303, 3303, 3303, 3303, 0, 3303, 3303, 0, 0, 3303, 3303, 0, 0, 0, 3303, 3304, 3304, 3304, 3304, 0, 0, 0, 3304, 3304, 0, 3304, 0, 0, 0, 3304, 3304, 3304, 3304, 0, 3304, 3304, 0, 0, 3304, 3304, 0, 0, 0, 3304, 3305, 3305, 3305, 3305, 0, 3305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3305, 3305, 0, 0, 0, 3305, 0, 0, 0, 3305, 3306, 3306, 3306, 3306, 0, 0, 0, 0, 3306, 0, 3306, 0, 0, 0, 3306, 0, 3306, 3306, 0, 3306, 3306, 0, 0, 3306, 3306, 0, 0, 0, 3306, 3307, 3307, 3307, 3307, 0, 3307, 0, 0, 3307, 3307, 0, 0, 0, 0, 0, 3307, 0, 0, 0, 3307, 3307, 0, 0, 0, 3307, 0, 0, 3307, 3307, 3308, 3308, 3308, 3308, 0, 3308, 0, 0, 3308, 0, 0, 0, 0, 0, 3308, 3308, 0, 0, 0, 3308, 3308, 0, 0, 0, 3308, 0, 0, 3308, 3308, 3309, 3309, 3309, 3309, 0, 3309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3309, 3309, 0, 0, 0, 3309, 0, 0, 0, 3309, 3311, 3311, 3311, 3311, 0, 3311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3311, 0, 0, 0, 3311, 3311, 0, 0, 0, 3311, 0, 0, 3311, 3311, 3312, 3312, 3312, 3312, 0, 3312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3312, 0, 0, 0, 3312, 3312, 0, 0, 0, 3312, 0, 0, 3312, 3312, 3313, 3313, 0, 3313, 3313, 0, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 0, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 0, 3313, 3313, 3313, 3314, 3314, 0, 3314, 3314, 0, 3314, 3314, 3314, 3314, 3314, 3314, 0, 0, 0, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 3314, 0, 3314, 3314, 3314, 3315, 3315, 0, 3315, 3315, 0, 3315, 3315, 0, 0, 3315, 3315, 3315, 3315, 0, 3315, 3315, 3315, 3315, 3315, 3315, 3315, 3315, 3315, 3315, 3315, 0, 0, 3315, 3315, 3316, 3316, 3316, 3316, 0, 0, 0, 3316, 3316, 0, 3316, 0, 0, 0, 3316, 0, 3316, 3316, 0, 3316, 3316, 0, 0, 3316, 3316, 0, 0, 0, 3316, 3317, 0, 0, 3317, 0, 0, 0, 3317, 0, 0, 0, 3317, 3317, 0, 3317, 3317, 0, 3317, 0, 3317, 3317, 0, 0, 0, 3317, 0, 0, 0, 3317, 3318, 0, 0, 3318, 0, 3318, 0, 0, 3318, 3318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3318, 3318, 0, 0, 0, 3318, 0, 0, 0, 3318, 3319, 0, 0, 3319, 0, 3319, 0, 0, 3319, 0, 0, 0, 0, 0, 3319, 0, 0, 0, 0, 3319, 3319, 0, 0, 0, 3319, 0, 0, 0, 3319, 3320, 0, 0, 3320, 0, 3320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3320, 3320, 0, 0, 0, 3320, 0, 0, 0, 3320, 3321, 3321, 0, 3321, 3321, 3321, 3321, 3321, 0, 0, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 0, 3321, 3321, 3321, 0, 3321, 0, 3321, 0, 0, 3321, 3321, 3322, 3322, 3322, 3322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3322, 3322, 0, 0, 0, 3322, 3322, 0, 0, 0, 3322, 0, 0, 0, 3322, 3323, 3323, 3323, 3323, 0, 3323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3323, 3323, 0, 0, 0, 3323, 0, 0, 0, 3323, 3324, 0, 0, 3324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3324, 0, 0, 0, 0, 3324, 3324, 0, 0, 0, 3324, 0, 0, 0, 3324, 3325, 3325, 3325, 3325, 0, 3325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3325, 0, 0, 0, 3325, 3325, 0, 0, 0, 3325, 0, 0, 3325, 3325, 3326, 3326, 3326, 3326, 0, 3326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3326, 0, 0, 0, 3326, 3326, 0, 0, 0, 3326, 0, 0, 3326, 3326, 3327, 3327, 0, 3327, 3327, 0, 3327, 3327, 0, 0, 3327, 3327, 3327, 3327, 0, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 3327, 0, 0, 3327, 3327, 3328, 3328, 3328, 3328, 0, 0, 0, 3328, 0, 0, 0, 0, 0, 0, 3328, 0, 0, 0, 0, 3328, 3328, 0, 0, 0, 3328, 0, 0, 0, 3328, 3329, 3329, 0, 3329, 0, 0, 0, 3329, 0, 0, 0, 3329, 3329, 0, 3329, 3329, 0, 3329, 0, 3329, 3329, 0, 0, 0, 3329, 0, 0, 0, 3329, 3330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3330, 3330, 0, 0, 0, 3330, 0, 0, 0, 3330, 3331, 3331, 0, 0, 0, 3331, 3331, 0, 0, 0, 3331, 0, 0, 0, 3331, 3333, 0, 3333, 0, 0, 0, 0, 3333, 3333, 0, 0, 0, 3333, 0, 0, 0, 3333, 3334, 0, 0, 0, 0, 3334, 3334, 0, 0, 0, 3334, 0, 0, 0, 3334, 3335, 0, 0, 0, 0, 3335, 3335, 0, 0, 0, 3335, 0, 0, 0, 3335, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3338, 3338, 0, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3339, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3340, 3341, 3341, 3341, 3341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3341, 3341, 0, 3341, 0, 3341, 3341, 0, 0, 0, 3341, 0, 0, 0, 3341, 3342, 3342, 3342, 3342, 0, 3342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3342, 0, 0, 0, 3342, 3342, 0, 0, 0, 3342, 0, 0, 3342, 3342, 3343, 3343, 3343, 3343, 0, 3343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3343, 0, 0, 0, 3343, 3343, 0, 0, 0, 3343, 0, 0, 3343, 3343, 3344, 3344, 3344, 3344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3344, 3344, 0, 3344, 0, 3344, 3344, 0, 0, 0, 3344, 0, 0, 0, 3344, 3345, 3345, 0, 3345, 3345, 0, 3345, 3345, 3345, 3345, 3345, 3345, 0, 0, 0, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 0, 3345, 3345, 3345, 3346, 0, 0, 3346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3346, 0, 0, 3346, 0, 3346, 3346, 0, 0, 0, 3346, 0, 0, 0, 3346, 3347, 0, 0, 0, 0, 3347, 3347, 0, 0, 0, 3347, 0, 0, 0, 3347, 3348, 0, 0, 0, 0, 3348, 3348, 0, 0, 0, 3348, 0, 0, 0, 3348, 3349, 0, 0, 0, 0, 3349, 3349, 0, 0, 0, 3349, 0, 0, 0, 3349, 3350, 3350, 0, 3350, 0, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 0, 3350, 3350, 3350, 3350, 3350, 3350, 3351, 0, 0, 0, 0, 3351, 3351, 0, 0, 0, 3351, 0, 0, 0, 3351, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3353, 3354, 3354, 0, 3354, 3354, 0, 0, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 3354, 0, 3354, 3354, 3354, 3354, 3354, 3354, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3357, 0, 0, 0, 0, 3357, 3357, 0, 0, 0, 3357, 0, 0, 0, 3357, 3358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3358, 3358, 0, 0, 0, 3358, 0, 0, 0, 3358, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 0, 3359, 3359, 3359, 0, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3359, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3361, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 0, 3362, 3362, 3362, 0, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3362, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3366, 3366, 0, 0, 3366, 0, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 0, 3366, 3366, 3366, 3366, 3366, 3366, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3369, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3370, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3371, 3372, 3372, 0, 0, 3372, 3372, 3372, 0, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 0, 3372, 3372, 3372, 3372, 3372, 3372, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3373, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3378, 3378, 0, 3378, 3378, 0, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3379, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3381, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3382, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3383, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3384, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3387, 3387, 0, 0, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3390, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3391, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3393, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3394, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3396, 3397, 3397, 3397, 3397, 0, 0, 0, 0, 3397, 0, 3397, 0, 0, 0, 3397, 3397, 3397, 3397, 0, 3397, 3397, 0, 0, 3397, 3397, 0, 0, 0, 3397, 3398, 3398, 3398, 3398, 0, 0, 0, 3398, 3398, 0, 3398, 0, 0, 0, 3398, 3398, 3398, 3398, 0, 3398, 3398, 0, 0, 3398, 3398, 0, 0, 0, 3398, 3399, 3399, 3399, 3399, 0, 0, 0, 0, 3399, 0, 3399, 0, 0, 0, 3399, 0, 3399, 3399, 0, 3399, 3399, 0, 0, 3399, 3399, 0, 0, 0, 3399, 3401, 3401, 3401, 3401, 0, 3401, 0, 0, 3401, 0, 0, 0, 0, 0, 3401, 3401, 0, 0, 0, 3401, 3401, 0, 0, 0, 3401, 0, 0, 3401, 3401, 3402, 3402, 3402, 3402, 0, 3402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3402, 3402, 0, 0, 0, 3402, 0, 0, 0, 3402, 3403, 3403, 3403, 3403, 0, 3403, 0, 0, 3403, 0, 0, 0, 0, 0, 3403, 3403, 0, 0, 0, 3403, 3403, 0, 0, 0, 3403, 0, 0, 3403, 3403, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 0, 3404, 3404, 3404, 3404, 0, 0, 3404, 3404, 3404, 0, 3404, 3404, 3404, 3404, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 0, 3405, 3405, 3405, 3405, 0, 0, 3405, 3405, 3405, 0, 3405, 3405, 3405, 3405, 3406, 3406, 3406, 3406, 0, 3406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3406, 0, 0, 0, 3406, 3406, 0, 0, 0, 3406, 0, 0, 3406, 3406, 3407, 3407, 3407, 3407, 0, 3407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3407, 3407, 0, 0, 0, 3407, 0, 0, 0, 3407, 3408, 3408, 0, 3408, 3408, 0, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 0, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 0, 3408, 3408, 3408, 3409, 0, 0, 3409, 0, 0, 0, 3409, 0, 0, 0, 3409, 3409, 0, 3409, 3409, 0, 3409, 0, 3409, 3409, 0, 0, 0, 3409, 0, 0, 0, 3409, 3410, 0, 0, 3410, 0, 3410, 0, 0, 3410, 0, 0, 0, 0, 0, 3410, 0, 0, 0, 0, 3410, 3410, 0, 0, 0, 3410, 0, 0, 0, 3410, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 3411, 0, 3411, 3411, 3411, 3411, 0, 0, 3411, 3411, 3411, 0, 3411, 3411, 3411, 3411, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 3412, 0, 3412, 3412, 3412, 3412, 0, 0, 3412, 3412, 3412, 0, 3412, 3412, 3412, 3412, 3413, 0, 0, 3413, 0, 3413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3413, 3413, 0, 0, 0, 3413, 0, 0, 0, 3413, 3414, 0, 0, 3414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3414, 3414, 0, 3414, 0, 3414, 3414, 0, 0, 0, 3414, 0, 0, 0, 3414, 3415, 3415, 0, 3415, 3415, 3415, 3415, 3415, 0, 0, 3415, 3415, 3415, 3415, 3415, 3415, 3415, 3415, 0, 3415, 3415, 3415, 0, 3415, 0, 3415, 0, 0, 3415, 3415, 3416, 3416, 3416, 3416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3416, 3416, 0, 0, 0, 3416, 3416, 0, 0, 0, 3416, 0, 0, 0, 3416, 3417, 0, 0, 3417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3417, 0, 0, 0, 0, 3417, 3417, 0, 0, 0, 3417, 0, 0, 0, 3417, 3418, 3418, 3418, 3418, 0, 3418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3418, 0, 0, 0, 3418, 3418, 0, 0, 0, 3418, 0, 0, 3418, 3418, 3419, 3419, 3419, 3419, 0, 3419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3419, 3419, 0, 0, 0, 3419, 0, 0, 0, 3419, 3420, 3420, 0, 3420, 0, 0, 0, 3420, 0, 0, 0, 3420, 3420, 0, 3420, 3420, 0, 3420, 0, 3420, 3420, 0, 0, 0, 3420, 0, 0, 0, 3420, 3422, 3422, 0, 0, 0, 3422, 3422, 0, 0, 0, 3422, 0, 0, 0, 3422, 3423, 3423, 0, 0, 0, 3423, 3423, 0, 0, 0, 3423, 0, 0, 0, 3423, 3424, 0, 3424, 0, 0, 0, 0, 3424, 3424, 0, 0, 0, 3424, 0, 0, 0, 3424, 3425, 0, 0, 0, 0, 3425, 3425, 0, 0, 0, 3425, 0, 0, 0, 3425, 3426, 0, 0, 0, 0, 3426, 3426, 0, 0, 0, 3426, 0, 0, 0, 3426, 3427, 3427, 0, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3429, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3433, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3435, 3435, 3435, 3435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3435, 3435, 0, 3435, 0, 3435, 3435, 0, 0, 0, 3435, 0, 0, 0, 3435, 3437, 3437, 3437, 3437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3437, 3437, 0, 3437, 0, 3437, 3437, 0, 0, 0, 3437, 0, 0, 0, 3437, 3438, 3438, 3438, 3438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3438, 3438, 0, 3438, 0, 3438, 3438, 0, 0, 0, 3438, 0, 0, 0, 3438, 3439, 0, 0, 0, 0, 3439, 3439, 0, 0, 0, 3439, 0, 0, 0, 3439, 3440, 0, 0, 3440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3440, 0, 0, 0, 0, 3440, 3440, 0, 0, 0, 3440, 0, 0, 0, 3440, 3441, 0, 0, 0, 0, 3441, 3441, 0, 0, 0, 3441, 0, 0, 0, 3441, 3442, 3442, 0, 3442, 0, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 3442, 0, 3442, 3442, 3442, 3442, 3442, 3442, 3443, 3443, 0, 3443, 3443, 0, 0, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 0, 3443, 3443, 3443, 3443, 3443, 3443, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3447, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3449, 0, 0, 0, 0, 3449, 3449, 0, 0, 0, 3449, 0, 0, 0, 3449, 3451, 3451, 0, 0, 0, 3451, 3451, 0, 0, 0, 3451, 0, 0, 0, 3451, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3453, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3455, 3456, 3456, 0, 0, 3456, 0, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 0, 3456, 3456, 3456, 3456, 3456, 3456, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3459, 3459, 0, 0, 3459, 3459, 3459, 0, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 3459, 0, 3459, 3459, 3459, 3459, 3459, 3459, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3461, 3462, 3462, 0, 3462, 3462, 0, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3463, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3465, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3466, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3467, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3468, 3469, 3469, 0, 0, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3469, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3470, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3471, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3473, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3474, 3475, 3475, 3475, 3475, 0, 0, 0, 3475, 3475, 0, 3475, 3475, 3475, 0, 3475, 3475, 3475, 3475, 0, 3475, 3475, 0, 0, 3475, 3475, 0, 0, 0, 3475, 3476, 3476, 3476, 3476, 0, 3476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3476, 0, 0, 0, 3476, 3476, 0, 0, 0, 3476, 0, 0, 3476, 3476, 3477, 3477, 3477, 3477, 0, 3477, 0, 0, 3477, 0, 0, 0, 0, 0, 3477, 3477, 0, 0, 0, 3477, 3477, 0, 0, 0, 3477, 0, 0, 3477, 3477, 3478, 3478, 3478, 3478, 0, 3478, 0, 0, 3478, 0, 0, 0, 0, 0, 3478, 3478, 0, 0, 0, 3478, 3478, 0, 0, 0, 3478, 0, 0, 3478, 3478, 3479, 3479, 3479, 3479, 0, 3479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3479, 3479, 0, 0, 0, 3479, 0, 0, 3479, 3479, 3480, 0, 0, 3480, 0, 0, 0, 3480, 0, 0, 0, 3480, 3480, 0, 3480, 3480, 0, 3480, 0, 3480, 3480, 0, 0, 0, 3480, 0, 0, 0, 3480, 3481, 0, 0, 3481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3481, 3481, 0, 3481, 0, 3481, 3481, 0, 0, 0, 3481, 0, 0, 0, 3481, 3482, 3482, 3482, 3482, 0, 3482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3482, 3482, 0, 0, 0, 3482, 0, 0, 3482, 3482, 3483, 3483, 0, 3483, 0, 0, 0, 3483, 0, 0, 0, 3483, 3483, 0, 3483, 3483, 0, 3483, 0, 3483, 3483, 0, 0, 0, 3483, 0, 0, 0, 3483, 3484, 3484, 0, 0, 0, 3484, 3484, 0, 0, 0, 3484, 0, 0, 0, 3484, 3485, 3485, 0, 0, 0, 3485, 3485, 0, 0, 0, 3485, 0, 0, 0, 3485, 3486, 0, 0, 0, 0, 3486, 3486, 0, 0, 0, 3486, 0, 0, 0, 3486, 3487, 0, 0, 0, 0, 3487, 3487, 0, 0, 0, 3487, 0, 0, 0, 3487, 3488, 3488, 0, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3489, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3490, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3493, 3493, 3493, 3493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3493, 3493, 0, 3493, 0, 3493, 3493, 0, 0, 0, 3493, 0, 0, 0, 3493, 3494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3494, 3494, 0, 0, 0, 3494, 0, 0, 0, 3494, 3495, 3495, 3495, 3495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3495, 3495, 0, 3495, 0, 3495, 3495, 0, 0, 0, 3495, 0, 0, 0, 3495, 3496, 3496, 3496, 3496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3496, 0, 3496, 0, 3496, 3496, 3496, 0, 0, 0, 3496, 3496, 0, 0, 3496, 3497, 0, 0, 0, 0, 3497, 3497, 0, 0, 0, 3497, 0, 0, 0, 3497, 3498, 0, 0, 0, 0, 3498, 3498, 0, 0, 0, 3498, 0, 0, 0, 3498, 3499, 3499, 0, 3499, 3499, 0, 0, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 3499, 0, 3499, 3499, 3499, 3499, 3499, 3499, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3500, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3501, 3502, 0, 0, 0, 0, 3502, 3502, 0, 0, 0, 3502, 0, 0, 0, 3502, 3503, 3503, 0, 0, 0, 3503, 3503, 0, 0, 0, 3503, 0, 0, 0, 3503, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3504, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3505, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 0, 3506, 3506, 3506, 0, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3506, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 0, 3507, 3507, 3507, 3507, 0, 0, 3507, 3507, 3507, 0, 3507, 3507, 3507, 3507, 3508, 3508, 3508, 3508, 0, 0, 0, 3508, 3508, 0, 3508, 0, 0, 0, 3508, 3508, 3508, 3508, 0, 3508, 3508, 0, 0, 3508, 3508, 0, 0, 0, 3508, 3509, 3509, 3509, 3509, 0, 3509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3509, 3509, 0, 0, 0, 3509, 0, 0, 3509, 3509, 3511, 3511, 3511, 3511, 0, 0, 0, 3511, 0, 0, 0, 0, 0, 0, 3511, 3511, 0, 3511, 0, 3511, 3511, 0, 0, 0, 3511, 0, 0, 0, 3511, 3512, 3512, 3512, 3512, 0, 3512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3512, 3512, 0, 0, 0, 3512, 0, 0, 0, 3512, 3513, 0, 0, 3513, 0, 0, 0, 3513, 0, 0, 0, 3513, 3513, 0, 3513, 3513, 0, 3513, 0, 3513, 3513, 0, 0, 0, 3513, 0, 0, 0, 3513, 3514, 3514, 3514, 3514, 0, 3514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3514, 3514, 0, 0, 0, 3514, 0, 0, 3514, 3514, 3515, 3515, 3515, 3515, 0, 0, 0, 3515, 0, 0, 0, 0, 0, 0, 3515, 3515, 0, 3515, 0, 3515, 3515, 0, 0, 0, 3515, 0, 0, 0, 3515, 3516, 3516, 3516, 3516, 0, 3516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3516, 3516, 0, 0, 0, 3516, 0, 0, 0, 3516, 3517, 3517, 0, 3517, 0, 0, 0, 3517, 0, 0, 0, 3517, 3517, 0, 3517, 3517, 0, 3517, 0, 3517, 3517, 0, 0, 0, 3517, 0, 0, 0, 3517, 3518, 3518, 0, 0, 0, 3518, 3518, 0, 0, 0, 3518, 0, 0, 0, 3518, 3519, 0, 0, 0, 0, 3519, 3519, 0, 0, 0, 3519, 0, 0, 0, 3519, 3520, 0, 0, 0, 0, 3520, 3520, 0, 0, 0, 3520, 0, 0, 0, 3520, 3522, 0, 0, 3522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3522, 3522, 0, 0, 0, 3522, 3522, 0, 0, 0, 3522, 0, 0, 0, 3522, 3523, 3523, 3523, 3523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3523, 3523, 0, 3523, 0, 3523, 3523, 0, 0, 0, 3523, 0, 0, 0, 3523, 3524, 0, 0, 0, 0, 3524, 3524, 0, 0, 0, 3524, 0, 0, 0, 3524, 3525, 0, 0, 0, 0, 3525, 3525, 0, 0, 0, 3525, 0, 0, 0, 3525, 3526, 0, 0, 0, 0, 3526, 3526, 0, 0, 0, 3526, 0, 0, 0, 3526, 3527, 0, 0, 0, 0, 3527, 3527, 0, 0, 0, 3527, 0, 0, 0, 3527, 3528, 3528, 3528, 3528, 0, 0, 0, 3528, 0, 0, 0, 0, 0, 0, 3528, 3528, 0, 3528, 0, 3528, 3528, 0, 0, 0, 3528, 0, 0, 0, 3528, 3529, 3529, 0, 3529, 3529, 0, 3529, 3529, 0, 0, 3529, 3529, 3529, 3529, 0, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3529, 0, 0, 3529, 3529, 3530, 3530, 3530, 3530, 0, 3530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3530, 3530, 0, 0, 0, 3530, 0, 0, 0, 3530, 3531, 3531, 3531, 3531, 0, 0, 0, 3531, 0, 0, 0, 0, 0, 0, 3531, 0, 0, 0, 0, 3531, 3531, 0, 0, 0, 3531, 0, 0, 0, 3531, 3532, 3532, 3532, 3532, 0, 0, 0, 3532, 0, 0, 0, 0, 0, 0, 3532, 0, 0, 0, 0, 3532, 3532, 0, 0, 0, 3532, 0, 0, 0, 3532, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 0, 3533, 3533, 3533, 3533, 0, 0, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3533, 3534, 3534, 0, 3534, 3534, 0, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 0, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 0, 3534, 3534, 3534, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 3535, 0, 3535, 3535, 3535, 3535, 0, 0, 3535, 3535, 3535, 0, 3535, 3535, 3535, 3535, 3536, 3536, 0, 3536, 3536, 0, 3536, 3536, 3536, 3536, 3536, 3536, 0, 0, 0, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 3536, 0, 3536, 3536, 3536, 3537, 3537, 0, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3537, 3538, 3538, 0, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3538, 3539, 3539, 0, 3539, 3539, 0, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 0, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 3539, 0, 3539, 3539, 3539, 3540, 3540, 0, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3540, 3541, 3541, 0, 3541, 3541, 0, 3541, 3541, 3541, 3541, 3541, 3541, 0, 0, 0, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 3541, 0, 3541, 3541, 3541, 3542, 3542, 0, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3543, 3543, 0, 3543, 3543, 0, 3543, 3543, 3543, 3543, 3543, 3543, 0, 0, 0, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 0, 3543, 3543, 3543, 3544, 3544, 0, 3544, 3544, 0, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 0, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 3544, 0, 3544, 3544, 3544, 3545, 3545, 0, 3545, 3545, 3545, 3545, 3545, 0, 0, 3545, 3545, 3545, 3545, 3545, 3545, 3545, 3545, 0, 3545, 3545, 3545, 0, 3545, 0, 3545, 0, 0, 3545, 3545, 3546, 0, 0, 3546, 0, 3546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3546, 3546, 0, 0, 0, 3546, 0, 0, 0, 3546, 3547, 0, 0, 3547, 0, 0, 0, 0, 3547, 0, 0, 0, 0, 0, 3547, 0, 0, 0, 0, 3547, 3547, 0, 0, 0, 3547, 0, 0, 0, 3547, 3548, 3548, 0, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3548, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158, 3158 } ; extern int codeYY_flex_debug; int codeYY_flex_debug = 0; static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; static char *yy_full_match; static int yy_lp; static int yy_looking_for_trail_begin = 0; static int yy_full_lp; static int *yy_full_state; #define YY_TRAILING_MASK 0x2000 #define YY_TRAILING_HEAD_MASK 0x4000 #define REJECT \ { \ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ \ yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \ (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \ yy_current_state = *(yy_state_ptr); /* restore curr. state */ \ ++(yy_lp); \ goto find_rule; \ } #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *codeYYtext; #line 1 "code.l" /****************************************************************************** * * * * Copyright (C) 1997-2011 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * * Documents produced by Doxygen are derivative works derived from the * input used in their production; they are not affected by this license. * */ #line 19 "code.l" /* * includes */ #include #include #include #include #include #include "qtbc.h" #include "entry.h" #include "doxygen.h" #include "message.h" #include "outputlist.h" #include "util.h" #include "membername.h" #include "searchindex.h" #define YY_NEVER_INTERACTIVE 1 // Toggle for some debugging info //#define DBG_CTX(x) fprintf x #define DBG_CTX(x) do { } while(0) #define CLASSBLOCK (int *)4 #define SCOPEBLOCK (int *)8 #define INNERBLOCK (int *)12 /* ----------------------------------------------------------------- * statics */ static CodeOutputInterface * g_code; static ClassSDict *g_codeClassSDict = 0; static QCString g_curClassName; static QStrList g_curClassBases; static QCString g_parmType; static QCString g_parmName; static const char * g_inputString; //!< the code fragment as text static int g_inputPosition; //!< read offset during parsing static int g_inputLines; //!< number of line in the code fragment static int g_yyLineNr; //!< current line number static bool g_needsTermination; static bool g_exampleBlock; static QCString g_exampleName; static QCString g_exampleFile; static bool g_insideTemplate = FALSE; static QCString g_type; static QCString g_name; static QCString g_args; static QCString g_classScope; static QCString g_realScope; static QStack g_scopeStack; //!< 1 if bracket starts a scope, // 2 for internal blocks static int g_anchorCount; static FileDef * g_sourceFileDef; static bool g_lineNumbers; static Definition * g_currentDefinition; static MemberDef * g_currentMemberDef; static bool g_includeCodeFragment; static const char * g_currentFontClass; static bool g_searchingForBody; static bool g_insideBody; static int g_bodyCurlyCount; static QCString g_saveName; static QCString g_saveType; static int g_bracketCount = 0; static int g_curlyCount = 0; static int g_sharpCount = 0; static bool g_inFunctionTryBlock = FALSE; static bool g_inForEachExpression = FALSE; static int g_lastTemplCastContext; static int g_lastSpecialCContext; static int g_lastStringContext; static int g_lastSkipCppContext; static int g_lastVerbStringContext; static int g_memCallContext; static int g_lastCContext; static bool g_insideObjC; static bool g_insideProtocolList; static bool g_lexInit = FALSE; static QStack g_classScopeLengthStack; // context for an Objective-C method call struct ObjCCallCtx { int id; QCString methodName; QCString objectTypeOrName; ClassDef *objectType; MemberDef *objectVar; MemberDef *method; QCString format; int lexState; int braceCount; }; // globals for objective-C method calls static ObjCCallCtx *g_currentCtx=0; static int g_currentCtxId=0; static int g_currentNameId=0; static int g_currentObjId=0; static int g_currentWordId=0; static QStack g_contextStack; static QIntDict g_contextDict; static QIntDict g_nameDict; static QIntDict g_objectDict; static QIntDict g_wordDict; static int g_braceCount=0; static void saveObjCContext(); static void restoreObjCContext(); //------------------------------------------------------------------- /*! Represents a stack of variable to class mappings as found in the * code. Each scope is enclosed in pushScope() and popScope() calls. * Variables are added by calling addVariables() and one can search * for variable using findVariable(). */ class VariableContext { public: static const ClassDef *dummyContext; class Scope : public SDict { public: Scope() : SDict(17) {} }; VariableContext() { m_scopes.setAutoDelete(TRUE); } virtual ~VariableContext() { } void pushScope() { m_scopes.append(new Scope); DBG_CTX((stderr,"** Push var context %d\n",m_scopes.count())); } void popScope() { if (m_scopes.count()>0) { DBG_CTX((stderr,"** Pop var context %d\n",m_scopes.count())); m_scopes.remove(m_scopes.count()-1); } else { DBG_CTX((stderr,"** ILLEGAL: Pop var context\n")); } } void clear() { m_scopes.clear(); m_globalScope.clear(); } void clearExceptGlobal() { DBG_CTX((stderr,"** Clear var context\n")); m_scopes.clear(); } void addVariable(const QCString &type,const QCString &name); ClassDef *findVariable(const QCString &name); int count() const { return m_scopes.count(); } private: Scope m_globalScope; QList m_scopes; }; void VariableContext::addVariable(const QCString &type,const QCString &name) { //printf("VariableContext::addVariable(%s,%s)\n",type.data(),name.data()); QCString ltype = type.simplifyWhiteSpace(); QCString lname = name.simplifyWhiteSpace(); if (ltype.left(7)=="struct ") { ltype = ltype.right(ltype.length()-7); } else if (ltype.left(6)=="union ") { ltype = ltype.right(ltype.length()-6); } if (ltype.isEmpty() || lname.isEmpty()) return; DBG_CTX((stderr,"** addVariable trying: type='%s' name='%s' g_currentDefinition=%s\n", ltype.data(),lname.data(),g_currentDefinition?g_currentDefinition->name().data():"")); Scope *scope = m_scopes.count()==0 ? &m_globalScope : m_scopes.getLast(); ClassDef *varType; int i=0; if ( (varType=g_codeClassSDict->find(ltype)) || // look for class definitions inside the code block (varType=getResolvedClass(g_currentDefinition,g_sourceFileDef,ltype)) // look for global class definitions ) { DBG_CTX((stderr,"** addVariable type='%s' name='%s'\n",ltype.data(),lname.data())); scope->append(lname,varType); // add it to a list } else if ((i=ltype.find('<'))!=-1) { // probably a template class QCString typeName(ltype.left(i)); ClassDef* newDef = 0; QCString templateArgs(ltype.right(ltype.length() - i)); if ( ( // look for class definitions inside the code block (varType=g_codeClassSDict->find(typeName)) || // otherwise look for global class definitions (varType=getResolvedClass(g_currentDefinition,g_sourceFileDef,typeName)) ) && // and it must be a template varType->templateArguments()) { newDef = varType->getVariableInstance( templateArgs ); } if (newDef) { DBG_CTX((stderr,"** addVariable type='%s' templ='%s' name='%s'\n",typeName.data(),templateArgs.data(),lname.data())); scope->append(lname, newDef); } else { // Doesn't seem to be a template. Try just the base name. addVariable(typeName,name); } } else { if (m_scopes.count()>0) // for local variables add a dummy entry so the name // is hidden to avoid false links to global variables with the same name // TODO: make this work for namespaces as well! { DBG_CTX((stderr,"** addVariable: dummy context for '%s'\n",lname.data())); scope->append(lname,dummyContext); } else { DBG_CTX((stderr,"** addVariable: not adding variable!\n")); } } } ClassDef *VariableContext::findVariable(const QCString &name) { if (name.isEmpty()) return 0; ClassDef *result = 0; //QListIterator sli(m_scopes); Scope *scope; QCString key = name; // search from inner to outer scope scope = m_scopes.last(); //for (sli.toLast();(scope=sli.current());--sli) while (scope) { result = scope->find(key); if (result) { DBG_CTX((stderr,"** findVariable(%s)=%p\n",name.data(),result)); return result; } scope = m_scopes.prev(); } // nothing found -> also try the global scope result=m_globalScope.find(name); DBG_CTX((stderr,"** findVariable(%s)=%p\n",name.data(),result)); return result; } static VariableContext g_theVarContext; const ClassDef *VariableContext::dummyContext = (ClassDef*)0x8; //------------------------------------------------------------------- class CallContext { public: struct Ctx { Ctx() : name(g_name), type(g_type), cd(0) {} QCString name; QCString type; ClassDef *cd; }; CallContext() { m_classList.append(new Ctx); m_classList.setAutoDelete(TRUE); } virtual ~CallContext() {} void setClass(ClassDef *cd) { Ctx *ctx = m_classList.getLast(); if (ctx) { DBG_CTX((stderr,"** Set call context %s (%p)\n",cd==0 ? "" : cd->name().data(),cd)); ctx->cd=cd; } } void pushScope() { m_classList.append(new Ctx); DBG_CTX((stderr,"** Push call context %d\n",m_classList.count())); } void popScope() { if (m_classList.count()>1) { DBG_CTX((stderr,"** Pop call context %d\n",m_classList.count())); Ctx *ctx = m_classList.getLast(); if (ctx) { g_name = ctx->name; g_type = ctx->type; } m_classList.removeLast(); } else { DBG_CTX((stderr,"** ILLEGAL: Pop call context\n")); } } void clear() { DBG_CTX((stderr,"** Clear call context\n")); m_classList.clear(); m_classList.append(new Ctx); } ClassDef *getClass() const { Ctx *ctx = m_classList.getLast(); if (ctx) return ctx->cd; else return 0; } private: QList m_classList; }; static CallContext g_theCallContext; //------------------------------------------------------------------- /*! add class/namespace name s to the scope */ static void pushScope(const char *s) { g_classScopeLengthStack.push(new int(g_classScope.length())); if (g_classScope.isEmpty()) { g_classScope = s; } else { g_classScope += "::"; g_classScope += s; } //printf("pushScope(%s) result: `%s'\n",s,g_classScope.data()); } /*! remove the top class/namespace name from the scope */ static void popScope() { if (!g_classScopeLengthStack.isEmpty()) { int *pLength = g_classScopeLengthStack.pop(); g_classScope.truncate(*pLength); delete pLength; } else { //err("Error: Too many end of scopes found!\n"); } //printf("popScope() result: `%s'\n",g_classScope.data()); } static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="") { if (Doxygen::searchIndex) { Doxygen::searchIndex->setCurrentDoc(name,base,anchor); } } static void addToSearchIndex(const char *text) { if (Doxygen::searchIndex) { Doxygen::searchIndex->addWord(text,FALSE); } } static void setClassScope(const QCString &name) { //printf("setClassScope(%s)\n",name.data()); QCString n=name; n=n.simplifyWhiteSpace(); int ts=n.find('<'); // start of template int te=n.findRev('>'); // end of template //printf("ts=%d te=%d\n",ts,te); if (ts!=-1 && te!=-1 && te>ts) { // remove template from scope n=n.left(ts)+n.right(n.length()-te-1); } while (!g_classScopeLengthStack.isEmpty()) { popScope(); } g_classScope.resize(0); int i; while ((i=n.find("::"))!=-1) { pushScope(n.left(i)); n = n.mid(i+2); } pushScope(n); //printf("--->New class scope `%s'\n",g_classScope.data()); } /*! start a new line of code, inserting a line number if g_sourceFileDef * is TRUE. If a definition starts at the current line, then the line * number is linked to the documentation of that definition. */ static void startCodeLine() { //if (g_currentFontClass) { g_code->endFontClass(); } if (g_sourceFileDef && g_lineNumbers) { //QCString lineNumber,lineAnchor; //lineNumber.sprintf("%05d",g_yyLineNr); //lineAnchor.sprintf("l%05d",g_yyLineNr); Definition *d = g_sourceFileDef->getSourceDefinition(g_yyLineNr); //printf("%s:startCodeLine(%d)=%p\n",g_sourceFileDef->name().data(),g_yyLineNr,d); if (!g_includeCodeFragment && d) { g_currentDefinition = d; g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr); //printf("->startCodeLine(%s)=%p\n",d->name().data(),g_currentMemberDef); g_insideBody = FALSE; g_searchingForBody = TRUE; g_realScope = d->name().copy(); g_type.resize(0); g_name.resize(0); g_args.resize(0); g_parmType.resize(0); g_parmName.resize(0); //printf("Real scope: `%s'\n",g_realScope.data()); g_bodyCurlyCount = 0; QCString lineAnchor; lineAnchor.sprintf("l%05d",g_yyLineNr); if (g_currentMemberDef) { g_code->writeLineNumber(g_currentMemberDef->getReference(), g_currentMemberDef->getOutputFileBase(), g_currentMemberDef->anchor(),g_yyLineNr); setCurrentDoc( g_currentMemberDef->qualifiedName(), g_sourceFileDef->getSourceFileBase(), lineAnchor); } else if (d->isLinkableInProject()) { g_code->writeLineNumber(d->getReference(), d->getOutputFileBase(), 0,g_yyLineNr); setCurrentDoc( d->qualifiedName(), g_sourceFileDef->getSourceFileBase(), lineAnchor); } } else { g_code->writeLineNumber(0,0,0,g_yyLineNr); } } g_code->startCodeLine(); if (g_currentFontClass) { g_code->startFontClass(g_currentFontClass); } } static void endFontClass(); static void startFontClass(const char *s); static void endCodeLine() { endFontClass(); g_code->endCodeLine(); } static void nextCodeLine() { const char * fc = g_currentFontClass; endCodeLine(); if (g_yyLineNrcodify(sp); nextCodeLine(); } else { g_code->codify(sp); done=TRUE; } } } /*! writes a link to a fragment \a text that may span multiple lines, inserting * line numbers for each line. If \a text contains newlines, the link will be * split into multiple links with the same destination, one for each line. */ static void writeMultiLineCodeLink(CodeOutputInterface &ol, const char *ref,const char *file, const char *anchor,const char *text, const char *tooltip) { bool done=FALSE; char *p=(char *)text; while (!done) { char *sp=p; char c; while ((c=*p++) && c!='\n') { } if (c=='\n') { g_yyLineNr++; *(p-1)='\0'; //printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp); ol.writeCodeLink(ref,file,anchor,sp,tooltip); nextCodeLine(); } else { //printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp); ol.writeCodeLink(ref,file,anchor,sp,tooltip); done=TRUE; } } } static void addType() { if (g_name=="const") { g_name.resize(0); return; } if (!g_type.isEmpty()) g_type += ' ' ; g_type += g_name ; g_name.resize(0) ; if (!g_type.isEmpty()) g_type += ' ' ; g_type += g_args ; g_args.resize(0) ; } static void addParmType() { if (g_parmName=="const") { g_parmName.resize(0); return; } if (!g_parmType.isEmpty()) g_parmType += ' ' ; g_parmType += g_parmName ; g_parmName.resize(0) ; } static void addUsingDirective(const char *name) { if (g_sourceFileDef && name) { NamespaceDef *nd = Doxygen::namespaceSDict->find(name); if (nd) { g_sourceFileDef->addUsingDirective(nd); } } } static void setParameterList(MemberDef *md) { g_classScope = md->getClassDef() ? md->getClassDef()->name().data() : ""; LockingPtr al = md->argumentList(); if (al==0) return; Argument *a = al->first(); while (a) { g_parmName = a->name.copy(); g_parmType = a->type.copy(); int i = g_parmType.find('*'); if (i!=-1) g_parmType = g_parmType.left(i); i = g_parmType.find('&'); if (i!=-1) g_parmType = g_parmType.left(i); g_parmType.stripPrefix("const "); g_parmType=g_parmType.stripWhiteSpace(); g_theVarContext.addVariable(g_parmType,g_parmName); a = al->next(); } } static ClassDef *stripClassName(const char *s) { int pos=0; QCString type = s; QCString className; QCString templSpec; while (extractClassNameFromType(type,pos,className,templSpec)!=-1) { QCString clName=className+templSpec; ClassDef *cd=0; if (!g_classScope.isEmpty()) { cd=getResolvedClass(g_currentDefinition,g_sourceFileDef,g_classScope+"::"+clName); } if (cd==0) { cd=getResolvedClass(g_currentDefinition,g_sourceFileDef,clName); } //printf("stripClass trying `%s' = %p\n",clName.data(),cd); if (cd) { return cd; } } return 0; } static MemberDef *setCallContextForVar(const QCString &name) { if (name.isEmpty()) return 0; //fprintf(stderr,"setCallContextForVar(%s) g_classScope=%s\n",name.data(),g_classScope.data()); int scopeEnd = name.findRev("::"); if (scopeEnd!=-1) // name with explicit scope { QCString scope = name.left(scopeEnd); QCString locName = name.right(name.length()-scopeEnd-2); //printf("explicit scope: name=%s scope=%s\n",locName.data(),scope.data()); ClassDef *mcd = getClass(scope); if (mcd && !locName.isEmpty()) { MemberDef *md=mcd->getMemberByName(locName); if (md) { //printf("name=%s scope=%s\n",locName.data(),scope.data()); g_theCallContext.setClass(stripClassName(md->typeString())); return md; } } else // check namespace as well { NamespaceDef *mnd = getResolvedNamespace(scope); if (mnd && !locName.isEmpty()) { MemberDef *md=mnd->getMemberByName(locName); if (md) { //printf("name=%s scope=%s\n",locName.data(),scope.data()); g_theCallContext.setClass(stripClassName(md->typeString())); return md; } } } } MemberName *mn; ClassDef *mcd = g_theVarContext.findVariable(name); if (mcd) // local variable { //fprintf(stderr,"local variable\n"); if (mcd!=VariableContext::dummyContext) { //fprintf(stderr,"local var `%s' mcd=%s\n",name.data(),mcd->name().data()); g_theCallContext.setClass(mcd); } } else { // look for a class member mcd = getClass(g_classScope); if (mcd) { //fprintf(stderr,"Inside class %s\n",mcd->name().data()); MemberDef *md=mcd->getMemberByName(name); if (md) { //fprintf(stderr,"Found member %s\n",md->name().data()); if (g_scopeStack.top()!=CLASSBLOCK) { //fprintf(stderr,"class member `%s' mcd=%s\n",name.data(),mcd->name().data()); g_theCallContext.setClass(stripClassName(md->typeString())); } return md; } } } // look for a global member if ((mn=Doxygen::functionNameSDict->find(name))) { //printf("global var `%s'\n",name.data()); if (mn->count()==1) // global defined only once { MemberDef *md=mn->getFirst(); if (!md->isStatic() || md->getBodyDef()==g_sourceFileDef) { g_theCallContext.setClass(stripClassName(md->typeString())); return md; } return 0; } else if (mn->count()>1) // global defined more than once { MemberDef *md=mn->first(); while (md) { //printf("mn=%p md=%p md->getBodyDef()=%p g_sourceFileDef=%p\n", // mn,md, // md->getBodyDef(),g_sourceFileDef); // in case there are multiple members we could link to, we // only link to members if defined in the same file or // defined as external. if (!md->isStatic() || md->getBodyDef()==g_sourceFileDef) { g_theCallContext.setClass(stripClassName(md->typeString())); //printf("returning member %s in source file %s\n",md->name().data(),g_sourceFileDef->name().data()); return md; } md=mn->next(); } return 0; } } return 0; } static void addDocCrossReference(MemberDef *src,MemberDef *dst) { static bool referencedByRelation = Config_getBool("REFERENCED_BY_RELATION"); static bool referencesRelation = Config_getBool("REFERENCES_RELATION"); static bool callerGraph = Config_getBool("CALLER_GRAPH"); static bool callGraph = Config_getBool("CALL_GRAPH"); //printf("--> addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data()); if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types if ((referencedByRelation || callerGraph || dst->hasCallerGraph()) && (src->isFunction() || src->isSlot()) ) { dst->addSourceReferencedBy(src); MemberDef *mdDef = dst->memberDefinition(); if (mdDef) { mdDef->addSourceReferencedBy(src); } MemberDef *mdDecl = dst->memberDeclaration(); if (mdDecl) { mdDecl->addSourceReferencedBy(src); } } if ((referencesRelation || callGraph || src->hasCallGraph()) && (src->isFunction() || src->isSlot()) ) { src->addSourceReferences(dst); MemberDef *mdDef = src->memberDefinition(); if (mdDef) { mdDef->addSourceReferences(dst); } MemberDef *mdDecl = src->memberDeclaration(); if (mdDecl) { mdDecl->addSourceReferences(dst); } } } static bool getLinkInScope(const QCString &c, // scope const QCString &m, // member const char *memberText, // exact text CodeOutputInterface &ol, const char *text, bool varOnly=FALSE ) { MemberDef *md; ClassDef *cd; FileDef *fd; NamespaceDef *nd; GroupDef *gd; //fprintf(stderr,"getLinkInScope: trying `%s'::`%s' varOnly=%d\n",c.data(),m.data(),varOnly); if (getDefs(c,m,"()",md,cd,fd,nd,gd,FALSE,g_sourceFileDef) && md->isLinkable() && (!varOnly || md->isVariable())) { if (g_exampleBlock) { QCString anchor; anchor.sprintf("a%d",g_anchorCount); //printf("addExampleFile(%s,%s,%s)\n",anchor.data(),g_exampleName.data(), // g_exampleFile.data()); if (md->addExample(anchor,g_exampleName,g_exampleFile)) { ol.writeCodeAnchor(anchor); g_anchorCount++; } } Definition *d = md->getOuterScope()==Doxygen::globalScope ? md->getBodyDef() : md->getOuterScope(); if (md->getGroupDef()) d = md->getGroupDef(); //fprintf(stderr,"d=%p linkable=%d\n",d,d?d->isLinkable():0); if (d && d->isLinkable()) { g_theCallContext.setClass(stripClassName(md->typeString())); //printf("g_currentDefinition=%p g_currentMemberDef=%p g_insideBody=%d\n", // g_currentDefinition,g_currentMemberDef,g_insideBody); if (g_currentDefinition && g_currentMemberDef && md!=g_currentMemberDef && g_insideBody) { addDocCrossReference(g_currentMemberDef,md); } //printf("d->getReference()=`%s' d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getReference().data(),d->getOutputFileBase().data(),d->name().data(),md->name().data()); ol.linkableSymbol(g_yyLineNr,md->name(),md, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(ol,md->getReference(), md->getOutputFileBase(), md->anchor(), text ? text : memberText, md->briefDescriptionAsTooltip()); addToSearchIndex(text ? text : memberText); return TRUE; } } return FALSE; } static bool getLink(const char *className, const char *memberName, CodeOutputInterface &ol, const char *text=0, bool varOnly=FALSE) { //printf("getLink(%s,%s) g_curClassName=%s\n",className,memberName,g_curClassName.data()); QCString m=removeRedundantWhiteSpace(memberName); QCString c=className; if (!getLinkInScope(c,m,memberName,ol,text,varOnly)) { if (!g_curClassName.isEmpty()) { if (!c.isEmpty()) c.prepend("::"); c.prepend(g_curClassName); return getLinkInScope(c,m,memberName,ol,text,varOnly); } return FALSE; } return TRUE; } static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, bool typeOnly=FALSE,bool varOnly=FALSE) { int i=0; if (*clName=='~') // correct for matching negated values i.s.o. destructors. { g_code->codify("~"); clName++; } QCString className=clName; if (className.isEmpty()) return; if (g_insideProtocolList) // for Obj-C { className+="-p"; } ClassDef *cd=0,*lcd=0; MemberDef *md=0; bool isLocal=FALSE; //printf("generateClassOrGlobalLink(className=%s)\n",className.data()); if ((lcd=g_theVarContext.findVariable(className))==0) // not a local variable { Definition *d = g_currentDefinition; //printf("d=%p g_sourceFileDef=%p\n",d,g_currentDefinition); cd = getResolvedClass(d,g_sourceFileDef,className,&md); //fprintf(stderr,"non-local variable name=%s context=%d cd=%s md=%s!\n", // className.data(),g_theVarContext.count(),cd?cd->name().data():"", // md?md->name().data():""); if (cd==0 && md==0 && (i=className.find('<'))!=-1) { QCString bareName = className.left(i); //stripTemplateSpecifiersFromScope(className); //fprintf(stderr,"bareName=%s\n",bareName.data()); if (bareName!=className) { cd=getResolvedClass(d,g_sourceFileDef,bareName,&md); // try unspecialized version } } //printf("md=%s\n",md?md->name().data():""); //fprintf(stderr,"is found as a type %s\n",cd?cd->name().data():""); if (cd==0 && md==0) // also see if it is variable or enum or enum value { if (getLink(g_classScope,clName,ol,clName,varOnly)) { return; } } } else { //printf("local variable!\n"); if (lcd!=VariableContext::dummyContext) { //printf("non-dummy context lcd=%s!\n",lcd->name().data()); g_theCallContext.setClass(lcd); // to following is needed for links to a global variable, but is // no good for a link to a local variable that is also a global symbol. //if (getLink(g_classScope,clName,ol,clName)) //{ //return; //} } isLocal=TRUE; //fprintf(stderr,"is a local variable cd=%p!\n",cd); } if (cd && cd->isLinkable()) // is it a linkable class { //fprintf(stderr,"is linkable class %s\n",clName); if (g_exampleBlock) { QCString anchor; anchor.sprintf("_a%d",g_anchorCount); //printf("addExampleClass(%s,%s,%s)\n",anchor.data(),g_exampleName.data(), // g_exampleFile.data()); if (cd->addExample(anchor,g_exampleName,g_exampleFile)) { ol.writeCodeAnchor(anchor); g_anchorCount++; } } ol.linkableSymbol(g_yyLineNr,cd->name(),cd, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),cd->anchor(),clName,cd->briefDescriptionAsTooltip()); addToSearchIndex(className); g_theCallContext.setClass(cd); if (md) { Definition *d = md->getOuterScope()==Doxygen::globalScope ? md->getBodyDef() : md->getOuterScope(); if (md->getGroupDef()) d = md->getGroupDef(); if (d && d->isLinkable() && md->isLinkable() && g_currentMemberDef) { addDocCrossReference(g_currentMemberDef,md); } } } else // not a class, maybe a global member { //fprintf(stderr,"class %s not linkable! cd=%p md=%p typeOnly=%d\n",clName,cd,md,typeOnly); if (!isLocal && (md!=0 || (cd==0 && !typeOnly))) // not a class, see if it is a global enum/variable/typedef. { if (md==0) // not found as a typedef { md = setCallContextForVar(clName); //printf("setCallContextForVar(%s) md=%p g_currentDefinition=%p\n",clName,md,g_currentDefinition); if (md && g_currentDefinition) { //fprintf(stderr,"%s accessible from %s? %d md->getOuterScope=%s\n", // md->name().data(),g_currentDefinition->name().data(), // isAccessibleFrom(g_currentDefinition,g_sourceFileDef,md), // md->getOuterScope()->name().data()); } if (md && g_currentDefinition && isAccessibleFrom(g_currentDefinition,g_sourceFileDef,md)==-1) { md=0; // variable not accessible } } if (md && (!varOnly || md->isVariable())) { //fprintf(stderr,"is a global md=%p g_currentDefinition=%s linkable=%d\n",md,g_currentDefinition?g_currentDefinition->name().data():"",md->isLinkable()); if (md->isLinkable()) { ol.linkableSymbol(g_yyLineNr,md->name(),md, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(ol,md->getReference(),md->getOutputFileBase(),md->anchor(),clName,md->briefDescriptionAsTooltip()); addToSearchIndex(clName); if (g_currentMemberDef) { addDocCrossReference(g_currentMemberDef,md); } return; } } } // nothing found, just write out the word //fprintf(stderr,"not found!\n"); ol.linkableSymbol(g_yyLineNr,clName,0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition); codifyLines(clName); addToSearchIndex(clName); } } static bool generateClassMemberLink(CodeOutputInterface &ol,MemberDef *xmd,const char *memName) { // extract class definition of the return type in order to resolve // a->b()->c() like call chains //printf("type=`%s' args=`%s' class=%s\n", // xmd->typeString(),xmd->argsString(), // xmd->getClassDef()->name().data()); if (g_exampleBlock) { QCString anchor; anchor.sprintf("a%d",g_anchorCount); //printf("addExampleFile(%s,%s,%s)\n",anchor.data(),g_exampleName.data(), // g_exampleFile.data()); if (xmd->addExample(anchor,g_exampleName,g_exampleFile)) { ol.writeCodeAnchor(anchor); g_anchorCount++; } } ClassDef *typeClass = stripClassName(removeAnonymousScopes(xmd->typeString())); //fprintf(stderr,"%s -> typeName=%p\n",xmd->typeString(),typeClass); g_theCallContext.setClass(typeClass); Definition *xd = xmd->getOuterScope()==Doxygen::globalScope ? xmd->getBodyDef() : xmd->getOuterScope(); if (xmd->getGroupDef()) xd = xmd->getGroupDef(); if (xd && xd->isLinkable()) { //printf("g_currentDefiniton=%p g_currentMemberDef=%p xmd=%p g_insideBody=%d\n",g_currentDefinition,g_currentMemberDef,xmd,g_insideBody); if (xmd->templateMaster()) xmd = xmd->templateMaster(); if (xmd->isLinkable()) { // add usage reference if (g_currentDefinition && g_currentMemberDef && /*xmd!=g_currentMemberDef &&*/ g_insideBody) { addDocCrossReference(g_currentMemberDef,xmd); } // write the actual link ol.linkableSymbol(g_yyLineNr,xmd->name(),xmd, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(ol,xmd->getReference(), xmd->getOutputFileBase(),xmd->anchor(),memName,xmd->briefDescriptionAsTooltip()); addToSearchIndex(memName); return TRUE; } } return FALSE; } static bool generateClassMemberLink(CodeOutputInterface &ol,ClassDef *mcd,const char *memName) { if (mcd) { MemberDef *xmd = mcd->getMemberByName(memName); //printf("generateClassMemberLink(class=%s,member=%s)=%p\n",mcd->name().data(),memName,xmd); if (xmd) { return generateClassMemberLink(ol,xmd,memName); } } return FALSE; } static void generateMemberLink(CodeOutputInterface &ol,const QCString &varName, char *memName) { //printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n", // varName.data(),memName,g_classScope.data()); if (varName.isEmpty()) return; // look for the variable in the current context ClassDef *vcd = g_theVarContext.findVariable(varName); if (vcd) { if (vcd!=VariableContext::dummyContext) { //printf("Class found!\n"); if (getLink(vcd->name(),memName,ol)) { //printf("Found result!\n"); return; } if (vcd->baseClasses()) { BaseClassListIterator bcli(*vcd->baseClasses()); for ( ; bcli.current() ; ++bcli) { if (getLink(bcli.current()->classDef->name(),memName,ol)) { //printf("Found result!\n"); return; } } } } } else // variable not in current context, maybe it is in a parent context { vcd = getResolvedClass(g_currentDefinition,g_sourceFileDef,g_classScope); if (vcd && vcd->isLinkable()) { //printf("Found class %s for variable `%s'\n",g_classScope.data(),varName.data()); MemberName *vmn=Doxygen::memberNameSDict->find(varName); if (vmn==0) { int vi; QCString vn=varName; QCString scope; if ((vi=vn.findRev("::"))!=-1 || (vi=vn.findRev('.'))!=-1) // explicit scope A::b(), probably static member { ClassDef *jcd = getClass(vn.left(vi)); vn=vn.right(vn.length()-vi-2); vmn=Doxygen::memberNameSDict->find(vn); //printf("Trying name `%s' scope=%s\n",vn.data(),scope.data()); if (vmn) { MemberNameIterator vmni(*vmn); MemberDef *vmd; for (;(vmd=vmni.current());++vmni) { if (/*(vmd->isVariable() || vmd->isFunction()) && */ vmd->getClassDef()==jcd) { //printf("Found variable type=%s\n",vmd->typeString()); ClassDef *mcd=stripClassName(vmd->typeString()); if (mcd && mcd->isLinkable()) { if (generateClassMemberLink(ol,mcd,memName)) return; } } } } } } if (vmn) { //printf("There is a variable with name `%s'\n",varName); MemberNameIterator vmni(*vmn); MemberDef *vmd; for (;(vmd=vmni.current());++vmni) { if (/*(vmd->isVariable() || vmd->isFunction()) && */ vmd->getClassDef()==vcd) { //printf("Found variable type=%s\n",vmd->typeString()); ClassDef *mcd=stripClassName(vmd->typeString()); if (mcd && mcd->isLinkable()) { if (generateClassMemberLink(ol,mcd,memName)) return; } } } } } } // nothing found -> write result as is ol.linkableSymbol(g_yyLineNr,memName,0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition); codifyLines(memName); addToSearchIndex(memName); return; } static void generateFunctionLink(CodeOutputInterface &ol,char *funcName) { if (g_currentMemberDef && g_currentMemberDef->getClassDef() && funcName==g_currentMemberDef->localName() && g_currentMemberDef->getDefLine()==g_yyLineNr && generateClassMemberLink(ol,g_currentMemberDef,funcName) ) { // special case where funcName is the name of a method that is also // defined on this line. In this case we can directly link to // g_currentMemberDef, which is not only faster, but // in case of overloaded methods, this will make sure that we link to // the correct method, and thereby get the correct reimplemented relations. // See also bug 549022. return; } //CodeClassDef *ccd=0; ClassDef *ccd=0; QCString locScope=g_classScope; QCString locFunc=removeRedundantWhiteSpace(funcName); //fprintf(stdout,"*** locScope=%s locFunc=%s\n",locScope.data(),locFunc.data()); int len=2; int i=locFunc.findRev("::"); if (i==-1) i=locFunc.findRev("."),len=1; if (i>0) { if (locScope.isEmpty()) { locScope=locFunc.left(i); } else { locScope+="::"+locFunc.left(i); } locFunc=locFunc.right(locFunc.length()-i-len).stripWhiteSpace(); int ts=locScope.find('<'); // start of template int te=locScope.findRev('>'); // end of template //printf("ts=%d te=%d\n",ts,te); if (ts!=-1 && te!=-1 && te>ts) { // remove template from scope locScope=locScope.left(ts)+locScope.right(locScope.length()-te-1); } } //printf("generateFunctionLink(%s) classScope=`%s'\n",locFunc.data(),locScope.data()); if (!locScope.isEmpty() && (ccd=g_codeClassSDict->find(locScope))) { //printf("using classScope %s\n",g_classScope.data()); if (ccd->baseClasses()) { BaseClassListIterator bcli(*ccd->baseClasses()); for ( ; bcli.current() ; ++bcli) { if (getLink(bcli.current()->classDef->name(),locFunc,ol,funcName)) { return; } } } } if (!getLink(locScope,locFunc,ol,funcName)) { generateClassOrGlobalLink(ol,funcName); } return; } /*! counts the number of lines in the input */ static int countLines() { const char *p=g_inputString; char c; int count=1; while ((c=*p)) { p++ ; if (c=='\n') count++; } if (p>g_inputString && *(p-1)!='\n') { // last line does not end with a \n, so we add an extra // line and explicitly terminate the line after parsing. count++, g_needsTermination=TRUE; } return count; } static void endFontClass() { if (g_currentFontClass) { g_code->endFontClass(); g_currentFontClass=0; } } static void startFontClass(const char *s) { endFontClass(); g_code->startFontClass(s); g_currentFontClass=s; } //---------------------------------------------------------------------------- // recursively writes a linkified Objective-C method call static void writeObjCMethodCall(ObjCCallCtx *ctx) { if (ctx==0) return; char c; const char *p = ctx->format.data(); if (!ctx->methodName.isEmpty()) { //printf("writeObjCMethodCall(%s) obj=%s method=%s\n", // ctx->format.data(),ctx->objectTypeOrName.data(),ctx->methodName.data()); if (!ctx->objectTypeOrName.isEmpty() && ctx->objectTypeOrName.at(0)!='$') { //printf("Looking for object=%s method=%s\n",ctx->objectTypeOrName.data(), // ctx->methodName.data()); ClassDef *cd = g_theVarContext.findVariable(ctx->objectTypeOrName); if (cd==0) // not a local variable { if (ctx->objectTypeOrName=="self") { if (g_currentDefinition && g_currentDefinition->definitionType()==Definition::TypeClass) { ctx->objectType = (ClassDef *)g_currentDefinition; } } else { ctx->objectType = getResolvedClass( g_currentDefinition, g_sourceFileDef, ctx->objectTypeOrName, &ctx->method); } //printf(" object is class? %p\n",ctx->objectType); if (ctx->objectType) // found class { ctx->method = ctx->objectType->getMemberByName(ctx->methodName); //printf(" yes->method=%s\n",ctx->method?ctx->method->name().data():""); } else if (ctx->method==0) // search for class variable with the same name { //printf(" no\n"); //printf("g_currentDefinition=%p\n",g_currentDefinition); if (g_currentDefinition && g_currentDefinition->definitionType()==Definition::TypeClass) { ctx->objectVar = ((ClassDef *)g_currentDefinition)->getMemberByName(ctx->objectTypeOrName); //printf(" ctx->objectVar=%p\n",ctx->objectVar); if (ctx->objectVar) { ctx->objectType = stripClassName(ctx->objectVar->typeString()); //printf(" ctx->objectType=%p\n",ctx->objectType); if (ctx->objectType) { ctx->method = ctx->objectType->getMemberByName(ctx->methodName); //printf(" ctx->method=%p\n",ctx->method); } } } } } else // local variable { //printf(" object is local variable\n"); if (cd!=VariableContext::dummyContext) { ctx->method = cd->getMemberByName(ctx->methodName); //printf(" class=%p method=%p\n",cd,ctx->method); } } } } //printf("["); while ((c=*p++)) // for each character in ctx->format { if (c=='$') { char nc=*p++; if (nc=='$') // escaped $ { g_code->codify("$"); } else // name fragment or reference to a nested call { if (nc=='n') // name fragment { nc=*p++; QCString refIdStr; while (nc!=0 && isdigit(nc)) { refIdStr+=nc; nc=*p++; } p--; int refId=refIdStr.toInt(); QCString *pName = g_nameDict.find(refId); if (pName) { if (ctx->method && ctx->method->isLinkable()) { g_code->linkableSymbol(g_yyLineNr,ctx->method->name(),ctx->method, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(*g_code, ctx->method->getReference(), ctx->method->getOutputFileBase(), ctx->method->anchor(), pName->data(), ctx->method->briefDescriptionAsTooltip()); if (g_currentMemberDef) { addDocCrossReference(g_currentMemberDef,ctx->method); } } else { g_code->linkableSymbol(g_yyLineNr,pName->data(),0, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); codifyLines(pName->data()); } } else { //printf("Invalid name: id=%d\n",refId); } } else if (nc=='o') // reference to potential object name { nc=*p++; QCString refIdStr; while (nc!=0 && isdigit(nc)) { refIdStr+=nc; nc=*p++; } p--; int refId=refIdStr.toInt(); QCString *pObject = g_objectDict.find(refId); if (pObject) { if (*pObject=="self") { if (g_currentDefinition && g_currentDefinition->definitionType()==Definition::TypeClass) { ctx->objectType = (ClassDef *)g_currentDefinition; if (ctx->objectType->categoryOf()) { ctx->objectType = ctx->objectType->categoryOf(); } if (ctx->objectType) { ctx->method = ctx->objectType->getMemberByName(ctx->methodName); } } startFontClass("keyword"); codifyLines(pObject->data()); endFontClass(); } else if (*pObject=="super") { if (g_currentDefinition && g_currentDefinition->definitionType()==Definition::TypeClass) { ClassDef *cd = (ClassDef *)g_currentDefinition; if (cd->categoryOf()) { cd = cd->categoryOf(); } BaseClassList *bcd = cd->baseClasses(); if (bcd) // get direct base class (there should be only one) { BaseClassListIterator bli(*bcd); BaseClassDef *bclass; for (bli.toFirst();(bclass=bli.current());++bli) { if (bclass->classDef->compoundType()!=ClassDef::Protocol) { ctx->objectType = bclass->classDef; if (ctx->objectType) { ctx->method = ctx->objectType->getMemberByName(ctx->methodName); } } } } } startFontClass("keyword"); codifyLines(pObject->data()); endFontClass(); } else if (ctx->objectVar && ctx->objectVar->isLinkable()) // object is class variable { g_code->linkableSymbol(g_yyLineNr,ctx->objectVar->name(),ctx->objectVar, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(*g_code, ctx->objectVar->getReference(), ctx->objectVar->getOutputFileBase(), ctx->objectVar->anchor(), pObject->data(), ctx->objectVar->briefDescriptionAsTooltip()); if (g_currentMemberDef) { addDocCrossReference(g_currentMemberDef,ctx->objectVar); } } else if (ctx->objectType && ctx->objectType!=VariableContext::dummyContext && ctx->objectType->isLinkable() ) // object is class name { ClassDef *cd = ctx->objectType; g_code->linkableSymbol(g_yyLineNr,cd->name(),cd, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(*g_code, cd->getReference(), cd->getOutputFileBase(), cd->anchor(), pObject->data(), cd->briefDescriptionAsTooltip()); } else // object still needs to be resolved { ClassDef *cd = getResolvedClass(g_currentDefinition, g_sourceFileDef, *pObject); if (cd && cd->isLinkable()) { if (ctx->objectType==0) ctx->objectType=cd; g_code->linkableSymbol(g_yyLineNr,cd->name(),cd, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); writeMultiLineCodeLink(*g_code, cd->getReference(), cd->getOutputFileBase(), cd->anchor(), pObject->data(), cd->briefDescriptionAsTooltip()); } else { g_code->linkableSymbol(g_yyLineNr,pObject->data(),0, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); codifyLines(pObject->data()); } } } else { //printf("Invalid object: id=%d\n",refId); } } else if (nc=='c') // reference to nested call { nc=*p++; QCString refIdStr; while (nc!=0 && isdigit(nc)) { refIdStr+=nc; nc=*p++; } p--; int refId=refIdStr.toInt(); ObjCCallCtx *ictx = g_contextDict.find(refId); if (ictx) // recurse into nested call { writeObjCMethodCall(ictx); if (ictx->method) // link to nested call successfully { // get the ClassDef representing the method's return type if (QCString(ictx->method->typeString())=="id") { // see if the method name is unique, if so we link to it MemberName *mn=Doxygen::memberNameSDict->find(ctx->methodName); //printf("mn->count=%d ictx->method=%s ctx->methodName=%s\n", // mn==0?-1:(int)mn->count(), // ictx->method->name().data(), // ctx->methodName.data()); if (mn && mn->count()==1) // member name unique { ctx->method = mn->getFirst(); } } else { ctx->objectType = stripClassName(ictx->method->typeString()); if (ctx->objectType) { ctx->method = ctx->objectType->getMemberByName(ctx->methodName); } } //printf(" ***** method=%s -> object=%p\n",ictx->method->name().data(),ctx->objectType); } } else { //printf("Invalid context: id=%d\n",refId); } } else if (nc=='w') // some word { nc=*p++; QCString refIdStr; while (nc!=0 && isdigit(nc)) { refIdStr+=nc; nc=*p++; } p--; int refId=refIdStr.toInt(); QCString *pWord = g_wordDict.find(refId); if (pWord) { g_code->linkableSymbol(g_yyLineNr,pWord->data(),0, g_currentMemberDef ? g_currentMemberDef : g_currentDefinition); codifyLines(pWord->data()); } } else // illegal marker { ASSERT(!"invalid escape sequence"); } } } else // normal non-marker character { char s[2]; s[0]=c;s[1]=0; codifyLines(s); } } //printf("%s %s]\n",ctx->objectTypeOrName.data(),ctx->methodName.data()); //printf("}=(type='%s',name='%s')", // ctx->objectTypeOrName.data(), // ctx->methodName.data()); } // Replaces an Objective-C method name fragment s by a marker of the form // $n12, the number (12) can later be used as a key for obtaining the name // fragment, from g_nameDict static QCString escapeName(const char *s) { QCString result; result.sprintf("$n%d",g_currentNameId); g_nameDict.insert(g_currentNameId,new QCString(s)); g_currentNameId++; return result; } static QCString escapeObject(const char *s) { QCString result; result.sprintf("$o%d",g_currentObjId); g_objectDict.insert(g_currentObjId,new QCString(s)); g_currentObjId++; return result; } static QCString escapeWord(const char *s) { QCString result; result.sprintf("$w%d",g_currentWordId); g_wordDict.insert(g_currentWordId,new QCString(s)); g_currentWordId++; return result; } /* ----------------------------------------------------------------- */ #undef YY_INPUT #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); static int yyread(char *buf,int max_size) { int c=0; while( c < max_size && g_inputString[g_inputPosition] ) { *buf = g_inputString[g_inputPosition++] ; c++; buf++; } return c; } #line 10102 "" #define INITIAL 0 #define SkipString 1 #define SkipStringS 2 #define SkipVerbString 3 #define SkipCPP 4 #define SkipComment 5 #define SkipCxxComment 6 #define RemoveSpecialCComment 7 #define StripSpecialCComment 8 #define Body 9 #define FuncCall 10 #define MemberCall 11 #define MemberCall2 12 #define SkipInits 13 #define ClassName 14 #define PackageName 15 #define ClassVar 16 #define CppCliTypeModifierFollowup 17 #define Bases 18 #define SkipSharp 19 #define ReadInclude 20 #define TemplDecl 21 #define TemplCast 22 #define CallEnd 23 #define ObjCMethod 24 #define ObjCParams 25 #define ObjCParamType 26 #define ObjCCall 27 #define ObjCMName 28 #define ObjCSkipStr 29 #define OldStyleArgs 30 #define UsingName 31 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int codeYYlex_destroy (void ); int codeYYget_debug (void ); void codeYYset_debug (int debug_flag ); YY_EXTRA_TYPE codeYYget_extra (void ); void codeYYset_extra (YY_EXTRA_TYPE user_defined ); FILE *codeYYget_in (void ); void codeYYset_in (FILE * in_str ); FILE *codeYYget_out (void ); void codeYYset_out (FILE * out_str ); yy_size_t codeYYget_leng (void ); char *codeYYget_text (void ); int codeYYget_lineno (void ); void codeYYset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int codeYYwrap (void ); #else extern int codeYYwrap (void ); #endif #endif static void yyunput (int c,char *buf_ptr ); #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 262144 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( codeYYtext, codeYYleng, 1, codeYYout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( codeYYin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( codeYYin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, codeYYin))==0 && ferror(codeYYin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(codeYYin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int codeYYlex (void); #define YY_DECL int codeYYlex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after codeYYtext and codeYYleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ if ( codeYYleng > 0 ) \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ (codeYYtext[codeYYleng - 1] == '\n'); \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; #line 1767 "code.l" #line 10321 "" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif /* Create the reject buffer large enough to save one state per allowed character. */ if ( ! (yy_state_buf) ) (yy_state_buf) = (yy_state_type *)codeYYalloc(YY_STATE_BUF_SIZE ); if ( ! (yy_state_buf) ) YY_FATAL_ERROR( "out of dynamic memory in codeYYlex()" ); if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! codeYYin ) codeYYin = stdin; if ( ! codeYYout ) codeYYout = stdout; if ( ! YY_CURRENT_BUFFER ) { codeYYensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = codeYY_create_buffer(codeYYin,YY_BUF_SIZE ); } codeYY_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of codeYYtext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); (yy_state_ptr) = (yy_state_buf); *(yy_state_ptr)++ = yy_current_state; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 3159 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *(yy_state_ptr)++ = yy_current_state; ++yy_cp; } while ( yy_base[yy_current_state] != 27527 ); yy_find_action: yy_current_state = *--(yy_state_ptr); (yy_lp) = yy_accept[yy_current_state]; goto find_rule; /* Shut up GCC warning -Wall */ find_rule: /* we branch to this label when backing up */ for ( ; ; ) /* until we find what rule we matched */ { if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) { yy_act = yy_acclist[(yy_lp)]; if ( yy_act & YY_TRAILING_HEAD_MASK || (yy_looking_for_trail_begin) ) { if ( yy_act == (yy_looking_for_trail_begin) ) { (yy_looking_for_trail_begin) = 0; yy_act &= ~YY_TRAILING_HEAD_MASK; break; } } else if ( yy_act & YY_TRAILING_MASK ) { (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK; (yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK; (yy_full_match) = yy_cp; (yy_full_state) = (yy_state_ptr); (yy_full_lp) = (yy_lp); } else { (yy_full_match) = yy_cp; (yy_full_state) = (yy_state_ptr); (yy_full_lp) = (yy_lp); break; } ++(yy_lp); goto find_rule; } --yy_cp; yy_current_state = *--(yy_state_ptr); (yy_lp) = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 1: YY_RULE_SETUP #line 1769 "code.l" YY_BREAK case 2: YY_RULE_SETUP #line 1770 "code.l" { startFontClass("preprocessor"); g_code->codify(codeYYtext); BEGIN( ReadInclude ); } YY_BREAK case 3: /* rule 3 can match eol */ YY_RULE_SETUP #line 1775 "code.l" { g_insideObjC=TRUE; startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); if (!g_insideTemplate) BEGIN( ClassName ); } YY_BREAK case 4: YY_RULE_SETUP #line 1783 "code.l" { if (g_insideTemplate) REJECT; startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); BEGIN( ClassName ); } YY_BREAK case 5: /* rule 5 can match eol */ YY_RULE_SETUP #line 1790 "code.l" { if (g_insideTemplate) REJECT; startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); } YY_BREAK case 6: YY_RULE_SETUP #line 1796 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); if (!g_insideTemplate) BEGIN( ClassName ); } YY_BREAK case 7: /* rule 7 can match eol */ YY_RULE_SETUP #line 1803 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); BEGIN( PackageName ); } YY_BREAK case 8: /* rule 8 can match eol */ YY_RULE_SETUP #line 1809 "code.l" { if (!g_insideObjC) REJECT; codifyLines(codeYYtext); BEGIN(Body); } YY_BREAK case 9: YY_RULE_SETUP #line 1814 "code.l" { if (!g_insideObjC || g_insideBody) { g_code->codify(codeYYtext); } else // Start of Objective-C method { //printf("Method!\n"); g_code->codify(codeYYtext); BEGIN(ObjCMethod); } } YY_BREAK case 10: YY_RULE_SETUP #line 1826 "code.l" { g_code->codify(codeYYtext); BEGIN(ObjCParams); } YY_BREAK case 11: YY_RULE_SETUP #line 1830 "code.l" { g_code->codify(codeYYtext); BEGIN(ObjCParamType); } YY_BREAK case 12: YY_RULE_SETUP #line 1834 "code.l" { g_code->codify(codeYYtext); if (*codeYYtext=='{') { g_curlyCount++; if (g_searchingForBody) { g_searchingForBody=FALSE; g_insideBody=TRUE; } if (g_insideBody) g_bodyCurlyCount++; if (!g_curClassName.isEmpty()) // valid class name { pushScope(g_curClassName); DBG_CTX((stderr,"** scope stack push SCOPEBLOCK\n")); g_scopeStack.push(SCOPEBLOCK); } } g_type.resize(0); g_name.resize(0); BEGIN(Body); } YY_BREAK case 13: YY_RULE_SETUP #line 1856 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 14: YY_RULE_SETUP #line 1859 "code.l" { startFontClass("keywordtype"); g_code->codify(codeYYtext); endFontClass(); g_parmType=codeYYtext; } YY_BREAK case 15: YY_RULE_SETUP #line 1865 "code.l" { generateClassOrGlobalLink(*g_code,codeYYtext); g_parmType=codeYYtext; } YY_BREAK case 16: YY_RULE_SETUP #line 1869 "code.l" { g_code->codify(codeYYtext); BEGIN(ObjCParams); } YY_BREAK case 17: YY_RULE_SETUP #line 1873 "code.l" { g_code->linkableSymbol(g_yyLineNr,codeYYtext,0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition); g_code->codify(codeYYtext); g_parmName=codeYYtext; g_theVarContext.addVariable(g_parmType,g_parmName); g_parmType.resize(0);g_parmName.resize(0); } YY_BREAK case 18: YY_RULE_SETUP #line 1881 "code.l" { generateClassOrGlobalLink(*g_code,codeYYtext); } YY_BREAK case 19: YY_RULE_SETUP #line 1884 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 20: /* rule 20 can match eol */ YY_RULE_SETUP #line 1887 "code.l" { codifyLines(codeYYtext); } YY_BREAK case 21: YY_RULE_SETUP #line 1890 "code.l" { //FileInfo *f; bool ambig; bool found=FALSE; //QCString absPath = codeYYtext; //if (g_sourceFileDef && QDir::isRelativePath(absPath)) //{ // absPath = QDir::cleanDirPath(g_sourceFileDef->getPath()+"/"+absPath); //} FileDef *fd=findFileDef(Doxygen::inputNameDict,codeYYtext,ambig); //printf("looking for include %s -> %s fd=%p\n",codeYYtext,absPath.data(),fd); if (fd && fd->isLinkable()) { if (ambig) // multiple input files match the name { //printf("===== yes %s is ambiguous\n",codeYYtext); QCString name = convertToQCString(QDir::cleanDirPath(codeYYtext)); if (!name.isEmpty() && g_sourceFileDef) { FileName *fn = Doxygen::inputNameDict->find(name); if (fn) { FileNameIterator fni(*fn); // for each include name for (fni.toFirst();!found && (fd=fni.current());++fni) { // see if this source file actually includes the file found = g_sourceFileDef->isIncluded(fd->absFilePath()); //printf(" include file %s found=%d\n",fd->absFilePath().data(),found); } } } } else // not ambiguous { found = TRUE; } } //printf(" include file %s found=%d\n",fd ? fd->absFilePath().data() : "",found); if (found) { g_code->writeCodeLink(fd->getReference(),fd->getOutputFileBase(),0,codeYYtext,fd->briefDescriptionAsTooltip()); } else { g_code->codify(codeYYtext); } char c=yyinput(); QCString text; text+=c; g_code->codify(text); endFontClass(); BEGIN( Body ); } YY_BREAK case 22: YY_RULE_SETUP #line 1945 "code.l" { startFontClass("preprocessor"); g_lastSkipCppContext = YY_START; g_code->codify(codeYYtext); BEGIN( SkipCPP ) ; } YY_BREAK case 23: YY_RULE_SETUP #line 1951 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 24: YY_RULE_SETUP #line 1954 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 25: /* rule 25 can match eol */ YY_RULE_SETUP #line 1957 "code.l" { codifyLines(codeYYtext); } YY_BREAK case 26: YY_RULE_SETUP #line 1960 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 27: YY_RULE_SETUP #line 1963 "code.l" { g_theVarContext.pushScope(); DBG_CTX((stderr,"** scope stack push INNERBLOCK\n")); g_scopeStack.push(INNERBLOCK); if (g_searchingForBody) { g_searchingForBody=FALSE; g_insideBody=TRUE; } g_code->codify(codeYYtext); g_curlyCount++; if (g_insideBody) { g_bodyCurlyCount++; } g_type.resize(0); g_name.resize(0); BEGIN( Body ); } YY_BREAK case 28: YY_RULE_SETUP #line 1984 "code.l" { g_theVarContext.popScope(); g_type.resize(0); g_name.resize(0); int *scope = g_scopeStack.pop(); DBG_CTX((stderr,"** scope stack pop SCOPEBLOCK=%d\n",scope==SCOPEBLOCK)); if (scope==SCOPEBLOCK || scope==CLASSBLOCK) { popScope(); } g_code->codify(codeYYtext); //fprintf(stderr,"g_bodyCurlyCount=%d\n",g_bodyCurlyCount); if (--g_bodyCurlyCount<=0) { g_insideBody=FALSE; g_currentMemberDef=0; if (g_currentDefinition) g_currentDefinition=g_currentDefinition->getOuterScope(); } BEGIN(Body); } YY_BREAK case 29: YY_RULE_SETUP #line 2008 "code.l" { //printf("End of objc scope fd=%s\n",g_sourceFileDef->name().data()); if (g_sourceFileDef) { FileDef *fd=g_sourceFileDef; g_insideObjC = fd->name().lower().right(2)==".m" || fd->name().lower().right(3)==".mm"; //printf("insideObjC=%d\n",g_insideObjC); } else { g_insideObjC = FALSE; } if (g_insideBody) { g_theVarContext.popScope(); int *scope = g_scopeStack.pop(); DBG_CTX((stderr,"** scope stack pop SCOPEBLOCK=%d\n",scope==SCOPEBLOCK)); if (scope==SCOPEBLOCK || scope==CLASSBLOCK) { popScope(); } g_insideBody=FALSE; } startFontClass("keyword"); g_code->codify(codeYYtext); endFontClass(); g_currentMemberDef=0; if (g_currentDefinition) g_currentDefinition=g_currentDefinition->getOuterScope(); BEGIN(Body); } YY_BREAK case 30: YY_RULE_SETUP #line 2043 "code.l" { g_code->codify(codeYYtext); g_searchingForBody=FALSE; BEGIN( Body ); } YY_BREAK case 31: YY_RULE_SETUP #line 2048 "code.l" { g_type=g_curClassName.copy(); g_name.resize(0); g_code->codify(codeYYtext); BEGIN( Body ); // variable of type struct * } YY_BREAK case 32: YY_RULE_SETUP #line 2054 "code.l" { startFontClass("keyword"); g_code->codify(codeYYtext); endFontClass(); } YY_BREAK case 33: YY_RULE_SETUP #line 2059 "code.l" { g_curClassName=codeYYtext; addType(); generateClassOrGlobalLink(*g_code,codeYYtext); BEGIN( ClassVar ); } YY_BREAK case 34: YY_RULE_SETUP #line 2065 "code.l" { g_curClassName=codeYYtext; g_curClassName=substitute(g_curClassName,".","::"); //printf("found package: %s\n",g_curClassName.data()); addType(); codifyLines(codeYYtext); } YY_BREAK case 35: YY_RULE_SETUP #line 2072 "code.l" { unput(*codeYYtext); BEGIN( Body ); } YY_BREAK case 36: YY_RULE_SETUP #line 2076 "code.l" { // Java startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); g_curClassBases.clear(); BEGIN( Bases ); } YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP #line 2083 "code.l" { //fprintf(stderr,"***** C++/CLI modifier %s on g_curClassName=%s\n",codeYYtext,g_curClassName.data()); startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); BEGIN( CppCliTypeModifierFollowup ); } YY_BREAK case 38: YY_RULE_SETUP #line 2090 "code.l" { g_type = g_curClassName.copy(); g_name = codeYYtext; if (g_insideBody) { g_theVarContext.addVariable(g_type,g_name); } generateClassOrGlobalLink(*g_code,codeYYtext); } YY_BREAK case 39: YY_RULE_SETUP #line 2099 "code.l" { codifyLines(codeYYtext); g_curClassBases.clear(); BEGIN( Bases ); } YY_BREAK case 40: #line 2105 "code.l" case 41: YY_RULE_SETUP #line 2105 "code.l" { g_theVarContext.pushScope(); g_code->codify(codeYYtext); g_curlyCount++; if (YY_START==ClassVar && g_curClassName.isEmpty()) { g_curClassName = g_name.copy(); } if (g_searchingForBody) { g_searchingForBody=FALSE; g_insideBody=TRUE; } if (g_insideBody) g_bodyCurlyCount++; if (!g_curClassName.isEmpty()) // valid class name { DBG_CTX((stderr,"** scope stack push CLASSBLOCK\n")); g_scopeStack.push(CLASSBLOCK); pushScope(g_curClassName); //fprintf(stderr,"***** g_curClassName=%s\n",g_curClassName.data()); if (getResolvedClass(g_currentDefinition,g_sourceFileDef,g_curClassName)==0) { //printf("Adding new class %s\n",g_curClassName.data()); ClassDef *ncd=new ClassDef("",1, g_curClassName,ClassDef::Class,0,0,FALSE); g_codeClassSDict->append(g_curClassName,ncd); // insert base classes. char *s=g_curClassBases.first(); while (s) { ClassDef *bcd; bcd=g_codeClassSDict->find(s); if (bcd==0) bcd=getResolvedClass(g_currentDefinition,g_sourceFileDef,s); if (bcd && bcd!=ncd) { ncd->insertBaseClass(bcd,s,Public,Normal); } s=g_curClassBases.next(); } } //printf("g_codeClassList.count()=%d\n",g_codeClassList.count()); } else // not a class name -> assume inner block { DBG_CTX((stderr,"** scope stack push INNERBLOCK\n")); g_scopeStack.push(INNERBLOCK); } g_curClassName.resize(0); g_curClassBases.clear(); BEGIN( Body ); } YY_BREAK case 42: YY_RULE_SETUP #line 2156 "code.l" { startFontClass("keyword"); g_code->codify(codeYYtext); endFontClass(); } YY_BREAK case 43: YY_RULE_SETUP #line 2161 "code.l" { //printf("%s:addBase(%s)\n",g_ccd.name.data(),codeYYtext); g_curClassBases.inSort(codeYYtext); generateClassOrGlobalLink(*g_code,codeYYtext); } YY_BREAK case 44: YY_RULE_SETUP #line 2166 "code.l" { g_code->codify(codeYYtext); if (!g_insideObjC) { g_sharpCount=1; BEGIN ( SkipSharp ); } else { g_insideProtocolList=TRUE; } } YY_BREAK case 45: YY_RULE_SETUP #line 2178 "code.l" { g_code->codify(codeYYtext); g_insideProtocolList=FALSE; } YY_BREAK case 46: YY_RULE_SETUP #line 2182 "code.l" { g_code->codify(codeYYtext); ++g_sharpCount; } YY_BREAK case 47: YY_RULE_SETUP #line 2186 "code.l" { g_code->codify(codeYYtext); if (--g_sharpCount<=0) BEGIN ( Bases ); } YY_BREAK case 48: YY_RULE_SETUP #line 2191 "code.l" { g_code->codify(codeYYtext); g_sharpCount=1; BEGIN ( SkipSharp ); } YY_BREAK case 49: YY_RULE_SETUP #line 2196 "code.l" { g_code->codify(codeYYtext); ++g_sharpCount; } YY_BREAK case 50: YY_RULE_SETUP #line 2200 "code.l" { g_code->codify(codeYYtext); if (--g_sharpCount<=0) BEGIN ( Bases ); } YY_BREAK case 51: YY_RULE_SETUP #line 2207 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 52: /* rule 52 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2212 "code.l" { addType(); generateFunctionLink(*g_code,codeYYtext); g_bracketCount=0; g_args.resize(0); g_name+=codeYYtext; BEGIN( FuncCall ); } YY_BREAK case 53: /* rule 53 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2220 "code.l" { addType(); generateFunctionLink(*g_code,codeYYtext); g_bracketCount=0; g_args.resize(0); g_name+=codeYYtext; BEGIN( FuncCall ); } YY_BREAK case 54: /* rule 54 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2228 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); g_insideTemplate=TRUE; g_sharpCount=0; } YY_BREAK case 55: /* rule 55 can match eol */ YY_RULE_SETUP #line 2235 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); BEGIN(UsingName); } YY_BREAK case 56: YY_RULE_SETUP #line 2241 "code.l" { addUsingDirective(codeYYtext); generateClassOrGlobalLink(*g_code,codeYYtext); DBG_CTX((stderr,"** scope stack push CLASSBLOCK\n")); g_scopeStack.push(CLASSBLOCK); pushScope(codeYYtext); BEGIN(Body); } YY_BREAK case 57: /* rule 57 can match eol */ YY_RULE_SETUP #line 2248 "code.l" { codifyLines(codeYYtext); BEGIN(Body); } YY_BREAK case 58: YY_RULE_SETUP #line 2249 "code.l" { codifyLines(codeYYtext); BEGIN(Body); } YY_BREAK case 59: YY_RULE_SETUP #line 2250 "code.l" { g_code->codify(codeYYtext); // this-> for C++, this. for C# } YY_BREAK case 60: /* rule 60 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2252 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); if (QCString(codeYYtext)=="typedef") { addType(); g_name+=codeYYtext; } endFontClass(); } YY_BREAK case 61: YY_RULE_SETUP #line 2262 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); } YY_BREAK case 62: /* rule 62 can match eol */ YY_RULE_SETUP #line 2267 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); g_name.resize(0);g_type.resize(0); } YY_BREAK case 63: /* rule 63 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp = yy_bp + 2; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2273 "code.l" { if (!g_inForEachExpression) REJECT; startFontClass("keywordflow"); codifyLines(codeYYtext); endFontClass(); // insert the variable in the parent scope, see bug 546158 g_theVarContext.popScope(); g_theVarContext.addVariable(g_parmType,g_parmName); g_theVarContext.pushScope(); g_name.resize(0);g_type.resize(0); } YY_BREAK case 64: /* rule 64 can match eol */ YY_RULE_SETUP #line 2284 "code.l" { startFontClass("keywordflow"); codifyLines(codeYYtext); endFontClass(); g_name.resize(0);g_type.resize(0); g_inForEachExpression = (strcmp(codeYYtext,"for each")==0 || strcmp(codeYYtext, "foreach")==0); BEGIN(FuncCall); } YY_BREAK case 65: /* rule 65 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2292 "code.l" { startFontClass("keywordflow"); codifyLines(codeYYtext); endFontClass(); if (g_inFunctionTryBlock && (strcmp(codeYYtext,"catch")==0 || strcmp(codeYYtext,"finally")==0)) { g_inFunctionTryBlock=FALSE; } } YY_BREAK case 66: YY_RULE_SETUP #line 2301 "code.l" { startFontClass("keywordflow"); codifyLines(codeYYtext); endFontClass(); } YY_BREAK case 67: YY_RULE_SETUP #line 2306 "code.l" { g_code->codify(codeYYtext); g_name.resize(0);g_type.resize(0); if (*codeYYtext==')') { g_theCallContext.popScope(); g_bracketCount--; BEGIN(FuncCall); } } YY_BREAK case 68: YY_RULE_SETUP #line 2316 "code.l" { startFontClass("keywordtype"); g_code->codify(codeYYtext); endFontClass(); addType(); g_name+=codeYYtext; } YY_BREAK case 69: *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp = yy_bp + 7; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2323 "code.l" { startFontClass("keyword"); g_code->codify(codeYYtext); endFontClass(); g_sharpCount=0; BEGIN(TemplDecl); } YY_BREAK case 70: *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp = yy_bp + 8; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2330 "code.l" { // template<...> startFontClass("keyword"); g_code->codify(codeYYtext); endFontClass(); g_sharpCount=0; BEGIN(TemplDecl); } YY_BREAK case 71: YY_RULE_SETUP #line 2337 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); } YY_BREAK case 72: YY_RULE_SETUP #line 2342 "code.l" { g_code->codify(codeYYtext); g_sharpCount++; } YY_BREAK case 73: YY_RULE_SETUP #line 2346 "code.l" { g_code->codify(codeYYtext); g_sharpCount--; if (g_sharpCount<=0) { BEGIN(Body); } } YY_BREAK case 74: YY_RULE_SETUP #line 2354 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); BEGIN( g_lastTemplCastContext ); } YY_BREAK case 75: YY_RULE_SETUP #line 2360 "code.l" { generateClassOrGlobalLink(*g_code,codeYYtext); } YY_BREAK case 76: YY_RULE_SETUP #line 2363 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); } YY_BREAK case 77: YY_RULE_SETUP #line 2368 "code.l" { codifyLines(codeYYtext); } YY_BREAK case 78: YY_RULE_SETUP #line 2371 "code.l" { // static_cast( startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); g_lastTemplCastContext = YY_START; BEGIN(TemplCast); } YY_BREAK case 79: /* rule 79 can match eol */ YY_RULE_SETUP #line 2378 "code.l" { // A *pt; int i=QCString(codeYYtext).find('<'); QCString kw = QCString(codeYYtext).left(i).stripWhiteSpace(); if (kw.right(5)=="_cast" && YY_START==Body) { REJECT; } addType(); generateClassOrGlobalLink(*g_code,codeYYtext); g_name+=codeYYtext; } YY_BREAK case 80: /* rule 80 can match eol */ YY_RULE_SETUP #line 2389 "code.l" { // "int var;" or "var, var2" or "debug(f) macro" addType(); // changed this to generateFunctionLink, see bug 624514 //generateClassOrGlobalLink(*g_code,codeYYtext,FALSE,TRUE); generateFunctionLink(*g_code,codeYYtext); g_name+=codeYYtext; } YY_BREAK case 81: /* rule 81 can match eol */ YY_RULE_SETUP #line 2396 "code.l" { // p->func() addType(); generateClassOrGlobalLink(*g_code,codeYYtext); g_name+=codeYYtext; } YY_BREAK case 82: /* rule 82 can match eol */ YY_RULE_SETUP #line 2401 "code.l" { // (*p)->func() but not "if (p) ..." g_code->codify(codeYYtext); int s=0;while (s<(int)codeYYleng && !isId(codeYYtext[s])) s++; int e=(int)codeYYleng-1;while (e>=0 && !isId(codeYYtext[e])) e--; QCString varname = ((QCString)codeYYtext).mid(s,e-s+1); addType(); g_name=varname; } YY_BREAK case 83: /* rule 83 can match eol */ YY_RULE_SETUP #line 2409 "code.l" { // a() or c::a() or t::a() addType(); generateFunctionLink(*g_code,codeYYtext); //printf("---> g_classScope=%s\n",g_classScope.data()); //g_theVarContext.addVariable(g_type,codeYYtext); g_bracketCount=0; g_args.resize(0); g_name+=codeYYtext; BEGIN( FuncCall ); } YY_BREAK case 84: YY_RULE_SETUP #line 2419 "code.l" { startFontClass("stringliteral"); g_code->codify(codeYYtext); g_lastStringContext=YY_START; g_inForEachExpression = FALSE; BEGIN( SkipString ); } YY_BREAK case 85: YY_RULE_SETUP #line 2426 "code.l" { startFontClass("stringliteral"); g_code->codify(codeYYtext); g_lastStringContext=YY_START; g_inForEachExpression = FALSE; BEGIN( SkipStringS ); } YY_BREAK case 86: YY_RULE_SETUP #line 2433 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 87: YY_RULE_SETUP #line 2436 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 88: YY_RULE_SETUP #line 2439 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 89: YY_RULE_SETUP #line 2442 "code.l" { g_code->codify(codeYYtext); endFontClass(); BEGIN( g_lastStringContext ); } YY_BREAK case 90: YY_RULE_SETUP #line 2447 "code.l" { g_code->codify(codeYYtext); endFontClass(); BEGIN( g_lastStringContext ); } YY_BREAK case 91: YY_RULE_SETUP #line 2452 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 92: YY_RULE_SETUP #line 2455 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 93: YY_RULE_SETUP #line 2458 "code.l" { // escaped quote g_code->codify(codeYYtext); } YY_BREAK case 94: YY_RULE_SETUP #line 2461 "code.l" { // end of string g_code->codify(codeYYtext); endFontClass(); BEGIN( g_lastVerbStringContext ); } YY_BREAK case 95: YY_RULE_SETUP #line 2466 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 96: /* rule 96 can match eol */ YY_RULE_SETUP #line 2469 "code.l" { codifyLines(codeYYtext); } YY_BREAK case 97: YY_RULE_SETUP #line 2472 "code.l" { g_code->codify(codeYYtext); g_name.resize(0);g_type.resize(0); } YY_BREAK case 98: YY_RULE_SETUP #line 2476 "code.l" { if (g_insideTemplate) { g_sharpCount++; } g_code->codify(codeYYtext); } YY_BREAK case 99: YY_RULE_SETUP #line 2483 "code.l" { if (g_insideTemplate) { if (--g_sharpCount<=0) { g_insideTemplate=FALSE; } } g_code->codify(codeYYtext); } YY_BREAK case 100: YY_RULE_SETUP #line 2493 "code.l" { startFontClass("charliteral"); g_code->codify(codeYYtext); endFontClass(); } YY_BREAK case 101: YY_RULE_SETUP #line 2498 "code.l" { g_code->codify(codeYYtext); g_memCallContext = YY_START; BEGIN( MemberCall ); } YY_BREAK case 102: /* rule 102 can match eol */ YY_RULE_SETUP #line 2503 "code.l" { if (g_theCallContext.getClass()) { if (!generateClassMemberLink(*g_code,g_theCallContext.getClass(),codeYYtext)) { g_code->linkableSymbol(g_yyLineNr,codeYYtext,0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition); g_code->codify(codeYYtext); addToSearchIndex(codeYYtext); } g_name.resize(0); } else { g_code->linkableSymbol(g_yyLineNr,codeYYtext,0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition); g_code->codify(codeYYtext); addToSearchIndex(codeYYtext); g_name.resize(0); } g_type.resize(0); g_bracketCount=0; if (g_memCallContext==Body) { BEGIN(FuncCall); } else { BEGIN(g_memCallContext); } } YY_BREAK case 103: /* rule 103 can match eol */ YY_RULE_SETUP #line 2534 "code.l" { if (g_theCallContext.getClass()) { //fprintf(stderr,"g_theCallContext.getClass()=%p\n",g_theCallContext.getClass()); if (!generateClassMemberLink(*g_code,g_theCallContext.getClass(),codeYYtext)) { g_code->linkableSymbol(g_yyLineNr,codeYYtext,0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition); g_code->codify(codeYYtext); addToSearchIndex(codeYYtext); } g_name.resize(0); } else { //fprintf(stderr,"no class context!\n"); g_code->codify(codeYYtext); addToSearchIndex(codeYYtext); g_name.resize(0); } g_type.resize(0); BEGIN(g_memCallContext); } YY_BREAK case 104: YY_RULE_SETUP #line 2557 "code.l" { if (g_insideObjC && *codeYYtext=='[') { //printf("Found start of ObjC call!\n"); // start of a method call g_contextDict.setAutoDelete(TRUE); g_nameDict.setAutoDelete(TRUE); g_objectDict.setAutoDelete(TRUE); g_wordDict.setAutoDelete(TRUE); g_contextDict.clear(); g_nameDict.clear(); g_objectDict.clear(); g_wordDict.clear(); g_currentCtxId = 0; g_currentNameId = 0; g_currentObjId = 0; g_currentCtx = 0; g_braceCount = 0; unput('['); BEGIN(ObjCCall); } else { g_code->codify(codeYYtext); g_saveName = g_name.copy(); g_saveType = g_type.copy(); if (*codeYYtext!='[' && !g_type.isEmpty()) { //printf("g_scopeStack.bottom()=%p\n",g_scopeStack.bottom()); if (g_scopeStack.top()!=CLASSBLOCK) { //printf("AddVariable: '%s' '%s' context=%d\n", // g_type.data(),g_name.data(),g_theVarContext.count()); g_theVarContext.addVariable(g_type,g_name); } g_name.resize(0); } if (*codeYYtext==';' || *codeYYtext=='=') { g_type.resize(0); g_name.resize(0); } else if (*codeYYtext=='[') { g_theCallContext.pushScope(); } g_args.resize(0); g_parmType.resize(0); g_parmName.resize(0); } } YY_BREAK /* {ID} { if (strcmp(codeYYtext,"self")==0 || strcmp(codeYYtext,"super")==0) { // TODO: get proper base class for "super" g_theCallContext.setClass(getClass(g_curClassName)); startFontClass("keyword"); g_code->codify(codeYYtext); endFontClass(); } else { generateClassOrGlobalLink(*g_code,codeYYtext); } g_name.resize(0); BEGIN(ObjCMemberCall2); } "[" { g_code->codify(codeYYtext); g_theCallContext.pushScope(); } {ID}":"? { g_name+=codeYYtext; if (g_theCallContext.getClass()) { //printf("Calling method %s\n",g_name.data()); if (!generateClassMemberLink(*g_code,g_theCallContext.getClass(),g_name)) { g_code->codify(codeYYtext); addToSearchIndex(g_name); } } else { g_code->codify(codeYYtext); addToSearchIndex(g_name); } g_name.resize(0); BEGIN(ObjCMemberCall3); } "]" { g_theCallContext.popScope(); g_code->codify(codeYYtext); BEGIN(Body); } */ case 105: YY_RULE_SETUP #line 2654 "code.l" { saveObjCContext(); g_currentCtx->format+=*codeYYtext; BEGIN(ObjCCall); //printf("open\n"); } YY_BREAK case 106: YY_RULE_SETUP #line 2660 "code.l" { g_currentCtx->format+=*codeYYtext; restoreObjCContext(); BEGIN(ObjCMName); if (g_currentCtx==0) { // end of call writeObjCMethodCall(g_contextDict.find(0)); BEGIN(Body); } //printf("close\n"); } YY_BREAK case 107: YY_RULE_SETUP #line 2672 "code.l" { g_currentCtx->format+=escapeObject(codeYYtext); if (g_braceCount==0) { g_currentCtx->objectTypeOrName=codeYYtext; //printf("new type=%s\n",g_currentCtx->objectTypeOrName.data()); BEGIN(ObjCMName); } } YY_BREAK case 108: /* rule 108 can match eol */ YY_RULE_SETUP #line 2681 "code.l" { if (g_braceCount==0 && g_currentCtx->methodName.isEmpty()) { g_currentCtx->methodName=codeYYtext; g_currentCtx->format+=escapeName(codeYYtext); } else { g_currentCtx->format+=escapeWord(codeYYtext); } } YY_BREAK case 109: /* rule 109 can match eol */ YY_RULE_SETUP #line 2693 "code.l" { if (g_braceCount==0) { g_currentCtx->methodName+=codeYYtext; g_currentCtx->methodName+=":"; } g_currentCtx->format+=escapeName(codeYYtext); } YY_BREAK case 110: YY_RULE_SETUP #line 2701 "code.l" { g_currentCtx->format+=codeYYtext; } YY_BREAK case 111: YY_RULE_SETUP #line 2702 "code.l" { g_currentCtx->format+=codeYYtext; } YY_BREAK case 112: YY_RULE_SETUP #line 2703 "code.l" { g_currentCtx->format+=codeYYtext; BEGIN(g_lastStringContext); } YY_BREAK case 113: YY_RULE_SETUP #line 2706 "code.l" { g_currentCtx->format+=codeYYtext; } YY_BREAK case 114: YY_RULE_SETUP #line 2707 "code.l" { g_currentCtx->format+=codeYYtext; g_lastStringContext=YY_START; BEGIN(ObjCSkipStr); } YY_BREAK case 115: YY_RULE_SETUP #line 2711 "code.l" { g_currentCtx->format+="$$"; } YY_BREAK case 116: YY_RULE_SETUP #line 2712 "code.l" { g_currentCtx->format+=*codeYYtext; g_braceCount++; } YY_BREAK case 117: YY_RULE_SETUP #line 2713 "code.l" { g_currentCtx->format+=*codeYYtext; g_braceCount--; } YY_BREAK case 118: *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2714 "code.l" { // needed to prevent matching the global rule (for C#) g_currentCtx->format+=codeYYtext; } YY_BREAK case 119: YY_RULE_SETUP #line 2717 "code.l" { g_currentCtx->format+=escapeWord(codeYYtext); } YY_BREAK case 120: YY_RULE_SETUP #line 2718 "code.l" { g_currentCtx->format+=*codeYYtext; } YY_BREAK case 121: /* rule 121 can match eol */ YY_RULE_SETUP #line 2719 "code.l" { g_currentCtx->format+=*codeYYtext; } YY_BREAK case 122: YY_RULE_SETUP #line 2721 "code.l" { g_theCallContext.popScope(); g_code->codify(codeYYtext); // TODO: nested arrays like: a[b[0]->func()]->func() g_name = g_saveName.copy(); g_type = g_saveType.copy(); } YY_BREAK case 123: YY_RULE_SETUP #line 2728 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 124: YY_RULE_SETUP #line 2731 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 125: /* rule 125 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2734 "code.l" { //addParmType(); //g_parmName=codeYYtext; startFontClass("keyword"); g_code->codify(codeYYtext); endFontClass(); } YY_BREAK case 126: /* rule 126 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2741 "code.l" { addParmType(); g_parmName=codeYYtext; startFontClass("keywordtype"); g_code->codify(codeYYtext); endFontClass(); } YY_BREAK case 127: /* rule 127 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2748 "code.l" { addParmType(); g_parmName=codeYYtext; startFontClass("keywordflow"); g_code->codify(codeYYtext); endFontClass(); } YY_BREAK case 128: YY_RULE_SETUP #line 2755 "code.l" { addParmType(); g_parmName=codeYYtext; generateClassOrGlobalLink(*g_code,codeYYtext,!g_insideBody); } YY_BREAK case 129: YY_RULE_SETUP #line 2760 "code.l" { // probably a cast, not a function call g_code->codify(codeYYtext); g_inForEachExpression = FALSE; BEGIN( Body ); } YY_BREAK case 130: YY_RULE_SETUP #line 2765 "code.l" { g_code->codify(codeYYtext); g_theVarContext.addVariable(g_parmType,g_parmName); g_parmType.resize(0);g_parmName.resize(0); } YY_BREAK case 131: YY_RULE_SETUP #line 2770 "code.l" { g_parmType.resize(0);g_parmName.resize(0); g_code->codify(codeYYtext); g_bracketCount++; g_theCallContext.pushScope(); if (YY_START==FuncCall && !g_insideBody) { g_theVarContext.pushScope(); } } YY_BREAK case 132: YY_RULE_SETUP #line 2780 "code.l" { // operator if (strcmp(codeYYtext,"*") && strcmp(codeYYtext,"&") && strcmp(codeYYtext,"^") && strcmp(codeYYtext,"%")) // typically a pointer or reference { // not a * or &, or C++/CLI's ^ or % g_parmType.resize(0);g_parmName.resize(0); } g_code->codify(codeYYtext); } YY_BREAK case 133: YY_RULE_SETUP #line 2791 "code.l" { g_theVarContext.addVariable(g_parmType,g_parmName); g_theCallContext.popScope(); g_inForEachExpression = FALSE; //g_theCallContext.setClass(0); // commented out, otherwise a()->b() does not work for b(). g_code->codify(codeYYtext); if (--g_bracketCount<=0) { if (g_name.isEmpty()) { BEGIN( Body ); } else { BEGIN( CallEnd ); } } } YY_BREAK case 134: /* rule 134 can match eol */ YY_RULE_SETUP #line 2809 "code.l" { codifyLines(codeYYtext); } YY_BREAK /* ")"[ \t\n]*[;:] { */ case 135: YY_RULE_SETUP #line 2813 "code.l" { codifyLines(codeYYtext); g_bracketCount=0; if (*codeYYtext==';') g_searchingForBody=FALSE; if (!g_type.isEmpty()) { //fprintf(stderr,"add variable g_type=%s g_name=%s)\n",g_type.data(),g_name.data()); g_theVarContext.addVariable(g_type,g_name); } g_parmType.resize(0);g_parmName.resize(0); g_theCallContext.setClass(0); if (*codeYYtext==';' || g_insideBody) { if (!g_insideBody) { g_theVarContext.popScope(); } g_name.resize(0);g_type.resize(0); BEGIN( Body ); } else { g_bracketCount=0; BEGIN( SkipInits ); } } YY_BREAK case 136: /* rule 136 can match eol */ YY_RULE_SETUP #line 2839 "code.l" { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); } YY_BREAK case 137: /* rule 137 can match eol */ YY_RULE_SETUP #line 2844 "code.l" { if (g_insideBody) { g_theVarContext.pushScope(); } g_theVarContext.addVariable(g_parmType,g_parmName); //g_theCallContext.popScope(); g_parmType.resize(0);g_parmName.resize(0); int index = g_name.findRev("::"); if (index!=-1) { QCString scope = g_name.left(index); if (!g_classScope.isEmpty()) scope.prepend(g_classScope+"::"); ClassDef *cd=getResolvedClass(Doxygen::globalScope,g_sourceFileDef,scope); if (cd) { setClassScope(cd->name()); g_scopeStack.push(SCOPEBLOCK); DBG_CTX((stderr,"** scope stack push SCOPEBLOCK\n")); } else { //setClassScope(g_realScope); g_scopeStack.push(INNERBLOCK); DBG_CTX((stderr,"** scope stack push INNERBLOCK\n")); } } else { DBG_CTX((stderr,"** scope stack push INNERBLOCK\n")); g_scopeStack.push(INNERBLOCK); } codeYYtext[codeYYleng-1]='\0'; QCString cv(codeYYtext); if (!cv.stripWhiteSpace().isEmpty()) { startFontClass("keyword"); codifyLines(codeYYtext); endFontClass(); } else // just whitespace { codifyLines(codeYYtext); } g_code->codify("{"); if (g_searchingForBody) { g_searchingForBody=FALSE; g_insideBody=TRUE; } if (g_insideBody) g_bodyCurlyCount++; g_curlyCount++; g_type.resize(0); g_name.resize(0); BEGIN( Body ); } YY_BREAK case 138: YY_RULE_SETUP #line 2899 "code.l" { // function-try-block startFontClass("keyword"); g_code->codify(codeYYtext); endFontClass(); g_inFunctionTryBlock=TRUE; } YY_BREAK case 139: YY_RULE_SETUP #line 2905 "code.l" { if (g_insideBody || !g_parmType.isEmpty()) { REJECT; } // could be K&R style definition addParmType(); g_parmName=codeYYtext; generateClassOrGlobalLink(*g_code,codeYYtext,!g_insideBody); BEGIN(OldStyleArgs); } YY_BREAK case 140: YY_RULE_SETUP #line 2916 "code.l" { addParmType(); g_parmName=codeYYtext; generateClassOrGlobalLink(*g_code,codeYYtext,!g_insideBody); } YY_BREAK case 141: YY_RULE_SETUP #line 2921 "code.l" { g_code->codify(codeYYtext); g_theVarContext.addVariable(g_parmType,g_parmName); if (*codeYYtext==';') g_parmType.resize(0); g_parmName.resize(0); } YY_BREAK case 142: YY_RULE_SETUP #line 2927 "code.l" { startFontClass("preprocessor"); g_lastSkipCppContext = Body; g_code->codify(codeYYtext); BEGIN( SkipCPP ); } YY_BREAK case 143: YY_RULE_SETUP #line 2933 "code.l" { unput(*codeYYtext); if (!g_insideBody) { g_theVarContext.popScope(); } g_name.resize(0);g_args.resize(0); g_parmType.resize(0);g_parmName.resize(0); BEGIN( Body ); } YY_BREAK case 144: YY_RULE_SETUP #line 2943 "code.l" { g_code->codify(codeYYtext); g_type.resize(0); g_name.resize(0); BEGIN( Body ); } YY_BREAK case 145: YY_RULE_SETUP #line 2948 "code.l" { g_code->codify(codeYYtext); g_curlyCount++; if (g_searchingForBody) { g_searchingForBody=FALSE; g_insideBody=TRUE; } if (g_insideBody) g_bodyCurlyCount++; if (g_name.find("::")!=-1) { DBG_CTX((stderr,"** scope stack push SCOPEBLOCK\n")); g_scopeStack.push(SCOPEBLOCK); setClassScope(g_realScope); } else { DBG_CTX((stderr,"** scope stack push INNERBLOCK\n")); g_scopeStack.push(INNERBLOCK); } g_type.resize(0); g_name.resize(0); BEGIN( Body ); } YY_BREAK case 146: YY_RULE_SETUP #line 2971 "code.l" { generateClassOrGlobalLink(*g_code,codeYYtext); } YY_BREAK case 147: *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 2974 "code.l" { generateFunctionLink(*g_code,codeYYtext); } YY_BREAK case 148: YY_RULE_SETUP #line 2977 "code.l" { g_name=codeYYtext; generateClassOrGlobalLink(*g_code,codeYYtext); BEGIN( MemberCall2 ); } YY_BREAK case 149: YY_RULE_SETUP #line 2982 "code.l" { g_code->codify(codeYYtext); int s=0;while (!isId(codeYYtext[s])) s++; int e=codeYYleng-1;while (!isId(codeYYtext[e])) e--; g_name=((QCString)codeYYtext).mid(s,e-s+1); BEGIN( MemberCall2 ); } YY_BREAK case 150: /* rule 150 can match eol */ YY_RULE_SETUP #line 2989 "code.l" { if (!g_args.isEmpty()) generateMemberLink(*g_code,g_args,codeYYtext); else generateClassOrGlobalLink(*g_code,codeYYtext); g_args.resize(0); BEGIN( FuncCall ); } YY_BREAK case 151: /* rule 151 can match eol */ YY_RULE_SETUP #line 2997 "code.l" { //g_code->codify(codeYYtext); g_name=codeYYtext; generateClassOrGlobalLink(*g_code,codeYYtext); BEGIN( MemberCall2 ); } YY_BREAK case 152: YY_RULE_SETUP #line 3003 "code.l" { g_code->codify(codeYYtext); g_memCallContext = YY_START; BEGIN( MemberCall ); } YY_BREAK case 153: YY_RULE_SETUP #line 3008 "code.l" { g_code->codify(codeYYtext); endFontClass(); BEGIN( g_lastCContext ) ; } YY_BREAK case 154: YY_RULE_SETUP #line 3013 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 155: YY_RULE_SETUP #line 3016 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 156: YY_RULE_SETUP #line 3019 "code.l" { g_code->codify(codeYYtext); endFontClass(); BEGIN( g_lastCContext ) ; } YY_BREAK case 157: /* rule 157 can match eol */ YY_RULE_SETUP #line 3024 "code.l" { // line continuation codifyLines(codeYYtext); } YY_BREAK case 158: YY_RULE_SETUP #line 3027 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 159: YY_RULE_SETUP #line 3030 "code.l" YY_BREAK case 160: /* rule 160 can match eol */ YY_RULE_SETUP #line 3031 "code.l" { unput('\n'); endFontClass(); BEGIN( g_lastCContext ) ; } YY_BREAK case 161: YY_RULE_SETUP #line 3036 "code.l" { g_code->codify(codeYYtext); } YY_BREAK case 162: /* rule 162 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 3039 "code.l" { g_yyLineNr+=QCString(codeYYtext).contains('\n'); } YY_BREAK case 163: /* rule 163 can match eol */ YY_RULE_SETUP #line 3042 "code.l" { g_yyLineNr+=QCString(codeYYtext).contains('\n'); nextCodeLine(); if (g_lastSpecialCContext==SkipCxxComment) { // force end of C++ comment here endFontClass(); BEGIN( g_lastCContext ) ; } else { BEGIN(g_lastSpecialCContext); } } YY_BREAK case 164: YY_RULE_SETUP #line 3055 "code.l" { BEGIN(g_lastSpecialCContext); } YY_BREAK case 165: YY_RULE_SETUP #line 3058 "code.l" YY_BREAK case 166: YY_RULE_SETUP #line 3059 "code.l" YY_BREAK case 167: /* rule 167 can match eol */ YY_RULE_SETUP #line 3060 "code.l" { g_yyLineNr++; } YY_BREAK case 168: YY_RULE_SETUP #line 3061 "code.l" YY_BREAK case 169: YY_RULE_SETUP #line 3062 "code.l" { g_code->codify(codeYYtext); g_type.resize(0); g_name.resize(0); BEGIN(g_memCallContext); } YY_BREAK case 170: /* rule 170 can match eol */ YY_RULE_SETUP #line 3068 "code.l" { // remove special one-line comment if (YY_START==SkipCPP) REJECT; if (Config_getBool("STRIP_CODE_COMMENTS")) { g_yyLineNr+=((QCString)codeYYtext).contains('\n'); nextCodeLine(); } else { startFontClass("comment"); codifyLines(codeYYtext); endFontClass(); } if (YY_START==SkipCxxComment) { endFontClass(); BEGIN( g_lastCContext ) ; } } YY_BREAK case 171: /* rule 171 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp = yy_bp + 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 3087 "code.l" { codifyLines(codeYYtext); endFontClass(); BEGIN( g_lastSkipCppContext ) ; } YY_BREAK case 172: /* rule 172 can match eol */ YY_RULE_SETUP #line 3092 "code.l" { // remove one-line group marker if (Config_getBool("STRIP_CODE_COMMENTS")) { g_yyLineNr+=2; nextCodeLine(); } else { startFontClass("comment"); codifyLines(codeYYtext); endFontClass(); } if (YY_START==SkipCxxComment) { endFontClass(); BEGIN( g_lastCContext ) ; } } YY_BREAK case 173: /* rule 173 can match eol */ YY_RULE_SETUP #line 3110 "code.l" { // remove one-line group marker if (Config_getBool("STRIP_CODE_COMMENTS")) { g_lastSpecialCContext = YY_START; g_yyLineNr++; BEGIN(RemoveSpecialCComment); } else { // check is to prevent getting stuck in skipping C++ comments if (YY_START != SkipCxxComment) { g_lastCContext = YY_START ; } startFontClass("comment"); codifyLines(codeYYtext); BEGIN(SkipComment); } } YY_BREAK case 174: /* rule 174 can match eol */ YY_RULE_SETUP #line 3129 "code.l" { // remove one-line group marker if (Config_getBool("STRIP_CODE_COMMENTS")) { g_yyLineNr++; nextCodeLine(); } else { startFontClass("comment"); codifyLines(codeYYtext); endFontClass(); } } YY_BREAK case 175: YY_RULE_SETUP #line 3142 "code.l" { // remove multi-line group marker if (Config_getBool("STRIP_CODE_COMMENTS")) { g_lastSpecialCContext = YY_START; BEGIN(RemoveSpecialCComment); } else { // check is to prevent getting stuck in skipping C++ comments if (YY_START != SkipCxxComment) { g_lastCContext = YY_START ; } startFontClass("comment"); g_code->codify(codeYYtext); BEGIN(SkipComment); } } YY_BREAK case 176: /* rule 176 can match eol */ YY_RULE_SETUP #line 3160 "code.l" { // remove special one-line comment if (Config_getBool("STRIP_CODE_COMMENTS")) { g_yyLineNr++; nextCodeLine(); } else { startFontClass("comment"); codifyLines(codeYYtext); endFontClass(); } } YY_BREAK case 177: /* rule 177 can match eol */ YY_RULE_SETUP #line 3173 "code.l" { // strip special one-line comment if (YY_START==SkipComment || YY_START==SkipString || YY_START==SkipCPP) REJECT; if (Config_getBool("STRIP_CODE_COMMENTS")) { char c[2]; c[0]='\n'; c[1]=0; codifyLines(c); } else { startFontClass("comment"); codifyLines(codeYYtext); endFontClass(); } } YY_BREAK case 178: /* rule 178 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 3187 "code.l" { if (Config_getBool("STRIP_CODE_COMMENTS")) { g_lastSpecialCContext = YY_START; g_yyLineNr++; BEGIN(RemoveSpecialCComment); } else { // check is to prevent getting stuck in skipping C++ comments if (YY_START != SkipCxxComment) { g_lastCContext = YY_START ; } startFontClass("comment"); codifyLines(codeYYtext); BEGIN(SkipComment); } } YY_BREAK case 179: /* rule 179 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 3206 "code.l" { // special C comment block at a new line if (Config_getBool("STRIP_CODE_COMMENTS")) { g_lastSpecialCContext = YY_START; BEGIN(RemoveSpecialCComment); } else { // check is to prevent getting stuck in skipping C++ comments if (YY_START != SkipCxxComment) { g_lastCContext = YY_START ; } startFontClass("comment"); g_code->codify(codeYYtext); BEGIN(SkipComment); } } YY_BREAK case 180: /* rule 180 can match eol */ *yy_cp = (yy_hold_char); /* undo effects of setting up codeYYtext */ (yy_c_buf_p) = yy_cp = yy_bp + 3; YY_DO_BEFORE_ACTION; /* set up codeYYtext again */ YY_RULE_SETUP #line 3224 "code.l" { // special C comment block half way a line if (YY_START==SkipString) REJECT; if (Config_getBool("STRIP_CODE_COMMENTS")) { g_lastSpecialCContext = YY_START; BEGIN(RemoveSpecialCComment); } else { // check is to prevent getting stuck in skipping C++ comments if (YY_START != SkipCxxComment) { g_lastCContext = YY_START ; } startFontClass("comment"); g_code->codify(codeYYtext); BEGIN(SkipComment); } } YY_BREAK case 181: YY_RULE_SETUP #line 3243 "code.l" { if (YY_START==SkipString) REJECT; if (!Config_getBool("STRIP_CODE_COMMENTS")) { startFontClass("comment"); g_code->codify(codeYYtext); endFontClass(); } } YY_BREAK case 182: YY_RULE_SETUP #line 3252 "code.l" { startFontClass("comment"); g_code->codify(codeYYtext); // check is to prevent getting stuck in skipping C++ comments if (YY_START != SkipCxxComment) { g_lastCContext = YY_START ; } BEGIN( SkipComment ) ; } YY_BREAK case 183: YY_RULE_SETUP #line 3262 "code.l" { // C# verbatim string startFontClass("stringliteral"); g_code->codify(codeYYtext); g_lastVerbStringContext=YY_START; BEGIN(SkipVerbString); } YY_BREAK case 184: YY_RULE_SETUP #line 3268 "code.l" { startFontClass("comment"); g_code->codify(codeYYtext); g_lastCContext = YY_START ; BEGIN( SkipCxxComment ) ; } YY_BREAK case 185: YY_RULE_SETUP #line 3274 "code.l" { g_code->codify(codeYYtext); g_theCallContext.pushScope(); } YY_BREAK case 186: YY_RULE_SETUP #line 3278 "code.l" { g_code->codify(codeYYtext); g_theCallContext.popScope(); } YY_BREAK case 187: /* rule 187 can match eol */ YY_RULE_SETUP #line 3282 "code.l" { codifyLines(codeYYtext); } YY_BREAK case 188: YY_RULE_SETUP #line 3285 "code.l" { g_code->codify(codeYYtext); } YY_BREAK /* <*>([ \t\n]*"\n"){2,} { // combine multiple blank lines //QCString sepLine=codeYYtext; //g_code->codify("\n\n"); //g_yyLineNr+=sepLine.contains('\n'); //char sepLine[3]="\n\n"; codifyLines(codeYYtext); } */ case 189: YY_RULE_SETUP #line 3298 "code.l" ECHO; YY_BREAK #line 12821 "" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(SkipString): case YY_STATE_EOF(SkipStringS): case YY_STATE_EOF(SkipVerbString): case YY_STATE_EOF(SkipCPP): case YY_STATE_EOF(SkipComment): case YY_STATE_EOF(SkipCxxComment): case YY_STATE_EOF(RemoveSpecialCComment): case YY_STATE_EOF(StripSpecialCComment): case YY_STATE_EOF(Body): case YY_STATE_EOF(FuncCall): case YY_STATE_EOF(MemberCall): case YY_STATE_EOF(MemberCall2): case YY_STATE_EOF(SkipInits): case YY_STATE_EOF(ClassName): case YY_STATE_EOF(PackageName): case YY_STATE_EOF(ClassVar): case YY_STATE_EOF(CppCliTypeModifierFollowup): case YY_STATE_EOF(Bases): case YY_STATE_EOF(SkipSharp): case YY_STATE_EOF(ReadInclude): case YY_STATE_EOF(TemplDecl): case YY_STATE_EOF(TemplCast): case YY_STATE_EOF(CallEnd): case YY_STATE_EOF(ObjCMethod): case YY_STATE_EOF(ObjCParams): case YY_STATE_EOF(ObjCParamType): case YY_STATE_EOF(ObjCCall): case YY_STATE_EOF(ObjCMName): case YY_STATE_EOF(ObjCSkipStr): case YY_STATE_EOF(OldStyleArgs): case YY_STATE_EOF(UsingName): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed codeYYin at a new source and called * codeYYlex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = codeYYin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( codeYYwrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * codeYYtext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of codeYYlex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ YY_FATAL_ERROR( "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; codeYYrestart(codeYYin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) codeYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); (yy_state_ptr) = (yy_state_buf); *(yy_state_ptr)++ = yy_current_state; for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 3159 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *(yy_state_ptr)++ = yy_current_state; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { register int yy_is_jam; register YY_CHAR yy_c = 1; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 3159 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 3158); if ( ! yy_is_jam ) *(yy_state_ptr)++ = yy_current_state; return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) { register char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up codeYYtext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register yy_size_t number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ codeYYrestart(codeYYin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( codeYYwrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve codeYYtext */ (yy_hold_char) = *++(yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void codeYYrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ codeYYensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = codeYY_create_buffer(codeYYin,YY_BUF_SIZE ); } codeYY_init_buffer(YY_CURRENT_BUFFER,input_file ); codeYY_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void codeYY_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * codeYYpop_buffer_state(); * codeYYpush_buffer_state(new_buffer); */ codeYYensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; codeYY_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (codeYYwrap()) processing, but the only time this flag * is looked at is after codeYYwrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void codeYY_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; codeYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE codeYY_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) codeYYalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in codeYY_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) codeYYalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in codeYY_create_buffer()" ); b->yy_is_our_buffer = 1; codeYY_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with codeYY_create_buffer() * */ void codeYY_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) codeYYfree((void *) b->yy_ch_buf ); codeYYfree((void *) b ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a codeYYrestart() or at EOF. */ static void codeYY_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; codeYY_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then codeYY_init_buffer was _probably_ * called from codeYYrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void codeYY_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) codeYY_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void codeYYpush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; codeYYensure_buffer_stack(); /* This block is copied from codeYY_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from codeYY_switch_to_buffer. */ codeYY_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void codeYYpop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; codeYY_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { codeYY_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void codeYYensure_buffer_stack (void) { yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)codeYYalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in codeYYensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)codeYYrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in codeYYensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE codeYY_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) codeYYalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in codeYY_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; codeYY_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to codeYYlex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * codeYY_scan_bytes() instead. */ YY_BUFFER_STATE codeYY_scan_string (yyconst char * yystr ) { return codeYY_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to codeYYlex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE codeYY_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n, i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) codeYYalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in codeYY_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = codeYY_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in codeYY_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up codeYYtext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ codeYYtext[codeYYleng] = (yy_hold_char); \ (yy_c_buf_p) = codeYYtext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ codeYYleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int codeYYget_lineno (void) { return codeYYlineno; } /** Get the input stream. * */ FILE *codeYYget_in (void) { return codeYYin; } /** Get the output stream. * */ FILE *codeYYget_out (void) { return codeYYout; } /** Get the length of the current token. * */ yy_size_t codeYYget_leng (void) { return codeYYleng; } /** Get the current token. * */ char *codeYYget_text (void) { return codeYYtext; } /** Set the current line number. * @param line_number * */ void codeYYset_lineno (int line_number ) { codeYYlineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see codeYY_switch_to_buffer */ void codeYYset_in (FILE * in_str ) { codeYYin = in_str ; } void codeYYset_out (FILE * out_str ) { codeYYout = out_str ; } int codeYYget_debug (void) { return codeYY_flex_debug; } void codeYYset_debug (int bdebug ) { codeYY_flex_debug = bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from codeYYlex_destroy(), so don't allocate here. */ (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; (yy_state_buf) = 0; (yy_state_ptr) = 0; (yy_full_match) = 0; (yy_lp) = 0; /* Defined in main.c */ #ifdef YY_STDINIT codeYYin = stdin; codeYYout = stdout; #else codeYYin = (FILE *) 0; codeYYout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * codeYYlex_init() */ return 0; } /* codeYYlex_destroy is for both reentrant and non-reentrant scanners. */ int codeYYlex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ codeYY_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; codeYYpop_buffer_state(); } /* Destroy the stack itself. */ codeYYfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; codeYYfree ( (yy_state_buf) ); (yy_state_buf) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * codeYYlex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *codeYYalloc (yy_size_t size ) { return (void *) malloc( size ); } void *codeYYrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void codeYYfree (void * ptr ) { free( (char *) ptr ); /* see codeYYrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 3298 "code.l" /*@ ---------------------------------------------------------------------------- */ static void saveObjCContext() { if (g_currentCtx) { g_currentCtx->format+=QCString().sprintf("$c%d",g_currentCtxId); if (g_braceCount==0 && YY_START==ObjCCall) { g_currentCtx->objectTypeOrName=g_currentCtx->format.mid(1); //printf("new type=%s\n",g_currentCtx->objectTypeOrName.data()); } g_contextStack.push(g_currentCtx); } else { //printf("Trying to save NULL context!\n"); } ObjCCallCtx *newCtx = new ObjCCallCtx; newCtx->id = g_currentCtxId; newCtx->lexState = YY_START; newCtx->braceCount = g_braceCount; newCtx->objectType = 0; newCtx->objectVar = 0; newCtx->method = 0; //printf("save state=%d\n",YY_START); g_contextDict.insert(g_currentCtxId,newCtx); g_currentCtx = newCtx; g_braceCount = 0; g_currentCtxId++; } static void restoreObjCContext() { //printf("restore state=%d->%d\n",YY_START,g_currentCtx->lexState); BEGIN(g_currentCtx->lexState); g_braceCount = g_currentCtx->braceCount; if (!g_contextStack.isEmpty()) { g_currentCtx = g_contextStack.pop(); } else { g_currentCtx = 0; //printf("Trying to pop context while g_contextStack is empty!\n"); } } void resetCCodeParserState() { //printf("***initParseCodeContext()\n"); g_theVarContext.clear(); g_classScopeLengthStack.setAutoDelete(TRUE); g_classScopeLengthStack.clear(); delete g_codeClassSDict; g_codeClassSDict = new ClassSDict(17); g_codeClassSDict->setAutoDelete(TRUE); g_codeClassSDict->clear(); g_curClassBases.clear(); g_anchorCount = 0; } void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, bool exBlock, const char *exName,FileDef *fd, int startLine,int endLine,bool inlineFragment, MemberDef *memberDef,bool showLineNumbers) { //printf("***parseCode() exBlock=%d exName=%s fd=%p className=%s\n", // exBlock,exName,fd,className); if (s.isEmpty()) return; if (g_codeClassSDict==0) { resetCCodeParserState(); } g_code = &od; g_inputString = s; g_inputPosition = 0; g_currentFontClass = 0; g_needsTermination = FALSE; g_inFunctionTryBlock = FALSE; if (endLine!=-1) g_inputLines = endLine+1; else g_inputLines = countLines(); if (startLine!=-1) g_yyLineNr = startLine; else g_yyLineNr = 1; g_curlyCount = 0; g_bodyCurlyCount = 0; g_bracketCount = 0; g_sharpCount = 0; g_insideTemplate = FALSE; g_theCallContext.clear(); g_scopeStack.clear(); g_classScope = className; //printf("parseCCode %s\n",className); g_exampleBlock = exBlock; g_exampleName = exName; g_sourceFileDef = fd; g_lineNumbers = fd!=0 && showLineNumbers; bool cleanupSourceDef = FALSE; if (/* exBlock */ fd==0) { // create a dummy filedef for the example g_sourceFileDef = new FileDef("",(exName?exName:"generated")); cleanupSourceDef = TRUE; } if (g_sourceFileDef) { setCurrentDoc(g_sourceFileDef->name(),g_sourceFileDef->getSourceFileBase()); g_insideObjC = g_sourceFileDef->name().lower().right(2)==".m" || g_sourceFileDef->name().lower().right(3)==".mm"; } g_currentDefinition = 0; g_currentMemberDef = 0; g_searchingForBody = exBlock; g_insideBody = FALSE; g_bracketCount = 0; if (!g_exampleName.isEmpty()) { g_exampleFile = convertNameToFile(g_exampleName+"-example",FALSE,TRUE); //printf("g_exampleFile=%s\n",g_exampleFile.data()); } g_includeCodeFragment = inlineFragment; //printf("** exBlock=%d exName=%s include=%d\n",exBlock,exName,inlineFragment); startCodeLine(); g_type.resize(0); g_name.resize(0); g_args.resize(0); g_parmName.resize(0); g_parmType.resize(0); if (memberDef) setParameterList(memberDef); codeYYrestart( codeYYin ); BEGIN( Body ); codeYYlex(); g_lexInit=TRUE; if (g_needsTermination) { endFontClass(); g_code->endCodeLine(); } if (cleanupSourceDef) { // delete the temporary file definition used for this example delete g_sourceFileDef; g_sourceFileDef=0; } return; } void codeFreeScanner() { #if defined(YY_FLEX_SUBMINOR_VERSION) if (g_lexInit) { codeYYlex_destroy(); } #endif } #if !defined(YY_FLEX_SUBMINOR_VERSION) extern "C" { // some bogus code to keep the compiler happy void codeYYdummy() { yy_flex_realloc(0,0); } } #elif YY_FLEX_SUBMINOR_VERSION<33 #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!" #endif