modules/up/src/rpsl/rpsl/rpsl.l.cc

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. YY_PROTO
  2. YY_PROTO
  3. YY_SC_TO_UI
  4. YY_STATE_EOF
  5. yyless
  6. unput
  7. yy_set_interactive
  8. yy_set_bol
  9. YY_AT_BOL
  10. yymore
  11. YYLESS
  12. YY_INPUT
  13. yyterminate
  14. YY_FATAL_ERROR
  15. yy_get_next_buffer
  16. yy_get_previous_state
  17. yy_try_NUL_trans
  18. yyunput
  19. yyinput
  20. yyrestart
  21. yy_switch_to_buffer
  22. yy_load_buffer_state
  23. yy_create_buffer
  24. yy_delete_buffer
  25. yy_init_buffer
  26. yy_flush_buffer
  27. yy_scan_buffer
  28. yy_scan_string
  29. yy_scan_bytes
  30. yy_push_state
  31. yy_pop_state
  32. yy_top_state
  33. yy_fatal_error
  34. yyless
  35. yy_flex_strncpy
  36. yy_flex_strlen
  37. yy_flex_alloc
  38. yy_flex_realloc
  39. yy_flex_free
  40. main
  41. handle_error
  42. handle_object_error
  43. rpslerror
  44. handle_warning
  45. yy_scan_object
  46. changeCurrentAttr
  47. validIPv6
  48. validIntForPhone

   1 #define yy_create_buffer rpsl_create_buffer
   2 #define yy_delete_buffer rpsl_delete_buffer
   3 #define yy_scan_buffer rpsl_scan_buffer
   4 #define yy_scan_string rpsl_scan_string
   5 #define yy_scan_bytes rpsl_scan_bytes
   6 #define yy_flex_debug rpsl_flex_debug
   7 #define yy_init_buffer rpsl_init_buffer
   8 #define yy_flush_buffer rpsl_flush_buffer
   9 #define yy_load_buffer_state rpsl_load_buffer_state
  10 #define yy_switch_to_buffer rpsl_switch_to_buffer
  11 #define yyin rpslin
  12 #define yyleng rpslleng
  13 #define yylex rpsllex
  14 #define yyout rpslout
  15 #define yyrestart rpslrestart
  16 #define yytext rpsltext
  17 #define yywrap rpslwrap
  18 
  19 /* A lexical scanner generated by flex */
  20 
  21 /* Scanner skeleton version:
  22  * $Header: /ncc/cvsroot/ncc/RIP/modules/up/src/rpsl/rpsl/rpsl.l.cc,v 1.5 2001/07/25 15:01:37 engin Exp $
  23  */
  24 
  25 #define FLEX_SCANNER
  26 #define YY_FLEX_MAJOR_VERSION 2
  27 #define YY_FLEX_MINOR_VERSION 5
  28 
  29 #include <stdio.h>
  30 
  31 
  32 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
  33 #ifdef c_plusplus
  34 #ifndef __cplusplus
  35 #define __cplusplus
  36 #endif
  37 #endif
  38 
  39 
  40 #ifdef __cplusplus
  41 
  42 #include <stdlib.h>
  43 #include <unistd.h>
  44 
  45 /* Use prototypes in function declarations. */
  46 #define YY_USE_PROTOS
  47 
  48 /* The "const" storage-class-modifier is valid. */
  49 #define YY_USE_CONST
  50 
  51 #else   /* ! __cplusplus */
  52 
  53 #if __STDC__
  54 
  55 #define YY_USE_PROTOS
  56 #define YY_USE_CONST
  57 
  58 #endif  /* __STDC__ */
  59 #endif  /* ! __cplusplus */
  60 
  61 #ifdef __TURBOC__
  62  #pragma warn -rch
  63  #pragma warn -use
  64 #include <io.h>
  65 #include <stdlib.h>
  66 #define YY_USE_CONST
  67 #define YY_USE_PROTOS
  68 #endif
  69 
  70 #ifdef YY_USE_CONST
  71 #define yyconst const
  72 #else
  73 #define yyconst
  74 #endif
  75 
  76 
  77 #ifdef YY_USE_PROTOS
  78 #define YY_PROTO(proto) proto
     /* [<][>][^][v][top][bottom][index][help] */
  79 #else
  80 #define YY_PROTO(proto) ()
     /* [<][>][^][v][top][bottom][index][help] */
  81 #endif
  82 
  83 /* Returned upon end-of-file. */
  84 #define YY_NULL 0
  85 
  86 /* Promotes a possibly negative, possibly signed char to an unsigned
  87  * integer for use as an array index.  If the signed char is negative,
  88  * we want to instead treat it as an 8-bit unsigned char, hence the
  89  * double cast.
  90  */
  91 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
     /* [<][>][^][v][top][bottom][index][help] */
  92 
  93 /* Enter a start condition.  This macro really ought to take a parameter,
  94  * but we do it the disgusting crufty way forced on us by the ()-less
  95  * definition of BEGIN.
  96  */
  97 #define BEGIN yy_start = 1 + 2 *
  98 
  99 /* Translate the current start state into a value that can be later handed
 100  * to BEGIN to return to the state.  The YYSTATE alias is for lex
 101  * compatibility.
 102  */
 103 #define YY_START ((yy_start - 1) / 2)
 104 #define YYSTATE YY_START
 105 
 106 /* Action number for EOF rule of a given start state. */
 107 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
     /* [<][>][^][v][top][bottom][index][help] */
 108 
 109 /* Special action meaning "start processing a new file". */
 110 #define YY_NEW_FILE yyrestart( yyin )
 111 
 112 #define YY_END_OF_BUFFER_CHAR 0
 113 
 114 /* Size of default input buffer. */
 115 #define YY_BUF_SIZE 16384
 116 
 117 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 118 
 119 extern int yyleng;
 120 extern FILE *yyin, *yyout;
 121 
 122 #define EOB_ACT_CONTINUE_SCAN 0
 123 #define EOB_ACT_END_OF_FILE 1
 124 #define EOB_ACT_LAST_MATCH 2
 125 
 126 /* The funky do-while in the following #define is used to turn the definition
 127  * int a single C statement (which needs a semi-colon terminator).  This
 128  * avoids problems with code like:
 129  *
 130  *      if ( condition_holds )
 131  *              yyless( 5 );
 132  *      else
 133  *              do_something_else();
 134  *
 135  * Prior to using the do-while the compiler would get upset at the
 136  * "else" because it interpreted the "if" statement as being all
 137  * done when it reached the ';' after the yyless() call.
 138  */
 139 
 140 /* Return all but the first 'n' matched characters back to the input stream. */
 141 
 142 #define yyless(n) \
     /* [<][>][^][v][top][bottom][index][help] */
 143         do \
 144                 { \
 145                 /* Undo effects of setting up yytext. */ \
 146                 *yy_cp = yy_hold_char; \
 147                 YY_RESTORE_YY_MORE_OFFSET \
 148                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
 149                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
 150                 } \
 151         while ( 0 )
 152 
 153 #define unput(c) yyunput( c, yytext_ptr )
     /* [<][>][^][v][top][bottom][index][help] */
 154 
 155 /* The following is because we cannot portably get our hands on size_t
 156  * (without autoconf's help, which isn't available because we want
 157  * flex-generated scanners to compile on their own).
 158  */
 159 typedef unsigned int yy_size_t;
 160 
 161 
 162 struct yy_buffer_state
 163         {
 164         FILE *yy_input_file;
 165 
 166         char *yy_ch_buf;                /* input buffer */
 167         char *yy_buf_pos;               /* current position in input buffer */
 168 
 169         /* Size of input buffer in bytes, not including room for EOB
 170          * characters.
 171          */
 172         yy_size_t yy_buf_size;
 173 
 174         /* Number of characters read into yy_ch_buf, not including EOB
 175          * characters.
 176          */
 177         int yy_n_chars;
 178 
 179         /* Whether we "own" the buffer - i.e., we know we created it,
 180          * and can realloc() it to grow it, and should free() it to
 181          * delete it.
 182          */
 183         int yy_is_our_buffer;
 184 
 185         /* Whether this is an "interactive" input source; if so, and
 186          * if we're using stdio for input, then we want to use getc()
 187          * instead of fread(), to make sure we stop fetching input after
 188          * each newline.
 189          */
 190         int yy_is_interactive;
 191 
 192         /* Whether we're considered to be at the beginning of a line.
 193          * If so, '^' rules will be active on the next match, otherwise
 194          * not.
 195          */
 196         int yy_at_bol;
 197 
 198         /* Whether to try to fill the input buffer when we reach the
 199          * end of it.
 200          */
 201         int yy_fill_buffer;
 202 
 203         int yy_buffer_status;
 204 #define YY_BUFFER_NEW 0
 205 #define YY_BUFFER_NORMAL 1
 206         /* When an EOF's been seen but there's still some text to process
 207          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
 208          * shouldn't try reading from the input source any more.  We might
 209          * still have a bunch of tokens to match, though, because of
 210          * possible backing-up.
 211          *
 212          * When we actually see the EOF, we change the status to "new"
 213          * (via yyrestart()), so that the user can continue scanning by
 214          * just pointing yyin at a new input file.
 215          */
 216 #define YY_BUFFER_EOF_PENDING 2
 217         };
 218 
 219 static YY_BUFFER_STATE yy_current_buffer = 0;
 220 
 221 /* We provide macros for accessing buffer states in case in the
 222  * future we want to put the buffer states in a more general
 223  * "scanner state".
 224  */
 225 #define YY_CURRENT_BUFFER yy_current_buffer
 226 
 227 
 228 /* yy_hold_char holds the character lost when yytext is formed. */
 229 static char yy_hold_char;
 230 
 231 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
 232 
 233 
 234 int yyleng;
 235 
 236 /* Points to current character in buffer. */
 237 static char *yy_c_buf_p = (char *) 0;
 238 static int yy_init = 1;         /* whether we need to initialize */
 239 static int yy_start = 0;        /* start state number */
 240 
 241 /* Flag which is used to allow yywrap()'s to do buffer switches
 242  * instead of setting up a fresh yyin.  A bit of a hack ...
 243  */
 244 static int yy_did_buffer_switch_on_eof;
 245 
 246 void yyrestart YY_PROTO(( FILE *input_file ));
 247 
 248 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
 249 void yy_load_buffer_state YY_PROTO(( void ));
 250 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
 251 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
 252 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
 253 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
 254 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
 255 
 256 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
 257 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
 258 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 259 
 260 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
 261 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
 262 static void yy_flex_free YY_PROTO(( void * ));
 263 
 264 #define yy_new_buffer yy_create_buffer
 265 
 266 #define yy_set_interactive(is_interactive) \
     /* [<][>][^][v][top][bottom][index][help] */
 267         { \
 268         if ( ! yy_current_buffer ) \
 269                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
 270         yy_current_buffer->yy_is_interactive = is_interactive; \
 271         }
 272 
 273 #define yy_set_bol(at_bol) \
     /* [<][>][^][v][top][bottom][index][help] */
 274         { \
 275         if ( ! yy_current_buffer ) \
 276                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
 277         yy_current_buffer->yy_at_bol = at_bol; \
 278         }
 279 
 280 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
     /* [<][>][^][v][top][bottom][index][help] */
 281 
 282 
 283 #define YY_USES_REJECT
 284 typedef unsigned char YY_CHAR;
 285 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 286 typedef int yy_state_type;
 287 extern char *yytext;
 288 #define yytext_ptr yytext
 289 
 290 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
 291 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
 292 static int yy_get_next_buffer YY_PROTO(( void ));
 293 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 294 
 295 /* Done after the current pattern has been matched and before the
 296  * corresponding action - sets up yytext.
 297  */
 298 #define YY_DO_BEFORE_ACTION \
 299         yytext_ptr = yy_bp; \
 300         yyleng = (int) (yy_cp - yy_bp); \
 301         yy_hold_char = *yy_cp; \
 302         *yy_cp = '\0'; \
 303         yy_c_buf_p = yy_cp;
 304 
 305 #define YY_NUM_RULES 60
 306 #define YY_END_OF_BUFFER 61
 307 static yyconst short int yy_acclist[826] =
 308     {   0,
 309        61,    4,   60,   60,    3,    4,   60,    4,   60,    2,
 310        60,    4,   60,   58,   59,   60,   49,   60,   48,   59,
 311        60,   59,   60,   47,   60,   11,   47,   60,   10,   60,
 312        47,   60,   12,   47,   60,   47,   60,   46,   47,   60,
 313        46,   47,   60,   46,   47,   60,   47,   60,   13,   60,
 314        11,   13,   60,   12,   13,   60,   14,   60,   11,   60,
 315        12,   14,   60,   40,   60,   11,   40,   60,   10,   60,
 316        20,   40,   60,   12,   40,   60,   40,   60,   40,   60,
 317        40,   60,   40,   60,   40,   60,   17,   40,   60,   40,
 318        60,   36,   40,   60,   36,   40,   60,   40,   60,   36,
 319 
 320        40,   60,   36,   40,   60,   36,   40,   60,   36,   40,
 321        60,   36,   40,   60,    7,   60,    6,   60,    7,   60,
 322         5,    6,   60,   40,   60,   17,   40,   60,   40,   60,
 323         3,    2,    1,   58,   57,   50,   51,   57,   51,   57,
 324        55,   57,   56,   57,   52,   57,   54,   57,   53,   57,
 325        11,    9,    9,    8,   46,   12,   13,   11,   13,   12,
 326        13,   14,   12,   14,    9,    8,   12,   12,   12,   17,
 327        17,   19,   17,   36,   26,   36,   26,   36,   36,   26,
 328        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 329        36,   26,   36,   26,   36,   26,   36,   26,   36,    7,
 330 
 331         7,    5,   17,   42,   41,   43,   50,   51,   51,   10,
 332        12,   12,   12,   12,   19,   38,   19,   38,   19,   19,
 333        38,   38,   17,   18,   36,   37,   38,   36,   36,   26,
 334        36,   26,   36,   26,   36,   26,   36,   26,   27,   36,
 335        26,   36,   26,   36,   26,   36,   26,   36,   26,   36,
 336        26,   36,   26,   36,   26,   36,   45,   17,   50,   51,
 337        12,   12,   12,   12,   38,   19,   19,   19,   38,   38,
 338        38,   17,   18,   23,   23,   38,   37,   38,   37,   38,
 339        36,   36,   26,   36,   26,   36,   26,   36,   26,   36,
 340        26,   36,   26,   36,   26,   36,   28,   36,   26,   28,
 341 
 342        36,   26,   27,   36,   26,   36,   26,   36,   26,   36,
 343        26,   36,   26,   36,   26,   36,   29,   36,   26,   29,
 344        36,   26,   36,   26,   33,   36,   17,   44,   39,   39,
 345        12,   39,   12,   39,   19,   38,   19,   38,   19,   19,
 346        19,   38,   38,   19,   38,   38,   19,   38,   17,   18,
 347        23,   23,   23,   37,   38,   37,   38,   37,   38,   37,
 348        38,   36,   26,   36,   26,   36,   26,   36,   26,   36,
 349        26,   28,   36,   26,   27,   36,   34,   36,   36,   36,
 350        26,   29,   36,   17,   12,   19,   19,   38,   38,   19,
 351        38,   38,   19,   38,   17,   18,   37,   38,   37,   38,
 352 
 353        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 354        28,   36,   26,   27,   36,   26,   36,   32,   36,   26,
 355        32,   36,   36,   36,   31,   36,   26,   31,   36,   26,
 356        29,   36,   30,   36,   26,   30,   36,   17,   39,   39,
 357        39,   12,   39,   19,   19,   21,   38,   38,   38,   19,
 358        38,   38,   19,   38,   17,   18,   37,   38,   37,   38,
 359        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 360        28,   36,   26,   27,   36,   36,   26,   32,   36,   26,
 361        31,   36,   26,   29,   36,   26,   30,   36,   17,   12,
 362        19,   19,   21,   38,   38,   38,   19,   38,   38,   19,
 363 
 364        38,   17,   37,   38,   37,   38,   36,   26,   36,   26,
 365        36,   26,   36,   26,   36,   28,   26,   28,   36,   26,
 366        27,   36,   28,   29,   26,   36,   26,   32,   36,   36,
 367        26,   31,   36,   29,   26,   29,   36,   26,   30,   36,
 368        17,   39,   39,   12,   39,   19,   19,   38,   24,   24,
 369        24,   21,   38,   38,   19,   38,   38,   19,   38,   17,
 370        37,   38,   37,   38,   36,   26,   36,   26,   36,   26,
 371        36,   28,   26,   28,   36,   27,   36,   26,   36,   26,
 372        32,   36,   36,   26,   31,   36,   29,   26,   29,   36,
 373        26,   30,   36,   19,   19,   38,   24,   24,   24,   21,
 374 
 375        38,   38,   19,   38,   38,   19,   38,   17,   37,   38,
 376        37,   38,   36,   26,   36,   26,   36,   26,   28,   36,
 377        27,   36,   32,   31,   30,   26,   36,   32,   26,   32,
 378        36,   36,   31,   26,   31,   36,   26,   29,   36,   30,
 379        26,   30,   36,   39,   19,   19,   38,   25,   25,   24,
 380        24,   24,   21,   38,   38,   19,   38,   38,   19,   38,
 381        17,   37,   38,   37,   38,   36,   26,   36,   28,   26,
 382        28,   36,   27,   36,   26,   32,   36,   36,   26,   31,
 383        36,   29,   26,   29,   36,   26,   30,   36,   19,   19,
 384        38,   24,   24,   24,   21,   38,   38,   19,   38,   38,
 385 
 386        19,   38,   17,   37,   38,   37,   38,   36,   26,   36,
 387        26,   28,   36,   27,   36,   26,   32,   36,   36,   26,
 388        31,   36,   26,   29,   36,   26,   30,   36,   16,   16,
 389        19,   16,   16,   19,   16,   16,   16,   16,   38,   16,
 390        25,   16,   24,   16,   24,   16,   24,   16,   16,   21,
 391        38,   16,   16,   38,   16,   16,   19,   38,   16,   38,
 392        16,   19,   38,   16,   16,   17,   16,   16,   37,   38,
 393        16,   37,   38,   16,   16,   36,   16,   27,   36,   32,
 394        32,   26,   32,   36,   36,   31,   31,   26,   31,   36,
 395        30,   30,   26,   30,   36,   19,   24,   24,   24,   21,
 396 
 397        38,   38,   19,   38,   17,   27,   36,   26,   32,   36,
 398        36,   26,   31,   36,   26,   30,   36,   35,   36,   22,
 399        22,   22,   22,   22,   15
 400     } ;
 401 
 402 static yyconst short int yy_accept[864] =
 403     {   0,
 404         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 405         1,    1,    1,    1,    1,    1,    1,    2,    4,    5,
 406         8,   10,   12,   14,   17,   19,   22,   24,   26,   29,
 407        31,   33,   36,   38,   41,   44,   47,   49,   51,   54,
 408        57,   59,   61,   64,   66,   69,   71,   74,   77,   79,
 409        81,   83,   85,   87,   90,   92,   95,   98,  100,  103,
 410       106,  109,  112,  115,  117,  119,  121,  124,  126,  129,
 411       131,  132,  132,  133,  133,  133,  134,  135,  136,  139,
 412       141,  143,  145,  147,  149,  151,  152,  153,  154,  155,
 413       156,  157,  157,  157,  158,  160,  162,  163,  165,  165,
 414 
 415       165,  165,  166,  167,  167,  168,  169,  170,  170,  171,
 416       171,  171,  172,  172,  173,  173,  173,  173,  174,  174,
 417       174,  174,  174,  174,  174,  175,  175,  177,  179,  180,
 418       180,  182,  184,  186,  188,  190,  192,  194,  196,  198,
 419       200,  201,  202,  203,  203,  204,  205,  206,  207,  209,
 420       210,  210,  211,  211,  211,  211,  211,  211,  212,  213,
 421       214,  215,  216,  217,  219,  219,  219,  220,  220,  220,
 422       220,  220,  222,  223,  223,  224,  224,  224,  225,  225,
 423       225,  225,  225,  226,  228,  228,  229,  230,  230,  232,
 424       234,  236,  238,  238,  241,  243,  245,  247,  249,  251,
 425 
 426       253,  253,  255,  257,  258,  259,  259,  261,  261,  261,
 427       261,  261,  261,  262,  263,  264,  265,  265,  266,  266,
 428       266,  267,  267,  267,  267,  268,  268,  268,  268,  268,
 429       270,  271,  272,  272,  272,  273,  273,  273,  274,  274,
 430       274,  275,  276,  276,  276,  276,  277,  279,  281,  281,
 431       282,  283,  285,  287,  289,  291,  293,  295,  297,  297,
 432       299,  302,  305,  305,  307,  309,  311,  313,  315,  317,
 433       317,  319,  322,  324,  327,  328,  329,  330,  331,  331,
 434       331,  333,  335,  335,  336,  337,  339,  339,  340,  341,
 435       341,  342,  342,  342,  342,  343,  344,  344,  346,  347,
 436 
 437       347,  349,  349,  350,  350,  351,  351,  351,  352,  353,
 438       354,  354,  354,  356,  358,  360,  362,  362,  363,  365,
 439       367,  369,  371,  371,  374,  377,  377,  377,  377,  377,
 440       377,  379,  379,  380,  381,  381,  381,  384,  384,  385,
 441       385,  385,  385,  386,  386,  387,  387,  388,  388,  388,
 442       388,  388,  389,  390,  390,  390,  392,  393,  395,  395,
 443       396,  396,  396,  397,  397,  397,  397,  397,  397,  397,
 444       399,  401,  401,  402,  404,  406,  408,  410,  410,  410,
 445       413,  416,  416,  416,  416,  416,  416,  416,  418,  418,
 446       420,  423,  424,  425,  425,  427,  430,  430,  430,  430,
 447 
 448       433,  433,  435,  438,  439,  440,  441,  442,  444,  444,
 449       445,  445,  446,  446,  446,  446,  448,  449,  449,  450,
 450       450,  450,  452,  453,  455,  455,  456,  456,  457,  457,
 451       457,  457,  457,  459,  461,  461,  462,  464,  466,  468,
 452       470,  470,  470,  473,  476,  476,  476,  476,  476,  476,
 453       476,  476,  477,  477,  480,  480,  480,  483,  483,  483,
 454       483,  486,  486,  489,  490,  490,  490,  491,  491,  492,
 455       492,  493,  493,  493,  493,  493,  493,  495,  496,  496,
 456       497,  497,  499,  500,  502,  502,  503,  503,  503,  503,
 457       503,  503,  503,  503,  505,  507,  507,  508,  510,  512,
 458 
 459       514,  516,  516,  517,  517,  520,  523,  523,  524,  524,
 460       524,  524,  524,  525,  525,  527,  527,  527,  527,  530,
 461       531,  531,  531,  534,  535,  535,  535,  538,  538,  538,
 462       538,  541,  542,  543,  544,  546,  546,  547,  547,  548,
 463       548,  548,  548,  549,  550,  551,  552,  552,  552,  554,
 464       554,  555,  555,  557,  558,  560,  560,  560,  561,  561,
 465       561,  561,  561,  561,  563,  565,  565,  566,  568,  570,
 466       572,  572,  573,  573,  576,  578,  578,  578,  578,  578,
 467       580,  580,  580,  580,  583,  584,  584,  584,  584,  587,
 468       587,  587,  588,  591,  591,  591,  591,  594,  594,  594,
 469 
 470       595,  595,  596,  596,  596,  596,  596,  597,  597,  598,
 471       599,  600,  600,  602,  602,  603,  603,  605,  606,  608,
 472       608,  608,  609,  609,  609,  609,  609,  609,  609,  609,
 473       611,  613,  613,  614,  616,  618,  618,  621,  623,  623,
 474       624,  624,  624,  625,  625,  626,  628,  629,  629,  629,
 475       632,  633,  634,  634,  634,  637,  637,  640,  641,  641,
 476       641,  644,  645,  645,  646,  646,  647,  647,  647,  647,
 477       648,  648,  649,  650,  651,  652,  653,  653,  655,  655,
 478       656,  656,  658,  659,  661,  661,  661,  662,  662,  662,
 479       662,  662,  662,  664,  666,  666,  667,  669,  670,  673,
 480 
 481       675,  675,  675,  678,  679,  679,  679,  682,  683,  686,
 482       686,  686,  689,  689,  690,  690,  691,  691,  691,  691,
 483       691,  692,  692,  693,  694,  695,  695,  697,  697,  698,
 484       698,  700,  701,  703,  703,  703,  704,  704,  704,  704,
 485       704,  704,  704,  704,  706,  708,  708,  709,  711,  714,
 486       716,  716,  716,  719,  720,  720,  720,  723,  726,  726,
 487       726,  729,  730,  732,  733,  735,  736,  737,  738,  740,
 488       741,  742,  744,  746,  748,  749,  752,  753,  755,  756,
 489       759,  761,  764,  764,  765,  767,  768,  768,  768,  768,
 490       768,  771,  774,  775,  777,  780,  780,  781,  782,  785,
 491 
 492       786,  787,  787,  788,  791,  792,  792,  793,  796,  797,
 493       798,  799,  800,  800,  802,  802,  803,  803,  805,  805,
 494       805,  806,  806,  806,  806,  806,  806,  806,  808,  811,
 495       812,  815,  818,  818,  818,  818,  818,  818,  820,  820,
 496       820,  820,  820,  820,  820,  820,  821,  822,  822,  822,
 497       822,  823,  824,  825,  825,  825,  825,  825,  825,  825,
 498       825,  826,  826
 499     } ;
 500 
 501 static yyconst int yy_ec[256] =
 502     {   0,
 503         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
 504         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
 505         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 506         1,    2,    5,    6,    7,    1,    1,    1,    1,    8,
 507         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
 508        19,   20,   20,   20,   20,   21,   22,   23,   12,   24,
 509        25,   26,    1,   27,   36,   37,   38,   38,   39,   40,
 510        41,   42,   42,   42,   43,   44,   42,   45,   46,   47,
 511        42,   48,   49,   50,   51,   42,   42,   42,   52,   42,
 512        30,   31,   32,   33,   34,   35,   36,   37,   38,   38,
 513 
 514        39,   40,   41,   42,   42,   42,   43,   44,   42,   45,
 515        46,   47,   42,   48,   49,   50,   51,   42,   42,   42,
 516        52,   42,    1,    1,    1,    1,    1,    1,    1,    1,
 517         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 518         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 519         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 520         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 521         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 522         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 523         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 524 
 525         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 526         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 527         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 528         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 529         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 530         1,    1,    1,    1,    1
 531     } ;
 532 
 533 static yyconst int yy_meta[53] =
 534     {   0,
 535         1,    2,    3,    4,    1,    5,    1,    6,    6,    1,
 536         7,    6,    8,    9,   10,   11,   11,   11,   11,   11,
 537        11,   11,   12,    6,    1,    6,   13,   14,   15,    6,
 538         5,    6,    1,   16,    1,   14,   14,   14,   17,   14,
 539        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 540        15,   15
 541     } ;
 542 
 543 static yyconst short int yy_base[1050] =
 544     {   0,
 545         0,    6,    8,    9,   57,   86,   14,   20,   26,   34,
 546       116,    0, 2247,    2,  155,  175, 2246,13957,13957,    0,
 547        71,13957,   72,    0,13957,13957,  193,13957,   74,  176,
 548      2219,    0, 2234,    1, 2207,    6, 2197,    0,   75,    0,
 549         0,   82,  100,   78,  105,  215,    0,  242,13957,  261,
 550       288,  182,  340,  375, 2205,  427,  464,  491,   64,  146,
 551       177,  135, 2178,    0,13957,  203,13957,  500,  241,  512,
 552         0,  232,13957,  263,  277,13957,    0,13957,  339,  477,
 553     13957,13957,13957,13957,13957,  177,  316,13957,13957,13957,
 554         0, 2199, 2187,    0,  219,    0,    0,  235,  213, 2165,
 555 
 556       534,  257,  335, 2185,  585,  616,  648,  685,    0,    0,
 557       712,    0,    0,  763,  802,  837,  872,  924,  961,  988,
 558       996, 2175, 1036, 1071, 1123,  584, 1175, 1212, 1237,  615,
 559      1265, 2136, 2140, 2133, 2133, 2122, 2123, 2153, 2116, 2111,
 560         0,  366,13957, 2139,  752,  350,  352, 1275,  770,  777,
 561       403,13957,  357, 1297, 1336, 2138, 2110, 1357, 1389, 1428,
 562      2122,  804, 1437,  817,    0,  342, 1458, 1496, 1518, 1553,
 563      1588, 1623, 1674,  818, 1713, 1752, 1760, 1785,  974, 2121,
 564      1009,  205, 1825, 1860, 1882, 1934, 1971, 2011, 2051, 2073,
 565      2110, 2138, 2160, 2197, 2088, 2056, 2056, 2055, 2056, 2056,
 566 
 567      2220, 2036, 2043,    0, 1036, 2259, 1225, 2268, 2067, 2290,
 568      2325, 1250, 2347, 2065, 2369, 1356, 2420, 2441,    0,  283,
 569      2462, 2500,  707, 1447,  850, 2522, 2557, 2592, 2627, 2678,
 570      2704, 2725, 2063,  864, 2747, 2786, 2052, 2794, 2043, 1465,
 571      1472, 1517,  209,    0, 2834, 2886, 2921, 2956, 2978, 3030,
 572      3065, 3100, 3140, 1552, 1587, 3148, 1663, 2042, 3171, 3206,
 573      3206, 3243, 1463, 2030, 2003, 2028, 2001, 1996, 2007, 3266,
 574      3301, 3301, 2006,    0, 1681, 3340, 3367, 3402, 2003, 3424,
 575      3446, 3485, 3494, 3508, 3535,    0,    0, 1688, 3586, 3624,
 576       856, 3646, 3681, 3716, 3751, 3790, 2001, 3811, 3849, 1984,
 577 
 578      1062, 1063, 3871, 3910, 3918, 1773, 1974,13957, 1798, 1825,
 579       232,  416, 3958, 3993, 4028, 4063, 4085, 4137, 4172, 4224,
 580      1860, 1881,   33, 4276, 4313, 1947, 1951,  324,  203, 4336,
 581      4388, 4423, 1917, 1913, 4475,  510, 4527, 4579, 1984, 4631,
 582         0, 2123, 4683,    0, 4734, 4772, 1544, 4794, 4829, 4864,
 583      4899, 4938, 4947, 1950, 1946, 4968, 5006, 1579, 1545, 5028,
 584      2290, 5067, 1935, 1923, 1920, 1919,  436,  575,    0, 5090,
 585      5125, 5147, 5199, 5199, 5251, 2451, 2469, 1891, 1899, 5303,
 586      5340, 1923, 1867, 1873, 1864, 1895, 1844, 5363, 5380,  492,
 587      5419, 5471,   85, 5506, 5541, 5541, 1841, 1850, 1839, 5593,
 588 
 589      5645, 5680, 5680, 2476, 5732, 1872, 5771, 5793,    0, 5844,
 590      5882, 1851, 5904, 5939, 5974, 6009, 6047,    5, 6056, 1870,
 591      1869, 6077, 6115, 1902, 1615, 6137, 6176, 2521, 1849, 1846,
 592       598,  693, 6199, 6234, 6256, 6308, 6343, 6395, 2556, 2591,
 593      1838, 1810, 6447, 6484,  236, 1808, 1781, 1719, 1704,  423,
 594      1690, 6480,  674, 6532, 6584,   67, 6636, 2667, 1698, 1712,
 595      6688,  688, 6740, 2685, 6779, 6788, 6797,    0, 6818, 6856,
 596      1903, 6878, 6913, 6948, 6983, 2692, 7018, 7070,  474, 7092,
 597      1703, 7113, 7151, 2316, 1852, 7173, 7224, 1692, 1689, 1666,
 598       802,  811,    0, 7247, 7282, 7304, 7356, 7356, 7408, 2807,
 599 
 600      2886,  530, 1654, 1605, 7443, 7480,  610,  842, 1636, 1610,
 601      1622,  811,  861, 1605, 7476, 1567, 1567, 1561, 7528, 7580,
 602      1545,  488, 7632, 1559, 1528,  815, 7684, 1493, 1491, 1474,
 603      7736,  310, 7788, 7827, 7849,    0, 7900, 7938, 2320, 7960,
 604      7995, 8030, 8065,  581, 8087,  756, 8120, 1487, 8142,  476,
 605      8151, 1488, 8172, 8210, 2442,  397, 2300, 8232, 8271, 1449,
 606      1447,  818,  881, 8294, 8329, 8337, 8389, 8389, 8441, 2921,
 607       846, 1025, 1425, 8476, 8516,  868, 1403,  920, 1008, 8512,
 608      2956, 1393, 1347, 8564, 8616, 2977, 1343, 1334, 8668, 1315,
 609      1010, 1267, 8720, 3030, 1289, 1275, 8772, 3065,    0, 8823,
 610 
 611      8861, 2501, 8883, 8918, 8953, 8988, 9023, 9048, 1272, 9060,
 612       970, 2432, 9079,  551, 9088, 1289, 9109, 9147, 2548, 3171,
 613      2549, 9169, 9208, 1238, 1178, 1176,  913,  933,    0, 9231,
 614      9266, 9288, 9340, 9340, 9392, 1134, 9427, 9467, 1049, 1286,
 615      1158, 1067, 1527, 1119, 1562, 9475, 1154, 1106, 1101, 9515,
 616      9552, 1108, 1081, 1084, 9592, 1048, 9644, 1071, 1031,  996,
 617      9696, 9735,    0, 9756, 9794, 2583, 9816, 9851, 9886, 9921,
 618      9956,  787, 9979,  593, 9993, 1217, 2491,10013,  728,10022,
 619      1026,10043,10081, 2618,  999, 2619,10103,10142,  997,  962,
 620      1045, 1080,10165,10200,10208,10260,10260,  932,10312,10364,
 621 
 622       937,  896,10381,10418,  894,  913,10423,  875,10440,  817,
 623       833,10457,    0,10508,10546, 2726,10568,10603,10638,10673,
 624     10708,10730,  806,10742, 1246, 2716,10761,  796,10770,  816,
 625     10791,10829, 2912, 3206, 2913,10851,10890,  777,  743,  721,
 626      1112, 1132,    0,10913,10948,10970,11022,    0,11022,11074,
 627      1171,  689,11091,11128,  677, 1293,11133,11150,  596, 1351,
 628     11167,13957, 1469, 2947, 3266, 3301,11206, 1583,11228,11263,
 629         0,  596,11283, 1765, 2967,11303, 1192,11312,  627,11333,
 630     11371, 2999, 3367, 3057,11393,11432,  615,  604, 1164, 1306,
 631     11455,11490,11498,    0,11535, 1488, 1814,  573,11523,11560,
 632 
 633       569, 1528, 1834,11565,  537, 1531, 2000,11582, 1575,  790,
 634         0, 1790, 3076,    0, 1353,    0,  528,    0,  517, 3575,
 635         0,  515,  501,  435, 1347, 1597,    0,11619,11607,11644,
 636     11649,11666, 3593,  430,  414, 1632,  372,    0, 3600,  360,
 637      3645,  337, 1696,  333,  431, 3680, 3715,  327,  277, 3000,
 638     13957, 3800, 2409,  216,  171, 3818, 3825,  147, 3931, 3958,
 639     13957,13957,11718,11735,11752,11769,11786,11803,11820,11830,
 640     11847,11864,11881,11898,11915,11932,11949,11966,11983,12000,
 641     12009,12026,12043,12060,12077,12086,12103,12120,12128,12145,
 642     12162,12171,12188,12205,12213,12230,12247,12264,12274,12283,
 643 
 644     12299,12310,12327,12334,12342,12349,12366,12383,12400,12417,
 645     12434,12451,12468,12478,12495,12504,12521,12538,12545,12553,
 646     12561,12578,12595,12612,12622,12631,12648,12665, 1484,12672,
 647     12679,12687,12694,12711,12728,   55,12745,12762,12772,12781,
 648     12798,12815,12822,12829,12837,12845,12862,12879,  256,12889,
 649      1515,12899,12908,12925,12942,12959,12966,12973,12981,12988,
 650     13005,13022,13032, 1620,13042,13052, 1675,13062,13072,13081,
 651     13098,13115,13132,13148,13149,13156,13164,13172,13189,13206,
 652     13216,13226,13236,13246,13256,13266,13275,13292,13309,13326,
 653     13343,13350,13357,13365,13372,13389,13406,13416,13426,13436,
 654 
 655      1710, 1732, 1822,13446,13455,13472,13489,13506,13523,13530,
 656     13537,13545,13553,13570,13587,13596,13613,13630,13647,13654,
 657     13661,13669,13676,13693,13710,13720,13730,13740,13756,13772,
 658     13783,13800,13807,13814,13822,13830,13847,13854,13861,13869,
 659     13876,13883,13891,13899,13907,13915,13923,13931,13939
 660     } ;
 661 
 662 static yyconst short int yy_def[1050] =
 663     {   0,
 664       863,  863,  864,  864,  865,  865,  866,  866,  867,  867,
 665       862,   11,  868,  868,   11,   11,  862,  862,  862,  869,
 666       862,  862,  870,  871,  862,  862,  872,  862,  862,  862,
 667       862,  873,  862,  862,  862,  862,  862,  874,  874,  875,
 668       876,  862,  877,  878,  862,  878,  879,  880,  862,  878,
 669       862,  881,  882,  862,  862,  862,   56,   51,   56,   56,
 670        57,   57,   57,  883,  862,  883,  862,  881,   54,   50,
 671       869,  862,  862,  870,  870,  862,  871,  862,  862,  862,
 672       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 673       873,  862,  862,  874,  874,  875,  876,  877,  878,  884,
 674 
 675       862,  878,  878,  879,  880,  885,  862,  884,   50,   58,
 676       862,   51,  886,  886,  887,  888,  862,  862,  862,  118,
 677       120,  889,  890,  862,  862,  119,  862,  127,  125,  111,
 678       128,  128,  127,  128,  128,  128,  128,  128,  128,  128,
 679       891,  891,  862,  886,  118,  878,  878,   50,  862,  862,
 680       862,  862,  884,  862,  101,  101,  862,  885,  862,  107,
 681       107,  108,  111,  111,  892,  862,  892,  892,  893,  893,
 682       894,  862,  172,  172,  862,  175,  176,  862,  178,  173,
 683       862,  895,  896,  897,  173,  862,  186,  862,  186,  862,
 684       190,  187,  862,  192,  191,  191,  191,  191,  191,  191,
 685 
 686       862,  191,  191,  892,  175,   50,  862,  154,  154,  898,
 687       898,  899,  159,  159,  862,  215,  108,  163,  900,  901,
 688       900,  900,  901,  862,  222,  902,  902,  903,  862,  229,
 689       229,  231,  231,  230,  862,  235,  236,  862,  904,  238,
 690       862,  862,  905,  906,  862,  907,  908,  908,  231,  909,
 691       909,  862,  251,  253,  253,  253,  256,  253,  910,  910,
 692       260,  253,  862,  256,  256,  256,  256,  256,  256,  911,
 693       911,  271,  256,  256,  235,  912,  913,  913,  914,  914,
 694       862,  281,  915,  915,  862,  285,  916,  862,  916,  916,
 695       290,  917,  917,  918,  862,  295,  295,  295,  296,  296,
 696 
 697       299,  298,  862,  303,  862,  305,  919,  862,  862,  862,
 698       920,  921,  922,  922,  923,  923,  296,  924,  862,  862,
 699       320,  320,  862,  862,  320,  862,  862,  862,  862,  862,
 700       924,  862,  331,  331,  862,  862,  862,  862,  303,  862,
 701       925,  925,  862,  926,  926,  926,  346,  927,  927,  928,
 702       862,  351,  351,  353,  352,  352,  353,  357,  356,  862,
 703       862,  360,  929,  862,  930,  931,  862,  932,  933,  934,
 704       934,  353,  935,  319,  862,  375,  375,  862,  862,  862,
 705       375,  936,  862,  862,  862,  862,  862,  862,  332,  389,
 706       389,  935,  392,  937,  937,  395,  862,  862,  862,  862,
 707 
 708       938,  938,  402,  360,  862,  939,  939,  862,  940,  940,
 709       940,  411,  941,  941,  942,  862,  416,  416,  417,  417,
 710       419,  419,  417,  423,  422,  862,  426,  862,  943,  944,
 711       945,  946,  947,  947,  417,  948,  862,  862,  438,  438,
 712       949,  862,  862,  438,  950,  951,  862,  862,  862,  952,
 713       862,  437,  862,  862,  862,  862,  862,  862,  862,  862,
 714       862,  862,  862,  426,  405,  939,  408,  953,  953,  953,
 715       470,  954,  954,  955,  956,  473,  862,  956,  477,  478,
 716       480,  480,  478,  483,  482,  862,  486,  862,  957,  958,
 717       862,  959,  960,  961,  961,  478,  962,  437,  962,  499,
 718 
 719       499,  963,  964,  862,  862,  499,  965,  965,  862,  862,
 720       862,  966,  966,  862,  437,  862,  862,  862,  862,  862,
 721       862,  862,  862,  967,  862,  968,  862,  862,  862,  862,
 722       862,  486,  862,  969,  862,  970,  970,  970,  538,  971,
 723       971,  972,  973,  541,  541,  545,  973,  545,  547,  549,
 724       547,  551,  551,  551,  554,  974,  553,  862,  558,  975,
 725       976,  977,  978,  979,  979,  547,  980,  437,  980,  569,
 726       981,  981,  862,  862,  569,  982,  862,  983,  984,  437,
 727       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 728       985,  985,  862,  862,  862,  862,  862,  986,  987,  987,
 729 
 730       987,  601,  988,  988,  989,  990,  990,  991,  604,  604,
 731       604,  610,  607,  613,  607,  615,  615,  607,  618,  862,
 732       617,  862,  622,  862,  992,  993,  862,  994,  995,  996,
 733       996,  607,  997,  437,  997,  862,  862,  635,  998,  998,
 734       862,  999,  999, 1000, 1000,  585, 1001,  862,  862,  862,
 735       646, 1002,  862,  862,  862,  862,  862, 1003,  862,  862,
 736       862, 1004, 1005, 1005, 1005,  665, 1006, 1006, 1007, 1008,
 737      1008, 1009, 1009,  668,  668,  675,  675,  671,  678,  671,
 738       680,  680,  680,  683,  862,  682,  862,  687, 1010, 1011,
 739      1012, 1013, 1014, 1014,  671, 1015,  646,  862,  862,  862,
 740 
 741       862,  862,  650,  646,  862,  862,  655,  862,  657,  862,
 742       862,  661, 1016, 1016, 1016,  715, 1017, 1017, 1018, 1019,
 743      1019, 1009,  718,  718,  718,  724,  721,  727,  721,  729,
 744       729,  721,  732,  862,  731,  862,  736,  862, 1020, 1021,
 745       862, 1022, 1023, 1024, 1024,  721, 1025,  646,  699,  862,
 746      1026,  862,  650,  646,  862, 1027,  655,  709,  862, 1028,
 747       661,  862, 1029, 1030,  862,  722,  722, 1031, 1032, 1032,
 748       722,  767,  722,  773,  773,  770,  776,  770,  778,  778,
 749       778,  781,  862,  780,  862,  785, 1033, 1034, 1035, 1036,
 750      1037, 1037,  770,  646,  646, 1026, 1026,  862,  650,  646,
 751 
 752       862, 1027, 1027,  655,  862, 1028, 1028,  761, 1029,  767,
 753       773,  773,  773,  776,  776,  778,  778,  780,  862,  770,
 754       785,  862, 1038, 1039,  862, 1040, 1041,  646,  650,  646,
 755       655,  761,  862, 1042, 1043, 1044, 1045,  646,  862,  862,
 756       862, 1046,  862, 1047,  862,  862,  862, 1048, 1049,  862,
 757       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 758       862,    0,  862,  862,  862,  862,  862,  862,  862,  862,
 759       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 760       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 761       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 762 
 763       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 764       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 765       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 766       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 767       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 768       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 769       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 770       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 771       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 772       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 773 
 774       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 775       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 776       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 777       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
 778       862,  862,  862,  862,  862,  862,  862,  862,  862
 779     } ;
 780 
 781 static yyconst short int yy_nxt[14010] =
 782     {   0,
 783       862,  862,   19,   66,   67,   66,   20,   21,   22,   21,
 784        25,   25,   20,   26,   26,   39,   30,   39,  468,  473,
 785        40,   39,   30,   39,   92,   90,   40,   42,   30,   42,
 786        90,   93,   43,   23,   23,   42,   30,   42,   27,   27,
 787        43,   23,   23,   23,   23,   23,   23,   23,   23,   23,
 788        23,   23,   23,   23,   23,   23,   23,   23,   29,   30,
 789        29,   31,  446,   32,   33,  446,   31,   31,  378,   31,
 790        31,   31,   72,   73,   72,   86,   95,   86,   95,  379,
 791        34,   35,   36,   86,   74,   86,   37,   29,   30,   29,
 792        31,  100,   32,   33,   76,   31,   31,  455,   31,   31,
 793 
 794        31,   91,  521,   91,  101,   74,   86,  862,   86,   34,
 795        35,   36,  131,  522,  132,   37,   44,   45,   46,   45,
 796        44,   47,   48,   49,   49,   44,   50,   49,   51,   52,
 797        53,   54,   54,   54,   54,   54,   54,   54,   55,   49,
 798        44,   49,   44,   56,   57,   49,   49,   49,   44,   58,
 799        44,   59,   56,   56,   56,   60,   57,   57,   57,   57,
 800        57,   57,   61,   62,   57,   63,   57,   57,   68,  859,
 801        69,   69,   69,   69,   69,   69,   69,   87,   86,   87,
 802        86,  133,   88,  138,  139,  181,   89,   70,   68,  134,
 803        69,   69,   69,   69,   69,   69,   69,  114,  114,  114,
 804 
 805       114,  114,  114,  114,  142,  143,  142,   70,   79,   79,
 806        79,   79,   79,   80,   80,  135,   87,  136,   87,  181,
 807        95,  102,   95,  181,  137,  103,  100,  244,  100,   81,
 808       841,  244,   82,   72,   73,   72,   91,   83,   91,  101,
 809        84,  101,   85,   91,   99,   91,  181,   91,  507,   91,
 810        91,  386,  387,   91,  244,  106,  145,  145,  145,  145,
 811       145,  145,  145,  503,   91,   91,  503,   91,  107,  507,
 812       100,   91,   91,   91,  108,   74,  109,  109,  109,  109,
 813       109,  109,  109,  101,  223,  862,  223,  101,   99,   74,
 814        99,  181,   99,  224,   99,  224,   74,   99,   99,   76,
 815 
 816       110,  111,   99,  112,  112,  112,  112,  112,  112,  112,
 817        74,  862,   99,  862,  101,  110,  110,  151,  152,  151,
 818        99,  110,   99,  110,  110,  110,  110,  110,  110,  110,
 819       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
 820        99,  841,   99,  166,   99,  166,   99,  181,  100,   99,
 821        99,  841,   99,  115,  149,  149,  149,  149,  149,  150,
 822       150,  101,  384,  100,   99,  100,  101,  142,  143,  142,
 823       100,  385,   99,   99,   99,   99,  101,   99,  101,   99,
 824       220,   99,  824,  154,   99,   99,  181,  110,  117,  116,
 825       118,  118,  118,  118,  118,  118,  118,  119,  556,   99,
 826 
 827       556,  101,  120,  121,  151,  152,  151,   99,  110,   99,
 828       120,  120,  120,  120,  120,  121,  121,  121,  121,  121,
 829       121,  121,  121,  121,  121,  121,  121,   99,  841,   99,
 830       181,   99,  850,   99,  850,  512,   99,   99,  369,  123,
 831       124,  116,  125,  125,  125,  125,  125,  125,  125,  126,
 832       181,   99,  824,  101,  127,  128,  512,  122,  244,   99,
 833       123,   99,  127,  127,  127,  127,  127,  128,  128,  128,
 834       128,  128,  128,  128,  128,  128,  128,  128,  128,  129,
 835       129,  129,  129,  129,  129,  129,  862,  536,  540,  599,
 836       604,  128,  150,  150,  150,  150,  150,  150,  150,  128,
 837 
 838       128,  128,  128,  128,  130,  245,  110,  110,  110,  110,
 839       110,  110,  110,  144,  453,  114,  114,  114,  114,  114,
 840       114,  114,  146,  824,  147,  100,  587,  148,  148,  148,
 841       148,  148,  148,  148,   99,  588,   99,  740,   99,  833,
 842        99,  862,  571,   99,   99,  397,  155,  100,   99,  156,
 843       156,  156,  156,  156,  156,  156,  398,  399,   99,  462,
 844       101,  155,  155,  571,  663,  667,   99,  155,   99,  155,
 845       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
 846       155,  155,  155,  155,  155,  155,   91,   99,   91,  181,
 847        91,  456,   91,   91,  603,  453,   91,  369,  106,  179,
 848 
 849       179,  179,  179,  179,  179,  179,  717,   91,   91,  100,
 850        91,  107,  181,  608,   91,   91,   91,   91,  153,   91,
 851       369,   91,  507,   91,   91,  608,  824,   91,  608,   91,
 852       163,  163,  163,  163,  163,  163,  163,  740,   91,   91,
 853       862,   91,  159,  507,  805,   91,   91,   91,  105,   91,
 854        99,   91,  105,   91,  105,   91,   91,  105,  105,   91,
 855       160,  106,  105,  161,  161,  161,  161,  161,  161,  161,
 856        91,   91,  105,   91,  107,  160,  160,   91,   91,   91,
 857       105,  160,  105,  160,  160,  160,  160,  160,  160,  160,
 858       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
 859 
 860       162,  162,  162,  162,  162,  162,  162,  181,  223,  516,
 861       223,  154,  153,  517,  153,  493,  153,  224,  153,  224,
 862       518,  153,  153,  528,  163,  801,  153,  164,  164,  164,
 863       164,  164,  164,  164,  529,  530,  153,  798,  154,  163,
 864       163,  713,  718,  122,  153,  163,  153,  163,  163,  163,
 865       163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
 866       163,  163,  163,  163,  166,  740,  166,  205,  205,  205,
 867       205,  205,  205,  205,  604,  604,  604,  604,  167,  167,
 868       167,  167,  167,  167,  167,  207,  207,  207,  207,  207,
 869       150,  150,  150,  150,  150,  150,  150,  150,  150,  626,
 870 
 871       100,  168,  153,  100,  153,  166,  153,  166,  153,  762,
 872       766,  153,  153,  154,  153,  165,  181,  100,  166,  862,
 873       166,  862,  608,  512,  369,  181,  153,  591,  154,  762,
 874       130,  219,  181,  493,  153,  153,  153,   99,  608,   99,
 875       493,   99,  217,   99,  512,  760,   99,   99,  591,   99,
 876       170,  862,  759,  862,  507,  218,  231,  862,  571,  862,
 877       862,   99,  862,  101,  323,  862,  862,  862,  862,   99,
 878        99,   99,  153,  512,  153,  507,  153,  287,  153,  571,
 879       639,  153,  153,  336,  163,  165,  169,  172,  172,  172,
 880       172,  172,  172,  172,  512,  181,  153,  336,  154,  173,
 881 
 882       173,  639,  296,  629,  153,  163,  153,  173,  173,  173,
 883       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
 884       173,  173,  173,  173,   99,  756,   99,  181,   99,  755,
 885        99,  752,  642,   99,   99,  493,  110,  174,  171,  175,
 886       175,  175,  175,  175,  175,  175,  119,  181,   99,  751,
 887       101,  176,  177,  642,  323,  629,   99,  110,   99,  176,
 888       176,  176,  176,  176,  177,  177,  177,  177,  177,  177,
 889       177,  177,  177,  177,  177,  177,  178,  178,  178,  178,
 890       178,  178,  178,  122,  740,  674,  674,  674,  179,  240,
 891       240,  240,  240,  240,  240,  240,  179,  179,  179,  179,
 892 
 893       179,  180,  608,  176,  176,  176,  176,  176,  176,  176,
 894       126,  177,  177,  177,  177,  177,  177,  177,  862,  626,
 895       644,  734,  591,  177,  241,  242,  241,  241,  241,  241,
 896       241,  177,  177,  177,  177,  177,   99,  571,   99,  713,
 897        99,  644,   99,  591,  711,   99,   99,  323,  123,  130,
 898        99,  275,  275,  275,  275,  275,  275,  275,  571,  181,
 899        99,  639,  101,  862,  862,  862,  862,  629,   99,  123,
 900        99,  153,  153,  153,  163,  153,  344,  153,  710,  642,
 901       153,  153,  639,  163,  165,  169,  173,  173,  173,  173,
 902       173,  173,  173,  462,  181,  153,  708,  154,  184,  184,
 903 
 904       642,  353,  743,  153,  163,  153,  184,  184,  184,  184,
 905       184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
 906       184,  184,  184,   99,  706,   99,  181,   99,  705,   99,
 907       456,  644,   99,   99,  629,  123,  185,  171,  186,  186,
 908       186,  186,  186,  186,  186,  126,  181,   99,  702,  101,
 909       186,  187,  644,  701,  743,   99,  123,   99,  186,  186,
 910       186,  186,  186,  187,  187,  187,  187,  187,  187,  187,
 911       187,  187,  187,  187,  187,   99,  453,   99,  181,   99,
 912       263,   99,  698,  796,   99,   99,  743,  188,  185,  171,
 913       189,  189,  189,  189,  189,  189,  189,  126,  122,   99,
 914 
 915       626,  101,  190,  191,  796,  862,  153,   99,  123,   99,
 916       190,  190,  190,  190,  190,  191,  191,  191,  191,  191,
 917       191,  191,  191,  191,  191,  191,  191,  192,  192,  192,
 918       192,  192,  192,  192,  862,  718,  718,  718,  718,  191,
 919       150,  150,  150,  150,  150,  150,  150,  191,  191,  191,
 920       191,  191,  187,  187,  187,  187,  187,  187,  187,  862,
 921       490,  772,  772,  772,  187,  280,  280,  280,  280,  280,
 922       280,  280,  187,  187,  187,  187,  187,  193,  608,  591,
 923       194,  194,  194,  194,  194,  194,  194,  206,  100,  336,
 924       148,  148,  148,  148,  148,  148,  148,  153,  639,  153,
 925 
 926       591,  153,  663,  153,  608,  802,  153,  153,  453,  208,
 927       100,  153,  209,  209,  209,  209,  209,  209,  209,  639,
 928       181,  153,  660,  154,  208,  208,  802,  659,  827,  153,
 929       208,  153,  208,  208,  208,  208,  208,  208,  208,  208,
 930       208,  208,  208,  208,  208,  208,  208,  208,  208,  210,
 931       656,  155,  155,  155,  155,  155,  155,  155,   91,  153,
 932        91,  181,   91,  806,   91,   91,  862,  153,   91,  743,
 933       106,  282,  282,  282,  282,  282,  282,  282,  654,   91,
 934        91,  653,   91,  159,  806,  649,   91,   91,   91,  158,
 935        91,  153,   91,  158,   91,  158,   91,   91,  158,  158,
 936 
 937        91,  213,  106,  158,  214,  214,  214,  214,  214,  214,
 938       214,   91,   91,  158,   91,  159,  213,  213,   91,   91,
 939        91,  158,  213,  158,  213,  213,  213,  213,  213,  213,
 940       213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
 941       213,  215,  648,  160,  160,  160,  160,  160,  160,  160,
 942       130,  641,  163,  163,  163,  163,  163,  163,  163,  166,
 943       636,  166,  288,  288,  288,  288,  288,  288,  288,  626,
 944       166,  490,  166,  221,  221,  221,  221,  221,  221,  221,
 945       306,  306,  306,  306,  306,  306,  306,  308,  308,  308,
 946       308,  308,  308,  308,  428,  428,  222,  223,  326,  223,
 947 
 948       796,  599,  327,  610,  610,  611,  224,  220,  224,  328,
 949       329,  225,  225,  225,  225,  225,  225,  225,  153,  153,
 950       153,  796,  153,  596,  153,  446,  446,  153,  153,  595,
 951       153,  226,  309,  309,  310,  308,  308,  308,  308,  642,
 952       802,  594,  153,  806,  154,  862,  862,  862,  862,  456,
 953       153,  153,  153,  153,  862,  153,  862,  153,  409,  153,
 954       642,  802,  153,  153,  806,  153,  219,  321,  321,  321,
 955       321,  321,  321,  321,  644,  590,  166,  153,  166,  154,
 956       862,  336,  862,  417,  462,  153,  153,  153,   99,  153,
 957        99,  163,   99,  586,   99,  644,  100,   99,   99,  583,
 958 
 959        99,  226,  322,  322,  322,  322,  322,  322,  322,  101,
 960       582,  181,   99,  220,  101,  581,  862,  579,  862,  827,
 961        99,   99,   99,  153,  166,  153,  166,  153,  468,  153,
 962       503,  503,  153,  153,  578,  163,  229,  227,  230,  230,
 963       230,  230,  230,  230,  230,  577,  181,  153,  576,  154,
 964       231,  231,  573,  478,  827,  153,  163,  153,  231,  231,
 965       231,  232,  231,  231,  231,  231,  231,  231,  231,  231,
 966       231,  231,  231,  231,  231,  862,  323,  862,  321,  321,
 967       321,  321,  321,  321,  321,  524,  524,  233,  122,  231,
 968       231,  231,  231,  231,  231,  231,  339,  339,  339,  339,
 969 
 970       339,  339,  339,  288,  288,  288,  288,  288,  288,  288,
 971       181,  490,  231,   99,  366,   99,  536,   99,  827,   99,
 972       647,  647,   99,   99,  526,  110,  234,  228,  235,  235,
 973       235,  235,  235,  235,  235,  119,  525,   99,  514,  101,
 974       236,  237,  652,  652,  511,   99,  110,   99,  236,  236,
 975       236,  236,  236,  237,  237,  237,  237,  237,  237,  237,
 976       237,  237,  237,  237,  237,  233,  510,  236,  236,  236,
 977       236,  236,  236,  236,  126,  237,  237,  237,  237,  237,
 978       237,  237,  862,  153,  153,  153,  153,  237,  364,  364,
 979       364,  364,  364,  364,  364,  237,  237,  237,  237,  237,
 980 
 981       238,  238,  238,  238,  238,  238,  238,  239,  153,  153,
 982       153,  153,  240,  308,  308,  308,  308,  308,  308,  308,
 983       240,  240,  240,  240,  240,   99,  796,   99,  509,   99,
 984       263,   99,  658,  658,   99,   99,  453,  123,  245,   99,
 985       308,  308,  308,  308,  308,  308,  802,  796,  504,   99,
 986       502,  101,  862,  862,  862,  862,  456,   99,  123,   99,
 987       153,  862,  153,  862,  153,  536,  153,  802,  490,  153,
 988       153,  366,  246,  233,  227,  376,  376,  376,  376,  376,
 989       376,  376,  468,  468,  153,  341,  154,  460,  459,  458,
 990       543,  451,  153,  246,  153,  219,  377,  377,  377,  377,
 991 
 992       377,  377,  377,  862,  862,  862,  862,  450,  449,  248,
 993       248,  448,  153,  862,  163,  862,  447,  248,  248,  248,
 994       248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
 995       248,  248,  248,  248,   99,  445,   99,  442,   99,  441,
 996        99,  122,  366,   99,   99,  239,  123,  249,  228,  250,
 997       250,  250,  250,  250,  250,  250,  126,  239,   99,  409,
 998       101,  250,  251,  409,  393,  392,   99,  123,   99,  250,
 999       250,  250,  250,  250,  251,  251,  251,  251,  251,  251,
1000       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
1001       251,  251,  251,  862,  383,  382,  366,  344,  251,  404,
1002 
1003       404,  404,  404,  404,  404,  404,  251,  251,  251,  251,
1004       251,   99,  806,   99,  344,   99,  341,   99,  338,  335,
1005        99,   99,  462,  123,  130,   99,  183,  183,  183,  183,
1006       183,  183,  183,  806,  334,   99,  333,  101,  183,  183,
1007       332,  331,  330,   99,  123,   99,  252,  252,  252,  252,
1008       252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
1009       252,  252,  252,  188,  862,  122,  253,  253,  253,  253,
1010       253,  253,  253,   99,  862,   99,  287,   99,  216,   99,
1011       211,  274,   99,   99,  273,  188,  249,  228,  254,  254,
1012       254,  254,  254,  254,  254,  126,  269,   99,  268,  101,
1013 
1014       255,  256,  267,  266,  265,   99,  123,   99,  255,  255,
1015       255,  255,  255,  256,  256,  256,  256,  256,  256,  256,
1016       256,  256,  256,  256,  256,  257,  257,  257,  257,  257,
1017       257,  257,  862,  264,  219,  216,  212,  256,  407,  407,
1018       407,  407,  407,  407,  407,  256,  256,  256,  256,  256,
1019       188,  211,  204,  258,  258,  258,  258,  258,  258,  258,
1020        99,  203,   99,  202,   99,  201,   99,  200,  199,   99,
1021        99,  198,  259,  130,   99,  260,  260,  260,  260,  260,
1022       260,  260,  197,  196,   99,  195,  101,  260,  260,  181,
1023       157,  154,   99,  259,   99,  261,  261,  261,  261,  261,
1024 
1025       261,  261,  261,  261,  261,  261,  261,  261,  261,  261,
1026       261,  261,  262,  262,  262,  262,  262,  262,  262,  263,
1027        99,   92,   99,   90,   99,  140,   99,  122,   90,   99,
1028        99,   90,  270,  130,   99,  271,  271,  271,  271,  271,
1029       271,  271,   90,   90,   99,  862,  101,  271,  271,   65,
1030       862,  862,   99,  270,   99,  272,  272,  272,  272,  272,
1031       272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
1032       272,  272,  100,  862,  276,  276,  276,  276,  276,  276,
1033       276,  210,  862,  208,  208,  208,  208,  208,  208,  208,
1034       153,  862,  153,  862,  153,  862,  153,  862,  862,  153,
1035 
1036       153,  862,  862,  862,  153,  428,  428,  428,  428,  428,
1037       428,  428,  862,  599,  153,  862,  154,  862,  862,  862,
1038       862,  862,  153,  862,  153,  153,  153,  153,  163,  153,
1039       862,  153,  862,  862,  153,  153,  862,  862,  607,  153,
1040       278,  278,  278,  278,  278,  278,  278,  862,  862,  153,
1041       862,  154,  862,  862,  862,  862,  862,  153,  862,  153,
1042       215,  862,  213,  213,  213,  213,  213,  213,  213,  158,
1043        91,  153,   91,  158,   91,  158,   91,   91,  158,  158,
1044        91,  281,   91,  158,  281,  281,  281,  281,  281,  281,
1045       281,   91,   91,  158,   91,  159,  281,  281,   91,   91,
1046 
1047        91,  158,  281,  158,  281,  281,  281,  281,  281,  281,
1048       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
1049       281,  223,  862,  223,  851,  851,  851,  851,  851,  851,
1050       283,  862,  283,  100,  862,  284,  284,  284,  284,  284,
1051       284,  284,  223,  862,  223,  862,  862,  862,  675,  675,
1052       676,  283,  153,  285,  163,  862,  286,  286,  286,  286,
1053       286,  286,  286,  166,  153,  166,  439,  439,  439,  439,
1054       439,  439,  439,  862,  862,  862,  862,  289,  289,  289,
1055       289,  289,  289,  289,  440,  440,  440,  440,  440,  440,
1056       440,  464,  464,  464,  464,  464,  464,  464,  862,  862,
1057 
1058       290,  223,  862,  223,  862,  862,  862,  724,  724,  725,
1059       224,  862,  224,  862,  862,  291,  291,  291,  291,  291,
1060       291,  291,  153,  153,  153,  862,  153,  862,  153,  862,
1061       862,  153,  153,  862,  153,  287,  428,  428,  428,  428,
1062       428,  428,  428,  862,  862,  862,  153,  862,  154,  862,
1063       862,  862,  862,  862,  153,  153,  153,  153,  153,  153,
1064       163,  153,  663,  153,  862,  862,  153,  153,  862,  153,
1065       293,  500,  500,  500,  500,  500,  500,  500,  862,  862,
1066       862,  153,  862,  154,  862,  862,  862,  670,  862,  153,
1067       153,  153,   99,  862,   99,  862,   99,  862,   99,  862,
1068 
1069       862,   99,   99,  862,   99,  293,  501,  501,  501,  501,
1070       501,  501,  501,  862,  862,  862,   99,  862,  101,  862,
1071       862,  862,  862,  862,   99,   99,   99,  153,  153,  153,
1072       163,  153,  713,  153,  862,  862,  153,  153,  862,  163,
1073       287,  292,  295,  295,  295,  295,  295,  295,  295,  862,
1074       862,  153,  862,  154,  296,  296,  862,  721,  862,  153,
1075       163,  153,  296,  296,  296,  296,  296,  296,  296,  296,
1076       296,  296,  296,  296,  296,  296,  296,  296,  296,  166,
1077       862,  166,  524,  524,  524,  524,  524,  524,  524,  862,
1078       862,  297,  862,  298,  298,  298,  298,  298,  298,  298,
1079 
1080       532,  532,  532,  532,  532,  532,  532,  544,  545,  545,
1081       546,  544,  544,  544,  862,  862,  299,  300,  862,  296,
1082       296,  296,  296,  296,  296,  296,  223,  862,  223,  862,
1083       862,  862,  773,  773,  774,  283,  862,  285,  862,  862,
1084       301,  301,  301,  301,  301,  301,  301,   99,  153,   99,
1085       862,   99,  862,   99,  862,  862,   99,   99,  862,  110,
1086       302,  294,  303,  303,  303,  303,  303,  303,  303,  119,
1087       862,   99,  862,  101,  304,  304,  862,  862,  862,   99,
1088       110,   99,  304,  304,  304,  304,  304,  304,  304,  304,
1089       304,  304,  304,  304,  304,  304,  304,  304,  304,  300,
1090 
1091       862,  304,  304,  304,  304,  304,  304,  304,  126,  305,
1092       305,  305,  305,  305,  305,  305,  239,  862,  862,  862,
1093       862,  306,  569,  569,  569,  569,  569,  569,  569,  306,
1094       306,  306,  306,  306,  153,  862,  153,  862,  153,  862,
1095       153,  862,  862,  153,  153,  862,  163,  862,  153,  163,
1096       163,  163,  163,  163,  163,  163,  862,  862,  153,  862,
1097       154,  313,  313,  862,  862,  862,  153,  163,  153,  313,
1098       313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
1099       313,  313,  313,  313,  313,  313,  153,  862,  153,  862,
1100       153,  862,  153,  862,  862,  153,  153,  862,  246,  130,
1101 
1102       153,  570,  570,  570,  570,  570,  570,  570,  862,  862,
1103       153,  862,  154,  862,  862,  862,  862,  862,  153,  246,
1104       153,  153,  153,  153,  163,  153,  762,  153,  862,  862,
1105       153,  153,  862,  246,  300,  292,  635,  635,  635,  635,
1106       635,  635,  635,  862,  862,  153,  862,  154,  223,  862,
1107       223,  769,  862,  153,  246,  153,  153,  224,  153,  224,
1108       153,  862,  153,  862,  862,  153,  153,  862,  246,  300,
1109       292,  647,  647,  647,  647,  647,  647,  647,  862,  862,
1110       153,  862,  154,  811,  811,  812,  862,  862,  153,  246,
1111       153,  287,  652,  652,  652,  652,  652,  652,  652,  153,
1112 
1113       862,  850,  862,  850,  862,  316,  316,  862,  862,  153,
1114       856,  163,  856,  316,  316,  316,  316,  316,  316,  316,
1115       316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
1116        99,  862,   99,  862,   99,  862,   99,  862,  862,   99,
1117        99,  862,  123,  317,  294,  658,  658,  658,  658,  658,
1118       658,  658,  126,  862,   99,  862,  101,  862,  862,  862,
1119       862,  862,   99,  123,   99,   99,  862,   99,  862,   99,
1120       862,   99,  862,  862,   99,   99,  862,  123,  317,  294,
1121       662,  662,  662,  662,  662,  662,  662,  862,  862,   99,
1122       862,  101,  811,  811,  812,  163,  862,   99,  123,   99,
1123 
1124        99,  862,   99,  862,   99,  862,   99,  862,  153,   99,
1125        99,  862,  123,  245,   99,  183,  183,  183,  183,  183,
1126       183,  183,  862,  862,   99,  862,  101,  183,  183,  862,
1127       862,  862,   99,  123,   99,  319,  319,  319,  319,  319,
1128       319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
1129       319,  319,  188,  862,  862,  320,  320,  320,  320,  320,
1130       320,  320,  126,  322,  322,  322,  322,  322,  322,  322,
1131       862,   99,  862,   99,  862,   99,  862,   99,  862,  862,
1132        99,   99,  862,  259,  130,   99,  685,  685,  685,  685,
1133       685,  685,  685,  862,  862,   99,  862,  101,  862,  862,
1134 
1135       862,  862,  862,   99,  259,   99,   99,  862,   99,  862,
1136        99,  862,   99,  862,  862,   99,   99,  862,  259,  245,
1137        99,  783,  783,  783,  783,  783,  783,  783,  323,  862,
1138        99,  862,  101,  862,  862,  862,  862,  862,   99,  259,
1139        99,  324,  324,  324,  324,  324,  324,  324,  324,  324,
1140       324,  324,  324,  324,  324,  324,  324,  324,  325,  325,
1141       325,  325,  325,  325,  325,  263,   99,  862,   99,  862,
1142        99,  862,   99,  862,  862,   99,   99,  862,  270,  130,
1143        99,  288,  288,  288,  288,  288,  288,  288,  862,  862,
1144        99,  862,  101,  862,  862,  862,  862,  862,   99,  270,
1145 
1146        99,   99,  862,   99,  862,   99,  862,   99,  862,  862,
1147        99,   99,  862,  270,  245,   99,  153,  153,  153,  153,
1148       153,  153,  153,  336,  862,   99,  862,  101,  862,  862,
1149       862,  862,  862,   99,  270,   99,  337,  337,  337,  337,
1150       337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
1151       337,  337,  337,  100,  862,  276,  276,  276,  276,  276,
1152       276,  276,  862,  862,  862,  862,  101,  153,  862,  153,
1153       862,  153,  862,  153,  862,  862,  153,  153,  862,  862,
1154       210,  153,  819,  819,  819,  819,  819,  819,  819,  862,
1155       862,  153,  862,  154,  862,  862,  862,  862,  862,  153,
1156 
1157       862,  153,  153,  862,  153,  862,  153,  862,  153,  862,
1158       862,  153,  153,  862,  862,  340,  153,  278,  278,  278,
1159       278,  278,  278,  278,  862,  862,  153,  862,  154,  862,
1160       862,  862,  862,  862,  153,  862,  153,  342,  862,  280,
1161       280,  280,  280,  280,  280,  280,  158,   91,  153,   91,
1162       158,   91,  158,   91,   91,  158,  158,   91,  281,  215,
1163       158,  281,  281,  281,  281,  281,  281,  281,   91,   91,
1164       158,   91,  159,  281,  281,   91,   91,   91,  158,  281,
1165       158,  281,  281,  281,  281,  281,  281,  281,  281,  281,
1166       281,  281,  281,  281,  281,  281,  281,  281,  343,  862,
1167 
1168       282,  282,  282,  282,  282,  282,  282,  100,  862,  284,
1169       284,  284,  284,  284,  284,  284,  862,  862,  862,  862,
1170       154,  100,  862,  284,  284,  284,  284,  284,  284,  284,
1171       862,  862,  862,  862,  154,  153,  862,  153,  862,  153,
1172       862,  153,  862,  862,  153,  153,  862,  163,  130,  153,
1173       286,  286,  286,  286,  286,  286,  286,  862,  862,  153,
1174       862,  154,  163,  163,  862,  862,  862,  153,  163,  153,
1175       163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
1176       163,  163,  163,  163,  163,  163,  163,  166,  862,  166,
1177       818,  818,  818,  818,  818,  818,  818,  862,  862,  862,
1178 
1179       862,  345,  345,  345,  345,  345,  345,  345,  839,  839,
1180       839,  839,  839,  839,  839,  845,  845,  845,  845,  845,
1181       845,  845,  862,  862,  346,  223,  862,  223,  862,  862,
1182       862,  862,  862,  862,  224,  862,  224,  862,  862,  347,
1183       347,  347,  347,  347,  347,  347,  153,  862,  153,  862,
1184       153,  862,  153,  862,  862,  153,  153,  862,  153,  348,
1185       846,  847,  846,  846,  846,  846,  846,  862,  862,  862,
1186       153,  862,  154,  862,  862,  862,  862,  862,  153,  153,
1187       153,  153,  862,  153,  862,  153,  862,  153,  862,  862,
1188       153,  153,  862,  153,  344,  851,  851,  851,  851,  851,
1189 
1190       851,  851,  862,  862,  862,  153,  862,  154,  862,  862,
1191       862,  862,  862,  153,  153,  153,   99,  862,   99,  862,
1192        99,  862,   99,  862,  862,   99,   99,  862,   99,  348,
1193       852,  852,  853,  851,  851,  851,  851,  862,  862,  862,
1194        99,  862,  101,  862,  862,  862,  862,  862,   99,   99,
1195        99,  153,  862,  153,  862,  153,  862,  153,  862,  862,
1196       153,  153,  862,  163,  351,  349,  352,  352,  352,  352,
1197       352,  352,  352,  862,  862,  153,  862,  154,  353,  353,
1198       862,  862,  862,  153,  163,  153,  353,  353,  353,  353,
1199       353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
1200 
1201       353,  353,  353,  354,  862,  353,  353,  353,  353,  353,
1202       353,  353,  166,  862,  166,  851,  851,  851,  851,  851,
1203       851,  851,  862,  862,  355,  862,  356,  356,  356,  356,
1204       356,  356,  356,  857,  857,  857,  857,  857,  857,  857,
1205       858,  858,  858,  858,  858,  858,  858,  862,  862,  357,
1206       223,  862,  223,  862,  862,  862,  862,  862,  862,  283,
1207       862,  285,  862,  862,  358,  358,  358,  358,  358,  358,
1208       358,   99,  862,   99,  862,   99,  862,   99,  862,  862,
1209        99,   99,  862,  110,  359,  350,  360,  360,  360,  360,
1210       360,  360,  360,  361,  862,   99,  862,  101,  362,  362,
1211 
1212       862,  862,  862,   99,  110,   99,  362,  362,  362,  362,
1213       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
1214       362,  362,  362,  354,  862,  362,  362,  362,  362,  362,
1215       362,  362,  862,  363,  363,  363,  363,  363,  363,  363,
1216       239,  862,  862,  862,  862,  364,  860,  860,  860,  860,
1217       860,  860,  860,  364,  364,  364,  364,  364,  153,  862,
1218       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1219       246,  130,  153,  861,  861,  861,  861,  861,  861,  861,
1220       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
1221       153,  246,  153,  153,  862,  153,  862,  153,  862,  153,
1222 
1223       862,  862,  153,  153,  862,  246,  130,  153,  862,  862,
1224       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1225       862,  862,  862,  862,  862,  153,  246,  153,  153,  862,
1226       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1227       246,  354,  349,  862,  862,  862,  862,  862,  862,  862,
1228       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
1229       153,  246,  153,  153,  862,  153,  862,  153,  862,  153,
1230       862,  862,  153,  153,  862,  246,  354,  349,  862,  862,
1231       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1232       862,  862,  862,  862,  862,  153,  246,  153,  344,  862,
1233 
1234       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1235       862,  862,  371,  371,  862,  862,  862,  862,  862,  862,
1236       371,  371,  371,  371,  371,  371,  371,  371,  371,  371,
1237       371,  371,  371,  371,  371,  371,  371,   99,  862,   99,
1238       862,   99,  862,   99,  862,  862,   99,   99,  862,  123,
1239       372,  350,  862,  862,  862,  862,  862,  862,  862,  862,
1240       862,   99,  862,  101,  862,  862,  862,  862,  862,   99,
1241       123,   99,   99,  862,   99,  862,   99,  862,   99,  862,
1242       862,   99,   99,  862,  123,  245,   99,  183,  183,  183,
1243       183,  183,  183,  183,  862,  862,   99,  862,  101,  183,
1244 
1245       183,  862,  862,  862,   99,  123,   99,  374,  374,  374,
1246       374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
1247       374,  374,  374,  374,   99,  862,   99,  862,   99,  862,
1248        99,  862,  862,   99,   99,  862,  188,  372,  350,  375,
1249       375,  375,  375,  375,  375,  375,  862,  862,   99,  862,
1250       101,  373,  373,  862,  862,  862,   99,  123,   99,  373,
1251       373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
1252       373,  373,  373,  373,  373,  373,   99,  862,   99,  862,
1253        99,  862,   99,  862,  862,   99,   99,  862,  259,  245,
1254        99,  260,  260,  260,  260,  260,  260,  260,  323,  862,
1255 
1256        99,  862,  101,  260,  260,  862,  862,  862,   99,  259,
1257        99,  380,  380,  380,  380,  380,  380,  380,  380,  380,
1258       380,  380,  380,  380,  380,  380,  380,  380,  381,  381,
1259       381,  381,  381,  381,  381,  263,   99,  862,   99,  862,
1260        99,  862,   99,  862,  862,   99,   99,  862,  123,  130,
1261        99,  388,  388,  388,  388,  388,  388,  388,  862,  862,
1262        99,  862,  101,  183,  183,  862,  862,  862,   99,  123,
1263        99,  252,  252,  252,  252,  252,  252,  252,  252,  252,
1264       252,  252,  252,  252,  252,  252,  252,  252,   99,  862,
1265        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1266 
1267       123,  372,  350,  862,  862,  862,  862,  862,  862,  862,
1268       862,  862,   99,  862,  101,  862,  862,  862,  862,  862,
1269        99,  123,   99,   99,  862,   99,  862,   99,  862,   99,
1270       862,  862,   99,   99,  862,  389,  130,   99,  390,  390,
1271       390,  390,  390,  390,  390,  862,  862,   99,  862,  101,
1272       390,  390,  862,  862,  862,   99,  389,   99,  391,  391,
1273       391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
1274       391,  391,  391,  391,  391,   99,  862,   99,  862,   99,
1275       862,   99,  862,  862,   99,   99,  862,  394,  130,   99,
1276       395,  395,  395,  395,  395,  395,  395,  862,  862,   99,
1277 
1278       862,  101,  395,  395,  862,  862,  862,   99,  394,   99,
1279       396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
1280       396,  396,  396,  396,  396,  396,  396,   99,  862,   99,
1281       862,   99,  862,   99,  862,  862,   99,   99,  862,  270,
1282       245,   99,  271,  271,  271,  271,  271,  271,  271,  336,
1283       862,   99,  862,  101,  271,  271,  862,  862,  862,   99,
1284       270,   99,  400,  400,  400,  400,  400,  400,  400,  400,
1285       400,  400,  400,  400,  400,  400,  400,  400,  400,   99,
1286       862,   99,  862,   99,  862,   99,  862,  862,   99,   99,
1287       862,  401,  130,   99,  402,  402,  402,  402,  402,  402,
1288 
1289       402,  862,  862,   99,  862,  101,  402,  402,  862,  862,
1290       862,   99,  401,   99,  403,  403,  403,  403,  403,  403,
1291       403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
1292       403,  153,  862,  153,  862,  153,  862,  153,  862,  862,
1293       153,  153,  862,  277,  862,  153,  405,  405,  405,  405,
1294       405,  405,  405,  862,  862,  153,  862,  154,  277,  277,
1295       862,  862,  862,  153,  277,  153,  277,  277,  277,  277,
1296       277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1297       277,  277,  277,  158,   91,  153,   91,  158,   91,  158,
1298        91,   91,  158,  158,   91,  281,   91,  158,  408,  408,
1299 
1300       408,  408,  408,  408,  408,   91,   91,  158,   91,  159,
1301       281,  281,   91,   91,   91,  158,  281,  158,  281,  281,
1302       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
1303       281,  281,  281,  281,  281,  166,  862,  166,  862,  862,
1304       862,  862,  862,  862,  862,  862,  862,  862,  862,  410,
1305       410,  410,  410,  410,  410,  410,  862,  862,  862,  862,
1306       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1307       862,  862,  411,  223,  862,  223,  862,  862,  862,  862,
1308       862,  862,  224,  862,  224,  862,  862,  412,  412,  412,
1309       412,  412,  412,  412,  153,  862,  153,  862,  153,  862,
1310 
1311       153,  862,  862,  153,  153,  862,  153,  409,  862,  862,
1312       862,  862,  862,  862,  862,  862,  862,  862,  153,  862,
1313       154,  862,  862,  862,  862,  862,  153,  153,  153,  153,
1314       862,  153,  862,  153,  862,  153,  862,  862,  153,  153,
1315       862,  153,  414,  862,  862,  862,  862,  862,  862,  862,
1316       862,  862,  862,  153,  862,  154,  862,  862,  862,  862,
1317       862,  153,  153,  153,   99,  862,   99,  862,   99,  862,
1318        99,  862,  862,   99,   99,  862,   99,  414,  862,  862,
1319       862,  862,  862,  862,  862,  862,  862,  862,   99,  862,
1320       101,  862,  862,  862,  862,  862,   99,   99,   99,  153,
1321 
1322       862,  153,  862,  153,  862,  153,  862,  862,  153,  153,
1323       862,  163,  409,  413,  416,  416,  416,  416,  416,  416,
1324       416,  862,  862,  153,  862,  154,  417,  417,  862,  862,
1325       862,  153,  163,  153,  417,  417,  417,  417,  417,  417,
1326       417,  417,  417,  417,  417,  417,  417,  417,  417,  417,
1327       417,  418,  862,  419,  419,  419,  419,  419,  419,  419,
1328       420,  862,  417,  417,  417,  417,  417,  417,  417,  166,
1329       862,  166,  862,  862,  862,  862,  862,  862,  862,  862,
1330       862,  421,  862,  422,  422,  422,  422,  422,  422,  422,
1331       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1332 
1333       862,  862,  862,  862,  862,  862,  423,  223,  862,  223,
1334       862,  862,  862,  862,  862,  862,  283,  862,  285,  862,
1335       862,  424,  424,  424,  424,  424,  424,  424,   99,  862,
1336        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1337       110,  425,  415,  426,  426,  426,  426,  426,  426,  426,
1338       361,  862,   99,  862,  101,  427,  427,  862,  862,  862,
1339        99,  110,   99,  427,  427,  427,  427,  427,  427,  427,
1340       427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
1341       420,  862,  427,  427,  427,  427,  427,  427,  427,  862,
1342       153,  862,  153,  862,  153,  862,  153,  862,  862,  153,
1343 
1344       153,  862,  246,  420,  413,  862,  862,  862,  862,  862,
1345       862,  862,  862,  862,  153,  862,  154,  862,  862,  862,
1346       862,  862,  153,  246,  153,  153,  862,  153,  862,  153,
1347       862,  153,  862,  862,  153,  153,  862,  246,  420,  413,
1348       862,  862,  862,  862,  862,  862,  862,  862,  862,  153,
1349       862,  154,  862,  862,  862,  862,  862,  153,  246,  153,
1350       409,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1351       862,  862,  862,  862,  434,  434,  862,  862,  862,  862,
1352       862,  862,  434,  434,  434,  434,  434,  434,  434,  434,
1353       434,  434,  434,  434,  434,  434,  434,  434,  434,   99,
1354 
1355       862,   99,  862,   99,  862,   99,  862,  862,   99,   99,
1356       862,  123,  435,  415,  862,  862,  862,  862,  862,  862,
1357       862,  862,  862,   99,  862,  101,  862,  862,  862,  862,
1358       862,   99,  123,   99,  437,  437,  437,  437,  437,  437,
1359       437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
1360       437,   99,  862,   99,  862,   99,  862,   99,  862,  862,
1361        99,   99,  862,  188,  435,  415,  438,  438,  438,  438,
1362       438,  438,  438,  862,  862,   99,  862,  101,  436,  436,
1363       862,  862,  862,   99,  123,   99,  436,  436,  436,  436,
1364       436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
1365 
1366       436,  436,  436,   99,  862,   99,  862,   99,  862,   99,
1367       862,  862,   99,   99,  862,  259,  245,   99,  260,  260,
1368       260,  260,  260,  260,  260,  323,  862,   99,  862,  101,
1369       260,  260,  862,  862,  862,   99,  259,   99,  443,  443,
1370       443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
1371       443,  443,  443,  443,  443,  444,  444,  444,  444,  444,
1372       444,  444,  263,   99,  862,   99,  862,   99,  862,   99,
1373       862,  862,   99,   99,  862,  123,  245,   99,  388,  388,
1374       388,  388,  388,  388,  388,  862,  862,   99,  862,  101,
1375       452,  452,  862,  862,  862,   99,  123,   99,  452,  452,
1376 
1377       452,  452,  452,  452,  452,  452,  452,  452,  452,  452,
1378       452,  452,  452,  452,  452,  390,  390,  390,  390,  390,
1379       390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
1380       390,  390,  245,  862,  862,  862,  862,  862,  862,  862,
1381       862,  453,  862,  862,  862,  862,  862,  862,  862,  862,
1382       862,  862,  862,  862,  454,  454,  454,  454,  454,  454,
1383       454,  454,  454,  454,  454,  454,  454,  454,  454,  454,
1384       454,   99,  862,   99,  862,   99,  862,   99,  862,  862,
1385        99,   99,  862,  123,  435,  415,  862,  862,  862,  862,
1386       862,  862,  862,  263,  862,   99,  862,  101,  862,  862,
1387 
1388       862,  862,  862,   99,  123,   99,   99,  862,   99,  862,
1389        99,  862,   99,  862,  862,   99,   99,  862,  394,  130,
1390        99,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1391        99,  862,  101,  862,  862,  862,  862,  862,   99,  394,
1392        99,   99,  862,   99,  862,   99,  862,   99,  862,  862,
1393        99,   99,  862,  394,  245,   99,  862,  862,  862,  862,
1394       862,  862,  862,  456,  862,   99,  862,  101,  862,  862,
1395       862,  862,  862,   99,  394,   99,  457,  457,  457,  457,
1396       457,  457,  457,  457,  457,  457,  457,  457,  457,  457,
1397       457,  457,  457,   99,  862,   99,  862,   99,  862,   99,
1398 
1399       862,  862,   99,   99,  862,  270,  245,   99,  271,  271,
1400       271,  271,  271,  271,  271,  336,  862,   99,  862,  101,
1401       271,  271,  862,  862,  862,   99,  270,   99,  461,  461,
1402       461,  461,  461,  461,  461,  461,  461,  461,  461,  461,
1403       461,  461,  461,  461,  461,   99,  862,   99,  862,   99,
1404       862,   99,  862,  862,   99,   99,  862,  401,  130,   99,
1405       862,  862,  862,  862,  862,  862,  862,  862,  862,   99,
1406       862,  101,  862,  862,  862,  862,  862,   99,  401,   99,
1407        99,  862,   99,  862,   99,  862,   99,  862,  862,   99,
1408        99,  862,  401,  245,   99,  862,  862,  862,  862,  862,
1409 
1410       862,  862,  462,  862,   99,  862,  101,  862,  862,  862,
1411       862,  862,   99,  401,   99,  463,  463,  463,  463,  463,
1412       463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
1413       463,  463,  153,  862,  153,  862,  153,  862,  153,  862,
1414       862,  153,  153,  862,  277,  465,  153,  405,  405,  405,
1415       405,  405,  405,  405,  862,  862,  153,  862,  154,  277,
1416       277,  862,  862,  862,  153,  277,  153,  277,  277,  277,
1417       277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1418       277,  277,  277,  277,  466,  862,  407,  407,  407,  407,
1419       407,  407,  407,  158,   91,  153,   91,  158,   91,  158,
1420 
1421        91,   91,  158,  158,   91,  281,  467,  158,  408,  408,
1422       408,  408,  408,  408,  408,   91,   91,  158,   91,  159,
1423       281,  281,   91,   91,   91,  158,  281,  158,  281,  281,
1424       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
1425       281,  281,  281,  281,  281,  166,  862,  166,  862,  862,
1426       862,  862,  862,  862,  862,  862,  862,  862,  862,  469,
1427       469,  469,  469,  469,  469,  469,  862,  862,  862,  862,
1428       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1429       862,  862,  470,  223,  862,  223,  862,  862,  862,  862,
1430       862,  862,  224,  862,  224,  862,  862,  471,  471,  471,
1431 
1432       471,  471,  471,  471,  153,  862,  153,  862,  153,  862,
1433       153,  862,  862,  153,  153,  862,  153,  472,  862,  862,
1434       862,  862,  862,  862,  862,  862,  862,  862,  153,  862,
1435       154,  862,  862,  862,  862,  862,  153,  153,  153,  153,
1436       862,  153,  862,  153,  862,  153,  862,  862,  153,  153,
1437       862,  153,  468,  862,  862,  862,  862,  862,  862,  862,
1438       862,  862,  862,  153,  862,  154,  862,  862,  862,  862,
1439       862,  153,  153,  153,   99,  862,   99,  862,   99,  862,
1440        99,  862,  862,   99,   99,  862,   99,  472,  862,  862,
1441       862,  862,  862,  862,  862,  862,  862,  862,   99,  862,
1442 
1443       101,  862,  862,  862,  862,  862,   99,   99,   99,  153,
1444       862,  153,  862,  153,  862,  153,  862,  862,  153,  153,
1445       862,  163,  475,  476,  477,  477,  477,  477,  477,  477,
1446       477,  862,  862,  153,  862,  154,  478,  478,  862,  862,
1447       862,  153,  163,  153,  478,  478,  478,  478,  478,  478,
1448       478,  478,  478,  478,  478,  478,  478,  478,  478,  478,
1449       478,  473,  478,  478,  478,  478,  478,  478,  478,  479,
1450       862,  480,  480,  480,  480,  480,  480,  480,  166,  862,
1451       166,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1452       481,  862,  482,  482,  482,  482,  482,  482,  482,  862,
1453 
1454       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1455       862,  862,  862,  862,  862,  483,  223,  862,  223,  862,
1456       862,  862,  862,  862,  862,  283,  862,  285,  862,  862,
1457       484,  484,  484,  484,  484,  484,  484,   99,  862,   99,
1458       862,   99,  862,   99,  862,  862,   99,   99,  862,  110,
1459       485,  474,  486,  486,  486,  486,  486,  486,  486,  361,
1460       862,   99,  862,  101,  487,  487,  862,  862,  862,   99,
1461       110,   99,  487,  487,  487,  487,  487,  487,  487,  487,
1462       487,  487,  487,  487,  487,  487,  487,  487,  487,  475,
1463       862,  487,  487,  487,  487,  487,  487,  487,  862,  153,
1464 
1465       862,  153,  862,  153,  862,  153,  862,  862,  153,  153,
1466       862,  246,  475,  473,  862,  862,  862,  862,  862,  862,
1467       862,  862,  862,  153,  862,  154,  862,  862,  862,  862,
1468       862,  153,  246,  153,  153,  862,  153,  862,  153,  862,
1469       153,  862,  862,  153,  153,  862,  246,  475,  473,  862,
1470       862,  862,  862,  862,  862,  862,  862,  862,  153,  862,
1471       154,  862,  862,  862,  862,  862,  153,  246,  153,  468,
1472       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1473       862,  862,  862,  495,  495,  862,  862,  862,  862,  862,
1474       862,  495,  495,  495,  495,  495,  495,  495,  495,  495,
1475 
1476       495,  495,  495,  495,  495,  495,  495,  495,   99,  862,
1477        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1478       123,  496,  474,  862,  862,  862,  862,  862,  862,  862,
1479       862,  862,   99,  862,  101,  862,  862,  862,  862,  862,
1480        99,  123,   99,   99,  862,   99,  862,   99,  862,   99,
1481       862,  862,   99,   99,  862,  123,  245,   99,  183,  183,
1482       183,  183,  183,  183,  183,  862,  862,   99,  862,  101,
1483       183,  183,  862,  862,  862,   99,  123,   99,  498,  498,
1484       498,  498,  498,  498,  498,  498,  498,  498,  498,  498,
1485       498,  498,  498,  498,  498,   99,  862,   99,  862,   99,
1486 
1487       862,   99,  862,  862,   99,   99,  862,  188,  496,  474,
1488       499,  499,  499,  499,  499,  499,  499,  862,  862,   99,
1489       862,  101,  497,  497,  862,  862,  862,   99,  123,   99,
1490       497,  497,  497,  497,  497,  497,  497,  497,  497,  497,
1491       497,  497,  497,  497,  497,  497,  497,   99,  862,   99,
1492       862,   99,  862,   99,  862,  862,   99,   99,  862,  259,
1493       245,   99,  260,  260,  260,  260,  260,  260,  260,  323,
1494       862,   99,  862,  101,  260,  260,  862,  862,  862,   99,
1495       259,   99,  505,  505,  505,  505,  505,  505,  505,  505,
1496       505,  505,  505,  505,  505,  505,  505,  505,  505,  506,
1497 
1498       506,  506,  506,  506,  506,  506,  263,  515,  515,  862,
1499       862,  862,  862,  862,  862,  515,  515,  515,  515,  515,
1500       515,  515,  515,  515,  515,  515,  515,  515,  515,  515,
1501       515,  515,   99,  862,   99,  862,   99,  862,   99,  862,
1502       862,   99,   99,  862,  389,  245,   99,  390,  390,  390,
1503       390,  390,  390,  390,  453,  862,   99,  862,  101,  390,
1504       390,  862,  862,  862,   99,  389,   99,  519,  519,  519,
1505       519,  519,  519,  519,  519,  519,  519,  519,  519,  519,
1506       519,  519,  519,  519,   99,  862,   99,  862,   99,  862,
1507        99,  862,  862,   99,   99,  862,  123,  130,   99,  520,
1508 
1509       520,  520,  520,  520,  520,  520,  862,  862,   99,  862,
1510       101,  520,  183,  862,  862,  862,   99,  123,   99,  520,
1511       520,  520,  520,  520,  183,  183,  183,  183,  183,  183,
1512       183,  183,  183,  183,  183,  183,   99,  862,   99,  862,
1513        99,  862,   99,  862,  862,   99,   99,  862,  394,  245,
1514        99,  395,  395,  395,  395,  395,  395,  395,  456,  862,
1515        99,  862,  101,  395,  395,  862,  862,  862,   99,  394,
1516        99,  523,  523,  523,  523,  523,  523,  523,  523,  523,
1517       523,  523,  523,  523,  523,  523,  523,  523,   99,  862,
1518        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1519 
1520       270,  245,   99,  271,  271,  271,  271,  271,  271,  271,
1521       336,  862,   99,  862,  101,  271,  271,  862,  862,  862,
1522        99,  270,   99,  527,  527,  527,  527,  527,  527,  527,
1523       527,  527,  527,  527,  527,  527,  527,  527,  527,  527,
1524        99,  862,   99,  862,   99,  862,   99,  862,  862,   99,
1525        99,  862,  401,  245,   99,  402,  402,  402,  402,  402,
1526       402,  402,  462,  862,   99,  862,  101,  402,  402,  862,
1527       862,  862,   99,  401,   99,  531,  531,  531,  531,  531,
1528       531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
1529       531,  531,  862,  862,  533,  533,  533,  533,  533,  533,
1530 
1531       533,  862,  862,  534,  534,  534,  534,  534,  534,  534,
1532        91,  862,  535,  535,  535,  535,  535,  535,  535,  166,
1533       862,  166,  862,  862,  862,  862,  862,  862,  862,  862,
1534       862,  862,  862,  537,  537,  537,  537,  537,  537,  537,
1535       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1536       862,  862,  862,  862,  862,  862,  538,  223,  862,  223,
1537       862,  862,  862,  862,  862,  862,  224,  862,  224,  862,
1538       862,  539,  539,  539,  539,  539,  539,  539,  153,  862,
1539       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1540       153,  536,  862,  862,  862,  862,  862,  862,  862,  862,
1541 
1542       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
1543       153,  153,  153,  153,  862,  153,  862,  153,  862,  153,
1544       862,  862,  153,  153,  862,  153,  541,  862,  862,  862,
1545       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1546       862,  862,  862,  862,  862,  153,  153,  153,   99,  862,
1547        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1548        99,  541,  862,  862,  862,  862,  862,  862,  862,  862,
1549       862,  862,   99,  862,  101,  862,  862,  862,  862,  862,
1550        99,   99,   99,  153,  862,  153,  862,  153,  862,  153,
1551       862,  862,  153,  153,  862,  163,  536,  540,  862,  862,
1552 
1553       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1554       862,  862,  862,  862,  862,  153,  163,  153,  153,  862,
1555       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1556       163,  547,  548,  549,  549,  549,  549,  549,  549,  549,
1557       862,  862,  153,  862,  154,  543,  543,  862,  862,  862,
1558       153,  163,  153,  543,  543,  543,  543,  543,  543,  543,
1559       543,  543,  543,  543,  543,  543,  543,  543,  543,  543,
1560       153,  862,  153,  862,  153,  862,  153,  862,  862,  153,
1561       153,  862,  163,  547,  540,  862,  862,  862,  862,  862,
1562       862,  862,  862,  862,  153,  862,  154,  862,  862,  862,
1563 
1564       862,  862,  153,  163,  153,  550,  862,  551,  551,  551,
1565       551,  551,  551,  551,  166,  862,  166,  862,  862,  862,
1566       862,  862,  862,  862,  862,  862,  552,  862,  553,  553,
1567       553,  553,  553,  553,  553,  862,  862,  862,  862,  862,
1568       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1569       862,  554,  223,  862,  223,  862,  862,  862,  862,  862,
1570       862,  283,  862,  285,  862,  862,  555,  555,  555,  555,
1571       555,  555,  555,   99,  556,   99,  556,   99,  862,   99,
1572       862,  862,   99,   99,  862,  110,  557,  542,  558,  558,
1573       558,  558,  558,  558,  558,  361,  862,   99,  862,  101,
1574 
1575       559,  559,  862,  862,  862,   99,  110,   99,  559,  559,
1576       559,  559,  559,  559,  559,  559,  559,  559,  559,  559,
1577       559,  559,  559,  559,  559,  862,  862,  862,  862,  862,
1578       862,  862,  862,  862,  862,  862,  862,  547,  862,  559,
1579       559,  559,  559,  559,  559,  559,  862,  153,  862,  153,
1580       862,  153,  862,  153,  862,  862,  153,  153,  862,  246,
1581       547,  540,  862,  862,  862,  862,  862,  862,  862,  862,
1582       862,  153,  862,  154,  862,  862,  862,  862,  862,  153,
1583       246,  153,  153,  862,  153,  862,  153,  862,  153,  862,
1584       862,  153,  153,  862,  246,  547,  540,  862,  862,  862,
1585 
1586       862,  862,  862,  862,  862,  862,  153,  862,  154,  862,
1587       862,  862,  862,  862,  153,  246,  153,  536,  862,  862,
1588       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1589       862,  565,  565,  862,  862,  862,  862,  862,  862,  565,
1590       565,  565,  565,  565,  565,  565,  565,  565,  565,  565,
1591       565,  565,  565,  565,  565,  565,   99,  862,   99,  862,
1592        99,  862,   99,  862,  862,   99,   99,  862,  123,  566,
1593       542,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1594        99,  862,  101,  862,  862,  862,  862,  862,   99,  123,
1595        99,  568,  568,  568,  568,  568,  568,  568,  568,  568,
1596 
1597       568,  568,  568,  568,  568,  568,  568,  568,   99,  862,
1598        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1599       188,  566,  542,  862,  862,  862,  862,  862,  862,  862,
1600       862,  862,   99,  862,  101,  862,  862,  862,  862,  862,
1601        99,  123,   99,   99,  862,   99,  862,   99,  862,   99,
1602       862,  862,   99,   99,  862,  259,  245,   99,  260,  260,
1603       260,  260,  260,  260,  260,  323,  862,   99,  862,  101,
1604       260,  260,  862,  862,  862,   99,  259,   99,  574,  574,
1605       574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
1606       574,  574,  574,  574,  574,  575,  575,  575,  575,  575,
1607 
1608       575,  575,  263,  580,  580,  862,  862,  862,  862,  862,
1609       862,  580,  580,  580,  580,  580,  580,  580,  580,  580,
1610       580,  580,  580,  580,  580,  580,  580,  580,   99,  862,
1611        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1612       389,  245,   99,  390,  390,  390,  390,  390,  390,  390,
1613       453,  862,   99,  862,  101,  390,  390,  862,  862,  862,
1614        99,  389,   99,  584,  584,  584,  584,  584,  584,  584,
1615       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
1616        99,  862,   99,  862,   99,  862,   99,  862,  862,   99,
1617        99,  862,  123,  245,   99,  585,  585,  585,  585,  585,
1618 
1619       585,  585,  862,  862,   99,  862,  101,  585,  183,  862,
1620       862,  862,   99,  123,   99,  585,  585,  585,  585,  585,
1621       183,  183,  183,  183,  183,  183,  183,  183,  183,  183,
1622       183,  183,   99,  862,   99,  862,   99,  862,   99,  862,
1623       862,   99,   99,  862,  394,  245,   99,  395,  395,  395,
1624       395,  395,  395,  395,  456,  862,   99,  862,  101,  395,
1625       395,  862,  862,  862,   99,  394,   99,  589,  589,  589,
1626       589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
1627       589,  589,  589,  589,   99,  862,   99,  862,   99,  862,
1628        99,  862,  862,   99,   99,  862,  270,  245,   99,  271,
1629 
1630       271,  271,  271,  271,  271,  271,  336,  862,   99,  862,
1631       101,  271,  271,  862,  862,  862,   99,  270,   99,  593,
1632       593,  593,  593,  593,  593,  593,  593,  593,  593,  593,
1633       593,  593,  593,  593,  593,  593,   99,  862,   99,  862,
1634        99,  862,   99,  862,  862,   99,   99,  862,  401,  245,
1635        99,  402,  402,  402,  402,  402,  402,  402,  462,  862,
1636        99,  862,  101,  402,  402,  862,  862,  862,   99,  401,
1637        99,  597,  597,  597,  597,  597,  597,  597,  597,  597,
1638       597,  597,  597,  597,  597,  597,  597,  597,  153,  862,
1639       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1640 
1641       277,  210,  153,  533,  533,  533,  533,  533,  533,  533,
1642       862,  862,  153,  862,  154,  277,  277,  862,  862,  862,
1643       153,  277,  153,  277,  277,  277,  277,  277,  277,  277,
1644       277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1645       598,  862,  534,  534,  534,  534,  534,  534,  534,  158,
1646        91,  153,   91,  158,   91,  158,   91,   91,  158,  158,
1647        91,  281,  215,  158,  535,  535,  535,  535,  535,  535,
1648       535,   91,   91,  158,   91,  159,  281,  281,   91,   91,
1649        91,  158,  281,  158,  281,  281,  281,  281,  281,  281,
1650       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
1651 
1652       281,  166,  862,  166,  862,  862,  862,  862,  862,  862,
1653       862,  862,  862,  862,  862,  600,  600,  600,  600,  600,
1654       600,  600,  862,  862,  862,  862,  862,  862,  862,  862,
1655       862,  862,  862,  862,  862,  862,  862,  862,  601,  223,
1656       862,  223,  862,  862,  862,  862,  862,  862,  224,  862,
1657       224,  862,  862,  602,  602,  602,  602,  602,  602,  602,
1658       153,  862,  153,  862,  153,  862,  153,  862,  862,  153,
1659       153,  862,  153,  603,  862,  862,  862,  862,  862,  862,
1660       862,  862,  862,  862,  153,  862,  154,  862,  862,  862,
1661       862,  862,  153,  153,  153,  153,  862,  153,  862,  153,
1662 
1663       862,  153,  862,  862,  153,  153,  862,  153,  599,  862,
1664       862,  862,  862,  862,  862,  862,  862,  862,  862,  153,
1665       862,  154,  862,  862,  862,  862,  862,  153,  153,  153,
1666        99,  862,   99,  862,   99,  862,   99,  862,  862,   99,
1667        99,  862,   99,  603,  862,  862,  862,  862,  862,  862,
1668       862,  862,  862,  862,   99,  862,  101,  862,  862,  862,
1669       862,  862,   99,   99,   99,  153,  862,  153,  862,  153,
1670       862,  153,  862,  862,  153,  153,  862,  163,  606,  604,
1671       862,  862,  862,  862,  862,  862,  862,  862,  862,  153,
1672       862,  154,  862,  862,  862,  862,  862,  153,  163,  153,
1673 
1674       603,  862,  609,  609,  609,  609,  609,  609,  609,  862,
1675       862,  862,  862,  862,  862,  862,  862,  862,  862,  608,
1676       153,  862,  153,  862,  153,  862,  153,  862,  862,  153,
1677       153,  862,  163,  599,  604,  862,  862,  862,  862,  862,
1678       862,  862,  862,  862,  153,  862,  154,  862,  862,  862,
1679       862,  862,  153,  163,  153,  606,  612,  613,  613,  613,
1680       613,  613,  613,  613,  614,  862,  615,  615,  615,  615,
1681       615,  615,  615,  166,  862,  166,  862,  862,  862,  862,
1682       862,  862,  862,  862,  862,  616,  862,  617,  617,  617,
1683       617,  617,  617,  617,  862,  862,  862,  862,  862,  862,
1684 
1685       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1686       618,  223,  862,  223,  862,  862,  862,  862,  862,  862,
1687       283,  862,  285,  606,  862,  619,  619,  619,  619,  619,
1688       619,  619,   99,  862,   99,  862,   99,  862,   99,  862,
1689       862,   99,   99,  862,  110,  621,  605,  622,  622,  622,
1690       622,  622,  622,  622,  361,  862,   99,  862,  101,  623,
1691       623,  862,  862,  862,   99,  110,   99,  623,  623,  623,
1692       623,  623,  623,  623,  623,  623,  623,  623,  623,  623,
1693       623,  623,  623,  623,  606,  862,  623,  623,  623,  623,
1694       623,  623,  623,  862,  153,  862,  153,  862,  153,  862,
1695 
1696       153,  862,  862,  153,  153,  862,  246,  606,  604,  862,
1697       862,  862,  862,  862,  862,  862,  862,  862,  153,  862,
1698       154,  862,  862,  862,  862,  862,  153,  246,  153,  153,
1699       862,  153,  862,  153,  862,  153,  862,  862,  153,  153,
1700       862,  246,  606,  604,  862,  862,  862,  862,  862,  862,
1701       862,  862,  862,  153,  862,  154,  862,  862,  862,  862,
1702       862,  153,  246,  153,  631,  631,  862,  862,  862,  862,
1703       862,  862,  631,  631,  631,  631,  631,  631,  631,  631,
1704       631,  631,  631,  631,  631,  631,  631,  631,  631,   99,
1705       862,   99,  862,   99,  862,   99,  862,  862,   99,   99,
1706 
1707       862,  123,  632,  605,  862,  862,  862,  862,  862,  862,
1708       862,  862,  862,   99,  862,  101,  862,  862,  862,  862,
1709       862,   99,  123,   99,  634,  634,  634,  634,  634,  634,
1710       634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
1711       634,   99,  862,   99,  862,   99,  862,   99,  862,  862,
1712        99,   99,  862,  188,  632,  605,  862,  862,  862,  862,
1713       862,  862,  862,  862,  862,   99,  862,  101,  862,  862,
1714       862,  862,  862,   99,  123,   99,   99,  862,   99,  862,
1715        99,  862,   99,  862,  862,   99,   99,  862,  259,  245,
1716        99,  260,  260,  260,  260,  260,  260,  260,  323,  862,
1717 
1718        99,  862,  101,  260,  260,  862,  862,  862,   99,  259,
1719        99,  637,  637,  637,  637,  637,  637,  637,  637,  637,
1720       637,  637,  637,  637,  637,  637,  637,  637,  123,  862,
1721       862,  638,  638,  638,  638,  638,  638,  638,  263,  646,
1722       646,  862,  862,  862,  862,  862,  862,  646,  646,  646,
1723       646,  646,  646,  646,  646,  646,  646,  646,  646,  646,
1724       646,  646,  646,  646,   99,  862,   99,  862,   99,  862,
1725        99,  862,  862,   99,   99,  862,  389,  245,   99,  390,
1726       390,  390,  390,  390,  390,  390,  453,  862,   99,  862,
1727       101,  390,  390,  862,  862,  862,   99,  389,   99,  650,
1728 
1729       650,  650,  650,  650,  650,  650,  650,  650,  650,  650,
1730       650,  650,  650,  650,  650,  650,   99,  862,   99,  862,
1731        99,  862,   99,  862,  862,   99,   99,  862,  123,  245,
1732        99,  651,  651,  651,  651,  651,  651,  651,  862,  862,
1733        99,  862,  101,  651,  183,  862,  862,  862,   99,  123,
1734        99,  651,  651,  651,  651,  651,  183,  183,  183,  183,
1735       183,  183,  183,  183,  183,  183,  183,  183,   99,  862,
1736        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1737       394,  245,   99,  395,  395,  395,  395,  395,  395,  395,
1738       456,  862,   99,  862,  101,  395,  395,  862,  862,  862,
1739 
1740        99,  394,   99,  655,  655,  655,  655,  655,  655,  655,
1741       655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
1742        99,  862,   99,  862,   99,  862,   99,  862,  862,   99,
1743        99,  862,  270,  245,   99,  271,  271,  271,  271,  271,
1744       271,  271,  336,  862,   99,  862,  101,  271,  271,  862,
1745       862,  862,   99,  270,   99,  657,  657,  657,  657,  657,
1746       657,  657,  657,  657,  657,  657,  657,  657,  657,  657,
1747       657,  657,   99,  862,   99,  862,   99,  862,   99,  862,
1748       862,   99,   99,  862,  401,  245,   99,  402,  402,  402,
1749       402,  402,  402,  402,  462,  862,   99,  862,  101,  402,
1750 
1751       402,  862,  862,  862,   99,  401,   99,  661,  661,  661,
1752       661,  661,  661,  661,  661,  661,  661,  661,  661,  661,
1753       661,  661,  661,  661,  166,  862,  166,  862,  862,  862,
1754       862,  862,  862,  862,  862,  862,  862,  862,  664,  664,
1755       664,  664,  664,  664,  664,  862,  862,  862,  862,  862,
1756       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1757       862,  665,  223,  862,  223,  862,  862,  862,  862,  862,
1758       862,  224,  862,  224,  862,  862,  666,  666,  666,  666,
1759       666,  666,  666,  153,  862,  153,  862,  153,  862,  153,
1760       862,  862,  153,  153,  862,  153,  663,  862,  862,  862,
1761 
1762       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1763       862,  862,  862,  862,  862,  153,  153,  153,  153,  862,
1764       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1765       153,  668,  862,  862,  862,  862,  862,  862,  862,  862,
1766       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
1767       153,  153,  153,   99,  862,   99,  862,   99,  862,   99,
1768       862,  862,   99,   99,  862,   99,  668,  862,  862,  862,
1769       862,  862,  862,  862,  862,  862,  862,   99,  862,  101,
1770       862,  862,  862,  862,  862,   99,   99,   99,  153,  862,
1771       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1772 
1773       163,  663,  667,  862,  862,  862,  862,  862,  862,  862,
1774       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
1775       153,  163,  153,  153,  862,  153,  862,  153,  862,  153,
1776       862,  862,  153,  153,  862,  163,  671,  667,  862,  862,
1777       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1778       862,  862,  862,  862,  862,  153,  163,  153,  672,  862,
1779       672,  100,  862,  673,  673,  673,  673,  673,  673,  673,
1780       862,  862,  862,  862,  154,  674,  674,  674,  674,  674,
1781       674,  674,  862,  862,  862,  862,  862,  862,  862,  862,
1782       862,  862,  608,  677,  678,  678,  678,  678,  678,  678,
1783 
1784       678,  679,  862,  680,  680,  680,  680,  680,  680,  680,
1785       166,  862,  166,  862,  862,  862,  862,  862,  862,  862,
1786       862,  862,  681,  862,  682,  682,  682,  682,  682,  682,
1787       682,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1788       862,  862,  862,  862,  862,  862,  862,  683,  223,  862,
1789       223,  862,  862,  862,  862,  862,  862,  283,  862,  285,
1790       862,  862,  684,  684,  684,  684,  684,  684,  684,   99,
1791       862,   99,  862,   99,  862,   99,  862,  862,   99,   99,
1792       862,  110,  686,  669,  687,  687,  687,  687,  687,  687,
1793       687,  361,  862,   99,  862,  101,  688,  688,  862,  862,
1794 
1795       862,   99,  110,   99,  688,  688,  688,  688,  688,  688,
1796       688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
1797       688,  671,  862,  688,  688,  688,  688,  688,  688,  688,
1798       862,  153,  862,  153,  862,  153,  862,  153,  862,  862,
1799       153,  153,  862,  246,  671,  667,  862,  862,  862,  862,
1800       862,  862,  862,  862,  862,  153,  862,  154,  862,  862,
1801       862,  862,  862,  153,  246,  153,  153,  862,  153,  862,
1802       153,  862,  153,  862,  862,  153,  153,  862,  246,  671,
1803       667,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1804       153,  862,  154,  862,  862,  862,  862,  862,  153,  246,
1805 
1806       153,  663,  862,  862,  862,  862,  862,  862,  862,  862,
1807       862,  862,  862,  862,  862,  694,  694,  862,  862,  862,
1808       862,  862,  862,  694,  694,  694,  694,  694,  694,  694,
1809       694,  694,  694,  694,  694,  694,  694,  694,  694,  694,
1810        99,  862,   99,  862,   99,  862,   99,  862,  862,   99,
1811        99,  862,  123,  695,  669,  862,  862,  862,  862,  862,
1812       862,  862,  862,  862,   99,  862,  101,  862,  862,  862,
1813       862,  862,   99,  123,   99,  697,  697,  697,  697,  697,
1814       697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
1815       697,  697,   99,  862,   99,  862,   99,  862,   99,  862,
1816 
1817       862,   99,   99,  862,  188,  695,  669,  862,  862,  862,
1818       862,  862,  862,  862,  862,  862,   99,  862,  101,  862,
1819       862,  862,  862,  862,   99,  123,   99,   99,  862,   99,
1820       862,   99,  862,   99,  862,  862,   99,   99,  862,  259,
1821       245,   99,  260,  260,  260,  260,  260,  260,  260,  323,
1822       862,   99,  862,  101,  260,  260,  862,  862,  862,   99,
1823       259,   99,  699,  699,  699,  699,  699,  699,  699,  699,
1824       699,  699,  699,  699,  699,  699,  699,  699,  699,  123,
1825       862,  862,  700,  700,  700,  700,  700,  700,  700,  263,
1826       183,  183,  183,  183,  183,  183,  183,  862,  862,  862,
1827 
1828       862,  862,  183,  862,  862,  862,  862,  862,  862,  862,
1829       183,  183,  183,  183,  183,   99,  862,   99,  862,   99,
1830       862,   99,  862,  862,   99,   99,  862,  389,  245,   99,
1831       390,  390,  390,  390,  390,  390,  390,  453,  862,   99,
1832       862,  101,  390,  390,  862,  862,  862,   99,  389,   99,
1833       703,  703,  703,  703,  703,  703,  703,  703,  703,  703,
1834       703,  703,  703,  703,  703,  703,  703,  704,  704,  704,
1835       704,  704,  704,  704,  862,  862,  862,  862,  862,  704,
1836       862,  862,  862,  862,  862,  862,  862,  704,  704,  704,
1837       704,  704,   99,  862,   99,  862,   99,  862,   99,  862,
1838 
1839       862,   99,   99,  862,  394,  245,   99,  395,  395,  395,
1840       395,  395,  395,  395,  456,  862,   99,  862,  101,  395,
1841       395,  862,  862,  862,   99,  394,   99,  707,  707,  707,
1842       707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
1843       707,  707,  707,  707,   99,  862,   99,  862,   99,  862,
1844        99,  862,  862,   99,   99,  862,  270,  245,   99,  271,
1845       271,  271,  271,  271,  271,  271,  336,  862,   99,  862,
1846       101,  271,  271,  862,  862,  862,   99,  270,   99,  709,
1847       709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
1848       709,  709,  709,  709,  709,  709,   99,  862,   99,  862,
1849 
1850        99,  862,   99,  862,  862,   99,   99,  862,  401,  245,
1851        99,  402,  402,  402,  402,  402,  402,  402,  462,  862,
1852        99,  862,  101,  402,  402,  862,  862,  862,   99,  401,
1853        99,  712,  712,  712,  712,  712,  712,  712,  712,  712,
1854       712,  712,  712,  712,  712,  712,  712,  712,  341,  862,
1855       662,  662,  662,  662,  662,  662,  662,  166,  862,  166,
1856       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1857       862,  714,  714,  714,  714,  714,  714,  714,  862,  862,
1858       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1859       862,  862,  862,  862,  715,  223,  862,  223,  862,  862,
1860 
1861       862,  862,  862,  862,  224,  862,  224,  862,  862,  716,
1862       716,  716,  716,  716,  716,  716,  153,  862,  153,  862,
1863       153,  862,  153,  862,  862,  153,  153,  862,  153,  717,
1864       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1865       153,  862,  154,  862,  862,  862,  862,  862,  153,  153,
1866       153,  153,  862,  153,  862,  153,  862,  153,  862,  862,
1867       153,  153,  862,  153,  713,  862,  862,  862,  862,  862,
1868       862,  862,  862,  862,  862,  153,  862,  154,  862,  862,
1869       862,  862,  862,  153,  153,  153,   99,  862,   99,  862,
1870        99,  862,   99,  862,  862,   99,   99,  862,   99,  717,
1871 
1872       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1873        99,  862,  101,  862,  862,  862,  862,  862,   99,   99,
1874        99,  153,  862,  153,  862,  153,  862,  153,  862,  862,
1875       153,  153,  862,  163,  720,  718,  862,  862,  862,  862,
1876       862,  862,  862,  862,  862,  153,  862,  154,  862,  862,
1877       862,  862,  862,  153,  163,  153,  153,  862,  153,  862,
1878       153,  862,  153,  862,  862,  153,  153,  862,  163,  713,
1879       718,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1880       153,  862,  154,  862,  862,  862,  862,  862,  153,  163,
1881       153,  722,  100,  862,  673,  673,  673,  673,  673,  673,
1882 
1883       673,  862,  862,  862,  862,  154,  717,  862,  723,  723,
1884       723,  723,  723,  723,  723,  862,  862,  862,  862,  862,
1885       862,  862,  862,  862,  862,  608,  720,  726,  727,  727,
1886       727,  727,  727,  727,  727,  728,  862,  729,  729,  729,
1887       729,  729,  729,  729,  166,  862,  166,  862,  862,  862,
1888       862,  862,  862,  862,  862,  862,  730,  862,  731,  731,
1889       731,  731,  731,  731,  731,  862,  862,  862,  862,  862,
1890       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1891       862,  732,  223,  862,  223,  862,  862,  862,  862,  862,
1892       862,  283,  862,  285,  720,  862,  733,  733,  733,  733,
1893 
1894       733,  733,  733,   99,  862,   99,  862,   99,  862,   99,
1895       862,  862,   99,   99,  862,  110,  735,  719,  736,  736,
1896       736,  736,  736,  736,  736,  361,  862,   99,  862,  101,
1897       737,  737,  862,  862,  862,   99,  110,   99,  737,  737,
1898       737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
1899       737,  737,  737,  737,  737,  720,  862,  737,  737,  737,
1900       737,  737,  737,  737,  862,  153,  862,  153,  862,  153,
1901       862,  153,  862,  862,  153,  153,  862,  246,  720,  718,
1902       862,  862,  862,  862,  862,  862,  862,  862,  862,  153,
1903       862,  154,  862,  862,  862,  862,  862,  153,  246,  153,
1904 
1905       153,  862,  153,  862,  153,  862,  153,  862,  862,  153,
1906       153,  862,  246,  720,  718,  862,  862,  862,  862,  862,
1907       862,  862,  862,  862,  153,  862,  154,  862,  862,  862,
1908       862,  862,  153,  246,  153,  745,  745,  862,  862,  862,
1909       862,  862,  862,  745,  745,  745,  745,  745,  745,  745,
1910       745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
1911        99,  862,   99,  862,   99,  862,   99,  862,  862,   99,
1912        99,  862,  123,  746,  719,  862,  862,  862,  862,  862,
1913       862,  862,  862,  862,   99,  862,  101,  862,  862,  862,
1914       862,  862,   99,  123,   99,  748,  748,  748,  748,  748,
1915 
1916       748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
1917       748,  748,   99,  862,   99,  862,   99,  862,   99,  862,
1918       862,   99,   99,  862,  259,  245,   99,  260,  260,  260,
1919       260,  260,  260,  260,  323,  862,   99,  862,  101,  260,
1920       260,  862,  862,  862,   99,  259,   99,  749,  749,  749,
1921       749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
1922       749,  749,  749,  749,   99,  862,   99,  862,   99,  862,
1923        99,  862,  862,   99,   99,  862,  123,  746,  719,  750,
1924       750,  750,  750,  750,  750,  750,  263,  862,   99,  862,
1925       101,  747,  747,  862,  862,  862,   99,  123,   99,  747,
1926 
1927       747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
1928       747,  747,  747,  747,  747,  747,  753,  753,  753,  753,
1929       753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
1930       753,  753,  753,  754,  754,  754,  754,  754,  754,  754,
1931       862,  862,  862,  862,  862,  754,  862,  862,  862,  862,
1932       862,  862,  862,  754,  754,  754,  754,  754,  757,  757,
1933       757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
1934       757,  757,  757,  757,  757,  758,  758,  758,  758,  758,
1935       758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
1936       758,  758,  761,  761,  761,  761,  761,  761,  761,  761,
1937 
1938       761,  761,  761,  761,  761,  761,  761,  761,  761,  166,
1939       862,  166,  862,  862,  862,  862,  862,  862,  862,  862,
1940       862,  862,  862,  763,  763,  763,  763,  763,  763,  763,
1941       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
1942       862,  862,  862,  862,  862,  862,  764,  223,  862,  223,
1943       862,  862,  862,  862,  862,  862,  224,  862,  224,  862,
1944       862,  765,  765,  765,  765,  765,  765,  765,  153,  862,
1945       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1946       153,  762,  862,  862,  862,  862,  862,  862,  862,  862,
1947       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
1948 
1949       153,  153,  153,  153,  862,  153,  862,  153,  862,  153,
1950       862,  862,  153,  153,  862,  153,  767,  862,  862,  862,
1951       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1952       862,  862,  862,  862,  862,  153,  153,  153,   99,  862,
1953        99,  862,   99,  862,   99,  862,  862,   99,   99,  862,
1954        99,  767,  862,  862,  862,  862,  862,  862,  862,  862,
1955       862,  862,   99,  862,  101,  862,  862,  862,  862,  862,
1956        99,   99,   99,  153,  862,  153,  862,  153,  862,  153,
1957       862,  862,  153,  153,  862,  163,  762,  766,  862,  862,
1958       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1959 
1960       862,  862,  862,  862,  862,  153,  163,  153,  153,  862,
1961       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1962       163,  770,  766,  862,  862,  862,  862,  862,  862,  862,
1963       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
1964       153,  163,  153,  100,  862,  771,  771,  771,  771,  771,
1965       771,  771,  862,  862,  862,  862,  154,  772,  772,  772,
1966       772,  772,  772,  772,  862,  862,  862,  862,  862,  862,
1967       862,  862,  862,  862,  608,  775,  776,  776,  776,  776,
1968       776,  776,  776,  777,  862,  778,  778,  778,  778,  778,
1969       778,  778,  166,  862,  166,  862,  862,  862,  862,  862,
1970 
1971       862,  862,  862,  862,  779,  862,  780,  780,  780,  780,
1972       780,  780,  780,  862,  862,  862,  862,  862,  862,  862,
1973       862,  862,  862,  862,  862,  862,  862,  862,  862,  781,
1974       223,  862,  223,  862,  862,  862,  862,  862,  862,  283,
1975       862,  285,  862,  862,  782,  782,  782,  782,  782,  782,
1976       782,   99,  862,   99,  862,   99,  862,   99,  862,  862,
1977        99,   99,  862,  110,  784,  768,  785,  785,  785,  785,
1978       785,  785,  785,  361,  862,   99,  862,  101,  786,  786,
1979       862,  862,  862,   99,  110,   99,  786,  786,  786,  786,
1980       786,  786,  786,  786,  786,  786,  786,  786,  786,  786,
1981 
1982       786,  786,  786,  770,  862,  786,  786,  786,  786,  786,
1983       786,  786,  862,  153,  862,  153,  862,  153,  862,  153,
1984       862,  862,  153,  153,  862,  246,  770,  766,  862,  862,
1985       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
1986       862,  862,  862,  862,  862,  153,  246,  153,  153,  862,
1987       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
1988       246,  770,  766,  862,  862,  862,  862,  862,  862,  862,
1989       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
1990       153,  246,  153,  762,  862,  862,  862,  862,  862,  862,
1991       862,  862,  862,  862,  862,  862,  862,  792,  792,  862,
1992 
1993       862,  862,  862,  862,  862,  792,  792,  792,  792,  792,
1994       792,  792,  792,  792,  792,  792,  792,  792,  792,  792,
1995       792,  792,   99,  862,   99,  862,   99,  862,   99,  862,
1996       862,   99,   99,  862,  123,  793,  768,  862,  862,  862,
1997       862,  862,  862,  862,  862,  862,   99,  862,  101,  862,
1998       862,  862,  862,  862,   99,  123,   99,  260,  260,  260,
1999       260,  260,  260,  260,  260,  260,  260,  260,  260,  260,
2000       260,  260,  260,  260,   99,  862,   99,  862,   99,  862,
2001        99,  862,  862,   99,   99,  862,  123,  793,  768,  795,
2002       795,  795,  795,  795,  795,  795,  263,  862,   99,  862,
2003 
2004       101,  794,  794,  862,  862,  862,   99,  123,   99,  794,
2005       794,  794,  794,  794,  794,  794,  794,  794,  794,  794,
2006       794,  794,  794,  794,  794,  794,  799,  799,  799,  799,
2007       799,  799,  799,  799,  799,  799,  799,  799,  799,  799,
2008       799,  799,  799,  800,  800,  800,  800,  800,  800,  800,
2009       862,  862,  862,  862,  862,  800,  862,  862,  862,  862,
2010       862,  862,  862,  800,  800,  800,  800,  800,  804,  804,
2011       804,  804,  804,  804,  804,  804,  804,  804,  804,  804,
2012       804,  804,  804,  804,  804,  271,  271,  271,  271,  271,
2013       271,  271,  271,  271,  271,  271,  271,  271,  271,  271,
2014 
2015       271,  271,  808,  808,  808,  808,  808,  808,  808,  808,
2016       808,  808,  808,  808,  808,  808,  808,  808,  808,  862,
2017       862,  153,  153,  153,  153,  153,  153,  153,  153,  862,
2018       153,  862,  153,  862,  153,  862,  862,  153,  153,  862,
2019       862,  130,  153,  862,  862,  862,  862,  862,  862,  862,
2020       862,  862,  153,  862,  154,  862,  862,  862,  862,  862,
2021       153,  862,  153,  153,  862,  153,  862,  153,  862,  153,
2022       862,  862,  153,  153,  862,  862,  862,  153,  862,  862,
2023       862,  862,  862,  862,  862,  862,  862,  153,  862,  154,
2024       862,  862,  862,  862,  862,  153,  862,  153,  810,  810,
2025 
2026       810,  810,  810,  810,  810,  862,  862,  862,  862,  862,
2027       862,  862,  862,  862,  862,  608,  130,  813,  814,  814,
2028       814,  814,  814,  814,  814,  815,  862,  816,  816,  816,
2029       816,  816,  816,  816,  166,  862,  166,  862,  862,  862,
2030       862,  862,  862,  862,  862,  862,  817,  862,  818,  818,
2031       818,  818,  818,  818,  818,  862,  862,  862,  862,  862,
2032       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
2033       862,  218,  223,  862,  223,  862,  862,  862,  862,  862,
2034       862,  283,  862,  285,  130,  862,  286,  286,  286,  286,
2035       286,  286,  286,   99,  862,   99,  862,   99,  862,   99,
2036 
2037       862,  862,   99,   99,  862,  110,  820,   99,  821,  821,
2038       821,  821,  821,  821,  821,  361,  862,   99,  862,  101,
2039       110,  110,  862,  862,  862,   99,  110,   99,  110,  110,
2040       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
2041       110,  110,  110,  110,  110,  130,  862,  110,  110,  110,
2042       110,  110,  110,  110,  862,  153,  862,  153,  862,  153,
2043       862,  153,  862,  862,  153,  153,  862,  246,  130,  153,
2044       862,  862,  862,  862,  862,  862,  862,  862,  862,  153,
2045       862,  154,  862,  862,  862,  862,  862,  153,  246,  153,
2046       153,  862,  153,  862,  153,  862,  153,  862,  862,  153,
2047 
2048       153,  862,  246,  130,  153,  862,  862,  862,  862,  862,
2049       862,  862,  862,  862,  153,  862,  154,  862,  862,  862,
2050       862,  862,  153,  246,  153,  313,  313,  862,  862,  862,
2051       862,  862,  862,  313,  313,  313,  313,  313,  313,  313,
2052       313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2053       828,  828,  828,  828,  828,  828,  828,  263,  829,  829,
2054       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
2055       829,  829,  829,  829,  829,  830,  830,  830,  830,  830,
2056       830,  830,  862,  862,  862,  862,  862,  830,  862,  862,
2057       862,  862,  862,  862,  862,  830,  830,  830,  830,  830,
2058 
2059       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
2060       831,  831,  831,  831,  831,  831,  831,  832,  832,  832,
2061       832,  832,  832,  832,  832,  832,  832,  832,  832,  832,
2062       832,  832,  832,  832,  828,  828,  828,  828,  828,  828,
2063       828,  263,  390,  390,  390,  390,  390,  390,  390,  390,
2064       390,  390,  390,  390,  390,  390,  390,  390,  390,  838,
2065       838,  838,  838,  838,  838,  838,  862,  862,  862,  862,
2066       862,  838,  862,  862,  862,  862,  862,  862,  862,  838,
2067       838,  838,  838,  838,  395,  395,  395,  395,  395,  395,
2068       395,  395,  395,  395,  395,  395,  395,  395,  395,  395,
2069 
2070       395,  402,  402,  402,  402,  402,  402,  402,  402,  402,
2071       402,  402,  402,  402,  402,  402,  402,  402,   18,   18,
2072        18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
2073        18,   18,   18,   18,   18,   24,   24,   24,   24,   24,
2074        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
2075        24,   24,   28,   28,   28,   28,   28,   28,   28,   28,
2076        28,   28,   28,   28,   28,   28,   28,   28,   28,   38,
2077        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
2078        38,   38,   38,   38,   38,   38,   41,   41,   41,   41,
2079        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
2080 
2081        41,   41,   41,   64,   64,   64,   64,   64,   64,   64,
2082        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
2083        71,   71,  862,   71,   71,   71,   71,   71,   71,   71,
2084        71,   71,   71,   71,   71,   71,   71,   75,  862,  862,
2085        75,   75,  862,   75,   75,   75,   75,   77,   77,  862,
2086        77,  862,   77,   77,   77,   77,   77,   77,   77,   77,
2087        77,   77,   77,   77,   78,   78,   78,   78,   78,   78,
2088        78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
2089        78,   91,   91,  862,   91,   91,   91,   91,   91,   91,
2090        91,   91,   91,   91,   91,   91,   91,   91,   94,   94,
2091 
2092       862,   94,   94,   94,   94,   94,   94,   94,   94,   94,
2093        94,   94,   94,   94,   94,   96,   96,  862,   96,   96,
2094        96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
2095        96,   96,   97,  862,  862,  862,   97,   97,   97,   97,
2096        97,   97,   97,   97,   97,   97,   97,   97,   97,   98,
2097        98,  862,   98,   98,   98,   98,   98,   98,   98,   98,
2098        98,   98,   98,   98,   98,   98,   99,  862,   99,  862,
2099       862,  862,   99,   99,   99,   99,   99,  862,   99,   99,
2100        99,   99,   99,  104,  104,  862,  862,  862,  104,  104,
2101       104,  104,  104,  104,  104,  862,  104,  104,  104,  104,
2102 
2103       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
2104       105,  105,  105,  105,  105,  105,  105,  113,  113,  113,
2105       862,  862,  113,  113,  862,  113,  116,  862,  116,  862,
2106       862,  862,  116,  116,  116,  116,  116,  862,  116,  116,
2107       116,  116,  116,  141,  141,  862,  141,  141,  141,  141,
2108       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
2109       153,  862,  153,  862,  862,  862,  153,  153,  862,  153,
2110       153,  862,  153,  153,  153,  153,  153,  158,  158,  158,
2111       158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
2112       158,  158,  158,  158,  165,  165,  165,  862,  862,  165,
2113 
2114       165,  862,  165,  169,  862,  169,  862,  862,  862,  169,
2115       169,  169,  169,  169,  862,  169,  169,  169,  169,  169,
2116       171,  862,  171,  862,  862,  862,  171,  171,  171,  171,
2117       171,  862,  171,  171,  171,  171,  171,  182,  182,  862,
2118       862,  182,  862,  862,  182,  183,  862,  183,  862,  862,
2119       862,  183,  183,  183,  183,  183,  862,  183,  183,  183,
2120       183,  183,  141,  141,  862,  141,  141,  141,  141,  141,
2121       141,  141,  141,  141,  141,  141,  141,  141,  141,  219,
2122       219,  219,  862,  862,  219,  219,  862,  219,  227,  862,
2123       227,  862,  862,  862,  227,  227,  227,  227,  227,  862,
2124 
2125       227,  227,  227,  227,  227,  228,  862,  228,  862,  862,
2126       862,  228,  228,  228,  228,  228,  862,  228,  228,  228,
2127       228,  228,  243,  243,  243,  862,  243,  862,  862,  243,
2128       183,  862,  183,  862,  862,  862,  183,  183,  183,  183,
2129       183,  862,  183,  183,  183,  183,  183,  247,  862,  247,
2130       862,  862,  862,  247,  247,  247,  247,  247,  862,  247,
2131       247,  247,  247,  247,  277,  862,  277,  862,  862,  862,
2132       277,  277,  862,  277,  277,  862,  277,  277,  277,  277,
2133       277,  279,  862,  862,  279,  862,  862,  279,  279,  279,
2134       279,  287,  287,  287,  862,  862,  287,  287,  862,  287,
2135 
2136       288,  862,  288,  862,  862,  288,  288,  862,  862,  288,
2137       292,  862,  292,  862,  862,  862,  292,  292,  292,  292,
2138       292,  862,  292,  292,  292,  292,  292,  294,  862,  294,
2139       862,  862,  862,  294,  294,  294,  294,  294,  862,  294,
2140       294,  294,  294,  294,  307,  307,  862,  307,  862,  862,
2141       307,  311,  311,  311,  862,  311,  862,  862,  311,  312,
2142       862,  862,  312,  862,  862,  312,  314,  862,  314,  862,
2143       862,  862,  314,  314,  314,  314,  314,  862,  314,  314,
2144       314,  314,  314,  315,  862,  315,  862,  862,  862,  315,
2145       315,  315,  315,  315,  862,  315,  315,  315,  315,  315,
2146 
2147       318,  862,  318,  862,  862,  862,  318,  318,  318,  318,
2148       318,  318,  318,  318,  318,  318,  318,  260,  862,  260,
2149       862,  862,  862,  260,  260,  260,  260,  260,  862,  260,
2150       260,  260,  260,  260,  271,  862,  271,  862,  862,  862,
2151       271,  271,  271,  271,  271,  862,  271,  271,  271,  271,
2152       271,   99,  862,   99,  862,  862,  862,   99,   99,   99,
2153        99,   99,  862,   99,   99,   99,   99,   99,  277,  862,
2154       277,  862,  862,  862,  277,  277,  277,  277,  277,  862,
2155       277,  277,  277,  277,  277,  279,  279,  862,  279,  862,
2156       862,  279,  279,  279,  279,  153,  862,  153,  862,  862,
2157 
2158       862,  153,  153,  153,  153,  153,  862,  153,  153,  153,
2159       153,  153,  344,  344,  344,  862,  862,  344,  344,  862,
2160       344,  349,  862,  349,  862,  862,  862,  349,  349,  349,
2161       349,  349,  862,  349,  349,  349,  349,  349,  350,  862,
2162       350,  862,  862,  862,  350,  350,  350,  350,  350,  862,
2163       350,  350,  350,  350,  350,  365,  365,  862,  365,  862,
2164       862,  365,  367,  367,  367,  862,  367,  862,  862,  367,
2165       368,  368,  368,  862,  368,  862,  862,  368,  314,  862,
2166       314,  862,  862,  862,  314,  314,  314,  314,  314,  862,
2167       314,  314,  314,  314,  314,  370,  862,  370,  862,  862,
2168 
2169       862,  370,  370,  370,  370,  370,  862,  370,  370,  370,
2170       370,  370,  373,  862,  373,  862,  862,  862,  373,  373,
2171       373,  373,  373,  862,  373,  373,  373,  373,  373,  406,
2172       862,  862,  406,  862,  862,  406,  406,  406,  406,  409,
2173       409,  409,  862,  862,  409,  409,  862,  409,  413,  862,
2174       413,  862,  862,  862,  413,  413,  413,  413,  413,  862,
2175       413,  413,  413,  413,  413,  415,  862,  415,  862,  862,
2176       862,  415,  415,  415,  415,  415,  862,  415,  415,  415,
2177       415,  415,  429,  429,  862,  429,  862,  862,  429,  430,
2178       430,  862,  430,  862,  862,  430,  431,  431,  431,  862,
2179 
2180       431,  862,  862,  431,  432,  862,  862,  432,  862,  862,
2181       432,  433,  862,  433,  862,  862,  862,  433,  433,  433,
2182       433,  433,  862,  433,  433,  433,  433,  433,  436,  862,
2183       436,  862,  862,  862,  436,  436,  436,  436,  436,  862,
2184       436,  436,  436,  436,  436,  395,  862,  395,  862,  862,
2185       862,  395,  395,  395,  395,  395,  862,  395,  395,  395,
2186       395,  395,  402,  862,  402,  862,  862,  862,  402,  402,
2187       402,  402,  402,  862,  402,  402,  402,  402,  402,  406,
2188       406,  862,  406,  862,  862,  406,  406,  406,  406,  468,
2189       468,  468,  862,  862,  468,  468,  862,  468,  473,  862,
2190 
2191       473,  862,  862,  862,  473,  473,  473,  473,  473,  862,
2192       473,  473,  473,  473,  473,  474,  862,  474,  862,  862,
2193       862,  474,  474,  474,  474,  474,  862,  474,  474,  474,
2194       474,  474,  488,  488,  862,  488,  862,  862,  488,  489,
2195       489,  862,  489,  862,  862,  489,  491,  491,  491,  862,
2196       491,  862,  862,  491,  492,  492,  492,  862,  492,  862,
2197       862,  492,  494,  862,  494,  862,  862,  862,  494,  494,
2198       494,  494,  494,  862,  494,  494,  494,  494,  494,  497,
2199       862,  497,  862,  862,  862,  497,  497,  497,  497,  497,
2200       862,  497,  497,  497,  497,  497,  508,  862,  862,  508,
2201 
2202       862,  862,  508,  508,  508,  508,  513,  862,  862,  513,
2203       862,  862,  513,  513,  513,  513,  536,  536,  536,  862,
2204       862,  536,  536,  862,  536,  540,  862,  540,  862,  862,
2205       862,  540,  540,  540,  540,  540,  862,  540,  540,  540,
2206       540,  540,  542,  862,  542,  862,  862,  862,  542,  542,
2207       542,  542,  542,  862,  542,  542,  542,  542,  542,  543,
2208       862,  543,  862,  862,  862,  543,  543,  543,  543,  543,
2209       862,  543,  543,  543,  543,  543,  560,  560,  862,  560,
2210       862,  862,  560,  561,  561,  862,  561,  862,  862,  561,
2211       562,  562,  562,  862,  562,  862,  862,  562,  563,  862,
2212 
2213       862,  563,  862,  862,  563,  564,  862,  564,  862,  862,
2214       862,  564,  564,  564,  564,  564,  862,  564,  564,  564,
2215       564,  564,  567,  862,  567,  862,  862,  862,  567,  567,
2216       567,  567,  567,  862,  567,  567,  567,  567,  567,  572,
2217       862,  862,  572,  862,  862,  572,  572,  572,  572,  508,
2218       862,  862,  508,  862,  862,  508,  508,  508,  508,  513,
2219       862,  862,  513,  862,  862,  513,  513,  513,  513,  592,
2220       862,  862,  592,  862,  862,  592,  592,  592,  592,  406,
2221       406,  862,  406,  862,  862,  406,  406,  406,  406,  599,
2222       599,  599,  862,  862,  599,  599,  862,  599,  604,  862,
2223 
2224       604,  862,  862,  862,  604,  604,  604,  604,  604,  862,
2225       604,  604,  604,  604,  604,  605,  862,  605,  862,  862,
2226       862,  605,  605,  605,  605,  605,  862,  605,  605,  605,
2227       605,  605,  607,  862,  607,  862,  862,  862,  607,  607,
2228       607,  607,  607,  862,  607,  607,  607,  607,  607,  620,
2229       862,  620,  862,  862,  862,  862,  862,  862,  620,  624,
2230       624,  862,  624,  862,  862,  624,  625,  625,  862,  625,
2231       862,  862,  625,  627,  627,  627,  862,  627,  862,  862,
2232       627,  628,  628,  628,  862,  628,  862,  862,  628,  630,
2233       862,  630,  862,  862,  862,  630,  630,  630,  630,  630,
2234 
2235       862,  630,  630,  630,  630,  630,  633,  862,  633,  862,
2236       862,  862,  633,  633,  633,  633,  633,  862,  633,  633,
2237       633,  633,  633,  572,  862,  862,  572,  862,  862,  572,
2238       572,  572,  572,  640,  862,  862,  640,  862,  862,  640,
2239       640,  640,  640,  643,  862,  862,  643,  862,  862,  643,
2240       643,  643,  643,  645,  862,  862,  645,  862,  862,  645,
2241       645,  645,  645,  592,  862,  862,  592,  862,  862,  592,
2242       592,  592,  592,  406,  862,  862,  406,  862,  862,  406,
2243       406,  406,  406,  663,  663,  663,  862,  862,  663,  663,
2244       862,  663,  667,  862,  667,  862,  862,  862,  667,  667,
2245 
2246       667,  667,  667,  862,  667,  667,  667,  667,  667,  669,
2247       862,  669,  862,  862,  862,  669,  669,  669,  669,  669,
2248       862,  669,  669,  669,  669,  669,  670,  862,  670,  862,
2249       862,  862,  670,  670,  670,  670,  670,  862,  670,  670,
2250       670,  670,  670,  153,  862,  153,  862,  862,  862,  153,
2251       153,  153,  153,  153,  862,  153,  153,  153,  153,  153,
2252       689,  689,  862,  689,  862,  862,  689,  690,  690,  862,
2253       690,  862,  862,  690,  691,  691,  691,  862,  691,  862,
2254       862,  691,  692,  862,  862,  692,  862,  862,  692,  693,
2255       862,  693,  862,  862,  862,  693,  693,  693,  693,  693,
2256 
2257       862,  693,  693,  693,  693,  693,  696,  862,  696,  862,
2258       862,  862,  696,  696,  696,  696,  696,  862,  696,  696,
2259       696,  696,  696,  640,  862,  862,  640,  862,  862,  640,
2260       640,  640,  640,  643,  862,  862,  643,  862,  862,  643,
2261       643,  643,  643,  645,  862,  862,  645,  862,  862,  645,
2262       645,  645,  645,  406,  406,  862,  406,  862,  862,  406,
2263       406,  406,  406,  713,  713,  713,  862,  862,  713,  713,
2264       862,  713,  718,  862,  718,  862,  862,  862,  718,  718,
2265       718,  718,  718,  862,  718,  718,  718,  718,  718,  719,
2266       862,  719,  862,  862,  862,  719,  719,  719,  719,  719,
2267 
2268       862,  719,  719,  719,  719,  719,  721,  862,  721,  862,
2269       862,  862,  721,  721,  721,  721,  721,  862,  721,  721,
2270       721,  721,  721,  153,  862,  153,  862,  862,  862,  153,
2271       153,  153,  153,  153,  862,  153,  153,  153,  153,  153,
2272       738,  738,  862,  738,  862,  862,  738,  739,  739,  862,
2273       739,  862,  862,  739,  741,  741,  741,  862,  741,  862,
2274       862,  741,  742,  742,  742,  862,  742,  862,  862,  742,
2275       744,  862,  744,  862,  862,  862,  744,  744,  744,  744,
2276       744,  862,  744,  744,  744,  744,  744,  747,  862,  747,
2277       862,  862,  862,  747,  747,  747,  747,  747,  862,  747,
2278 
2279       747,  747,  747,  747,  762,  762,  762,  862,  862,  762,
2280       762,  862,  762,  766,  862,  766,  862,  862,  862,  766,
2281       766,  766,  766,  766,  862,  766,  766,  766,  766,  766,
2282       768,  862,  768,  862,  862,  862,  768,  768,  768,  768,
2283       768,  862,  768,  768,  768,  768,  768,  769,  862,  769,
2284       862,  862,  862,  769,  769,  769,  769,  769,  862,  769,
2285       769,  769,  769,  769,  787,  787,  862,  787,  862,  862,
2286       787,  788,  788,  862,  788,  862,  862,  788,  789,  789,
2287       789,  862,  789,  862,  862,  789,  790,  862,  862,  790,
2288       862,  862,  790,  791,  862,  791,  862,  862,  862,  791,
2289 
2290       791,  791,  791,  791,  862,  791,  791,  791,  791,  791,
2291       794,  862,  794,  862,  862,  862,  794,  794,  794,  794,
2292       794,  862,  794,  794,  794,  794,  794,  797,  862,  862,
2293       797,  862,  862,  797,  797,  797,  797,  803,  862,  862,
2294       803,  862,  862,  803,  803,  803,  803,  807,  862,  862,
2295       807,  862,  862,  807,  807,  807,  807,  809,  862,  809,
2296       862,  862,  862,  862,  862,  862,  809,  862,  862,  862,
2297       862,  862,  809,  288,  862,  288,  862,  862,  288,  288,
2298       862,  862,  288,   99,  862,   99,  862,  862,  862,   99,
2299        99,   99,   99,   99,  862,   99,   99,   99,   99,   99,
2300 
2301       163,  862,  163,  862,  862,  862,  163,  163,  163,  163,
2302       163,  862,  163,  163,  163,  163,  163,  822,  822,  862,
2303       822,  862,  862,  822,  823,  823,  862,  823,  862,  862,
2304       823,  825,  825,  825,  862,  825,  862,  862,  825,  826,
2305       826,  826,  862,  826,  862,  862,  826,  314,  862,  314,
2306       862,  862,  862,  314,  314,  314,  314,  314,  862,  314,
2307       314,  314,  314,  314,  834,  834,  862,  834,  862,  862,
2308       834,  835,  835,  862,  835,  862,  862,  835,  836,  836,
2309       836,  862,  836,  862,  862,  836,  837,  862,  862,  837,
2310       862,  862,  837,  840,  840,  862,  840,  862,  862,  840,
2311 
2312       842,  842,  862,  862,  842,  862,  862,  842,  843,  843,
2313       843,  862,  843,  862,  862,  843,  844,  844,  862,  862,
2314       844,  862,  862,  844,  848,  848,  862,  862,  848,  862,
2315       862,  848,  849,  849,  862,  862,  849,  862,  862,  849,
2316       854,  854,  862,  862,  854,  862,  862,  854,  855,  855,
2317       862,  862,  855,  862,  862,  855,   17,  862,  862,  862,
2318       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
2319       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
2320       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
2321       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
2322 
2323       862,  862,  862,  862,  862,  862,  862,  862,  862
2324     } ;
2325 
2326 static yyconst short int yy_chk[14010] =
2327     {   0,
2328         0,    0,    1,   14,   14,   14,    1,    2,    2,    2,
2329         3,    4,    2,    3,    4,    7,    7,    7,  418,  418,
2330         7,    8,    8,    8,   34,   34,    8,    9,    9,    9,
2331        36,   36,    9,    2,    2,   10,   10,   10,    3,    4,
2332        10,    2,    2,    2,    2,    2,    2,    2,    2,    2,
2333         2,    2,    2,    2,    2,    2,    2,    2,    5,    5,
2334         5,    5,  936,    5,    5,  936,    5,    5,  323,    5,
2335         5,    5,   21,   21,   21,   29,   39,   29,   39,  323,
2336         5,    5,    5,   42,   23,   42,    5,    6,    6,    6,
2337         6,   44,    6,    6,   23,    6,    6,  393,    6,    6,
2338 
2339         6,   43,  456,   43,   44,   23,   45,  393,   45,    6,
2340         6,    6,   59,  456,   59,    6,   11,   11,   11,   11,
2341        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2342        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2343        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2344        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2345        11,   11,   11,   11,   11,   11,   11,   11,   15,  858,
2346        15,   15,   15,   15,   15,   15,   15,   30,   86,   30,
2347        86,   60,   30,   62,   62,  855,   30,   15,   16,   60,
2348        16,   16,   16,   16,   16,   16,   16,   52,   52,   52,
2349 
2350        52,   52,   52,   52,   66,   66,   66,   16,   27,   27,
2351        27,   27,   27,   27,   27,   61,   46,   61,   46,  182,
2352        95,   46,   95,  243,   61,   46,   99,  182,   46,   27,
2353       854,  243,   27,   72,   72,   72,   98,   27,   98,   99,
2354        27,   46,   27,   48,   48,   48,  311,   48,  445,   48,
2355        48,  329,  329,   48,  311,   48,   69,   69,   69,   69,
2356        69,   69,   69,  949,   48,   48,  949,   48,   48,  445,
2357       102,   48,   48,   48,   50,   74,   50,   50,   50,   50,
2358        50,   50,   50,  102,  220,   74,  220,   50,   51,   75,
2359        51,  849,   51,  220,   51,  220,   74,   51,   51,   75,
2360 
2361        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
2362        75,  532,   51,  532,   51,   51,   51,   87,   87,   87,
2363        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
2364        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
2365        53,  848,   53,  166,   53,  166,   53,  844,  103,   53,
2366        53,  842,   53,   53,   79,   79,   79,   79,   79,   79,
2367        79,  103,  328,  146,   53,  147,   53,  142,  142,  142,
2368       153,  328,   53,   53,   53,   54,  146,   54,  147,   54,
2369       166,   54,  840,  153,   54,   54,  837,   54,   54,   54,
2370        54,   54,   54,   54,   54,   54,   54,   54,  556,   54,
2371 
2372       556,   54,   54,   54,  151,  151,  151,   54,   54,   54,
2373        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
2374        54,   54,   54,   54,   54,   54,   54,   56,  835,   56,
2375       312,   56,  845,   56,  845,  450,   56,   56,  312,   56,
2376        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
2377       367,   56,  834,   56,   56,   56,  450,  824,  367,   56,
2378        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
2379        56,   56,   56,   56,   56,   56,   56,   56,   56,   57,
2380        57,   57,   57,   57,   57,   57,   57,  479,  479,  550,
2381       550,   57,   80,   80,   80,   80,   80,   80,   80,   57,
2382 
2383        57,   57,   57,   57,   58,  390,   58,   58,   58,   58,
2384        58,   58,   58,   68,  390,   68,   68,   68,   68,   68,
2385        68,   68,   70,  823,   70,   70,  522,   70,   70,   70,
2386        70,   70,   70,   70,  101,  522,  101,  822,  101,  819,
2387       101,  817,  502,  101,  101,  336,  101,  101,  101,  101,
2388       101,  101,  101,  101,  101,  101,  336,  336,  101,  805,
2389       101,  101,  101,  502,  614,  614,  101,  101,  101,  101,
2390       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
2391       101,  101,  101,  101,  101,  101,  105,  105,  105,  368,
2392       105,  801,  105,  105,  544,  798,  105,  368,  105,  126,
2393 
2394       126,  126,  126,  126,  126,  126,  674,  105,  105,  772,
2395       105,  105,  431,  544,  105,  105,  105,  106,  106,  106,
2396       431,  106,  507,  106,  106,  674,  788,  106,  772,  106,
2397       130,  130,  130,  130,  130,  130,  130,  787,  106,  106,
2398       779,  106,  106,  507,  759,  106,  106,  106,  107,  107,
2399       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2400       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2401       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2402       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2403       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2404 
2405       108,  108,  108,  108,  108,  108,  108,  432,  223,  453,
2406       223,  108,  111,  453,  111,  432,  111,  223,  111,  223,
2407       453,  111,  111,  462,  111,  755,  111,  111,  111,  111,
2408       111,  111,  111,  111,  462,  462,  111,  752,  111,  111,
2409       111,  679,  679,  740,  111,  111,  111,  111,  111,  111,
2410       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
2411       111,  111,  111,  111,  114,  739,  114,  145,  145,  145,
2412       145,  145,  145,  145,  546,  546,  546,  546,  114,  114,
2413       114,  114,  114,  114,  114,  149,  149,  149,  149,  149,
2414       149,  149,  150,  150,  150,  150,  150,  150,  150,  738,
2415 
2416       672,  114,  115,  810,  115,  162,  115,  162,  115,  728,
2417       728,  115,  115,  672,  115,  115,  491,  162,  164,  174,
2418       164,  174,  810,  512,  491,  492,  115,  526,  115,  730,
2419       164,  174,  562,  492,  115,  115,  115,  116,  723,  116,
2420       562,  116,  162,  116,  512,  711,  116,  116,  526,  116,
2421       116,  225,  710,  225,  508,  164,  174,  291,  571,  291,
2422       225,  116,  225,  116,  508,  234,  291,  234,  291,  116,
2423       116,  116,  117,  513,  117,  508,  117,  234,  117,  571,
2424       576,  117,  117,  513,  117,  117,  117,  117,  117,  117,
2425       117,  117,  117,  117,  513,  563,  117,  708,  117,  117,
2426 
2427       117,  576,  234,  563,  117,  117,  117,  117,  117,  117,
2428       117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
2429       117,  117,  117,  117,  118,  706,  118,  627,  118,  705,
2430       118,  702,  578,  118,  118,  627,  118,  118,  118,  118,
2431       118,  118,  118,  118,  118,  118,  118,  628,  118,  701,
2432       118,  118,  118,  578,  698,  628,  118,  118,  118,  118,
2433       118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
2434       118,  118,  118,  118,  118,  118,  119,  119,  119,  119,
2435       119,  119,  119,  119,  690,  611,  611,  611,  119,  179,
2436       179,  179,  179,  179,  179,  179,  119,  119,  119,  119,
2437 
2438       119,  120,  611,  120,  120,  120,  120,  120,  120,  120,
2439       120,  121,  121,  121,  121,  121,  121,  121,  121,  689,
2440       579,  685,  591,  121,  181,  181,  181,  181,  181,  181,
2441       181,  121,  121,  121,  121,  121,  123,  572,  123,  681,
2442       123,  579,  123,  591,  660,  123,  123,  572,  123,  123,
2443       123,  205,  205,  205,  205,  205,  205,  205,  572,  691,
2444       123,  639,  123,  301,  302,  301,  302,  691,  123,  123,
2445       123,  124,  301,  124,  301,  124,  302,  124,  659,  642,
2446       124,  124,  639,  124,  124,  124,  124,  124,  124,  124,
2447       124,  124,  124,  658,  692,  124,  656,  124,  124,  124,
2448 
2449       642,  302,  692,  124,  124,  124,  124,  124,  124,  124,
2450       124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
2451       124,  124,  124,  125,  654,  125,  741,  125,  653,  125,
2452       652,  644,  125,  125,  741,  125,  125,  125,  125,  125,
2453       125,  125,  125,  125,  125,  125,  742,  125,  649,  125,
2454       125,  125,  644,  648,  742,  125,  125,  125,  125,  125,
2455       125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
2456       125,  125,  125,  125,  125,  127,  647,  127,  789,  127,
2457       641,  127,  636,  751,  127,  127,  789,  127,  127,  127,
2458       127,  127,  127,  127,  127,  127,  127,  127,  626,  127,
2459 
2460       625,  127,  127,  127,  751,  777,  777,  127,  127,  127,
2461       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
2462       127,  127,  127,  127,  127,  127,  127,  128,  128,  128,
2463       128,  128,  128,  128,  128,  676,  676,  676,  676,  128,
2464       207,  207,  207,  207,  207,  207,  207,  128,  128,  128,
2465       128,  128,  129,  129,  129,  129,  129,  129,  129,  129,
2466       624,  725,  725,  725,  129,  212,  212,  212,  212,  212,
2467       212,  212,  129,  129,  129,  129,  129,  131,  725,  592,
2468       131,  131,  131,  131,  131,  131,  131,  148,  148,  592,
2469       148,  148,  148,  148,  148,  148,  148,  154,  640,  154,
2470 
2471       592,  154,  616,  154,  609,  756,  154,  154,  640,  154,
2472       154,  154,  154,  154,  154,  154,  154,  154,  154,  640,
2473       790,  154,  596,  154,  154,  154,  756,  595,  790,  154,
2474       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
2475       154,  154,  154,  154,  154,  154,  154,  154,  154,  155,
2476       590,  155,  155,  155,  155,  155,  155,  155,  158,  158,
2477       158,  825,  158,  760,  158,  158,  815,  815,  158,  825,
2478       158,  216,  216,  216,  216,  216,  216,  216,  588,  158,
2479       158,  587,  158,  158,  760,  583,  158,  158,  158,  159,
2480       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2481 
2482       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2483       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2484       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2485       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2486       159,  160,  582,  160,  160,  160,  160,  160,  160,  160,
2487       163,  577,  163,  163,  163,  163,  163,  163,  163,  167,
2488       573,  167,  224,  224,  224,  224,  224,  224,  224,  561,
2489       763,  560,  763,  167,  167,  167,  167,  167,  167,  167,
2490       240,  240,  240,  240,  240,  240,  240,  241,  241,  241,
2491       241,  241,  241,  241,  929,  929,  167,  168,  263,  168,
2492 
2493       796,  552,  263,  548,  548,  548,  168,  763,  168,  263,
2494       263,  168,  168,  168,  168,  168,  168,  168,  169,  548,
2495       169,  796,  169,  530,  169,  951,  951,  169,  169,  529,
2496       169,  169,  242,  242,  242,  242,  242,  242,  242,  643,
2497       802,  528,  169,  806,  169,  347,  359,  347,  359,  643,
2498       169,  169,  169,  170,  347,  170,  347,  170,  359,  170,
2499       643,  802,  170,  170,  806,  170,  170,  254,  254,  254,
2500       254,  254,  254,  254,  645,  525,  809,  170,  809,  170,
2501       358,  524,  358,  359,  645,  170,  170,  170,  171,  358,
2502       171,  358,  171,  521,  171,  645,  768,  171,  171,  518,
2503 
2504       171,  171,  255,  255,  255,  255,  255,  255,  255,  768,
2505       517,  826,  171,  809,  171,  516,  425,  514,  425,  826,
2506       171,  171,  171,  172,  172,  172,  172,  172,  425,  172,
2507       964,  964,  172,  172,  511,  172,  172,  172,  172,  172,
2508       172,  172,  172,  172,  172,  510,  836,  172,  509,  172,
2509       172,  172,  504,  425,  836,  172,  172,  172,  172,  172,
2510       172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
2511       172,  172,  172,  172,  172,  173,  503,  173,  257,  257,
2512       257,  257,  257,  257,  257,  967,  967,  173,  490,  173,
2513       173,  173,  173,  173,  173,  173,  275,  275,  275,  275,
2514 
2515       275,  275,  275,  288,  288,  288,  288,  288,  288,  288,
2516       843,  489,  173,  175,  488,  175,  481,  175,  843,  175,
2517      1001, 1001,  175,  175,  460,  175,  175,  175,  175,  175,
2518       175,  175,  175,  175,  175,  175,  459,  175,  451,  175,
2519       175,  175, 1002, 1002,  449,  175,  175,  175,  175,  175,
2520       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
2521       175,  175,  175,  175,  175,  176,  448,  176,  176,  176,
2522       176,  176,  176,  176,  176,  177,  177,  177,  177,  177,
2523       177,  177,  177,  774,  774,  774,  774,  177,  306,  306,
2524       306,  306,  306,  306,  306,  177,  177,  177,  177,  177,
2525 
2526       178,  178,  178,  178,  178,  178,  178,  178,  812,  812,
2527       812,  812,  178,  309,  309,  309,  309,  309,  309,  309,
2528       178,  178,  178,  178,  178,  183,  797,  183,  447,  183,
2529       446,  183, 1003, 1003,  183,  183,  797,  183,  183,  183,
2530       310,  310,  310,  310,  310,  310,  803,  797,  442,  183,
2531       441,  183,  412,  485,  412,  485,  803,  183,  183,  183,
2532       184,  412,  184,  412,  184,  485,  184,  803,  430,  184,
2533       184,  429,  184,  184,  184,  321,  321,  321,  321,  321,
2534       321,  321,  421,  420,  184,  406,  184,  399,  398,  397,
2535       485,  387,  184,  184,  184,  185,  322,  322,  322,  322,
2536 
2537       322,  322,  322,  424,  471,  424,  471,  386,  385,  185,
2538       185,  384,  424,  471,  424,  471,  383,  185,  185,  185,
2539       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
2540       185,  185,  185,  185,  186,  382,  186,  379,  186,  378,
2541       186,  366,  365,  186,  186,  364,  186,  186,  186,  186,
2542       186,  186,  186,  186,  186,  186,  186,  363,  186,  355,
2543       186,  186,  186,  354,  334,  333,  186,  186,  186,  186,
2544       186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
2545       186,  186,  186,  186,  186,  186,  187,  187,  187,  187,
2546       187,  187,  187,  187,  327,  326,  307,  300,  187,  339,
2547 
2548       339,  339,  339,  339,  339,  339,  187,  187,  187,  187,
2549       187,  188,  807,  188,  297,  188,  279,  188,  273,  269,
2550       188,  188,  807,  188,  188,  188,  188,  188,  188,  188,
2551       188,  188,  188,  807,  268,  188,  267,  188,  188,  188,
2552       266,  265,  264,  188,  188,  188,  188,  188,  188,  188,
2553       188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
2554       188,  188,  188,  189,  258,  239,  189,  189,  189,  189,
2555       189,  189,  189,  190,  237,  190,  233,  190,  214,  190,
2556       209,  203,  190,  190,  202,  190,  190,  190,  190,  190,
2557       190,  190,  190,  190,  190,  190,  200,  190,  199,  190,
2558 
2559       190,  190,  198,  197,  196,  190,  190,  190,  190,  190,
2560       190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
2561       190,  190,  190,  190,  190,  191,  191,  191,  191,  191,
2562       191,  191,  191,  195,  180,  161,  157,  191,  342,  342,
2563       342,  342,  342,  342,  342,  191,  191,  191,  191,  191,
2564       192,  156,  144,  192,  192,  192,  192,  192,  192,  192,
2565       193,  140,  193,  139,  193,  138,  193,  137,  136,  193,
2566       193,  135,  193,  193,  193,  193,  193,  193,  193,  193,
2567       193,  193,  134,  133,  193,  132,  193,  193,  193,  122,
2568       104,  100,  193,  193,  193,  193,  193,  193,  193,  193,
2569 
2570       193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
2571       193,  193,  194,  194,  194,  194,  194,  194,  194,  194,
2572       201,   93,  201,   92,  201,   63,  201,   55,   37,  201,
2573       201,   35,  201,  201,  201,  201,  201,  201,  201,  201,
2574       201,  201,   33,   31,  201,   17,  201,  201,  201,   13,
2575         0,    0,  201,  201,  201,  201,  201,  201,  201,  201,
2576       201,  201,  201,  201,  201,  201,  201,  201,  201,  201,
2577       201,  201,  206,    0,  206,  206,  206,  206,  206,  206,
2578       206,  208,    0,  208,  208,  208,  208,  208,  208,  208,
2579       210,    0,  210,    0,  210,    0,  210,    0,    0,  210,
2580 
2581       210,  557,    0,  557,  210,  361,  361,  361,  361,  361,
2582       361,  361,    0,  557,  210,    0,  210,  484,    0,  484,
2583         0,  539,  210,  539,  210,  211,  484,  211,  484,  211,
2584       539,  211,  539,    0,  211,  211,    0,    0,  557,  211,
2585       211,  211,  211,  211,  211,  211,  211,    0,    0,  211,
2586         0,  211,    0,    0,    0,    0,    0,  211,    0,  211,
2587       213,    0,  213,  213,  213,  213,  213,  213,  213,  215,
2588       215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
2589       215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
2590       215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
2591 
2592       215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
2593       215,  215,  215,  215,  215,  215,  215,  215,  215,  215,
2594       215,  217,    0,  217,  853,  853,  853,  853,  853,  853,
2595       217,    0,  217,  217,    0,  217,  217,  217,  217,  217,
2596       217,  217,  218,  555,  218,  555,    0,    0,  612,  612,
2597       612,  218,  555,  218,  555,    0,  218,  218,  218,  218,
2598       218,  218,  218,  221,  612,  221,  376,  376,  376,  376,
2599       376,  376,  376,    0,    0,    0,    0,  221,  221,  221,
2600       221,  221,  221,  221,  377,  377,  377,  377,  377,  377,
2601       377,  404,  404,  404,  404,  404,  404,  404,    0,    0,
2602 
2603       221,  222,  602,  222,  602,    0,    0,  677,  677,  677,
2604       222,  602,  222,  602,    0,  222,  222,  222,  222,  222,
2605       222,  222,  226,  677,  226,    0,  226,    0,  226,    0,
2606         0,  226,  226,    0,  226,  226,  428,  428,  428,  428,
2607       428,  428,  428,    0,    0,    0,  226,    0,  226,  619,
2608       621,  619,  621,    0,  226,  226,  226,  227,  619,  227,
2609       619,  227,  621,  227,    0,    0,  227,  227,    0,  227,
2610       227,  439,  439,  439,  439,  439,  439,  439,    0,    0,
2611         0,  227,    0,  227,  666,    0,  666,  621,    0,  227,
2612       227,  227,  228,  666,  228,  666,  228,    0,  228,    0,
2613 
2614         0,  228,  228,    0,  228,  228,  440,  440,  440,  440,
2615       440,  440,  440,    0,    0,    0,  228,    0,  228,  684,
2616       686,  684,  686,    0,  228,  228,  228,  229,  684,  229,
2617       684,  229,  686,  229,    0,    0,  229,  229,    0,  229,
2618       229,  229,  229,  229,  229,  229,  229,  229,  229,    0,
2619         0,  229,    0,  229,  229,  229,    0,  686,    0,  229,
2620       229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
2621       229,  229,  229,  229,  229,  229,  229,  229,  229,  230,
2622         0,  230,  458,  458,  458,  458,  458,  458,  458,    0,
2623         0,  230,    0,  230,  230,  230,  230,  230,  230,  230,
2624 
2625       464,  464,  464,  464,  464,  464,  464,  476,  476,  476,
2626       476,  476,  476,  476,    0,    0,  230,  231,    0,  231,
2627       231,  231,  231,  231,  231,  231,  232,  716,  232,  716,
2628         0,    0,  726,  726,  726,  232,  716,  232,  716,    0,
2629       232,  232,  232,  232,  232,  232,  232,  235,  726,  235,
2630         0,  235,    0,  235,    0,    0,  235,  235,    0,  235,
2631       235,  235,  235,  235,  235,  235,  235,  235,  235,  235,
2632         0,  235,    0,  235,  235,  235,    0,    0,    0,  235,
2633       235,  235,  235,  235,  235,  235,  235,  235,  235,  235,
2634       235,  235,  235,  235,  235,  235,  235,  235,  235,  236,
2635 
2636         0,  236,  236,  236,  236,  236,  236,  236,  236,  238,
2637       238,  238,  238,  238,  238,  238,  238,    0,    0,    0,
2638         0,  238,  500,  500,  500,  500,  500,  500,  500,  238,
2639       238,  238,  238,  238,  245,    0,  245,    0,  245,    0,
2640       245,    0,    0,  245,  245,    0,  245,    0,  245,  245,
2641       245,  245,  245,  245,  245,  245,    0,    0,  245,    0,
2642       245,  245,  245,    0,    0,    0,  245,  245,  245,  245,
2643       245,  245,  245,  245,  245,  245,  245,  245,  245,  245,
2644       245,  245,  245,  245,  245,  245,  246,    0,  246,    0,
2645       246,    0,  246,    0,    0,  246,  246,    0,  246,  246,
2646 
2647       246,  501,  501,  501,  501,  501,  501,  501,    0,    0,
2648       246,    0,  246,  733,  735,  733,  735,    0,  246,  246,
2649       246,  247,  733,  247,  733,  247,  735,  247,    0,    0,
2650       247,  247,    0,  247,  247,  247,  570,  570,  570,  570,
2651       570,  570,  570,    0,    0,  247,    0,  247,  764,    0,
2652       764,  735,    0,  247,  247,  247,  248,  764,  248,  764,
2653       248,    0,  248,    0,    0,  248,  248,    0,  248,  248,
2654       248,  581,  581,  581,  581,  581,  581,  581,    0,    0,
2655       248,    0,  248,  775,  775,  775,    0,    0,  248,  248,
2656       248,  249,  586,  586,  586,  586,  586,  586,  586,  775,
2657 
2658       782,  850,  782,  850,    0,  249,  249,    0,    0,  782,
2659       850,  782,  850,  249,  249,  249,  249,  249,  249,  249,
2660       249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
2661       250,    0,  250,    0,  250,    0,  250,    0,    0,  250,
2662       250,    0,  250,  250,  250,  594,  594,  594,  594,  594,
2663       594,  594,  250,    0,  250,    0,  250,    0,  784,    0,
2664       784,    0,  250,  250,  250,  251,    0,  251,    0,  251,
2665       784,  251,    0,    0,  251,  251,    0,  251,  251,  251,
2666       598,  598,  598,  598,  598,  598,  598,  251,    0,  251,
2667         0,  251,  813,  813,  813,  784,    0,  251,  251,  251,
2668 
2669       252,    0,  252,    0,  252,    0,  252,    0,  813,  252,
2670       252,    0,  252,  252,  252,  252,  252,  252,  252,  252,
2671       252,  252,    0,    0,  252,    0,  252,  252,  252,    0,
2672         0,    0,  252,  252,  252,  252,  252,  252,  252,  252,
2673       252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
2674       252,  252,  253,    0,    0,  253,  253,  253,  253,  253,
2675       253,  253,  253,  256,  256,  256,  256,  256,  256,  256,
2676       256,  259,    0,  259,    0,  259,    0,  259,    0,    0,
2677       259,  259,    0,  259,  259,  259,  620,  620,  620,  620,
2678       620,  620,  620,    0,    0,  259,    0,  259,    0,    0,
2679 
2680         0,    0,    0,  259,  259,  259,  260,    0,  260,    0,
2681       260,    0,  260,    0,    0,  260,  260,    0,  260,  260,
2682       260,  734,  734,  734,  734,  734,  734,  734,  260,    0,
2683       260,    0,  260,    0,    0,    0,    0,    0,  260,  260,
2684       260,  261,  261,  261,  261,  261,  261,  261,  261,  261,
2685       261,  261,  261,  261,  261,  261,  261,  261,  262,  262,
2686       262,  262,  262,  262,  262,  262,  270,    0,  270,    0,
2687       270,    0,  270,    0,    0,  270,  270,    0,  270,  270,
2688       270,  765,  765,  765,  765,  765,  765,  765,    0,    0,
2689       270,    0,  270,    0,    0,    0,    0,    0,  270,  270,
2690 
2691       270,  271,    0,  271,    0,  271,    0,  271,    0,    0,
2692       271,  271,    0,  271,  271,  271,  766,  766,  766,  766,
2693       766,  766,  766,  271,    0,  271,    0,  271,    0,    0,
2694         0,    0,    0,  271,  271,  271,  272,  272,  272,  272,
2695       272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
2696       272,  272,  272,  276,    0,  276,  276,  276,  276,  276,
2697       276,  276,    0,    0,    0,    0,  276,  277,    0,  277,
2698         0,  277,    0,  277,    0,    0,  277,  277,    0,    0,
2699       277,  277,  783,  783,  783,  783,  783,  783,  783,    0,
2700         0,  277,    0,  277,    0,    0,    0,    0,    0,  277,
2701 
2702         0,  277,  278,    0,  278,    0,  278,    0,  278,    0,
2703         0,  278,  278,    0,    0,  278,  278,  278,  278,  278,
2704       278,  278,  278,  278,    0,    0,  278,    0,  278,    0,
2705         0,    0,    0,    0,  278,    0,  278,  280,    0,  280,
2706       280,  280,  280,  280,  280,  280,  281,  281,  281,  281,
2707       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
2708       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
2709       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
2710       281,  281,  281,  281,  281,  281,  281,  281,  281,  281,
2711       281,  281,  281,  281,  281,  281,  281,  281,  282,    0,
2712 
2713       282,  282,  282,  282,  282,  282,  282,  283,    0,  283,
2714       283,  283,  283,  283,  283,  283,    0,    0,    0,    0,
2715       283,  284,    0,  284,  284,  284,  284,  284,  284,  284,
2716         0,    0,    0,    0,  284,  285,    0,  285,    0,  285,
2717         0,  285,    0,    0,  285,  285,    0,  285,  285,  285,
2718       285,  285,  285,  285,  285,  285,  285,    0,    0,  285,
2719         0,  285,  285,  285,    0,    0,    0,  285,  285,  285,
2720       285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
2721       285,  285,  285,  285,  285,  285,  285,  289,    0,  289,
2722       820,  820,  820,  820,  820,  820,  820,    0,    0,    0,
2723 
2724         0,  289,  289,  289,  289,  289,  289,  289,  833,  833,
2725       833,  833,  833,  833,  833,  839,  839,  839,  839,  839,
2726       839,  839,    0,    0,  289,  290,    0,  290,    0,    0,
2727         0,    0,    0,    0,  290,    0,  290,    0,    0,  290,
2728       290,  290,  290,  290,  290,  290,  292,    0,  292,    0,
2729       292,    0,  292,    0,    0,  292,  292,    0,  292,  292,
2730       841,  841,  841,  841,  841,  841,  841,    0,    0,    0,
2731       292,    0,  292,    0,    0,    0,    0,    0,  292,  292,
2732       292,  293,    0,  293,    0,  293,    0,  293,    0,    0,
2733       293,  293,    0,  293,  293,  846,  846,  846,  846,  846,
2734 
2735       846,  846,    0,    0,    0,  293,    0,  293,    0,    0,
2736         0,    0,    0,  293,  293,  293,  294,    0,  294,    0,
2737       294,    0,  294,    0,    0,  294,  294,    0,  294,  294,
2738       847,  847,  847,  847,  847,  847,  847,    0,    0,    0,
2739       294,    0,  294,    0,    0,    0,    0,    0,  294,  294,
2740       294,  295,    0,  295,    0,  295,    0,  295,    0,    0,
2741       295,  295,    0,  295,  295,  295,  295,  295,  295,  295,
2742       295,  295,  295,    0,    0,  295,    0,  295,  295,  295,
2743         0,    0,    0,  295,  295,  295,  295,  295,  295,  295,
2744       295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
2745 
2746       295,  295,  295,  296,    0,  296,  296,  296,  296,  296,
2747       296,  296,  298,    0,  298,  852,  852,  852,  852,  852,
2748       852,  852,    0,    0,  298,    0,  298,  298,  298,  298,
2749       298,  298,  298,  856,  856,  856,  856,  856,  856,  856,
2750       857,  857,  857,  857,  857,  857,  857,    0,    0,  298,
2751       299,    0,  299,    0,    0,    0,    0,    0,    0,  299,
2752         0,  299,    0,    0,  299,  299,  299,  299,  299,  299,
2753       299,  303,    0,  303,    0,  303,    0,  303,    0,    0,
2754       303,  303,    0,  303,  303,  303,  303,  303,  303,  303,
2755       303,  303,  303,  303,    0,  303,    0,  303,  303,  303,
2756 
2757         0,    0,    0,  303,  303,  303,  303,  303,  303,  303,
2758       303,  303,  303,  303,  303,  303,  303,  303,  303,  303,
2759       303,  303,  303,  304,    0,  304,  304,  304,  304,  304,
2760       304,  304,  304,  305,  305,  305,  305,  305,  305,  305,
2761       305,    0,    0,    0,    0,  305,  859,  859,  859,  859,
2762       859,  859,  859,  305,  305,  305,  305,  305,  313,    0,
2763       313,    0,  313,    0,  313,    0,    0,  313,  313,    0,
2764       313,  313,  313,  860,  860,  860,  860,  860,  860,  860,
2765         0,    0,  313,    0,  313,    0,    0,    0,    0,    0,
2766       313,  313,  313,  314,    0,  314,    0,  314,    0,  314,
2767 
2768         0,    0,  314,  314,    0,  314,  314,  314,    0,    0,
2769         0,    0,    0,    0,    0,    0,    0,  314,    0,  314,
2770         0,    0,    0,    0,    0,  314,  314,  314,  315,    0,
2771       315,    0,  315,    0,  315,    0,    0,  315,  315,    0,
2772       315,  315,  315,    0,    0,    0,    0,    0,    0,    0,
2773         0,    0,  315,    0,  315,    0,    0,    0,    0,    0,
2774       315,  315,  315,  316,    0,  316,    0,  316,    0,  316,
2775         0,    0,  316,  316,    0,  316,  316,  316,    0,    0,
2776         0,    0,    0,    0,    0,    0,    0,  316,    0,  316,
2777         0,    0,    0,    0,    0,  316,  316,  316,  317,    0,
2778 
2779         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2780         0,    0,  317,  317,    0,    0,    0,    0,    0,    0,
2781       317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
2782       317,  317,  317,  317,  317,  317,  317,  318,    0,  318,
2783         0,  318,    0,  318,    0,    0,  318,  318,    0,  318,
2784       318,  318,    0,    0,    0,    0,    0,    0,    0,    0,
2785         0,  318,    0,  318,    0,    0,    0,    0,    0,  318,
2786       318,  318,  319,    0,  319,    0,  319,    0,  319,    0,
2787         0,  319,  319,    0,  319,  319,  319,  319,  319,  319,
2788       319,  319,  319,  319,    0,    0,  319,    0,  319,  319,
2789 
2790       319,    0,    0,    0,  319,  319,  319,  319,  319,  319,
2791       319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
2792       319,  319,  319,  319,  320,    0,  320,    0,  320,    0,
2793       320,    0,    0,  320,  320,    0,  320,  320,  320,  320,
2794       320,  320,  320,  320,  320,  320,    0,    0,  320,    0,
2795       320,  320,  320,    0,    0,    0,  320,  320,  320,  320,
2796       320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
2797       320,  320,  320,  320,  320,  320,  324,    0,  324,    0,
2798       324,    0,  324,    0,    0,  324,  324,    0,  324,  324,
2799       324,  324,  324,  324,  324,  324,  324,  324,  324,    0,
2800 
2801       324,    0,  324,  324,  324,    0,    0,    0,  324,  324,
2802       324,  324,  324,  324,  324,  324,  324,  324,  324,  324,
2803       324,  324,  324,  324,  324,  324,  324,  324,  325,  325,
2804       325,  325,  325,  325,  325,  325,  330,    0,  330,    0,
2805       330,    0,  330,    0,    0,  330,  330,    0,  330,  330,
2806       330,  330,  330,  330,  330,  330,  330,  330,    0,    0,
2807       330,    0,  330,  330,  330,    0,    0,    0,  330,  330,
2808       330,  330,  330,  330,  330,  330,  330,  330,  330,  330,
2809       330,  330,  330,  330,  330,  330,  330,  330,  331,    0,
2810       331,    0,  331,    0,  331,    0,    0,  331,  331,    0,
2811 
2812       331,  331,  331,    0,    0,    0,    0,    0,    0,    0,
2813         0,    0,  331,    0,  331,    0,    0,    0,    0,    0,
2814       331,  331,  331,  332,    0,  332,    0,  332,    0,  332,
2815         0,    0,  332,  332,    0,  332,  332,  332,  332,  332,
2816       332,  332,  332,  332,  332,    0,    0,  332,    0,  332,
2817       332,  332,    0,    0,    0,  332,  332,  332,  332,  332,
2818       332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
2819       332,  332,  332,  332,  332,  335,    0,  335,    0,  335,
2820         0,  335,    0,    0,  335,  335,    0,  335,  335,  335,
2821       335,  335,  335,  335,  335,  335,  335,    0,    0,  335,
2822 
2823         0,  335,  335,  335,    0,    0,    0,  335,  335,  335,
2824       335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
2825       335,  335,  335,  335,  335,  335,  335,  337,    0,  337,
2826         0,  337,    0,  337,    0,    0,  337,  337,    0,  337,
2827       337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
2828         0,  337,    0,  337,  337,  337,    0,    0,    0,  337,
2829       337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
2830       337,  337,  337,  337,  337,  337,  337,  337,  337,  338,
2831         0,  338,    0,  338,    0,  338,    0,    0,  338,  338,
2832         0,  338,  338,  338,  338,  338,  338,  338,  338,  338,
2833 
2834       338,    0,    0,  338,    0,  338,  338,  338,    0,    0,
2835         0,  338,  338,  338,  338,  338,  338,  338,  338,  338,
2836       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
2837       338,  340,    0,  340,    0,  340,    0,  340,    0,    0,
2838       340,  340,    0,  340,    0,  340,  340,  340,  340,  340,
2839       340,  340,  340,    0,    0,  340,    0,  340,  340,  340,
2840         0,    0,    0,  340,  340,  340,  340,  340,  340,  340,
2841       340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
2842       340,  340,  340,  343,  343,  343,  343,  343,  343,  343,
2843       343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
2844 
2845       343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
2846       343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
2847       343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
2848       343,  343,  343,  343,  343,  345,    0,  345,    0,    0,
2849         0,    0,    0,    0,    0,    0,    0,    0,    0,  345,
2850       345,  345,  345,  345,  345,  345,    0,    0,    0,    0,
2851         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2852         0,    0,  345,  346,    0,  346,    0,    0,    0,    0,
2853         0,    0,  346,    0,  346,    0,    0,  346,  346,  346,
2854       346,  346,  346,  346,  348,    0,  348,    0,  348,    0,
2855 
2856       348,    0,    0,  348,  348,    0,  348,  348,    0,    0,
2857         0,    0,    0,    0,    0,    0,    0,    0,  348,    0,
2858       348,    0,    0,    0,    0,    0,  348,  348,  348,  349,
2859         0,  349,    0,  349,    0,  349,    0,    0,  349,  349,
2860         0,  349,  349,    0,    0,    0,    0,    0,    0,    0,
2861         0,    0,    0,  349,    0,  349,    0,    0,    0,    0,
2862         0,  349,  349,  349,  350,    0,  350,    0,  350,    0,
2863       350,    0,    0,  350,  350,    0,  350,  350,    0,    0,
2864         0,    0,    0,    0,    0,    0,    0,    0,  350,    0,
2865       350,    0,    0,    0,    0,    0,  350,  350,  350,  351,
2866 
2867         0,  351,    0,  351,    0,  351,    0,    0,  351,  351,
2868         0,  351,  351,  351,  351,  351,  351,  351,  351,  351,
2869       351,    0,    0,  351,    0,  351,  351,  351,    0,    0,
2870         0,  351,  351,  351,  351,  351,  351,  351,  351,  351,
2871       351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
2872       351,  352,    0,  352,  352,  352,  352,  352,  352,  352,
2873       353,    0,  353,  353,  353,  353,  353,  353,  353,  356,
2874         0,  356,    0,    0,    0,    0,    0,    0,    0,    0,
2875         0,  356,    0,  356,  356,  356,  356,  356,  356,  356,
2876         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2877 
2878         0,    0,    0,    0,    0,    0,  356,  357,    0,  357,
2879         0,    0,    0,    0,    0,    0,  357,    0,  357,    0,
2880         0,  357,  357,  357,  357,  357,  357,  357,  360,    0,
2881       360,    0,  360,    0,  360,    0,    0,  360,  360,    0,
2882       360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
2883       360,    0,  360,    0,  360,  360,  360,    0,    0,    0,
2884       360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
2885       360,  360,  360,  360,  360,  360,  360,  360,  360,  360,
2886       362,    0,  362,  362,  362,  362,  362,  362,  362,  362,
2887       370,    0,  370,    0,  370,    0,  370,    0,    0,  370,
2888 
2889       370,    0,  370,  370,  370,    0,    0,    0,    0,    0,
2890         0,    0,    0,    0,  370,    0,  370,    0,    0,    0,
2891         0,    0,  370,  370,  370,  371,    0,  371,    0,  371,
2892         0,  371,    0,    0,  371,  371,    0,  371,  371,  371,
2893         0,    0,    0,    0,    0,    0,    0,    0,    0,  371,
2894         0,  371,    0,    0,    0,    0,    0,  371,  371,  371,
2895       372,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2896         0,    0,    0,    0,  372,  372,    0,    0,    0,    0,
2897         0,    0,  372,  372,  372,  372,  372,  372,  372,  372,
2898       372,  372,  372,  372,  372,  372,  372,  372,  372,  373,
2899 
2900         0,  373,    0,  373,    0,  373,    0,    0,  373,  373,
2901         0,  373,  373,  373,    0,    0,    0,    0,    0,    0,
2902         0,    0,    0,  373,    0,  373,    0,    0,    0,    0,
2903         0,  373,  373,  373,  374,  374,  374,  374,  374,  374,
2904       374,  374,  374,  374,  374,  374,  374,  374,  374,  374,
2905       374,  375,    0,  375,    0,  375,    0,  375,    0,    0,
2906       375,  375,    0,  375,  375,  375,  375,  375,  375,  375,
2907       375,  375,  375,    0,    0,  375,    0,  375,  375,  375,
2908         0,    0,    0,  375,  375,  375,  375,  375,  375,  375,
2909       375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
2910 
2911       375,  375,  375,  380,    0,  380,    0,  380,    0,  380,
2912         0,    0,  380,  380,    0,  380,  380,  380,  380,  380,
2913       380,  380,  380,  380,  380,  380,    0,  380,    0,  380,
2914       380,  380,    0,    0,    0,  380,  380,  380,  380,  380,
2915       380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
2916       380,  380,  380,  380,  380,  381,  381,  381,  381,  381,
2917       381,  381,  381,  388,    0,  388,    0,  388,    0,  388,
2918         0,    0,  388,  388,    0,  388,  388,  388,  388,  388,
2919       388,  388,  388,  388,  388,    0,    0,  388,    0,  388,
2920       388,  388,    0,    0,    0,  388,  388,  388,  388,  388,
2921 
2922       388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
2923       388,  388,  388,  388,  388,  389,  389,  389,  389,  389,
2924       389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
2925       389,  389,  391,    0,    0,    0,    0,    0,    0,    0,
2926         0,  391,    0,    0,    0,    0,    0,    0,    0,    0,
2927         0,    0,    0,    0,  391,  391,  391,  391,  391,  391,
2928       391,  391,  391,  391,  391,  391,  391,  391,  391,  391,
2929       391,  392,    0,  392,    0,  392,    0,  392,    0,    0,
2930       392,  392,    0,  392,  392,  392,    0,    0,    0,    0,
2931         0,    0,    0,  392,    0,  392,    0,  392,    0,    0,
2932 
2933         0,    0,    0,  392,  392,  392,  394,    0,  394,    0,
2934       394,    0,  394,    0,    0,  394,  394,    0,  394,  394,
2935       394,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2936       394,    0,  394,    0,    0,    0,    0,    0,  394,  394,
2937       394,  395,    0,  395,    0,  395,    0,  395,    0,    0,
2938       395,  395,    0,  395,  395,  395,    0,    0,    0,    0,
2939         0,    0,    0,  395,    0,  395,    0,  395,    0,    0,
2940         0,    0,    0,  395,  395,  395,  396,  396,  396,  396,
2941       396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
2942       396,  396,  396,  400,    0,  400,    0,  400,    0,  400,
2943 
2944         0,    0,  400,  400,    0,  400,  400,  400,  400,  400,
2945       400,  400,  400,  400,  400,  400,    0,  400,    0,  400,
2946       400,  400,    0,    0,    0,  400,  400,  400,  400,  400,
2947       400,  400,  400,  400,  400,  400,  400,  400,  400,  400,
2948       400,  400,  400,  400,  400,  401,    0,  401,    0,  401,
2949         0,  401,    0,    0,  401,  401,    0,  401,  401,  401,
2950         0,    0,    0,    0,    0,    0,    0,    0,    0,  401,
2951         0,  401,    0,    0,    0,    0,    0,  401,  401,  401,
2952       402,    0,  402,    0,  402,    0,  402,    0,    0,  402,
2953       402,    0,  402,  402,  402,    0,    0,    0,    0,    0,
2954 
2955         0,    0,  402,    0,  402,    0,  402,    0,    0,    0,
2956         0,    0,  402,  402,  402,  403,  403,  403,  403,  403,
2957       403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
2958       403,  403,  405,    0,  405,    0,  405,    0,  405,    0,
2959         0,  405,  405,    0,  405,  405,  405,  405,  405,  405,
2960       405,  405,  405,  405,    0,    0,  405,    0,  405,  405,
2961       405,    0,    0,    0,  405,  405,  405,  405,  405,  405,
2962       405,  405,  405,  405,  405,  405,  405,  405,  405,  405,
2963       405,  405,  405,  405,  407,    0,  407,  407,  407,  407,
2964       407,  407,  407,  408,  408,  408,  408,  408,  408,  408,
2965 
2966       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
2967       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
2968       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
2969       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
2970       408,  408,  408,  408,  408,  410,    0,  410,    0,    0,
2971         0,    0,    0,    0,    0,    0,    0,    0,    0,  410,
2972       410,  410,  410,  410,  410,  410,    0,    0,    0,    0,
2973         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2974         0,    0,  410,  411,    0,  411,    0,    0,    0,    0,
2975         0,    0,  411,    0,  411,    0,    0,  411,  411,  411,
2976 
2977       411,  411,  411,  411,  413,    0,  413,    0,  413,    0,
2978       413,    0,    0,  413,  413,    0,  413,  413,    0,    0,
2979         0,    0,    0,    0,    0,    0,    0,    0,  413,    0,
2980       413,    0,    0,    0,    0,    0,  413,  413,  413,  414,
2981         0,  414,    0,  414,    0,  414,    0,    0,  414,  414,
2982         0,  414,  414,    0,    0,    0,    0,    0,    0,    0,
2983         0,    0,    0,  414,    0,  414,    0,    0,    0,    0,
2984         0,  414,  414,  414,  415,    0,  415,    0,  415,    0,
2985       415,    0,    0,  415,  415,    0,  415,  415,    0,    0,
2986         0,    0,    0,    0,    0,    0,    0,    0,  415,    0,
2987 
2988       415,    0,    0,    0,    0,    0,  415,  415,  415,  416,
2989         0,  416,    0,  416,    0,  416,    0,    0,  416,  416,
2990         0,  416,  416,  416,  416,  416,  416,  416,  416,  416,
2991       416,    0,    0,  416,    0,  416,  416,  416,    0,    0,
2992         0,  416,  416,  416,  416,  416,  416,  416,  416,  416,
2993       416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
2994       416,  417,  417,  417,  417,  417,  417,  417,  417,  419,
2995         0,  419,  419,  419,  419,  419,  419,  419,  422,    0,
2996       422,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2997       422,    0,  422,  422,  422,  422,  422,  422,  422,    0,
2998 
2999         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3000         0,    0,    0,    0,    0,  422,  423,    0,  423,    0,
3001         0,    0,    0,    0,    0,  423,    0,  423,    0,    0,
3002       423,  423,  423,  423,  423,  423,  423,  426,    0,  426,
3003         0,  426,    0,  426,    0,    0,  426,  426,    0,  426,
3004       426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
3005         0,  426,    0,  426,  426,  426,    0,    0,    0,  426,
3006       426,  426,  426,  426,  426,  426,  426,  426,  426,  426,
3007       426,  426,  426,  426,  426,  426,  426,  426,  426,  427,
3008         0,  427,  427,  427,  427,  427,  427,  427,  427,  433,
3009 
3010         0,  433,    0,  433,    0,  433,    0,    0,  433,  433,
3011         0,  433,  433,  433,    0,    0,    0,    0,    0,    0,
3012         0,    0,    0,  433,    0,  433,    0,    0,    0,    0,
3013         0,  433,  433,  433,  434,    0,  434,    0,  434,    0,
3014       434,    0,    0,  434,  434,    0,  434,  434,  434,    0,
3015         0,    0,    0,    0,    0,    0,    0,    0,  434,    0,
3016       434,    0,    0,    0,    0,    0,  434,  434,  434,  435,
3017         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3018         0,    0,    0,  435,  435,    0,    0,    0,    0,    0,
3019         0,  435,  435,  435,  435,  435,  435,  435,  435,  435,
3020 
3021       435,  435,  435,  435,  435,  435,  435,  435,  436,    0,
3022       436,    0,  436,    0,  436,    0,    0,  436,  436,    0,
3023       436,  436,  436,    0,    0,    0,    0,    0,    0,    0,
3024         0,    0,  436,    0,  436,    0,    0,    0,    0,    0,
3025       436,  436,  436,  437,    0,  437,    0,  437,    0,  437,
3026         0,    0,  437,  437,    0,  437,  437,  437,  437,  437,
3027       437,  437,  437,  437,  437,    0,    0,  437,    0,  437,
3028       437,  437,    0,    0,    0,  437,  437,  437,  437,  437,
3029       437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
3030       437,  437,  437,  437,  437,  438,    0,  438,    0,  438,
3031 
3032         0,  438,    0,    0,  438,  438,    0,  438,  438,  438,
3033       438,  438,  438,  438,  438,  438,  438,    0,    0,  438,
3034         0,  438,  438,  438,    0,    0,    0,  438,  438,  438,
3035       438,  438,  438,  438,  438,  438,  438,  438,  438,  438,
3036       438,  438,  438,  438,  438,  438,  438,  443,    0,  443,
3037         0,  443,    0,  443,    0,    0,  443,  443,    0,  443,
3038       443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
3039         0,  443,    0,  443,  443,  443,    0,    0,    0,  443,
3040       443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
3041       443,  443,  443,  443,  443,  443,  443,  443,  443,  444,
3042 
3043       444,  444,  444,  444,  444,  444,  444,  452,  452,    0,
3044         0,    0,    0,    0,    0,  452,  452,  452,  452,  452,
3045       452,  452,  452,  452,  452,  452,  452,  452,  452,  452,
3046       452,  452,  454,    0,  454,    0,  454,    0,  454,    0,
3047         0,  454,  454,    0,  454,  454,  454,  454,  454,  454,
3048       454,  454,  454,  454,  454,    0,  454,    0,  454,  454,
3049       454,    0,    0,    0,  454,  454,  454,  454,  454,  454,
3050       454,  454,  454,  454,  454,  454,  454,  454,  454,  454,
3051       454,  454,  454,  454,  455,    0,  455,    0,  455,    0,
3052       455,    0,    0,  455,  455,    0,  455,  455,  455,  455,
3053 
3054       455,  455,  455,  455,  455,  455,    0,    0,  455,    0,
3055       455,  455,  455,    0,    0,    0,  455,  455,  455,  455,
3056       455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
3057       455,  455,  455,  455,  455,  455,  457,    0,  457,    0,
3058       457,    0,  457,    0,    0,  457,  457,    0,  457,  457,
3059       457,  457,  457,  457,  457,  457,  457,  457,  457,    0,
3060       457,    0,  457,  457,  457,    0,    0,    0,  457,  457,
3061       457,  457,  457,  457,  457,  457,  457,  457,  457,  457,
3062       457,  457,  457,  457,  457,  457,  457,  457,  461,    0,
3063       461,    0,  461,    0,  461,    0,    0,  461,  461,    0,
3064 
3065       461,  461,  461,  461,  461,  461,  461,  461,  461,  461,
3066       461,    0,  461,    0,  461,  461,  461,    0,    0,    0,
3067       461,  461,  461,  461,  461,  461,  461,  461,  461,  461,
3068       461,  461,  461,  461,  461,  461,  461,  461,  461,  461,
3069       463,    0,  463,    0,  463,    0,  463,    0,    0,  463,
3070       463,    0,  463,  463,  463,  463,  463,  463,  463,  463,
3071       463,  463,  463,    0,  463,    0,  463,  463,  463,    0,
3072         0,    0,  463,  463,  463,  463,  463,  463,  463,  463,
3073       463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
3074       463,  463,  465,    0,  465,  465,  465,  465,  465,  465,
3075 
3076       465,  466,    0,  466,  466,  466,  466,  466,  466,  466,
3077       467,    0,  467,  467,  467,  467,  467,  467,  467,  469,
3078         0,  469,    0,    0,    0,    0,    0,    0,    0,    0,
3079         0,    0,    0,  469,  469,  469,  469,  469,  469,  469,
3080         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3081         0,    0,    0,    0,    0,    0,  469,  470,    0,  470,
3082         0,    0,    0,    0,    0,    0,  470,    0,  470,    0,
3083         0,  470,  470,  470,  470,  470,  470,  470,  472,    0,
3084       472,    0,  472,    0,  472,    0,    0,  472,  472,    0,
3085       472,  472,    0,    0,    0,    0,    0,    0,    0,    0,
3086 
3087         0,    0,  472,    0,  472,    0,    0,    0,    0,    0,
3088       472,  472,  472,  473,    0,  473,    0,  473,    0,  473,
3089         0,    0,  473,  473,    0,  473,  473,    0,    0,    0,
3090         0,    0,    0,    0,    0,    0,    0,  473,    0,  473,
3091         0,    0,    0,    0,    0,  473,  473,  473,  474,    0,
3092       474,    0,  474,    0,  474,    0,    0,  474,  474,    0,
3093       474,  474,    0,    0,    0,    0,    0,    0,    0,    0,
3094         0,    0,  474,    0,  474,    0,    0,    0,    0,    0,
3095       474,  474,  474,  475,    0,  475,    0,  475,    0,  475,
3096         0,    0,  475,  475,    0,  475,  475,  475,    0,    0,
3097 
3098         0,    0,    0,    0,    0,    0,    0,  475,    0,  475,
3099         0,    0,    0,    0,    0,  475,  475,  475,  477,    0,
3100       477,    0,  477,    0,  477,    0,    0,  477,  477,    0,
3101       477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
3102         0,    0,  477,    0,  477,  477,  477,    0,    0,    0,
3103       477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
3104       477,  477,  477,  477,  477,  477,  477,  477,  477,  477,
3105       478,    0,  478,    0,  478,    0,  478,    0,    0,  478,
3106       478,    0,  478,  478,  478,    0,    0,    0,    0,    0,
3107         0,    0,    0,    0,  478,    0,  478,    0,    0,    0,
3108 
3109         0,    0,  478,  478,  478,  480,    0,  480,  480,  480,
3110       480,  480,  480,  480,  482,    0,  482,    0,    0,    0,
3111         0,    0,    0,    0,    0,    0,  482,    0,  482,  482,
3112       482,  482,  482,  482,  482,    0,    0,    0,    0,    0,
3113         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3114         0,  482,  483,    0,  483,    0,    0,    0,    0,    0,
3115         0,  483,    0,  483,    0,    0,  483,  483,  483,  483,
3116       483,  483,  483,  486,  486,  486,  486,  486,    0,  486,
3117         0,    0,  486,  486,    0,  486,  486,  486,  486,  486,
3118       486,  486,  486,  486,  486,  486,    0,  486,    0,  486,
3119 
3120       486,  486,    0,    0,    0,  486,  486,  486,  486,  486,
3121       486,  486,  486,  486,  486,  486,  486,  486,  486,  486,
3122       486,  486,  486,  486,  486,  487,    0,  487,    0,    0,
3123         0,    0,    0,    0,    0,    0,    0,  487,    0,  487,
3124       487,  487,  487,  487,  487,  487,  487,  494,    0,  494,
3125         0,  494,    0,  494,    0,    0,  494,  494,    0,  494,
3126       494,  494,    0,    0,    0,    0,    0,    0,    0,    0,
3127         0,  494,    0,  494,    0,    0,    0,    0,    0,  494,
3128       494,  494,  495,    0,  495,    0,  495,    0,  495,    0,
3129         0,  495,  495,    0,  495,  495,  495,    0,    0,    0,
3130 
3131         0,    0,    0,    0,    0,    0,  495,    0,  495,    0,
3132         0,    0,    0,    0,  495,  495,  495,  496,    0,    0,
3133         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3134         0,  496,  496,    0,    0,    0,    0,    0,    0,  496,
3135       496,  496,  496,  496,  496,  496,  496,  496,  496,  496,
3136       496,  496,  496,  496,  496,  496,  497,    0,  497,    0,
3137       497,    0,  497,    0,    0,  497,  497,    0,  497,  497,
3138       497,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3139       497,    0,  497,    0,    0,    0,    0,    0,  497,  497,
3140       497,  498,  498,  498,  498,  498,  498,  498,  498,  498,
3141 
3142       498,  498,  498,  498,  498,  498,  498,  498,  499,    0,
3143       499,    0,  499,    0,  499,    0,    0,  499,  499,    0,
3144       499,  499,  499,    0,    0,    0,    0,    0,    0,    0,
3145         0,    0,  499,    0,  499,    0,    0,    0,    0,    0,
3146       499,  499,  499,  505,    0,  505,    0,  505,    0,  505,
3147         0,    0,  505,  505,    0,  505,  505,  505,  505,  505,
3148       505,  505,  505,  505,  505,  505,    0,  505,    0,  505,
3149       505,  505,    0,    0,    0,  505,  505,  505,  505,  505,
3150       505,  505,  505,  505,  505,  505,  505,  505,  505,  505,
3151       505,  505,  505,  505,  505,  506,  506,  506,  506,  506,
3152 
3153       506,  506,  506,  515,  515,    0,    0,    0,    0,    0,
3154         0,  515,  515,  515,  515,  515,  515,  515,  515,  515,
3155       515,  515,  515,  515,  515,  515,  515,  515,  519,    0,
3156       519,    0,  519,    0,  519,    0,    0,  519,  519,    0,
3157       519,  519,  519,  519,  519,  519,  519,  519,  519,  519,
3158       519,    0,  519,    0,  519,  519,  519,    0,    0,    0,
3159       519,  519,  519,  519,  519,  519,  519,  519,  519,  519,
3160       519,  519,  519,  519,  519,  519,  519,  519,  519,  519,
3161       520,    0,  520,    0,  520,    0,  520,    0,    0,  520,
3162       520,    0,  520,  520,  520,  520,  520,  520,  520,  520,
3163 
3164       520,  520,    0,    0,  520,    0,  520,  520,  520,    0,
3165         0,    0,  520,  520,  520,  520,  520,  520,  520,  520,
3166       520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
3167       520,  520,  523,    0,  523,    0,  523,    0,  523,    0,
3168         0,  523,  523,    0,  523,  523,  523,  523,  523,  523,
3169       523,  523,  523,  523,  523,    0,  523,    0,  523,  523,
3170       523,    0,    0,    0,  523,  523,  523,  523,  523,  523,
3171       523,  523,  523,  523,  523,  523,  523,  523,  523,  523,
3172       523,  523,  523,  523,  527,    0,  527,    0,  527,    0,
3173       527,    0,    0,  527,  527,    0,  527,  527,  527,  527,
3174 
3175       527,  527,  527,  527,  527,  527,  527,    0,  527,    0,
3176       527,  527,  527,    0,    0,    0,  527,  527,  527,  527,
3177       527,  527,  527,  527,  527,  527,  527,  527,  527,  527,
3178       527,  527,  527,  527,  527,  527,  531,    0,  531,    0,
3179       531,    0,  531,    0,    0,  531,  531,    0,  531,  531,
3180       531,  531,  531,  531,  531,  531,  531,  531,  531,    0,
3181       531,    0,  531,  531,  531,    0,    0,    0,  531,  531,
3182       531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
3183       531,  531,  531,  531,  531,  531,  531,  531,  533,    0,
3184       533,    0,  533,    0,  533,    0,    0,  533,  533,    0,
3185 
3186       533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
3187         0,    0,  533,    0,  533,  533,  533,    0,    0,    0,
3188       533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
3189       533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
3190       534,    0,  534,  534,  534,  534,  534,  534,  534,  535,
3191       535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
3192       535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
3193       535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
3194       535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
3195       535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
3196 
3197       535,  537,    0,  537,    0,    0,    0,    0,    0,    0,
3198         0,    0,    0,    0,    0,  537,  537,  537,  537,  537,
3199       537,  537,    0,    0,    0,    0,    0,    0,    0,    0,
3200         0,    0,    0,    0,    0,    0,    0,    0,  537,  538,
3201         0,  538,    0,    0,    0,    0,    0,    0,  538,    0,
3202       538,    0,    0,  538,  538,  538,  538,  538,  538,  538,
3203       540,    0,  540,    0,  540,    0,  540,    0,    0,  540,
3204       540,    0,  540,  540,    0,    0,    0,    0,    0,    0,
3205         0,    0,    0,    0,  540,    0,  540,    0,    0,    0,
3206         0,    0,  540,  540,  540,  541,    0,  541,    0,  541,
3207 
3208         0,  541,    0,    0,  541,  541,    0,  541,  541,    0,
3209         0,    0,    0,    0,    0,    0,    0,    0,    0,  541,
3210         0,  541,    0,    0,    0,    0,    0,  541,  541,  541,
3211       542,    0,  542,    0,  542,    0,  542,    0,    0,  542,
3212       542,    0,  542,  542,    0,    0,    0,    0,    0,    0,
3213         0,    0,    0,    0,  542,    0,  542,    0,    0,    0,
3214         0,    0,  542,  542,  542,  543,    0,  543,    0,  543,
3215         0,  543,    0,    0,  543,  543,    0,  543,  543,  543,
3216         0,    0,    0,    0,    0,    0,    0,    0,    0,  543,
3217         0,  543,    0,    0,    0,    0,    0,  543,  543,  543,
3218 
3219       545,    0,  545,  545,  545,  545,  545,  545,  545,    0,
3220         0,    0,    0,    0,    0,    0,    0,    0,    0,  545,
3221       547,    0,  547,    0,  547,    0,  547,    0,    0,  547,
3222       547,    0,  547,  547,  547,    0,    0,    0,    0,    0,
3223         0,    0,    0,    0,  547,    0,  547,    0,    0,    0,
3224         0,    0,  547,  547,  547,  549,  549,  549,  549,  549,
3225       549,  549,  549,  549,  551,    0,  551,  551,  551,  551,
3226       551,  551,  551,  553,    0,  553,    0,    0,    0,    0,
3227         0,    0,    0,    0,    0,  553,    0,  553,  553,  553,
3228       553,  553,  553,  553,    0,    0,    0,    0,    0,    0,
3229 
3230         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3231       553,  554,    0,  554,    0,    0,    0,    0,    0,    0,
3232       554,    0,  554,  554,    0,  554,  554,  554,  554,  554,
3233       554,  554,  558,    0,  558,    0,  558,    0,  558,    0,
3234         0,  558,  558,    0,  558,  558,  558,  558,  558,  558,
3235       558,  558,  558,  558,  558,    0,  558,    0,  558,  558,
3236       558,    0,    0,    0,  558,  558,  558,  558,  558,  558,
3237       558,  558,  558,  558,  558,  558,  558,  558,  558,  558,
3238       558,  558,  558,  558,  559,    0,  559,  559,  559,  559,
3239       559,  559,  559,  559,  564,    0,  564,    0,  564,    0,
3240 
3241       564,    0,    0,  564,  564,    0,  564,  564,  564,    0,
3242         0,    0,    0,    0,    0,    0,    0,    0,  564,    0,
3243       564,    0,    0,    0,    0,    0,  564,  564,  564,  565,
3244         0,  565,    0,  565,    0,  565,    0,    0,  565,  565,
3245         0,  565,  565,  565,    0,    0,    0,    0,    0,    0,
3246         0,    0,    0,  565,    0,  565,    0,    0,    0,    0,
3247         0,  565,  565,  565,  566,  566,    0,    0,    0,    0,
3248         0,    0,  566,  566,  566,  566,  566,  566,  566,  566,
3249       566,  566,  566,  566,  566,  566,  566,  566,  566,  567,
3250         0,  567,    0,  567,    0,  567,    0,    0,  567,  567,
3251 
3252         0,  567,  567,  567,    0,    0,    0,    0,    0,    0,
3253         0,    0,    0,  567,    0,  567,    0,    0,    0,    0,
3254         0,  567,  567,  567,  568,  568,  568,  568,  568,  568,
3255       568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
3256       568,  569,    0,  569,    0,  569,    0,  569,    0,    0,
3257       569,  569,    0,  569,  569,  569,    0,    0,    0,    0,
3258         0,    0,    0,    0,    0,  569,    0,  569,    0,    0,
3259         0,    0,    0,  569,  569,  569,  574,    0,  574,    0,
3260       574,    0,  574,    0,    0,  574,  574,    0,  574,  574,
3261       574,  574,  574,  574,  574,  574,  574,  574,  574,    0,
3262 
3263       574,    0,  574,  574,  574,    0,    0,    0,  574,  574,
3264       574,  574,  574,  574,  574,  574,  574,  574,  574,  574,
3265       574,  574,  574,  574,  574,  574,  574,  574,  575,    0,
3266         0,  575,  575,  575,  575,  575,  575,  575,  575,  580,
3267       580,    0,    0,    0,    0,    0,    0,  580,  580,  580,
3268       580,  580,  580,  580,  580,  580,  580,  580,  580,  580,
3269       580,  580,  580,  580,  584,    0,  584,    0,  584,    0,
3270       584,    0,    0,  584,  584,    0,  584,  584,  584,  584,
3271       584,  584,  584,  584,  584,  584,  584,    0,  584,    0,
3272       584,  584,  584,    0,    0,    0,  584,  584,  584,  584,
3273 
3274       584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
3275       584,  584,  584,  584,  584,  584,  585,    0,  585,    0,
3276       585,    0,  585,    0,    0,  585,  585,    0,  585,  585,
3277       585,  585,  585,  585,  585,  585,  585,  585,    0,    0,
3278       585,    0,  585,  585,  585,    0,    0,    0,  585,  585,
3279       585,  585,  585,  585,  585,  585,  585,  585,  585,  585,
3280       585,  585,  585,  585,  585,  585,  585,  585,  589,    0,
3281       589,    0,  589,    0,  589,    0,    0,  589,  589,    0,
3282       589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
3283       589,    0,  589,    0,  589,  589,  589,    0,    0,    0,
3284 
3285       589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
3286       589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
3287       593,    0,  593,    0,  593,    0,  593,    0,    0,  593,
3288       593,    0,  593,  593,  593,  593,  593,  593,  593,  593,
3289       593,  593,  593,    0,  593,    0,  593,  593,  593,    0,
3290         0,    0,  593,  593,  593,  593,  593,  593,  593,  593,
3291       593,  593,  593,  593,  593,  593,  593,  593,  593,  593,
3292       593,  593,  597,    0,  597,    0,  597,    0,  597,    0,
3293         0,  597,  597,    0,  597,  597,  597,  597,  597,  597,
3294       597,  597,  597,  597,  597,    0,  597,    0,  597,  597,
3295 
3296       597,    0,    0,    0,  597,  597,  597,  597,  597,  597,
3297       597,  597,  597,  597,  597,  597,  597,  597,  597,  597,
3298       597,  597,  597,  597,  600,    0,  600,    0,    0,    0,
3299         0,    0,    0,    0,    0,    0,    0,    0,  600,  600,
3300       600,  600,  600,  600,  600,    0,    0,    0,    0,    0,
3301         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3302         0,  600,  601,    0,  601,    0,    0,    0,    0,    0,
3303         0,  601,    0,  601,    0,    0,  601,  601,  601,  601,
3304       601,  601,  601,  603,    0,  603,    0,  603,    0,  603,
3305         0,    0,  603,  603,    0,  603,  603,    0,    0,    0,
3306 
3307         0,    0,    0,    0,    0,    0,    0,  603,    0,  603,
3308         0,    0,    0,    0,    0,  603,  603,  603,  604,    0,
3309       604,    0,  604,    0,  604,    0,    0,  604,  604,    0,
3310       604,  604,    0,    0,    0,    0,    0,    0,    0,    0,
3311         0,    0,  604,    0,  604,    0,    0,    0,    0,    0,
3312       604,  604,  604,  605,    0,  605,    0,  605,    0,  605,
3313         0,    0,  605,  605,    0,  605,  605,    0,    0,    0,
3314         0,    0,    0,    0,    0,    0,    0,  605,    0,  605,
3315         0,    0,    0,    0,    0,  605,  605,  605,  606,    0,
3316       606,    0,  606,    0,  606,    0,    0,  606,  606,    0,
3317 
3318       606,  606,  606,    0,    0,    0,    0,    0,    0,    0,
3319         0,    0,  606,    0,  606,    0,    0,    0,    0,    0,
3320       606,  606,  606,  607,    0,  607,    0,  607,    0,  607,
3321         0,    0,  607,  607,    0,  607,  607,  607,    0,    0,
3322         0,    0,    0,    0,    0,    0,    0,  607,    0,  607,
3323         0,    0,    0,    0,    0,  607,  607,  607,  608,    0,
3324       608,  608,    0,  608,  608,  608,  608,  608,  608,  608,
3325         0,    0,    0,    0,  608,  610,  610,  610,  610,  610,
3326       610,  610,    0,    0,    0,    0,    0,    0,    0,    0,
3327         0,    0,  610,  613,  613,  613,  613,  613,  613,  613,
3328 
3329       613,  615,    0,  615,  615,  615,  615,  615,  615,  615,
3330       617,    0,  617,    0,    0,    0,    0,    0,    0,    0,
3331         0,    0,  617,    0,  617,  617,  617,  617,  617,  617,
3332       617,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3333         0,    0,    0,    0,    0,    0,    0,  617,  618,    0,
3334       618,    0,    0,    0,    0,    0,    0,  618,    0,  618,
3335         0,    0,  618,  618,  618,  618,  618,  618,  618,  622,
3336         0,  622,    0,  622,    0,  622,    0,    0,  622,  622,
3337         0,  622,  622,  622,  622,  622,  622,  622,  622,  622,
3338       622,  622,    0,  622,    0,  622,  622,  622,    0,    0,
3339 
3340         0,  622,  622,  622,  622,  622,  622,  622,  622,  622,
3341       622,  622,  622,  622,  622,  622,  622,  622,  622,  622,
3342       622,  623,    0,  623,  623,  623,  623,  623,  623,  623,
3343       623,  630,    0,  630,    0,  630,    0,  630,    0,    0,
3344       630,  630,    0,  630,  630,  630,    0,    0,    0,    0,
3345         0,    0,    0,    0,    0,  630,    0,  630,    0,    0,
3346         0,    0,    0,  630,  630,  630,  631,    0,  631,    0,
3347       631,    0,  631,    0,    0,  631,  631,    0,  631,  631,
3348       631,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3349       631,    0,  631,    0,    0,    0,    0,    0,  631,  631,
3350 
3351       631,  632,    0,    0,    0,    0,    0,    0,    0,    0,
3352         0,    0,    0,    0,    0,  632,  632,    0,    0,    0,
3353         0,    0,    0,  632,  632,  632,  632,  632,  632,  632,
3354       632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
3355       633,    0,  633,    0,  633,    0,  633,    0,    0,  633,
3356       633,    0,  633,  633,  633,    0,    0,    0,    0,    0,
3357         0,    0,    0,    0,  633,    0,  633,    0,    0,    0,
3358         0,    0,  633,  633,  633,  634,  634,  634,  634,  634,
3359       634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
3360       634,  634,  635,    0,  635,    0,  635,    0,  635,    0,
3361 
3362         0,  635,  635,    0,  635,  635,  635,    0,    0,    0,
3363         0,    0,    0,    0,    0,    0,  635,    0,  635,    0,
3364         0,    0,    0,    0,  635,  635,  635,  637,    0,  637,
3365         0,  637,    0,  637,    0,    0,  637,  637,    0,  637,
3366       637,  637,  637,  637,  637,  637,  637,  637,  637,  637,
3367         0,  637,    0,  637,  637,  637,    0,    0,    0,  637,
3368       637,  637,  637,  637,  637,  637,  637,  637,  637,  637,
3369       637,  637,  637,  637,  637,  637,  637,  637,  637,  638,
3370         0,    0,  638,  638,  638,  638,  638,  638,  638,  638,
3371       646,  646,  646,  646,  646,  646,  646,    0,    0,    0,
3372 
3373         0,    0,  646,    0,    0,    0,    0,    0,    0,    0,
3374       646,  646,  646,  646,  646,  650,    0,  650,    0,  650,
3375         0,  650,    0,    0,  650,  650,    0,  650,  650,  650,
3376       650,  650,  650,  650,  650,  650,  650,  650,    0,  650,
3377         0,  650,  650,  650,    0,    0,    0,  650,  650,  650,
3378       650,  650,  650,  650,  650,  650,  650,  650,  650,  650,
3379       650,  650,  650,  650,  650,  650,  650,  651,  651,  651,
3380       651,  651,  651,  651,    0,    0,    0,    0,    0,  651,
3381         0,    0,    0,    0,    0,    0,    0,  651,  651,  651,
3382       651,  651,  655,    0,  655,    0,  655,    0,  655,    0,
3383 
3384         0,  655,  655,    0,  655,  655,  655,  655,  655,  655,
3385       655,  655,  655,  655,  655,    0,  655,    0,  655,  655,
3386       655,    0,    0,    0,  655,  655,  655,  655,  655,  655,
3387       655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
3388       655,  655,  655,  655,  657,    0,  657,    0,  657,    0,
3389       657,    0,    0,  657,  657,    0,  657,  657,  657,  657,
3390       657,  657,  657,  657,  657,  657,  657,    0,  657,    0,
3391       657,  657,  657,    0,    0,    0,  657,  657,  657,  657,
3392       657,  657,  657,  657,  657,  657,  657,  657,  657,  657,
3393       657,  657,  657,  657,  657,  657,  661,    0,  661,    0,
3394 
3395       661,    0,  661,    0,    0,  661,  661,    0,  661,  661,
3396       661,  661,  661,  661,  661,  661,  661,  661,  661,    0,
3397       661,    0,  661,  661,  661,    0,    0,    0,  661,  661,
3398       661,  661,  661,  661,  661,  661,  661,  661,  661,  661,
3399       661,  661,  661,  661,  661,  661,  661,  661,  662,    0,
3400       662,  662,  662,  662,  662,  662,  662,  664,    0,  664,
3401         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3402         0,  664,  664,  664,  664,  664,  664,  664,    0,    0,
3403         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3404         0,    0,    0,    0,  664,  665,    0,  665,    0,    0,
3405 
3406         0,    0,    0,    0,  665,    0,  665,    0,    0,  665,
3407       665,  665,  665,  665,  665,  665,  667,    0,  667,    0,
3408       667,    0,  667,    0,    0,  667,  667,    0,  667,  667,
3409         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3410       667,    0,  667,    0,    0,    0,    0,    0,  667,  667,
3411       667,  668,    0,  668,    0,  668,    0,  668,    0,    0,
3412       668,  668,    0,  668,  668,    0,    0,    0,    0,    0,
3413         0,    0,    0,    0,    0,  668,    0,  668,    0,    0,
3414         0,    0,    0,  668,  668,  668,  669,    0,  669,    0,
3415       669,    0,  669,    0,    0,  669,  669,    0,  669,  669,
3416 
3417         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3418       669,    0,  669,    0,    0,    0,    0,    0,  669,  669,
3419       669,  670,    0,  670,    0,  670,    0,  670,    0,    0,
3420       670,  670,    0,  670,  670,  670,    0,    0,    0,    0,
3421         0,    0,    0,    0,    0,  670,    0,  670,    0,    0,
3422         0,    0,    0,  670,  670,  670,  671,    0,  671,    0,
3423       671,    0,  671,    0,    0,  671,  671,    0,  671,  671,
3424       671,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3425       671,    0,  671,    0,    0,    0,    0,    0,  671,  671,
3426       671,  673,  673,    0,  673,  673,  673,  673,  673,  673,
3427 
3428       673,    0,    0,    0,    0,  673,  675,    0,  675,  675,
3429       675,  675,  675,  675,  675,    0,    0,    0,    0,    0,
3430         0,    0,    0,    0,    0,  675,  678,  678,  678,  678,
3431       678,  678,  678,  678,  678,  680,    0,  680,  680,  680,
3432       680,  680,  680,  680,  682,    0,  682,    0,    0,    0,
3433         0,    0,    0,    0,    0,    0,  682,    0,  682,  682,
3434       682,  682,  682,  682,  682,    0,    0,    0,    0,    0,
3435         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3436         0,  682,  683,    0,  683,    0,    0,    0,    0,    0,
3437         0,  683,    0,  683,  683,    0,  683,  683,  683,  683,
3438 
3439       683,  683,  683,  687,    0,  687,    0,  687,    0,  687,
3440         0,    0,  687,  687,    0,  687,  687,  687,  687,  687,
3441       687,  687,  687,  687,  687,  687,    0,  687,    0,  687,
3442       687,  687,    0,    0,    0,  687,  687,  687,  687,  687,
3443       687,  687,  687,  687,  687,  687,  687,  687,  687,  687,
3444       687,  687,  687,  687,  687,  688,    0,  688,  688,  688,
3445       688,  688,  688,  688,  688,  693,    0,  693,    0,  693,
3446         0,  693,    0,    0,  693,  693,    0,  693,  693,  693,
3447         0,    0,    0,    0,    0,    0,    0,    0,    0,  693,
3448         0,  693,    0,    0,    0,    0,    0,  693,  693,  693,
3449 
3450       694,    0,  694,    0,  694,    0,  694,    0,    0,  694,
3451       694,    0,  694,  694,  694,    0,    0,    0,    0,    0,
3452         0,    0,    0,    0,  694,    0,  694,    0,    0,    0,
3453         0,    0,  694,  694,  694,  695,  695,    0,    0,    0,
3454         0,    0,    0,  695,  695,  695,  695,  695,  695,  695,
3455       695,  695,  695,  695,  695,  695,  695,  695,  695,  695,
3456       696,    0,  696,    0,  696,    0,  696,    0,    0,  696,
3457       696,    0,  696,  696,  696,    0,    0,    0,    0,    0,
3458         0,    0,    0,    0,  696,    0,  696,    0,    0,    0,
3459         0,    0,  696,  696,  696,  697,  697,  697,  697,  697,
3460 
3461       697,  697,  697,  697,  697,  697,  697,  697,  697,  697,
3462       697,  697,  699,    0,  699,    0,  699,    0,  699,    0,
3463         0,  699,  699,    0,  699,  699,  699,  699,  699,  699,
3464       699,  699,  699,  699,  699,    0,  699,    0,  699,  699,
3465       699,    0,    0,    0,  699,  699,  699,  699,  699,  699,
3466       699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
3467       699,  699,  699,  699,  700,    0,  700,    0,  700,    0,
3468       700,    0,    0,  700,  700,    0,  700,  700,  700,  700,
3469       700,  700,  700,  700,  700,  700,  700,    0,  700,    0,
3470       700,  700,  700,    0,    0,    0,  700,  700,  700,  700,
3471 
3472       700,  700,  700,  700,  700,  700,  700,  700,  700,  700,
3473       700,  700,  700,  700,  700,  700,  703,  703,  703,  703,
3474       703,  703,  703,  703,  703,  703,  703,  703,  703,  703,
3475       703,  703,  703,  704,  704,  704,  704,  704,  704,  704,
3476         0,    0,    0,    0,    0,  704,    0,    0,    0,    0,
3477         0,    0,    0,  704,  704,  704,  704,  704,  707,  707,
3478       707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
3479       707,  707,  707,  707,  707,  709,  709,  709,  709,  709,
3480       709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
3481       709,  709,  712,  712,  712,  712,  712,  712,  712,  712,
3482 
3483       712,  712,  712,  712,  712,  712,  712,  712,  712,  714,
3484         0,  714,    0,    0,    0,    0,    0,    0,    0,    0,
3485         0,    0,    0,  714,  714,  714,  714,  714,  714,  714,
3486         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3487         0,    0,    0,    0,    0,    0,  714,  715,    0,  715,
3488         0,    0,    0,    0,    0,    0,  715,    0,  715,    0,
3489         0,  715,  715,  715,  715,  715,  715,  715,  717,    0,
3490       717,    0,  717,    0,  717,    0,    0,  717,  717,    0,
3491       717,  717,    0,    0,    0,    0,    0,    0,    0,    0,
3492         0,    0,  717,    0,  717,    0,    0,    0,    0,    0,
3493 
3494       717,  717,  717,  718,    0,  718,    0,  718,    0,  718,
3495         0,    0,  718,  718,    0,  718,  718,    0,    0,    0,
3496         0,    0,    0,    0,    0,    0,    0,  718,    0,  718,
3497         0,    0,    0,    0,    0,  718,  718,  718,  719,    0,
3498       719,    0,  719,    0,  719,    0,    0,  719,  719,    0,
3499       719,  719,    0,    0,    0,    0,    0,    0,    0,    0,
3500         0,    0,  719,    0,  719,    0,    0,    0,    0,    0,
3501       719,  719,  719,  720,    0,  720,    0,  720,    0,  720,
3502         0,    0,  720,  720,    0,  720,  720,  720,    0,    0,
3503         0,    0,    0,    0,    0,    0,    0,  720,    0,  720,
3504 
3505         0,    0,    0,    0,    0,  720,  720,  720,  721,    0,
3506       721,    0,  721,    0,  721,    0,    0,  721,  721,    0,
3507       721,  721,  721,    0,    0,    0,    0,    0,    0,    0,
3508         0,    0,  721,    0,  721,    0,    0,    0,    0,    0,
3509       721,  721,  721,  722,    0,  722,  722,  722,  722,  722,
3510       722,  722,    0,    0,    0,    0,  722,  724,  724,  724,
3511       724,  724,  724,  724,    0,    0,    0,    0,    0,    0,
3512         0,    0,    0,    0,  724,  727,  727,  727,  727,  727,
3513       727,  727,  727,  729,    0,  729,  729,  729,  729,  729,
3514       729,  729,  731,    0,  731,    0,    0,    0,    0,    0,
3515 
3516         0,    0,    0,    0,  731,    0,  731,  731,  731,  731,
3517       731,  731,  731,    0,    0,    0,    0,    0,    0,    0,
3518         0,    0,    0,    0,    0,    0,    0,    0,    0,  731,
3519       732,    0,  732,    0,    0,    0,    0,    0,    0,  732,
3520         0,  732,    0,    0,  732,  732,  732,  732,  732,  732,
3521       732,  736,    0,  736,    0,  736,    0,  736,    0,    0,
3522       736,  736,    0,  736,  736,  736,  736,  736,  736,  736,
3523       736,  736,  736,  736,    0,  736,    0,  736,  736,  736,
3524         0,    0,    0,  736,  736,  736,  736,  736,  736,  736,
3525       736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
3526 
3527       736,  736,  736,  737,    0,  737,  737,  737,  737,  737,
3528       737,  737,  737,  744,    0,  744,    0,  744,    0,  744,
3529         0,    0,  744,  744,    0,  744,  744,  744,    0,    0,
3530         0,    0,    0,    0,    0,    0,    0,  744,    0,  744,
3531         0,    0,    0,    0,    0,  744,  744,  744,  745,    0,
3532       745,    0,  745,    0,  745,    0,    0,  745,  745,    0,
3533       745,  745,  745,    0,    0,    0,    0,    0,    0,    0,
3534         0,    0,  745,    0,  745,    0,    0,    0,    0,    0,
3535       745,  745,  745,  746,    0,    0,    0,    0,    0,    0,
3536         0,    0,    0,    0,    0,    0,    0,  746,  746,    0,
3537 
3538         0,    0,    0,    0,    0,  746,  746,  746,  746,  746,
3539       746,  746,  746,  746,  746,  746,  746,  746,  746,  746,
3540       746,  746,  747,    0,  747,    0,  747,    0,  747,    0,
3541         0,  747,  747,    0,  747,  747,  747,    0,    0,    0,
3542         0,    0,    0,    0,    0,    0,  747,    0,  747,    0,
3543         0,    0,    0,    0,  747,  747,  747,  749,  749,  749,
3544       749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
3545       749,  749,  749,  749,  750,    0,  750,    0,  750,    0,
3546       750,    0,    0,  750,  750,    0,  750,  750,  750,  750,
3547       750,  750,  750,  750,  750,  750,  750,    0,  750,    0,
3548 
3549       750,  750,  750,    0,    0,    0,  750,  750,  750,  750,
3550       750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
3551       750,  750,  750,  750,  750,  750,  753,  753,  753,  753,
3552       753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
3553       753,  753,  753,  754,  754,  754,  754,  754,  754,  754,
3554         0,    0,    0,    0,    0,  754,    0,    0,    0,    0,
3555         0,    0,    0,  754,  754,  754,  754,  754,  757,  757,
3556       757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
3557       757,  757,  757,  757,  757,  758,  758,  758,  758,  758,
3558       758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
3559 
3560       758,  758,  761,  761,  761,  761,  761,  761,  761,  761,
3561       761,  761,  761,  761,  761,  761,  761,  761,  761,  767,
3562         0,  767,  767,  767,  767,  767,  767,  767,  769,    0,
3563       769,    0,  769,    0,  769,    0,    0,  769,  769,    0,
3564         0,  769,  769,    0,    0,    0,    0,    0,    0,    0,
3565         0,    0,  769,    0,  769,    0,    0,    0,    0,    0,
3566       769,    0,  769,  770,    0,  770,    0,  770,    0,  770,
3567         0,    0,  770,  770,    0,    0,  770,  770,    0,    0,
3568         0,    0,    0,    0,    0,    0,    0,  770,    0,  770,
3569         0,    0,    0,    0,    0,  770,    0,  770,  773,  773,
3570 
3571       773,  773,  773,  773,  773,    0,    0,    0,    0,    0,
3572         0,    0,    0,    0,    0,  773,  776,  776,  776,  776,
3573       776,  776,  776,  776,  776,  778,    0,  778,  778,  778,
3574       778,  778,  778,  778,  780,    0,  780,    0,    0,    0,
3575         0,    0,    0,    0,    0,    0,  780,    0,  780,  780,
3576       780,  780,  780,  780,  780,    0,    0,    0,    0,    0,
3577         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3578         0,  780,  781,    0,  781,    0,    0,    0,    0,    0,
3579         0,  781,    0,  781,  781,    0,  781,  781,  781,  781,
3580       781,  781,  781,  785,    0,  785,    0,  785,    0,  785,
3581 
3582         0,    0,  785,  785,    0,  785,  785,  785,  785,  785,
3583       785,  785,  785,  785,  785,  785,    0,  785,    0,  785,
3584       785,  785,    0,    0,    0,  785,  785,  785,  785,  785,
3585       785,  785,  785,  785,  785,  785,  785,  785,  785,  785,
3586       785,  785,  785,  785,  785,  786,    0,  786,  786,  786,
3587       786,  786,  786,  786,  786,  791,    0,  791,    0,  791,
3588         0,  791,    0,    0,  791,  791,    0,  791,  791,  791,
3589         0,    0,    0,    0,    0,    0,    0,    0,    0,  791,
3590         0,  791,    0,    0,    0,    0,    0,  791,  791,  791,
3591       792,    0,  792,    0,  792,    0,  792,    0,    0,  792,
3592 
3593       792,    0,  792,  792,  792,    0,    0,    0,    0,    0,
3594         0,    0,    0,    0,  792,    0,  792,    0,    0,    0,
3595         0,    0,  792,  792,  792,  793,  793,    0,    0,    0,
3596         0,    0,    0,  793,  793,  793,  793,  793,  793,  793,
3597       793,  793,  793,  793,  793,  793,  793,  793,  793,  793,
3598       795,  795,  795,  795,  795,  795,  795,  795,  799,  799,
3599       799,  799,  799,  799,  799,  799,  799,  799,  799,  799,
3600       799,  799,  799,  799,  799,  800,  800,  800,  800,  800,
3601       800,  800,    0,    0,    0,    0,    0,  800,    0,    0,
3602         0,    0,    0,    0,    0,  800,  800,  800,  800,  800,
3603 
3604       804,  804,  804,  804,  804,  804,  804,  804,  804,  804,
3605       804,  804,  804,  804,  804,  804,  804,  808,  808,  808,
3606       808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
3607       808,  808,  808,  808,  828,  828,  828,  828,  828,  828,
3608       828,  828,  829,  829,  829,  829,  829,  829,  829,  829,
3609       829,  829,  829,  829,  829,  829,  829,  829,  829,  830,
3610       830,  830,  830,  830,  830,  830,    0,    0,    0,    0,
3611         0,  830,    0,    0,    0,    0,    0,    0,    0,  830,
3612       830,  830,  830,  830,  831,  831,  831,  831,  831,  831,
3613       831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
3614 
3615       831,  832,  832,  832,  832,  832,  832,  832,  832,  832,
3616       832,  832,  832,  832,  832,  832,  832,  832,  863,  863,
3617       863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
3618       863,  863,  863,  863,  863,  864,  864,  864,  864,  864,
3619       864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
3620       864,  864,  865,  865,  865,  865,  865,  865,  865,  865,
3621       865,  865,  865,  865,  865,  865,  865,  865,  865,  866,
3622       866,  866,  866,  866,  866,  866,  866,  866,  866,  866,
3623       866,  866,  866,  866,  866,  866,  867,  867,  867,  867,
3624       867,  867,  867,  867,  867,  867,  867,  867,  867,  867,
3625 
3626       867,  867,  867,  868,  868,  868,  868,  868,  868,  868,
3627       868,  868,  868,  868,  868,  868,  868,  868,  868,  868,
3628       869,  869,    0,  869,  869,  869,  869,  869,  869,  869,
3629       869,  869,  869,  869,  869,  869,  869,  870,    0,    0,
3630       870,  870,    0,  870,  870,  870,  870,  871,  871,    0,
3631       871,    0,  871,  871,  871,  871,  871,  871,  871,  871,
3632       871,  871,  871,  871,  872,  872,  872,  872,  872,  872,
3633       872,  872,  872,  872,  872,  872,  872,  872,  872,  872,
3634       872,  873,  873,    0,  873,  873,  873,  873,  873,  873,
3635       873,  873,  873,  873,  873,  873,  873,  873,  874,  874,
3636 
3637         0,  874,  874,  874,  874,  874,  874,  874,  874,  874,
3638       874,  874,  874,  874,  874,  875,  875,    0,  875,  875,
3639       875,  875,  875,  875,  875,  875,  875,  875,  875,  875,
3640       875,  875,  876,    0,    0,    0,  876,  876,  876,  876,
3641       876,  876,  876,  876,  876,  876,  876,  876,  876,  877,
3642       877,    0,  877,  877,  877,  877,  877,  877,  877,  877,
3643       877,  877,  877,  877,  877,  877,  878,    0,  878,    0,
3644         0,    0,  878,  878,  878,  878,  878,    0,  878,  878,
3645       878,  878,  878,  879,  879,    0,    0,    0,  879,  879,
3646       879,  879,  879,  879,  879,    0,  879,  879,  879,  879,
3647 
3648       880,  880,  880,  880,  880,  880,  880,  880,  880,  880,
3649       880,  880,  880,  880,  880,  880,  880,  881,  881,  881,
3650         0,    0,  881,  881,    0,  881,  882,    0,  882,    0,
3651         0,    0,  882,  882,  882,  882,  882,    0,  882,  882,
3652       882,  882,  882,  883,  883,    0,  883,  883,  883,  883,
3653       883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
3654       884,    0,  884,    0,    0,    0,  884,  884,    0,  884,
3655       884,    0,  884,  884,  884,  884,  884,  885,  885,  885,
3656       885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
3657       885,  885,  885,  885,  886,  886,  886,    0,    0,  886,
3658 
3659       886,    0,  886,  887,    0,  887,    0,    0,    0,  887,
3660       887,  887,  887,  887,    0,  887,  887,  887,  887,  887,
3661       888,    0,  888,    0,    0,    0,  888,  888,  888,  888,
3662       888,    0,  888,  888,  888,  888,  888,  889,  889,    0,
3663         0,  889,    0,    0,  889,  890,    0,  890,    0,    0,
3664         0,  890,  890,  890,  890,  890,    0,  890,  890,  890,
3665       890,  890,  891,  891,    0,  891,  891,  891,  891,  891,
3666       891,  891,  891,  891,  891,  891,  891,  891,  891,  892,
3667       892,  892,    0,    0,  892,  892,    0,  892,  893,    0,
3668       893,    0,    0,    0,  893,  893,  893,  893,  893,    0,
3669 
3670       893,  893,  893,  893,  893,  894,    0,  894,    0,    0,
3671         0,  894,  894,  894,  894,  894,    0,  894,  894,  894,
3672       894,  894,  895,  895,  895,    0,  895,    0,    0,  895,
3673       896,    0,  896,    0,    0,    0,  896,  896,  896,  896,
3674       896,    0,  896,  896,  896,  896,  896,  897,    0,  897,
3675         0,    0,    0,  897,  897,  897,  897,  897,    0,  897,
3676       897,  897,  897,  897,  898,    0,  898,    0,    0,    0,
3677       898,  898,    0,  898,  898,    0,  898,  898,  898,  898,
3678       898,  899,    0,    0,  899,    0,    0,  899,  899,  899,
3679       899,  900,  900,  900,    0,    0,  900,  900,    0,  900,
3680 
3681       901,    0,  901,    0,    0,  901,  901,    0,    0,  901,
3682       902,    0,  902,    0,    0,    0,  902,  902,  902,  902,
3683       902,    0,  902,  902,  902,  902,  902,  903,    0,  903,
3684         0,    0,    0,  903,  903,  903,  903,  903,    0,  903,
3685       903,  903,  903,  903,  904,  904,    0,  904,    0,    0,
3686       904,  905,  905,  905,    0,  905,    0,    0,  905,  906,
3687         0,    0,  906,    0,    0,  906,  907,    0,  907,    0,
3688         0,    0,  907,  907,  907,  907,  907,    0,  907,  907,
3689       907,  907,  907,  908,    0,  908,    0,    0,    0,  908,
3690       908,  908,  908,  908,    0,  908,  908,  908,  908,  908,
3691 
3692       909,    0,  909,    0,    0,    0,  909,  909,  909,  909,
3693       909,  909,  909,  909,  909,  909,  909,  910,    0,  910,
3694         0,    0,    0,  910,  910,  910,  910,  910,    0,  910,
3695       910,  910,  910,  910,  911,    0,  911,    0,    0,    0,
3696       911,  911,  911,  911,  911,    0,  911,  911,  911,  911,
3697       911,  912,    0,  912,    0,    0,    0,  912,  912,  912,
3698       912,  912,    0,  912,  912,  912,  912,  912,  913,    0,
3699       913,    0,    0,    0,  913,  913,  913,  913,  913,    0,
3700       913,  913,  913,  913,  913,  914,  914,    0,  914,    0,
3701         0,  914,  914,  914,  914,  915,    0,  915,    0,    0,
3702 
3703         0,  915,  915,  915,  915,  915,    0,  915,  915,  915,
3704       915,  915,  916,  916,  916,    0,    0,  916,  916,    0,
3705       916,  917,    0,  917,    0,    0,    0,  917,  917,  917,
3706       917,  917,    0,  917,  917,  917,  917,  917,  918,    0,
3707       918,    0,    0,    0,  918,  918,  918,  918,  918,    0,
3708       918,  918,  918,  918,  918,  919,  919,    0,  919,    0,
3709         0,  919,  920,  920,  920,    0,  920,    0,    0,  920,
3710       921,  921,  921,    0,  921,    0,    0,  921,  922,    0,
3711       922,    0,    0,    0,  922,  922,  922,  922,  922,    0,
3712       922,  922,  922,  922,  922,  923,    0,  923,    0,    0,
3713 
3714         0,  923,  923,  923,  923,  923,    0,  923,  923,  923,
3715       923,  923,  924,    0,  924,    0,    0,    0,  924,  924,
3716       924,  924,  924,    0,  924,  924,  924,  924,  924,  925,
3717         0,    0,  925,    0,    0,  925,  925,  925,  925,  926,
3718       926,  926,    0,    0,  926,  926,    0,  926,  927,    0,
3719       927,    0,    0,    0,  927,  927,  927,  927,  927,    0,
3720       927,  927,  927,  927,  927,  928,    0,  928,    0,    0,
3721         0,  928,  928,  928,  928,  928,    0,  928,  928,  928,
3722       928,  928,  930,  930,    0,  930,    0,    0,  930,  931,
3723       931,    0,  931,    0,    0,  931,  932,  932,  932,    0,
3724 
3725       932,    0,    0,  932,  933,    0,    0,  933,    0,    0,
3726       933,  934,    0,  934,    0,    0,    0,  934,  934,  934,
3727       934,  934,    0,  934,  934,  934,  934,  934,  935,    0,
3728       935,    0,    0,    0,  935,  935,  935,  935,  935,    0,
3729       935,  935,  935,  935,  935,  937,    0,  937,    0,    0,
3730         0,  937,  937,  937,  937,  937,    0,  937,  937,  937,
3731       937,  937,  938,    0,  938,    0,    0,    0,  938,  938,
3732       938,  938,  938,    0,  938,  938,  938,  938,  938,  939,
3733       939,    0,  939,    0,    0,  939,  939,  939,  939,  940,
3734       940,  940,    0,    0,  940,  940,    0,  940,  941,    0,
3735 
3736       941,    0,    0,    0,  941,  941,  941,  941,  941,    0,
3737       941,  941,  941,  941,  941,  942,    0,  942,    0,    0,
3738         0,  942,  942,  942,  942,  942,    0,  942,  942,  942,
3739       942,  942,  943,  943,    0,  943,    0,    0,  943,  944,
3740       944,    0,  944,    0,    0,  944,  945,  945,  945,    0,
3741       945,    0,    0,  945,  946,  946,  946,    0,  946,    0,
3742         0,  946,  947,    0,  947,    0,    0,    0,  947,  947,
3743       947,  947,  947,    0,  947,  947,  947,  947,  947,  948,
3744         0,  948,    0,    0,    0,  948,  948,  948,  948,  948,
3745         0,  948,  948,  948,  948,  948,  950,    0,    0,  950,
3746 
3747         0,    0,  950,  950,  950,  950,  952,    0,    0,  952,
3748         0,    0,  952,  952,  952,  952,  953,  953,  953,    0,
3749         0,  953,  953,    0,  953,  954,    0,  954,    0,    0,
3750         0,  954,  954,  954,  954,  954,    0,  954,  954,  954,
3751       954,  954,  955,    0,  955,    0,    0,    0,  955,  955,
3752       955,  955,  955,    0,  955,  955,  955,  955,  955,  956,
3753         0,  956,    0,    0,    0,  956,  956,  956,  956,  956,
3754         0,  956,  956,  956,  956,  956,  957,  957,    0,  957,
3755         0,    0,  957,  958,  958,    0,  958,    0,    0,  958,
3756       959,  959,  959,    0,  959,    0,    0,  959,  960,    0,
3757 
3758         0,  960,    0,    0,  960,  961,    0,  961,    0,    0,
3759         0,  961,  961,  961,  961,  961,    0,  961,  961,  961,
3760       961,  961,  962,    0,  962,    0,    0,    0,  962,  962,
3761       962,  962,  962,    0,  962,  962,  962,  962,  962,  963,
3762         0,    0,  963,    0,    0,  963,  963,  963,  963,  965,
3763         0,    0,  965,    0,    0,  965,  965,  965,  965,  966,
3764         0,    0,  966,    0,    0,  966,  966,  966,  966,  968,
3765         0,    0,  968,    0,    0,  968,  968,  968,  968,  969,
3766       969,    0,  969,    0,    0,  969,  969,  969,  969,  970,
3767       970,  970,    0,    0,  970,  970,    0,  970,  971,    0,
3768 
3769       971,    0,    0,    0,  971,  971,  971,  971,  971,    0,
3770       971,  971,  971,  971,  971,  972,    0,  972,    0,    0,
3771         0,  972,  972,  972,  972,  972,    0,  972,  972,  972,
3772       972,  972,  973,    0,  973,    0,    0,    0,  973,  973,
3773       973,  973,  973,    0,  973,  973,  973,  973,  973,  974,
3774         0,  974,    0,    0,    0,    0,    0,    0,  974,  975,
3775       975,    0,  975,    0,    0,  975,  976,  976,    0,  976,
3776         0,    0,  976,  977,  977,  977,    0,  977,    0,    0,
3777       977,  978,  978,  978,    0,  978,    0,    0,  978,  979,
3778         0,  979,    0,    0,    0,  979,  979,  979,  979,  979,
3779 
3780         0,  979,  979,  979,  979,  979,  980,    0,  980,    0,
3781         0,    0,  980,  980,  980,  980,  980,    0,  980,  980,
3782       980,  980,  980,  981,    0,    0,  981,    0,    0,  981,
3783       981,  981,  981,  982,    0,    0,  982,    0,    0,  982,
3784       982,  982,  982,  983,    0,    0,  983,    0,    0,  983,
3785       983,  983,  983,  984,    0,    0,  984,    0,    0,  984,
3786       984,  984,  984,  985,    0,    0,  985,    0,    0,  985,
3787       985,  985,  985,  986,    0,    0,  986,    0,    0,  986,
3788       986,  986,  986,  987,  987,  987,    0,    0,  987,  987,
3789         0,  987,  988,    0,  988,    0,    0,    0,  988,  988,
3790 
3791       988,  988,  988,    0,  988,  988,  988,  988,  988,  989,
3792         0,  989,    0,    0,    0,  989,  989,  989,  989,  989,
3793         0,  989,  989,  989,  989,  989,  990,    0,  990,    0,
3794         0,    0,  990,  990,  990,  990,  990,    0,  990,  990,
3795       990,  990,  990,  991,    0,  991,    0,    0,    0,  991,
3796       991,  991,  991,  991,    0,  991,  991,  991,  991,  991,
3797       992,  992,    0,  992,    0,    0,  992,  993,  993,    0,
3798       993,    0,    0,  993,  994,  994,  994,    0,  994,    0,
3799         0,  994,  995,    0,    0,  995,    0,    0,  995,  996,
3800         0,  996,    0,    0,    0,  996,  996,  996,  996,  996,
3801 
3802         0,  996,  996,  996,  996,  996,  997,    0,  997,    0,
3803         0,    0,  997,  997,  997,  997,  997,    0,  997,  997,
3804       997,  997,  997,  998,    0,    0,  998,    0,    0,  998,
3805       998,  998,  998,  999,    0,    0,  999,    0,    0,  999,
3806       999,  999,  999, 1000,    0,    0, 1000,    0,    0, 1000,
3807      1000, 1000, 1000, 1004, 1004,    0, 1004,    0,    0, 1004,
3808      1004, 1004, 1004, 1005, 1005, 1005,    0,    0, 1005, 1005,
3809         0, 1005, 1006,    0, 1006,    0,    0,    0, 1006, 1006,
3810      1006, 1006, 1006,    0, 1006, 1006, 1006, 1006, 1006, 1007,
3811         0, 1007,    0,    0,    0, 1007, 1007, 1007, 1007, 1007,
3812 
3813         0, 1007, 1007, 1007, 1007, 1007, 1008,    0, 1008,    0,
3814         0,    0, 1008, 1008, 1008, 1008, 1008,    0, 1008, 1008,
3815      1008, 1008, 1008, 1009,    0, 1009,    0,    0,    0, 1009,
3816      1009, 1009, 1009, 1009,    0, 1009, 1009, 1009, 1009, 1009,
3817      1010, 1010,    0, 1010,    0,    0, 1010, 1011, 1011,    0,
3818      1011,    0,    0, 1011, 1012, 1012, 1012,    0, 1012,    0,
3819         0, 1012, 1013, 1013, 1013,    0, 1013,    0,    0, 1013,
3820      1014,    0, 1014,    0,    0,    0, 1014, 1014, 1014, 1014,
3821      1014,    0, 1014, 1014, 1014, 1014, 1014, 1015,    0, 1015,
3822         0,    0,    0, 1015, 1015, 1015, 1015, 1015,    0, 1015,
3823 
3824      1015, 1015, 1015, 1015, 1016, 1016, 1016,    0,    0, 1016,
3825      1016,    0, 1016, 1017,    0, 1017,    0,    0,    0, 1017,
3826      1017, 1017, 1017, 1017,    0, 1017, 1017, 1017, 1017, 1017,
3827      1018,    0, 1018,    0,    0,    0, 1018, 1018, 1018, 1018,
3828      1018,    0, 1018, 1018, 1018, 1018, 1018, 1019,    0, 1019,
3829         0,    0,    0, 1019, 1019, 1019, 1019, 1019,    0, 1019,
3830      1019, 1019, 1019, 1019, 1020, 1020,    0, 1020,    0,    0,
3831      1020, 1021, 1021,    0, 1021,    0,    0, 1021, 1022, 1022,
3832      1022,    0, 1022,    0,    0, 1022, 1023,    0,    0, 1023,
3833         0,    0, 1023, 1024,    0, 1024,    0,    0,    0, 1024,
3834 
3835      1024, 1024, 1024, 1024,    0, 1024, 1024, 1024, 1024, 1024,
3836      1025,    0, 1025,    0,    0,    0, 1025, 1025, 1025, 1025,
3837      1025,    0, 1025, 1025, 1025, 1025, 1025, 1026,    0,    0,
3838      1026,    0,    0, 1026, 1026, 1026, 1026, 1027,    0,    0,
3839      1027,    0,    0, 1027, 1027, 1027, 1027, 1028,    0,    0,
3840      1028,    0,    0, 1028, 1028, 1028, 1028, 1029,    0, 1029,
3841         0,    0,    0,    0,    0,    0, 1029,    0,    0,    0,
3842         0,    0, 1029, 1030,    0, 1030,    0,    0, 1030, 1030,
3843         0,    0, 1030, 1031,    0, 1031,    0,    0,    0, 1031,
3844      1031, 1031, 1031, 1031,    0, 1031, 1031, 1031, 1031, 1031,
3845 
3846      1032,    0, 1032,    0,    0,    0, 1032, 1032, 1032, 1032,
3847      1032,    0, 1032, 1032, 1032, 1032, 1032, 1033, 1033,    0,
3848      1033,    0,    0, 1033, 1034, 1034,    0, 1034,    0,    0,
3849      1034, 1035, 1035, 1035,    0, 1035,    0,    0, 1035, 1036,
3850      1036, 1036,    0, 1036,    0,    0, 1036, 1037,    0, 1037,
3851         0,    0,    0, 1037, 1037, 1037, 1037, 1037,    0, 1037,
3852      1037, 1037, 1037, 1037, 1038, 1038,    0, 1038,    0,    0,
3853      1038, 1039, 1039,    0, 1039,    0,    0, 1039, 1040, 1040,
3854      1040,    0, 1040,    0,    0, 1040, 1041,    0,    0, 1041,
3855         0,    0, 1041, 1042, 1042,    0, 1042,    0,    0, 1042,
3856 
3857      1043, 1043,    0,    0, 1043,    0,    0, 1043, 1044, 1044,
3858      1044,    0, 1044,    0,    0, 1044, 1045, 1045,    0,    0,
3859      1045,    0,    0, 1045, 1046, 1046,    0,    0, 1046,    0,
3860         0, 1046, 1047, 1047,    0,    0, 1047,    0,    0, 1047,
3861      1048, 1048,    0,    0, 1048,    0,    0, 1048, 1049, 1049,
3862         0,    0, 1049,    0,    0, 1049,  862,  862,  862,  862,
3863       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
3864       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
3865       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
3866       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
3867 
3868       862,  862,  862,  862,  862,  862,  862,  862,  862
3869     } ;
3870 
3871 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
3872 static char *yy_full_match;
3873 static int yy_lp;
3874 #define REJECT \
3875 { \
3876 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
3877 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
3878 ++yy_lp; \
3879 goto find_rule; \
3880 }
3881 #define yymore() yymore_used_but_not_detected
     /* [<][>][^][v][top][bottom][index][help] */
3882 #define YY_MORE_ADJ 0
3883 #define YY_RESTORE_YY_MORE_OFFSET
3884 char *yytext;
3885 #line 1 "rpsl.l"
3886 #define INITIAL 0
3887 /*
3888 //  $Id: rpsl.l.cc,v 1.5 2001/07/25 15:01:37 engin Exp $
3889 //
3890 //  Copyright (c) 1994 by the University of Southern California
3891 //  All rights reserved.
3892 //
3893 //  Permission to use, copy, modify, and distribute this software and its
3894 //  documentation in source and binary forms for lawful non-commercial
3895 //  purposes and without fee is hereby granted, provided that the above
3896 //  copyright notice appear in all copies and that both the copyright
3897 //  notice and this permission notice appear in supporting documentation,
3898 //  and that any documentation, advertising materials, and other materials
3899 //  related to such distribution and use acknowledge that the software was
3900 //  developed by the University of Southern California, Information
3901 //  Sciences Institute. The name of the USC may not be used to endorse or
3902 //  promote products derived from this software without specific prior
3903 //  written permission.
3904 //
3905 //  THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY
3906 //  REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY
3907 //  PURPOSE.  THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
3908 //  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
3909 //  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
3910 //  TITLE, AND NON-INFRINGEMENT.
3911 //
3912 //  IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
3913 //  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT,
3914 //  OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE
3915 //  OR PERFORMANCE OF THIS SOFTWARE.
3916 //
3917 //  Questions concerning this software should be directed to
3918 //  ratoolset@isi.edu.
3919 //
3920 //  Author(s): Cengiz Alaettinoglu <cengiz@ISI.EDU>
3921 */
3922 /* definitions */
3923 #define STRING 1
3924 
3925 #define EXPECT_OPERATOR 2
3926 
3927 #define FREETEXT 3
3928 
3929 #define BLOBMODE 4
3930 
3931 #define GENERICMODE 5
3932 
3933 #define SKIP_OBJECT 6
3934 
3935 #define POLICYMODE 7
3936 
3937 /*%option nodefault /* */
3938 /*%option debug     /* */
3939 #line 83 "rpsl.l"
3940 #include "config.h"
3941 #include <cstring>
3942 #include <cstdarg>
3943 #include <cstdio>
3944 #include <time.h>
3945 
3946 #include "object.hh"
3947 #include "rpsl.y.hh"
3948 #include "schema.hh"
3949 
3950 static int errorLine = 0;
3951 static int errorColon = 0;
3952 #define errorNewLine { errorLine++;   errorColon = 0; }
3953 
3954 static int scan_position = 0;
3955 static bool start_of_object = true;
3956 static bool genericMode = true;
3957 static int oldStart = 0;
3958 
3959 Object *current_object;
3960 Attr   *current_attribute;
3961 YY_BUFFER_STATE rpsl_buffer = (YY_BUFFER_STATE) NULL;
3962 
3963 #define MAX_STR_CONST 1024
3964 #define LEXER_RETURN return
3965 #define YY_USER_ACTION { scan_position += yyleng; errorColon += yyleng; }
3966 #define YYLESS(n) {scan_position -= yyleng - n; errorColon -= yyleng - n; yyless(n); }
     /* [<][>][^][v][top][bottom][index][help] */
3967 #define yylval rpsllval
3968 #define yy_scan_object rpsl_scan_object
3969 #define yyschema schema
3970 
3971 extern void handle_error(char *, ...);
3972 extern void handle_warning(char *, ...);
3973 extern int validIPv6(const char *);
3974 extern int validIntForPhone(const char *);
3975 
3976 extern "C" {
3977 extern void atollRA(...);
3978 }
3979 #line 3980 "lex.rpsl.c"
3980 
3981 /* Macros after this point can all be overridden by user definitions in
3982  * section 1.
3983  */
3984 
3985 #ifndef YY_SKIP_YYWRAP
3986 #ifdef __cplusplus
3987 extern "C" int yywrap YY_PROTO(( void ));
3988 #else
3989 extern int yywrap YY_PROTO(( void ));
3990 #endif
3991 #endif
3992 
3993 #ifndef YY_NO_UNPUT
3994 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
3995 #endif
3996 
3997 #ifndef yytext_ptr
3998 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
3999 #endif
4000 
4001 #ifdef YY_NEED_STRLEN
4002 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
4003 #endif
4004 
4005 #ifndef YY_NO_INPUT
4006 #ifdef __cplusplus
4007 static int yyinput YY_PROTO(( void ));
4008 #else
4009 static int input YY_PROTO(( void ));
4010 #endif
4011 #endif
4012 
4013 #if YY_STACK_USED
4014 static int yy_start_stack_ptr = 0;
4015 static int yy_start_stack_depth = 0;
4016 static int *yy_start_stack = 0;
4017 #ifndef YY_NO_PUSH_STATE
4018 static void yy_push_state YY_PROTO(( int new_state ));
4019 #endif
4020 #ifndef YY_NO_POP_STATE
4021 static void yy_pop_state YY_PROTO(( void ));
4022 #endif
4023 #ifndef YY_NO_TOP_STATE
4024 static int yy_top_state YY_PROTO(( void ));
4025 #endif
4026 
4027 #else
4028 #define YY_NO_PUSH_STATE 1
4029 #define YY_NO_POP_STATE 1
4030 #define YY_NO_TOP_STATE 1
4031 #endif
4032 
4033 #ifdef YY_MALLOC_DECL
4034 YY_MALLOC_DECL
4035 #else
4036 #if __STDC__
4037 #ifndef __cplusplus
4038 #include <stdlib.h>
4039 #endif
4040 #else
4041 /* Just try to get by without declaring the routines.  This will fail
4042  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
4043  * or sizeof(void*) != sizeof(int).
4044  */
4045 #endif
4046 #endif
4047 
4048 /* Amount of stuff to slurp up with each read. */
4049 #ifndef YY_READ_BUF_SIZE
4050 #define YY_READ_BUF_SIZE 8192
4051 #endif
4052 
4053 /* Copy whatever the last rule matched to the standard output. */
4054 
4055 #ifndef ECHO
4056 /* This used to be an fputs(), but since the string might contain NUL's,
4057  * we now use fwrite().
4058  */
4059 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
4060 #endif
4061 
4062 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
4063  * is returned in "result".
4064  */
4065 #ifndef YY_INPUT
4066 #define YY_INPUT(buf,result,max_size) \
     /* [<][>][^][v][top][bottom][index][help] */
4067         if ( yy_current_buffer->yy_is_interactive ) \
4068                 { \
4069                 int c = '*', n; \
4070                 for ( n = 0; n < max_size && \
4071                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
4072                         buf[n] = (char) c; \
4073                 if ( c == '\n' ) \
4074                         buf[n++] = (char) c; \
4075                 if ( c == EOF && ferror( yyin ) ) \
4076                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
4077                 result = n; \
4078                 } \
4079         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
4080                   && ferror( yyin ) ) \
4081                 YY_FATAL_ERROR( "input in flex scanner failed" );
4082 #endif
4083 
4084 /* No semi-colon after return; correct usage is to write "yyterminate();" -
4085  * we don't want an extra ';' after the "return" because that will cause
4086  * some compilers to complain about unreachable statements.
4087  */
4088 #ifndef yyterminate
4089 #define yyterminate() return YY_NULL
     /* [<][>][^][v][top][bottom][index][help] */
4090 #endif
4091 
4092 /* Number of entries by which start-condition stack grows. */
4093 #ifndef YY_START_STACK_INCR
4094 #define YY_START_STACK_INCR 25
4095 #endif
4096 
4097 /* Report a fatal error. */
4098 #ifndef YY_FATAL_ERROR
4099 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
     /* [<][>][^][v][top][bottom][index][help] */
4100 #endif
4101 
4102 /* Default declaration of generated scanner - a define so the user can
4103  * easily add parameters.
4104  */
4105 #ifndef YY_DECL
4106 #define YY_DECL int yylex YY_PROTO(( void ))
4107 #endif
4108 
4109 /* Code executed at the beginning of each rule, after yytext and yyleng
4110  * have been set up.
4111  */
4112 #ifndef YY_USER_ACTION
4113 #define YY_USER_ACTION
4114 #endif
4115 
4116 /* Code executed at the end of each rule. */
4117 #ifndef YY_BREAK
4118 #define YY_BREAK break;
4119 #endif
4120 
4121 #define YY_RULE_SETUP \
4122         if ( yyleng > 0 ) \
4123                 yy_current_buffer->yy_at_bol = \
4124                                 (yytext[yyleng - 1] == '\n'); \
4125         YY_USER_ACTION
4126 
4127 YY_DECL
4128         {
4129         register yy_state_type yy_current_state;
4130         register char *yy_cp, *yy_bp;
4131         register int yy_act;
4132 
4133 #line 124 "rpsl.l"
4134 
4135  
4136    /* this code is copied to beginning of yylex */
4137    static char string_buf[MAX_STR_CONST];
4138    char *string_buf_ptr;
4139 
4140 
4141 #line 4142 "lex.rpsl.c"
4142 
4143         if ( yy_init )
4144                 {
4145                 yy_init = 0;
4146 
4147 #ifdef YY_USER_INIT
4148                 YY_USER_INIT;
4149 #endif
4150 
4151                 if ( ! yy_start )
4152                         yy_start = 1;   /* first start state */
4153 
4154                 if ( ! yyin )
4155                         yyin = stdin;
4156 
4157                 if ( ! yyout )
4158                         yyout = stdout;
4159 
4160                 if ( ! yy_current_buffer )
4161                         yy_current_buffer =
4162                                 yy_create_buffer( yyin, YY_BUF_SIZE );
4163 
4164                 yy_load_buffer_state();
4165                 }
4166 
4167         while ( 1 )             /* loops until end-of-file is reached */
4168                 {
4169                 yy_cp = yy_c_buf_p;
4170 
4171                 /* Support of yytext. */
4172                 *yy_cp = yy_hold_char;
4173 
4174                 /* yy_bp points to the position in yy_ch_buf of the start of
4175                  * the current run.
4176                  */
4177                 yy_bp = yy_cp;
4178 
4179                 yy_current_state = yy_start;
4180                 yy_current_state += YY_AT_BOL();
4181                 yy_state_ptr = yy_state_buf;
4182                 *yy_state_ptr++ = yy_current_state;
4183 yy_match:
4184                 do
4185                         {
4186                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
4187                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4188                                 {
4189                                 yy_current_state = (int) yy_def[yy_current_state];
4190                                 if ( yy_current_state >= 863 )
4191                                         yy_c = yy_meta[(unsigned int) yy_c];
4192                                 }
4193                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4194                         *yy_state_ptr++ = yy_current_state;
4195                         ++yy_cp;
4196                         }
4197                 while ( yy_base[yy_current_state] != 13957 );
4198 
4199 yy_find_action:
4200                 yy_current_state = *--yy_state_ptr;
4201                 yy_lp = yy_accept[yy_current_state];
4202 find_rule: /* we branch to this label when backing up */
4203                 for ( ; ; ) /* until we find what rule we matched */
4204                         {
4205                         if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
4206                                 {
4207                                 yy_act = yy_acclist[yy_lp];
4208                                         {
4209                                         yy_full_match = yy_cp;
4210                                         break;
4211                                         }
4212                                 }
4213                         --yy_cp;
4214                         yy_current_state = *--yy_state_ptr;
4215                         yy_lp = yy_accept[yy_current_state];
4216                         }
4217 
4218                 YY_DO_BEFORE_ACTION;
4219 
4220 
4221 do_action:      /* This label is used only to access EOF actions. */
4222 
4223 
4224                 switch ( yy_act )
4225         { /* beginning of action switch */
4226 case 1:
4227 YY_RULE_SETUP
4228 #line 131 "rpsl.l"
4229 { //
4230    errorLine = 0; 
4231    errorColon = yyleng;
4232 
4233    *(yytext + yyleng - 1) = 0; // remove ':'
4234 
4235    yylval.attr = new Attr;
4236    yylval.attr->offset = scan_position - yyleng;
4237    current_attribute = yylval.attr;
4238 
4239    if (start_of_object) {
4240       start_of_object = false;
4241       current_object->type = yyschema.searchClass(yytext);
4242       if (!current_object->type) {
4243          handle_error("Error: unknown class \"%s\"\n", yytext);
4244          yylval.attr->type   = NULL;
4245 //(*current_object) += yylval.attr;
4246          BEGIN(SKIP_OBJECT);
4247          LEXER_RETURN(TKN_UNKNOWN_CLASS);
4248       }
4249    }
4250 
4251    yylval.attr->type   = current_object->type->searchAttr(yytext);
4252    yylval.attr->object = current_object;
4253 
4254 //   (*current_object) += yylval.attr;
4255 
4256    if (! yylval.attr->type) {
4257       if (! schema.isForgiving())
4258          handle_error("Error: unknown attribute %s of class %s\n",
4259                       yytext, current_object->type->name);
4260       BEGIN(FREETEXT);
4261       LEXER_RETURN(ATTR_FREETEXT);
4262    }
4263 
4264    if (yylval.attr->type->isObsolete())
4265       handle_warning("Warning: attribute %s of class %s is now obsolete\n", 
4266               yytext, current_object->type->name);
4267 
4268    if (!yylval.attr->type->shouldParse()) { // may be free text?
4269       BEGIN(FREETEXT);
4270       LEXER_RETURN(ATTR_FREETEXT);
4271    } else {
4272       if (yylval.attr->type->syntax() == ATTR_GENERIC) {
4273          genericMode = true;
4274          BEGIN(GENERICMODE);
4275       } else if (yylval.attr->type->syntax() == ATTR_BLOBS) {
4276          genericMode = true;
4277          BEGIN(BLOBMODE);
4278       } else {
4279          genericMode = false;
4280          BEGIN(POLICYMODE);
4281       }
4282       LEXER_RETURN(yylval.attr->type->syntax());
4283    }
4284 }
4285         YY_BREAK
4286 case 2:
4287 YY_RULE_SETUP
4288 #line 188 "rpsl.l"
4289 {
4290    if (current_attribute)
4291       current_attribute->len = scan_position - current_attribute->offset;
4292    LEXER_RETURN(TKN_EOO);
4293 }
4294         YY_BREAK
4295 case YY_STATE_EOF(INITIAL):
4296 case YY_STATE_EOF(STRING):
4297 case YY_STATE_EOF(EXPECT_OPERATOR):
4298 case YY_STATE_EOF(FREETEXT):
4299 case YY_STATE_EOF(BLOBMODE):
4300 case YY_STATE_EOF(GENERICMODE):
4301 case YY_STATE_EOF(SKIP_OBJECT):
4302 case YY_STATE_EOF(POLICYMODE):
4303 #line 194 "rpsl.l"
4304 {
4305    yy_delete_buffer(rpsl_buffer);
4306    rpsl_buffer = (YY_BUFFER_STATE) NULL;
4307    if (current_attribute)
4308       current_attribute->len = scan_position - current_attribute->offset;
4309    BEGIN(INITIAL);
4310    yyterminate();
4311 }
4312         YY_BREAK
4313 case 3:
4314 YY_RULE_SETUP
4315 #line 203 "rpsl.l"
4316 
4317         YY_BREAK
4318 case 4:
4319 YY_RULE_SETUP
4320 #line 205 "rpsl.l"
4321 { // not a valid line
4322    current_attribute = NULL;
4323    handle_error("Error: valid lines start with an attribute name, space, tab, or plus sign (+)\n");
4324    BEGIN(FREETEXT);
4325    LEXER_RETURN(TKN_ERROR);
4326 }
4327         YY_BREAK
4328 
4329 case 5:
4330 YY_RULE_SETUP
4331 #line 213 "rpsl.l"
4332 {
4333      BEGIN(INITIAL);
4334      if (current_attribute)
4335         current_attribute->len = scan_position - current_attribute->offset;
4336      LEXER_RETURN(TKN_EOO);
4337   }
4338         YY_BREAK
4339 case 6:
4340 YY_RULE_SETUP
4341 #line 219 "rpsl.l"
4342 errorNewLine;
4343         YY_BREAK
4344 case 7:
4345 YY_RULE_SETUP
4346 #line 220 "rpsl.l"
4347 ;
4348         YY_BREAK
4349 
4350 
4351 case 8:
4352 YY_RULE_SETUP
4353 #line 224 "rpsl.l"
4354 errorNewLine; errorColon++; // line continuation with +
4355         YY_BREAK
4356 case 9:
4357 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
4358 yy_c_buf_p = yy_cp = yy_bp + 1;
4359 YY_DO_BEFORE_ACTION; /* set up yytext again */
4360 YY_RULE_SETUP
4361 #line 225 "rpsl.l"
4362 errorNewLine; // line continuation with space or comment
4363         YY_BREAK
4364 case 10:
4365 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
4366 yy_c_buf_p = yy_cp = yy_bp + 1;
4367 YY_DO_BEFORE_ACTION; /* set up yytext again */
4368 YY_RULE_SETUP
4369 #line 226 "rpsl.l"
4370 { // end of attribute and may be end of object too
4371       BEGIN(INITIAL);
4372       if (current_attribute)
4373          current_attribute->len = scan_position - current_attribute->offset;
4374       LEXER_RETURN(TKN_EOA);
4375    }
4376         YY_BREAK
4377 case 11:
4378 YY_RULE_SETUP
4379 #line 232 "rpsl.l"
4380 ; // skip white space
4381         YY_BREAK
4382 case 12:
4383 YY_RULE_SETUP
4384 #line 233 "rpsl.l"
4385 ; // skip comment 
4386         YY_BREAK
4387 
4388 // dont parse anything, keep going till EOA
4389 case 13:
4390 YY_RULE_SETUP
4391 #line 237 "rpsl.l"
4392 ; // this rule needs to be after \n rules
4393         YY_BREAK
4394 
4395 
4396 case 14:
4397 YY_RULE_SETUP
4398 #line 241 "rpsl.l"
4399 {
4400      yylval.string = strdup(yytext);
4401      LEXER_RETURN(TKN_BLOB);
4402   }
4403         YY_BREAK
4404 
4405 
4406 case 15:
4407 YY_RULE_SETUP
4408 #line 248 "rpsl.l"
4409 {
4410      tm ts;
4411      bzero((char *) &ts, sizeof(ts));
4412 
4413      int date, zone_hours, zone_mins;
4414      sscanf(yytext, "%d %d:%d:%d %d:%d", 
4415                     &date, 
4416                     &ts.tm_hour, &ts.tm_min, &ts.tm_sec,
4417                     &zone_hours, &zone_mins);
4418 
4419      ts.tm_mday = date % 100; date /= 100;
4420      ts.tm_mon  = date % 100 - 1; date /= 100;
4421      ts.tm_year = date - 1900;
4422    
4423      if (ts.tm_mday > 31) {
4424         handle_error("Error: Invalid day %d\n", ts.tm_mday);
4425         LEXER_RETURN(TKN_ERROR);
4426      }
4427      if (ts.tm_mon > 11) {
4428         handle_error("Error: Invalid month %d\n", ts.tm_mon);
4429         LEXER_RETURN(TKN_ERROR);
4430      }
4431      if (ts.tm_year < 70) {
4432         handle_error("Error: Invalid year %d\n", ts.tm_year);
4433         LEXER_RETURN(TKN_ERROR);
4434      }
4435      if (ts.tm_sec > 59) {
4436         handle_error("Error: Invalid sec %d\n", ts.tm_sec);
4437         LEXER_RETURN(TKN_ERROR);
4438      }
4439      if (ts.tm_min > 59) {
4440         handle_error("Error: Invalid min %d\n", ts.tm_min);
4441         LEXER_RETURN(TKN_ERROR);
4442      }
4443      if (ts.tm_hour > 23) {
4444         handle_error("Error: Invalid hour %d\n", ts.tm_hour);
4445         LEXER_RETURN(TKN_ERROR);
4446      }
4447      if (zone_mins > 59) {
4448         handle_error("Error: Invalid zone min %d\n", zone_mins);
4449         LEXER_RETURN(TKN_ERROR);
4450      }
4451      if (zone_hours > 23) {
4452         handle_error("Error: Invalid zone hour %d\n", zone_hours);
4453         LEXER_RETURN(TKN_ERROR);
4454      }
4455 
4456      // this fiddling with TZ is necessary for mktime to use utc as timezone
4457      // it sucks, there's got to be a better way
4458      time_t result = (time_t) mktime(&ts);
4459      result -= (time_t) timezone;
4460 /*
4461      char *TZ=getenv("TZ");
4462      if (TZ)
4463         TZ = strdup(TZ);
4464      setenv("TZ", "", 1);
4465      time_t result = mktime(&ts);
4466      if (TZ) {
4467         setenv("TZ", TZ, 1);
4468         free(TZ);
4469      } else
4470         unsetenv("TZ");
4471 */
4472      if (zone_hours < 0)
4473         zone_mins *= -1;
4474 
4475      result += zone_mins * 60 + zone_hours * 60 * 60;
4476    
4477      yylval.time = result;
4478      LEXER_RETURN(TKN_TIMESTAMP);
4479   }
4480         YY_BREAK
4481 
4482 
4483 case 16:
4484 YY_RULE_SETUP
4485 #line 323 "rpsl.l"
4486 {
4487      if(current_attribute->type->syntax() == ATTR_AUTH){
4488      yylval.string = strdup(yytext);
4489      LEXER_RETURN(TKN_CRYPTEDPW);
4490      }else{
4491        scan_position -= yyleng; errorColon -= yyleng;
4492        REJECT;
4493      }
4494   }
4495         YY_BREAK
4496 case 17:
4497 YY_RULE_SETUP
4498 #line 333 "rpsl.l"
4499 {
4500      // The following code causes problem on Solaris since long long int
4501      // is not standardized yet 
4502      // sscanf(yytext, "%Ld", &(yylval.i));
4503      if(current_attribute->type->syntax() == ATTR_PHONE){
4504        if(validIntForPhone(yytext)){
4505          atollRA(yytext, &yylval.i);
4506          LEXER_RETURN(TKN_INT);
4507        }else{
4508          scan_position -= yyleng; errorColon -= yyleng;
4509          REJECT;
4510        }
4511      }else{
4512        atollRA(yytext, &yylval.i);
4513        LEXER_RETURN(TKN_INT);
4514      }
4515     /* atollRA(yytext, &yylval.i);
4516      LEXER_RETURN(TKN_INT);*/
4517   }
4518         YY_BREAK
4519 case 18:
4520 YY_RULE_SETUP
4521 #line 353 "rpsl.l"
4522 {
4523      unsigned int ms, ls;
4524      char *colon = strchr(yytext, ':');
4525      *colon = 0;
4526      ms = atoi(yytext);
4527      ls = atoi(colon+1);
4528      if (ms > 65535 || ls > 65535)
4529         LEXER_RETURN(TKN_ERROR);
4530 
4531      yylval.i = (ms << 16) + ls;
4532      LEXER_RETURN(TKN_INT);
4533   }
4534         YY_BREAK
4535 case 19:
4536 YY_RULE_SETUP
4537 #line 366 "rpsl.l"
4538 {
4539      yylval.real = atof(yytext);
4540      LEXER_RETURN(TKN_REAL);
4541   }
4542         YY_BREAK
4543 case 20:
4544 YY_RULE_SETUP
4545 #line 371 "rpsl.l"
4546 {
4547      string_buf_ptr = string_buf; 
4548      oldStart = YY_START;
4549      BEGIN(STRING);
4550   }
4551         YY_BREAK
4552 case 21:
4553 YY_RULE_SETUP
4554 #line 377 "rpsl.l"
4555 {
4556      yylval.ip = new IPAddr(yytext);
4557      LEXER_RETURN(TKN_IPV4);
4558   }
4559         YY_BREAK
4560 case 22:
4561 YY_RULE_SETUP
4562 #line 382 "rpsl.l"
4563 {
4564      yylval.string = strdup(yytext);
4565      LEXER_RETURN(TKN_PRFXV6);
4566   }
4567         YY_BREAK
4568 case 23:
4569 YY_RULE_SETUP
4570 #line 387 "rpsl.l"
4571 {
4572      yylval.string = strdup(yytext);
4573      if(validIPv6(yylval.string)){
4574         LEXER_RETURN(TKN_PRFXV6);
4575      }else{
4576         handle_error("Error: Invalid IPv6 prefix\n");
4577         BEGIN(FREETEXT);
4578         LEXER_RETURN(TKN_ERROR);
4579      }
4580   }
4581         YY_BREAK
4582 case 24:
4583 YY_RULE_SETUP
4584 #line 398 "rpsl.l"
4585 {
4586      yylval.prfx = new Prefix(yytext);
4587      LEXER_RETURN(TKN_PRFXV4);
4588   }
4589         YY_BREAK
4590 case 25:
4591 YY_RULE_SETUP
4592 #line 403 "rpsl.l"
4593 {
4594      yylval.prfxrng = new PrefixRange(yytext);
4595      LEXER_RETURN(TKN_PRFXV4RNG);
4596   }
4597         YY_BREAK
4598 case 26:
4599 YY_RULE_SETUP
4600 #line 408 "rpsl.l"
4601 {
4602       /*printf("DEBUG: lexer: matched a nichdl candidate (%s)\n",yytext);*/
4603       if(current_attribute->type->syntax() != ATTR_NICHDL){
4604         /*printf("DEBUG: lexer: This is not a nichdl attribute, rejecting\n");*/
4605         scan_position -= yyleng; errorColon -= yyleng;
4606         REJECT;
4607       }else{
4608         yylval.string = strdup(yytext);
4609         LEXER_RETURN(TKN_NICHDL);
4610       }
4611   }
4612         YY_BREAK
4613 /* The order of these rules are important */
4614 case 27:
4615 YY_RULE_SETUP
4616 #line 422 "rpsl.l"
4617 {
4618      yylval.i = atoi(yytext+2);
4619      LEXER_RETURN(TKN_ASNO);
4620   }
4621         YY_BREAK
4622 case 28:
4623 YY_RULE_SETUP
4624 #line 427 "rpsl.l"
4625 {
4626      yylval.sid = symbols.symID(yytext);
4627      LEXER_RETURN(TKN_ASNAME);
4628   }
4629         YY_BREAK
4630 case 29:
4631 YY_RULE_SETUP
4632 #line 432 "rpsl.l"
4633 {
4634      yylval.sid = symbols.symID(yytext);
4635      LEXER_RETURN(TKN_RSNAME);
4636   }
4637         YY_BREAK
4638 case 30:
4639 YY_RULE_SETUP
4640 #line 437 "rpsl.l"
4641 {
4642      yylval.sid = symbols.symID(yytext);
4643      LEXER_RETURN(TKN_RTRSNAME);
4644   }
4645         YY_BREAK
4646 case 31:
4647 YY_RULE_SETUP
4648 #line 442 "rpsl.l"
4649 {
4650      yylval.sid = symbols.symID(yytext);
4651      LEXER_RETURN(TKN_PRNGNAME);
4652   }
4653         YY_BREAK
4654 case 32:
4655 YY_RULE_SETUP
4656 #line 447 "rpsl.l"
4657 {
4658      yylval.sid = symbols.symID(yytext);
4659      LEXER_RETURN(TKN_FLTRNAME);
4660   }
4661         YY_BREAK
4662 case 33:
4663 YY_RULE_SETUP
4664 #line 452 "rpsl.l"
4665 {
4666      yylval.i = 1;
4667      LEXER_RETURN(TKN_BOOLEAN);
4668   }
4669         YY_BREAK
4670 case 34:
4671 YY_RULE_SETUP
4672 #line 457 "rpsl.l"
4673 {
4674      yylval.i = 0;
4675      LEXER_RETURN(TKN_BOOLEAN);
4676   }
4677         YY_BREAK
4678 case 35:
4679 YY_RULE_SETUP
4680 #line 462 "rpsl.l"
4681 { /* keycert name */  
4682      yylval.string = strdup(yytext);
4683      LEXER_RETURN(TKN_KEYCRTNAME);
4684   }
4685         YY_BREAK
4686 case 36:
4687 YY_RULE_SETUP
4688 #line 468 "rpsl.l"
4689 { /* reserved word or rp-attribute, or arbitrary name */
4690      if (!genericMode) {
4691         oldStart = YY_START;
4692 
4693         int index;
4694         if ((index  = yyschema.searchKeyword(yytext)) >= 0) {
4695            if (index == KEYW_OPERATOR)
4696               BEGIN(EXPECT_OPERATOR);
4697            LEXER_RETURN(index);
4698         }
4699      
4700         if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
4701            BEGIN(EXPECT_OPERATOR);
4702            LEXER_RETURN(TKN_RP_ATTR);
4703         }
4704      }
4705 
4706      yylval.string = strdup(yytext);
4707      LEXER_RETURN(TKN_WORD);
4708   }
4709         YY_BREAK
4710 case 37:
4711 YY_RULE_SETUP
4712 #line 489 "rpsl.l"
4713 { /* rp-attribute.method or DNS name */
4714      if (!genericMode) {
4715         char *p = strchr(yytext, '.');
4716         *p = 0;
4717 
4718         if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
4719            *p = '.';
4720            YYLESS((p - yytext));
4721            LEXER_RETURN(TKN_RP_ATTR);
4722         }
4723 
4724         *p = '.';
4725      }
4726 
4727      yylval.sid = symbols.symID(yytext);
4728      LEXER_RETURN(TKN_DNS);
4729   }
4730         YY_BREAK
4731 case 38:
4732 YY_RULE_SETUP
4733 #line 507 "rpsl.l"
4734 { /* DNS name */
4735      yylval.sid = symbols.symID(yytext);
4736      LEXER_RETURN(TKN_DNS);
4737   }
4738         YY_BREAK
4739 case 39:
4740 YY_RULE_SETUP
4741 #line 512 "rpsl.l"
4742 { /* email */  
4743      yylval.string = strdup(yytext);
4744      LEXER_RETURN(TKN_EMAIL);
4745   }
4746         YY_BREAK
4747 case 40:
4748 YY_RULE_SETUP
4749 #line 519 "rpsl.l"
4750 {
4751      if (*yytext <= 0) {
4752         handle_error("Error: Non-ASCII character encountered\n");
4753         LEXER_RETURN(TKN_ERROR);
4754      } else
4755         LEXER_RETURN(*yytext);
4756   }
4757         YY_BREAK
4758 
4759 
4760 case 41:
4761 YY_RULE_SETUP
4762 #line 529 "rpsl.l"
4763 {
4764       yylval.moreSpecOp = new FilterMS(0);
4765       LEXER_RETURN(OP_MS);
4766    }
4767         YY_BREAK
4768 case 42:
4769 YY_RULE_SETUP
4770 #line 534 "rpsl.l"
4771 {
4772       yylval.moreSpecOp = new FilterMS(1);
4773       LEXER_RETURN(OP_MS);
4774    }
4775         YY_BREAK
4776 case 43:
4777 YY_RULE_SETUP
4778 #line 539 "rpsl.l"
4779 {
4780       int i;
4781       sscanf(yytext, "^%d", &i);
4782       yylval.moreSpecOp = new FilterMS(2, i, i);
4783       LEXER_RETURN(OP_MS);
4784    }
4785         YY_BREAK
4786 case 44:
4787 YY_RULE_SETUP
4788 #line 546 "rpsl.l"
4789 {
4790       int i, j;
4791       sscanf(yytext, "^%d-%d", &i, &j);
4792       yylval.moreSpecOp = new FilterMS(2, i, j);
4793       LEXER_RETURN(OP_MS);
4794    }
4795         YY_BREAK
4796 case 45:
4797 YY_RULE_SETUP
4798 #line 553 "rpsl.l"
4799 LEXER_RETURN(TKN_3DOTS);
4800         YY_BREAK
4801 
4802 
4803 case 46:
4804 YY_RULE_SETUP
4805 #line 557 "rpsl.l"
4806 {
4807       yylval.string = strdup(yytext);
4808       BEGIN(oldStart);
4809       LEXER_RETURN(TKN_OPERATOR);
4810    }
4811         YY_BREAK
4812 case 47:
4813 YY_RULE_SETUP
4814 #line 563 "rpsl.l"
4815 {
4816       YYLESS(0); 
4817       BEGIN(oldStart);
4818    }
4819         YY_BREAK
4820 
4821 
4822 case 48:
4823 YY_RULE_SETUP
4824 #line 570 "rpsl.l"
4825 { /* saw closing quote - all done */
4826       BEGIN(oldStart);
4827       *string_buf_ptr = '\0';
4828       yylval.string = strdup(string_buf);
4829       LEXER_RETURN(TKN_STRING);
4830    }
4831         YY_BREAK
4832 case 49:
4833 YY_RULE_SETUP
4834 #line 577 "rpsl.l"
4835 {
4836       errorNewLine;
4837       handle_error("Error: unterminated string encountered\n");
4838       BEGIN(oldStart);
4839       if (current_attribute)
4840          current_attribute->len = scan_position - current_attribute->offset;
4841       LEXER_RETURN(TKN_EOA);
4842    }
4843         YY_BREAK
4844 case 50:
4845 YY_RULE_SETUP
4846 #line 586 "rpsl.l"
4847 {
4848       /* octal escape sequence */
4849       int result;
4850       
4851       (void) sscanf( yytext + 1, "%o", &result );
4852 
4853       if ( result > 0xff ) {
4854          handle_error("Error: octal escape sequence is out of bounds\n");
4855          BEGIN(oldStart);
4856          LEXER_RETURN(TKN_ERROR);
4857       }
4858 
4859       *string_buf_ptr++ = result;
4860    }
4861         YY_BREAK
4862 case 51:
4863 YY_RULE_SETUP
4864 #line 601 "rpsl.l"
4865 {                       /* like '\48' or '\0777777' */
4866       handle_error("Error: bad octal escape sequence\n");
4867       BEGIN(oldStart);
4868       LEXER_RETURN(TKN_ERROR);
4869    }
4870         YY_BREAK
4871 case 52:
4872 YY_RULE_SETUP
4873 #line 607 "rpsl.l"
4874 *string_buf_ptr++ = '\n';
4875         YY_BREAK
4876 case 53:
4877 YY_RULE_SETUP
4878 #line 608 "rpsl.l"
4879 *string_buf_ptr++ = '\t';
4880         YY_BREAK
4881 case 54:
4882 YY_RULE_SETUP
4883 #line 609 "rpsl.l"
4884 *string_buf_ptr++ = '\r';
4885         YY_BREAK
4886 case 55:
4887 YY_RULE_SETUP
4888 #line 610 "rpsl.l"
4889 *string_buf_ptr++ = '\b';
4890         YY_BREAK
4891 case 56:
4892 YY_RULE_SETUP
4893 #line 611 "rpsl.l"
4894 *string_buf_ptr++ = '\f';
4895         YY_BREAK
4896 case 57:
4897 YY_RULE_SETUP
4898 #line 613 "rpsl.l"
4899 *string_buf_ptr++ = yytext[1];
4900         YY_BREAK
4901 case 58:
4902 YY_RULE_SETUP
4903 #line 615 "rpsl.l"
4904 {
4905       char *yptr = yytext;
4906       while ( *yptr )
4907          *string_buf_ptr++ = *yptr++;
4908    }
4909         YY_BREAK
4910 case 59:
4911 YY_RULE_SETUP
4912 #line 621 "rpsl.l"
4913 *string_buf_ptr++ = yytext[0];
4914         YY_BREAK
4915 
4916 case 60:
4917 YY_RULE_SETUP
4918 #line 624 "rpsl.l"
4919 ECHO;
4920         YY_BREAK
4921 #line 4922 "lex.rpsl.c"
4922 
4923         case YY_END_OF_BUFFER:
4924                 {
4925                 /* Amount of text matched not including the EOB char. */
4926                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
4927 
4928                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4929                 *yy_cp = yy_hold_char;
4930                 YY_RESTORE_YY_MORE_OFFSET
4931 
4932                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
4933                         {
4934                         /* We're scanning a new file or input source.  It's
4935                          * possible that this happened because the user
4936                          * just pointed yyin at a new source and called
4937                          * yylex().  If so, then we have to assure
4938                          * consistency between yy_current_buffer and our
4939                          * globals.  Here is the right place to do so, because
4940                          * this is the first action (other than possibly a
4941                          * back-up) that will match for the new input source.
4942                          */
4943                         yy_n_chars = yy_current_buffer->yy_n_chars;
4944                         yy_current_buffer->yy_input_file = yyin;
4945                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
4946                         }
4947 
4948                 /* Note that here we test for yy_c_buf_p "<=" to the position
4949                  * of the first EOB in the buffer, since yy_c_buf_p will
4950                  * already have been incremented past the NUL character
4951                  * (since all states make transitions on EOB to the
4952                  * end-of-buffer state).  Contrast this with the test
4953                  * in input().
4954                  */
4955                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4956                         { /* This was really a NUL. */
4957                         yy_state_type yy_next_state;
4958 
4959                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
4960 
4961                         yy_current_state = yy_get_previous_state();
4962 
4963                         /* Okay, we're now positioned to make the NUL
4964                          * transition.  We couldn't have
4965                          * yy_get_previous_state() go ahead and do it
4966                          * for us because it doesn't know how to deal
4967                          * with the possibility of jamming (and we don't
4968                          * want to build jamming into it because then it
4969                          * will run more slowly).
4970                          */
4971 
4972                         yy_next_state = yy_try_NUL_trans( yy_current_state );
4973 
4974                         yy_bp = yytext_ptr + YY_MORE_ADJ;
4975 
4976                         if ( yy_next_state )
4977                                 {
4978                                 /* Consume the NUL. */
4979                                 yy_cp = ++yy_c_buf_p;
4980                                 yy_current_state = yy_next_state;
4981                                 goto yy_match;
4982                                 }
4983 
4984                         else
4985                                 {
4986                                 yy_cp = yy_c_buf_p;
4987                                 goto yy_find_action;
4988                                 }
4989                         }
4990 
4991                 else switch ( yy_get_next_buffer() )
4992                         {
4993                         case EOB_ACT_END_OF_FILE:
4994                                 {
4995                                 yy_did_buffer_switch_on_eof = 0;
4996 
4997                                 if ( yywrap() )
4998                                         {
4999                                         /* Note: because we've taken care in
5000                                          * yy_get_next_buffer() to have set up
5001                                          * yytext, we can now set up
5002                                          * yy_c_buf_p so that if some total
5003                                          * hoser (like flex itself) wants to
5004                                          * call the scanner after we return the
5005                                          * YY_NULL, it'll still work - another
5006                                          * YY_NULL will get returned.
5007                                          */
5008                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
5009 
5010                                         yy_act = YY_STATE_EOF(YY_START);
5011                                         goto do_action;
5012                                         }
5013 
5014                                 else
5015                                         {
5016                                         if ( ! yy_did_buffer_switch_on_eof )
5017                                                 YY_NEW_FILE;
5018                                         }
5019                                 break;
5020                                 }
5021 
5022                         case EOB_ACT_CONTINUE_SCAN:
5023                                 yy_c_buf_p =
5024                                         yytext_ptr + yy_amount_of_matched_text;
5025 
5026                                 yy_current_state = yy_get_previous_state();
5027 
5028                                 yy_cp = yy_c_buf_p;
5029                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
5030                                 goto yy_match;
5031 
5032                         case EOB_ACT_LAST_MATCH:
5033                                 yy_c_buf_p =
5034                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
5035 
5036                                 yy_current_state = yy_get_previous_state();
5037 
5038                                 yy_cp = yy_c_buf_p;
5039                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
5040                                 goto yy_find_action;
5041                         }
5042                 break;
5043                 }
5044 
5045         default:
5046                 YY_FATAL_ERROR(
5047                         "fatal flex scanner internal error--no action found" );
5048         } /* end of action switch */
5049                 } /* end of scanning one token */
5050         } /* end of yylex */
5051 
5052 
5053 /* yy_get_next_buffer - try to read in a new buffer
5054  *
5055  * Returns a code representing an action:
5056  *      EOB_ACT_LAST_MATCH -
5057  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
5058  *      EOB_ACT_END_OF_FILE - end of file
5059  */
5060 
5061 static int yy_get_next_buffer()
     /* [<][>][^][v][top][bottom][index][help] */
5062         {
5063         register char *dest = yy_current_buffer->yy_ch_buf;
5064         register char *source = yytext_ptr;
5065         register int number_to_move, i;
5066         int ret_val;
5067 
5068         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
5069                 YY_FATAL_ERROR(
5070                 "fatal flex scanner internal error--end of buffer missed" );
5071 
5072         if ( yy_current_buffer->yy_fill_buffer == 0 )
5073                 { /* Don't try to fill the buffer, so this is an EOF. */
5074                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
5075                         {
5076                         /* We matched a single character, the EOB, so
5077                          * treat this as a final EOF.
5078                          */
5079                         return EOB_ACT_END_OF_FILE;
5080                         }
5081 
5082                 else
5083                         {
5084                         /* We matched some text prior to the EOB, first
5085                          * process it.
5086                          */
5087                         return EOB_ACT_LAST_MATCH;
5088                         }
5089                 }
5090 
5091         /* Try to read more data. */
5092 
5093         /* First move last chars to start of buffer. */
5094         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
5095 
5096         for ( i = 0; i < number_to_move; ++i )
5097                 *(dest++) = *(source++);
5098 
5099         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
5100                 /* don't do the read, it's not guaranteed to return an EOF,
5101                  * just force an EOF
5102                  */
5103                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
5104 
5105         else
5106                 {
5107                 int num_to_read =
5108                         yy_current_buffer->yy_buf_size - number_to_move - 1;
5109 
5110                 while ( num_to_read <= 0 )
5111                         { /* Not enough room in the buffer - grow it. */
5112 #ifdef YY_USES_REJECT
5113                         YY_FATAL_ERROR(
5114 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
5115 #else
5116 
5117                         /* just a shorter name for the current buffer */
5118                         YY_BUFFER_STATE b = yy_current_buffer;
5119 
5120                         int yy_c_buf_p_offset =
5121                                 (int) (yy_c_buf_p - b->yy_ch_buf);
5122 
5123                         if ( b->yy_is_our_buffer )
5124                                 {
5125                                 int new_size = b->yy_buf_size * 2;
5126 
5127                                 if ( new_size <= 0 )
5128                                         b->yy_buf_size += b->yy_buf_size / 8;
5129                                 else
5130                                         b->yy_buf_size *= 2;
5131 
5132                                 b->yy_ch_buf = (char *)
5133                                         /* Include room in for 2 EOB chars. */
5134                                         yy_flex_realloc( (void *) b->yy_ch_buf,
5135                                                          b->yy_buf_size + 2 );
5136                                 }
5137                         else
5138                                 /* Can't grow it, we don't own it. */
5139                                 b->yy_ch_buf = 0;
5140 
5141                         if ( ! b->yy_ch_buf )
5142                                 YY_FATAL_ERROR(
5143                                 "fatal error - scanner input buffer overflow" );
5144 
5145                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
5146 
5147                         num_to_read = yy_current_buffer->yy_buf_size -
5148                                                 number_to_move - 1;
5149 #endif
5150                         }
5151 
5152                 if ( num_to_read > YY_READ_BUF_SIZE )
5153                         num_to_read = YY_READ_BUF_SIZE;
5154 
5155                 /* Read in more data. */
5156                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
5157                         yy_n_chars, num_to_read );
5158 
5159                 yy_current_buffer->yy_n_chars = yy_n_chars;
5160                 }
5161 
5162         if ( yy_n_chars == 0 )
5163                 {
5164                 if ( number_to_move == YY_MORE_ADJ )
5165                         {
5166                         ret_val = EOB_ACT_END_OF_FILE;
5167                         yyrestart( yyin );
5168                         }
5169 
5170                 else
5171                         {
5172                         ret_val = EOB_ACT_LAST_MATCH;
5173                         yy_current_buffer->yy_buffer_status =
5174                                 YY_BUFFER_EOF_PENDING;
5175                         }
5176                 }
5177 
5178         else
5179                 ret_val = EOB_ACT_CONTINUE_SCAN;
5180 
5181         yy_n_chars += number_to_move;
5182         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
5183         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
5184 
5185         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
5186 
5187         return ret_val;
5188         }
5189 
5190 
5191 /* yy_get_previous_state - get the state just before the EOB char was reached */
5192 
5193 static yy_state_type yy_get_previous_state()
     /* [<][>][^][v][top][bottom][index][help] */
5194         {
5195         register yy_state_type yy_current_state;
5196         register char *yy_cp;
5197 
5198         yy_current_state = yy_start;
5199         yy_current_state += YY_AT_BOL();
5200         yy_state_ptr = yy_state_buf;
5201         *yy_state_ptr++ = yy_current_state;
5202 
5203         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
5204                 {
5205                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
5206                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5207                         {
5208                         yy_current_state = (int) yy_def[yy_current_state];
5209                         if ( yy_current_state >= 863 )
5210                                 yy_c = yy_meta[(unsigned int) yy_c];
5211                         }
5212                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5213                 *yy_state_ptr++ = yy_current_state;
5214                 }
5215 
5216         return yy_current_state;
5217         }
5218 
5219 
5220 /* yy_try_NUL_trans - try to make a transition on the NUL character
5221  *
5222  * synopsis
5223  *      next_state = yy_try_NUL_trans( current_state );
5224  */
5225 
5226 #ifdef YY_USE_PROTOS
5227 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
     /* [<][>][^][v][top][bottom][index][help] */
5228 #else
5229 static yy_state_type yy_try_NUL_trans( yy_current_state )
5230 yy_state_type yy_current_state;
5231 #endif
5232         {
5233         register int yy_is_jam;
5234 
5235         register YY_CHAR yy_c = 1;
5236         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5237                 {
5238                 yy_current_state = (int) yy_def[yy_current_state];
5239                 if ( yy_current_state >= 863 )
5240                         yy_c = yy_meta[(unsigned int) yy_c];
5241                 }
5242         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5243         yy_is_jam = (yy_current_state == 862);
5244         if ( ! yy_is_jam )
5245                 *yy_state_ptr++ = yy_current_state;
5246 
5247         return yy_is_jam ? 0 : yy_current_state;
5248         }
5249 
5250 
5251 #ifndef YY_NO_UNPUT
5252 #ifdef YY_USE_PROTOS
5253 static void yyunput( int c, register char *yy_bp )
     /* [<][>][^][v][top][bottom][index][help] */
5254 #else
5255 static void yyunput( c, yy_bp )
5256 int c;
5257 register char *yy_bp;
5258 #endif
5259         {
5260         register char *yy_cp = yy_c_buf_p;
5261 
5262         /* undo effects of setting up yytext */
5263         *yy_cp = yy_hold_char;
5264 
5265         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
5266                 { /* need to shift things up to make room */
5267                 /* +2 for EOB chars. */
5268                 register int number_to_move = yy_n_chars + 2;
5269                 register char *dest = &yy_current_buffer->yy_ch_buf[
5270                                         yy_current_buffer->yy_buf_size + 2];
5271                 register char *source =
5272                                 &yy_current_buffer->yy_ch_buf[number_to_move];
5273 
5274                 while ( source > yy_current_buffer->yy_ch_buf )
5275                         *--dest = *--source;
5276 
5277                 yy_cp += (int) (dest - source);
5278                 yy_bp += (int) (dest - source);
5279                 yy_current_buffer->yy_n_chars =
5280                         yy_n_chars = yy_current_buffer->yy_buf_size;
5281 
5282                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
5283                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
5284                 }
5285 
5286         *--yy_cp = (char) c;
5287 
5288 
5289         yytext_ptr = yy_bp;
5290         yy_hold_char = *yy_cp;
5291         yy_c_buf_p = yy_cp;
5292         }
5293 #endif  /* ifndef YY_NO_UNPUT */
5294 
5295 
5296 #ifdef __cplusplus
5297 static int yyinput()
     /* [<][>][^][v][top][bottom][index][help] */
5298 #else
5299 static int input()
5300 #endif
5301         {
5302         int c;
5303 
5304         *yy_c_buf_p = yy_hold_char;
5305 
5306         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
5307                 {
5308                 /* yy_c_buf_p now points to the character we want to return.
5309                  * If this occurs *before* the EOB characters, then it's a
5310                  * valid NUL; if not, then we've hit the end of the buffer.
5311                  */
5312                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
5313                         /* This was really a NUL. */
5314                         *yy_c_buf_p = '\0';
5315 
5316                 else
5317                         { /* need more input */
5318                         int offset = yy_c_buf_p - yytext_ptr;
5319                         ++yy_c_buf_p;
5320 
5321                         switch ( yy_get_next_buffer() )
5322                                 {
5323                                 case EOB_ACT_LAST_MATCH:
5324                                         /* This happens because yy_g_n_b()
5325                                          * sees that we've accumulated a
5326                                          * token and flags that we need to
5327                                          * try matching the token before
5328                                          * proceeding.  But for input(),
5329                                          * there's no matching to consider.
5330                                          * So convert the EOB_ACT_LAST_MATCH
5331                                          * to EOB_ACT_END_OF_FILE.
5332                                          */
5333 
5334                                         /* Reset buffer status. */
5335                                         yyrestart( yyin );
5336 
5337                                         /* fall through */
5338 
5339                                 case EOB_ACT_END_OF_FILE:
5340                                         {
5341                                         if ( yywrap() )
5342                                                 return EOF;
5343 
5344                                         if ( ! yy_did_buffer_switch_on_eof )
5345                                                 YY_NEW_FILE;
5346 #ifdef __cplusplus
5347                                         return yyinput();
5348 #else
5349                                         return input();
5350 #endif
5351                                         }
5352 
5353                                 case EOB_ACT_CONTINUE_SCAN:
5354                                         yy_c_buf_p = yytext_ptr + offset;
5355                                         break;
5356                                 }
5357                         }
5358                 }
5359 
5360         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
5361         *yy_c_buf_p = '\0';     /* preserve yytext */
5362         yy_hold_char = *++yy_c_buf_p;
5363 
5364         yy_current_buffer->yy_at_bol = (c == '\n');
5365 
5366         return c;
5367         }
5368 
5369 
5370 #ifdef YY_USE_PROTOS
5371 void yyrestart( FILE *input_file )
     /* [<][>][^][v][top][bottom][index][help] */
5372 #else
5373 void yyrestart( input_file )
5374 FILE *input_file;
5375 #endif
5376         {
5377         if ( ! yy_current_buffer )
5378                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
5379 
5380         yy_init_buffer( yy_current_buffer, input_file );
5381         yy_load_buffer_state();
5382         }
5383 
5384 
5385 #ifdef YY_USE_PROTOS
5386 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
     /* [<][>][^][v][top][bottom][index][help] */
5387 #else
5388 void yy_switch_to_buffer( new_buffer )
5389 YY_BUFFER_STATE new_buffer;
5390 #endif
5391         {
5392         if ( yy_current_buffer == new_buffer )
5393                 return;
5394 
5395         if ( yy_current_buffer )
5396                 {
5397                 /* Flush out information for old buffer. */
5398                 *yy_c_buf_p = yy_hold_char;
5399                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
5400                 yy_current_buffer->yy_n_chars = yy_n_chars;
5401                 }
5402 
5403         yy_current_buffer = new_buffer;
5404         yy_load_buffer_state();
5405 
5406         /* We don't actually know whether we did this switch during
5407          * EOF (yywrap()) processing, but the only time this flag
5408          * is looked at is after yywrap() is called, so it's safe
5409          * to go ahead and always set it.
5410          */
5411         yy_did_buffer_switch_on_eof = 1;
5412         }
5413 
5414 
5415 #ifdef YY_USE_PROTOS
5416 void yy_load_buffer_state( void )
     /* [<][>][^][v][top][bottom][index][help] */
5417 #else
5418 void yy_load_buffer_state()
5419 #endif
5420         {
5421         yy_n_chars = yy_current_buffer->yy_n_chars;
5422         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
5423         yyin = yy_current_buffer->yy_input_file;
5424         yy_hold_char = *yy_c_buf_p;
5425         }
5426 
5427 
5428 #ifdef YY_USE_PROTOS
5429 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
     /* [<][>][^][v][top][bottom][index][help] */
5430 #else
5431 YY_BUFFER_STATE yy_create_buffer( file, size )
5432 FILE *file;
5433 int size;
5434 #endif
5435         {
5436         YY_BUFFER_STATE b;
5437 
5438         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
5439         if ( ! b )
5440                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5441 
5442         b->yy_buf_size = size;
5443 
5444         /* yy_ch_buf has to be 2 characters longer than the size given because
5445          * we need to put in 2 end-of-buffer characters.
5446          */
5447         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
5448         if ( ! b->yy_ch_buf )
5449                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5450 
5451         b->yy_is_our_buffer = 1;
5452 
5453         yy_init_buffer( b, file );
5454 
5455         return b;
5456         }
5457 
5458 
5459 #ifdef YY_USE_PROTOS
5460 void yy_delete_buffer( YY_BUFFER_STATE b )
     /* [<][>][^][v][top][bottom][index][help] */
5461 #else
5462 void yy_delete_buffer( b )
5463 YY_BUFFER_STATE b;
5464 #endif
5465         {
5466         if ( ! b )
5467                 return;
5468 
5469         if ( b == yy_current_buffer )
5470                 yy_current_buffer = (YY_BUFFER_STATE) 0;
5471 
5472         if ( b->yy_is_our_buffer )
5473                 yy_flex_free( (void *) b->yy_ch_buf );
5474 
5475         yy_flex_free( (void *) b );
5476         }
5477 
5478 
5479 #ifndef YY_ALWAYS_INTERACTIVE
5480 #ifndef YY_NEVER_INTERACTIVE
5481 extern int isatty YY_PROTO(( int ));
5482 #endif
5483 #endif
5484 
5485 #ifdef YY_USE_PROTOS
5486 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
     /* [<][>][^][v][top][bottom][index][help] */
5487 #else
5488 void yy_init_buffer( b, file )
5489 YY_BUFFER_STATE b;
5490 FILE *file;
5491 #endif
5492 
5493 
5494         {
5495         yy_flush_buffer( b );
5496 
5497         b->yy_input_file = file;
5498         b->yy_fill_buffer = 1;
5499 
5500 #if YY_ALWAYS_INTERACTIVE
5501         b->yy_is_interactive = 1;
5502 #else
5503 #if YY_NEVER_INTERACTIVE
5504         b->yy_is_interactive = 0;
5505 #else
5506         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
5507 #endif
5508 #endif
5509         }
5510 
5511 
5512 #ifdef YY_USE_PROTOS
5513 void yy_flush_buffer( YY_BUFFER_STATE b )
     /* [<][>][^][v][top][bottom][index][help] */
5514 #else
5515 void yy_flush_buffer( b )
5516 YY_BUFFER_STATE b;
5517 #endif
5518 
5519         {
5520         if ( ! b )
5521                 return;
5522 
5523         b->yy_n_chars = 0;
5524 
5525         /* We always need two end-of-buffer characters.  The first causes
5526          * a transition to the end-of-buffer state.  The second causes
5527          * a jam in that state.
5528          */
5529         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
5530         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
5531 
5532         b->yy_buf_pos = &b->yy_ch_buf[0];
5533 
5534         b->yy_at_bol = 1;
5535         b->yy_buffer_status = YY_BUFFER_NEW;
5536 
5537         if ( b == yy_current_buffer )
5538                 yy_load_buffer_state();
5539         }
5540 
5541 
5542 #ifndef YY_NO_SCAN_BUFFER
5543 #ifdef YY_USE_PROTOS
5544 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
5545 #else
5546 YY_BUFFER_STATE yy_scan_buffer( base, size )
5547 char *base;
5548 yy_size_t size;
5549 #endif
5550         {
5551         YY_BUFFER_STATE b;
5552 
5553         if ( size < 2 ||
5554              base[size-2] != YY_END_OF_BUFFER_CHAR ||
5555              base[size-1] != YY_END_OF_BUFFER_CHAR )
5556                 /* They forgot to leave room for the EOB's. */
5557                 return 0;
5558 
5559         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
5560         if ( ! b )
5561                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
5562 
5563         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
5564         b->yy_buf_pos = b->yy_ch_buf = base;
5565         b->yy_is_our_buffer = 0;
5566         b->yy_input_file = 0;
5567         b->yy_n_chars = b->yy_buf_size;
5568         b->yy_is_interactive = 0;
5569         b->yy_at_bol = 1;
5570         b->yy_fill_buffer = 0;
5571         b->yy_buffer_status = YY_BUFFER_NEW;
5572 
5573         yy_switch_to_buffer( b );
5574 
5575         return b;
5576         }
5577 #endif
5578 
5579 
5580 #ifndef YY_NO_SCAN_STRING
5581 #ifdef YY_USE_PROTOS
5582 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
     /* [<][>][^][v][top][bottom][index][help] */
5583 #else
5584 YY_BUFFER_STATE yy_scan_string( yy_str )
5585 yyconst char *yy_str;
5586 #endif
5587         {
5588         int len;
5589         for ( len = 0; yy_str[len]; ++len )
5590                 ;
5591 
5592         return yy_scan_bytes( yy_str, len );
5593         }
5594 #endif
5595 
5596 
5597 #ifndef YY_NO_SCAN_BYTES
5598 #ifdef YY_USE_PROTOS
5599 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
     /* [<][>][^][v][top][bottom][index][help] */
5600 #else
5601 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
5602 yyconst char *bytes;
5603 int len;
5604 #endif
5605         {
5606         YY_BUFFER_STATE b;
5607         char *buf;
5608         yy_size_t n;
5609         int i;
5610 
5611         /* Get memory for full buffer, including space for trailing EOB's. */
5612         n = len + 2;
5613         buf = (char *) yy_flex_alloc( n );
5614         if ( ! buf )
5615                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
5616 
5617         for ( i = 0; i < len; ++i )
5618                 buf[i] = bytes[i];
5619 
5620         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
5621 
5622         b = yy_scan_buffer( buf, n );
5623         if ( ! b )
5624                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
5625 
5626         /* It's okay to grow etc. this buffer, and we should throw it
5627          * away when we're done.
5628          */
5629         b->yy_is_our_buffer = 1;
5630 
5631         return b;
5632         }
5633 #endif
5634 
5635 
5636 #ifndef YY_NO_PUSH_STATE
5637 #ifdef YY_USE_PROTOS
5638 static void yy_push_state( int new_state )
     /* [<][>][^][v][top][bottom][index][help] */
5639 #else
5640 static void yy_push_state( new_state )
5641 int new_state;
5642 #endif
5643         {
5644         if ( yy_start_stack_ptr >= yy_start_stack_depth )
5645                 {
5646                 yy_size_t new_size;
5647 
5648                 yy_start_stack_depth += YY_START_STACK_INCR;
5649                 new_size = yy_start_stack_depth * sizeof( int );
5650 
5651                 if ( ! yy_start_stack )
5652                         yy_start_stack = (int *) yy_flex_alloc( new_size );
5653 
5654                 else
5655                         yy_start_stack = (int *) yy_flex_realloc(
5656                                         (void *) yy_start_stack, new_size );
5657 
5658                 if ( ! yy_start_stack )
5659                         YY_FATAL_ERROR(
5660                         "out of memory expanding start-condition stack" );
5661                 }
5662 
5663         yy_start_stack[yy_start_stack_ptr++] = YY_START;
5664 
5665         BEGIN(new_state);
5666         }
5667 #endif
5668 
5669 
5670 #ifndef YY_NO_POP_STATE
5671 static void yy_pop_state()
     /* [<][>][^][v][top][bottom][index][help] */
5672         {
5673         if ( --yy_start_stack_ptr < 0 )
5674                 YY_FATAL_ERROR( "start-condition stack underflow" );
5675 
5676         BEGIN(yy_start_stack[yy_start_stack_ptr]);
5677         }
5678 #endif
5679 
5680 
5681 #ifndef YY_NO_TOP_STATE
5682 static int yy_top_state()
     /* [<][>][^][v][top][bottom][index][help] */
5683         {
5684         return yy_start_stack[yy_start_stack_ptr - 1];
5685         }
5686 #endif
5687 
5688 #ifndef YY_EXIT_FAILURE
5689 #define YY_EXIT_FAILURE 2
5690 #endif
5691 
5692 #ifdef YY_USE_PROTOS
5693 static void yy_fatal_error( yyconst char msg[] )
     /* [<][>][^][v][top][bottom][index][help] */
5694 #else
5695 static void yy_fatal_error( msg )
5696 char msg[];
5697 #endif
5698         {
5699         (void) fprintf( stderr, "%s\n", msg );
5700         exit( YY_EXIT_FAILURE );
5701         }
5702 
5703 
5704 
5705 /* Redefine yyless() so it works in section 3 code. */
5706 
5707 #undef yyless
5708 #define yyless(n) \
     /* [<][>][^][v][top][bottom][index][help] */
5709         do \
5710                 { \
5711                 /* Undo effects of setting up yytext. */ \
5712                 yytext[yyleng] = yy_hold_char; \
5713                 yy_c_buf_p = yytext + n; \
5714                 yy_hold_char = *yy_c_buf_p; \
5715                 *yy_c_buf_p = '\0'; \
5716                 yyleng = n; \
5717                 } \
5718         while ( 0 )
5719 
5720 
5721 /* Internal utility routines. */
5722 
5723 #ifndef yytext_ptr
5724 #ifdef YY_USE_PROTOS
5725 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
     /* [<][>][^][v][top][bottom][index][help] */
5726 #else
5727 static void yy_flex_strncpy( s1, s2, n )
5728 char *s1;
5729 yyconst char *s2;
5730 int n;
5731 #endif
5732         {
5733         register int i;
5734         for ( i = 0; i < n; ++i )
5735                 s1[i] = s2[i];
5736         }
5737 #endif
5738 
5739 #ifdef YY_NEED_STRLEN
5740 #ifdef YY_USE_PROTOS
5741 static int yy_flex_strlen( yyconst char *s )
     /* [<][>][^][v][top][bottom][index][help] */
5742 #else
5743 static int yy_flex_strlen( s )
5744 yyconst char *s;
5745 #endif
5746         {
5747         register int n;
5748         for ( n = 0; s[n]; ++n )
5749                 ;
5750 
5751         return n;
5752         }
5753 #endif
5754 
5755 
5756 #ifdef YY_USE_PROTOS
5757 static void *yy_flex_alloc( yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
5758 #else
5759 static void *yy_flex_alloc( size )
5760 yy_size_t size;
5761 #endif
5762         {
5763         return (void *) malloc( size );
5764         }
5765 
5766 #ifdef YY_USE_PROTOS
5767 static void *yy_flex_realloc( void *ptr, yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
5768 #else
5769 static void *yy_flex_realloc( ptr, size )
5770 void *ptr;
5771 yy_size_t size;
5772 #endif
5773         {
5774         /* The cast to (char *) in the following accommodates both
5775          * implementations that use char* generic pointers, and those
5776          * that use void* generic pointers.  It works with the latter
5777          * because both ANSI C and C++ allow castless assignment from
5778          * any pointer type to void*, and deal with argument conversions
5779          * as though doing an assignment.
5780          */
5781         return (void *) realloc( (char *) ptr, size );
5782         }
5783 
5784 #ifdef YY_USE_PROTOS
5785 static void yy_flex_free( void *ptr )
     /* [<][>][^][v][top][bottom][index][help] */
5786 #else
5787 static void yy_flex_free( ptr )
5788 void *ptr;
5789 #endif
5790         {
5791         free( ptr );
5792         }
5793 
5794 #if YY_MAIN
5795 int main()
     /* [<][>][^][v][top][bottom][index][help] */
5796         {
5797         yylex();
5798         return 0;
5799         }
5800 #endif
5801 #line 624 "rpsl.l"
5802 
5803 extern "C" {
5804 int yywrap () {
5805    return 1;
5806 }
5807 }
5808 
5809 void handle_error(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5810    current_object->has_error = true;
5811 
5812    char buffer[1024] = "***";
5813    va_list ap;
5814    va_start(ap, s);
5815    vsprintf(buffer+3, s, ap);
5816    va_end(ap);
5817 
5818    if (current_attribute)
5819       current_attribute->errors += buffer;
5820    else 
5821       current_object->errors += buffer;
5822 }
5823 
5824 void handle_object_error(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5825    current_object->has_error = true;
5826 
5827    char buffer[1024] = "***";
5828    va_list ap;
5829    va_start(ap, s);
5830    vsprintf(buffer+3, s, ap);
5831    va_end(ap);
5832 
5833    current_object->errors += buffer;
5834 }
5835 
5836 void rpslerror(char *, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5837    if (current_attribute) {
5838       current_attribute->errorLine = errorLine;
5839       current_attribute->errorColon = errorColon - yyleng;
5840       current_attribute->errorLeng  = yyleng;
5841    }
5842 }
5843 
5844 void handle_warning(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5845    current_object->has_warning = true;
5846 
5847    char buffer[1024];
5848    va_list ap;
5849    va_start(ap, s);
5850    vsprintf(buffer, s, ap);
5851    va_end(ap);
5852 
5853    if (current_attribute) 
5854       current_attribute->errors += buffer;
5855    else 
5856       current_object->errors += buffer;
5857 }
5858 
5859 void yy_scan_object(Object *o) {
     /* [<][>][^][v][top][bottom][index][help] */
5860    errorLine = 0; 
5861    errorColon = 0;
5862    current_object = o;
5863    current_attribute = NULL;
5864    start_of_object = true;
5865    scan_position = 0;
5866    genericMode = true;
5867 
5868    if (rpsl_buffer)
5869       yy_delete_buffer(rpsl_buffer);
5870    rpsl_buffer = yy_scan_bytes(o->contents, o->size);
5871    BEGIN(INITIAL);
5872 }
5873 
5874 Attr *changeCurrentAttr(Attr *b) {
     /* [<][>][^][v][top][bottom][index][help] */
5875    if (current_attribute) {
5876       b->object = current_attribute->object;
5877       b->type   = current_attribute->type;
5878       b->offset = current_attribute->offset;;
5879       b->len    = current_attribute->len;
5880       b->errors = current_attribute->errors;
5881       b->errorLine  = current_attribute->errorLine;
5882       b->errorColon = current_attribute->errorColon;
5883       b->errorLeng  = current_attribute->errorLeng;
5884       delete current_attribute;
5885    }
5886    current_attribute = b;
5887    return b;
5888 }
5889 
5890 int validIPv6(const char *s){
     /* [<][>][^][v][top][bottom][index][help] */
5891    char *string, *sleft, *sright, *pos;
5892    int countleft = 0, countright = 0; 
5893    string = strdup(s);
5894    pos = strstr(string,"/");
5895    pos[0] = '\0';
5896    sleft = strdup(string);
5897    pos = strstr(sleft,"::");
5898    pos[0] = '\0';  
5899    sright = pos + 2;
5900    // count the ':'s on the left
5901    for(int i=0;i<strlen(sleft);i++){
5902      if(sleft[i] == ':'){ countleft++;} 
5903    }
5904    // count the ':'s on the right
5905    for(int i=0;i<strlen(sright);i++){
5906      if(sright[i] == ':'){ countright++;} 
5907    }
5908 
5909    // now, if the total # of quads is  > 8, than there
5910    // is a problem with the syntax of the ipv6 address.
5911    if((countleft + 1 + countright + 1) <= 8 ){
5912      return 1;
5913    }else{
5914      return 0;
5915    }
5916 }
5917 
5918 int validIntForPhone(const char * arg){
     /* [<][>][^][v][top][bottom][index][help] */
5919    /* Checks if the integer is valid  as a phone no (should not contain '+' or '-')*/
5920    if((strchr(arg,'+') == NULL) && (strchr(arg,'-') == NULL)){
5921        return 1;
5922    }
5923    return 0;
5924 }
5925 

/* [<][>][^][v][top][bottom][index][help] */