Initial import of binutils 2.22 on the new vendor branch
[dragonfly.git] / contrib / groff / src / preproc / pic / pic.cpp
1 #ifndef lint
2 static const char yysccsid[] = "@(#)yaccpar     1.9 (Berkeley) 02/21/93";
3 #endif
4
5 #include <stdlib.h>
6 #include <string.h>
7
8 #define YYBYACC 1
9 #define YYMAJOR 1
10 #define YYMINOR 9
11 #define YYPATCH 20081224
12
13 #define YYEMPTY        (-1)
14 #define yyclearin      (yychar = YYEMPTY)
15 #define yyerrok        (yyerrflag = 0)
16 #define YYRECOVERING() (yyerrflag != 0)
17
18 /* compatibility with bison */
19 #ifdef YYPARSE_PARAM
20 /* compatibility with FreeBSD */
21 #ifdef YYPARSE_PARAM_TYPE
22 #define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
23 #else
24 #define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
25 #endif
26 #else
27 #define YYPARSE_DECL() yyparse(void)
28 #endif /* YYPARSE_PARAM */
29
30 extern int YYPARSE_DECL();
31
32 static int yygrowstack(void);
33 #define YYPREFIX "yy"
34 #line 21 "pic.y"
35 #include "pic.h"
36 #include "ptable.h"
37 #include "object.h"
38
39 extern int delim_flag;
40 extern void copy_rest_thru(const char *, const char *);
41 extern void copy_file_thru(const char *, const char *, const char *);
42 extern void push_body(const char *);
43 extern void do_for(char *var, double from, double to,
44                    int by_is_multiplicative, double by, char *body);
45 extern void do_lookahead();
46
47 /* Maximum number of characters produced by printf("%g") */
48 #define GDIGITS 14
49
50 int yylex();
51 void yyerror(const char *);
52
53 void reset(const char *nm);
54 void reset_all();
55
56 place *lookup_label(const char *);
57 void define_label(const char *label, const place *pl);
58
59 direction current_direction;
60 position current_position;
61
62 implement_ptable(place)
63
64 PTABLE(place) top_table;
65
66 PTABLE(place) *current_table = &top_table;
67 saved_state *current_saved_state = 0;
68
69 object_list olist;
70
71 const char *ordinal_postfix(int n);
72 const char *object_type_name(object_type type);
73 char *format_number(const char *form, double n);
74 char *do_sprintf(const char *form, const double *v, int nv);
75
76 #line 65 "pic.y"
77 typedef union {
78         char *str;
79         int n;
80         double x;
81         struct { double x, y; } pair;
82         struct { double x; char *body; } if_data;
83         struct { char *str; const char *filename; int lineno; } lstr;
84         struct { double *v; int nv; int maxv; } dv;
85         struct { double val; int is_multiplicative; } by;
86         place pl;
87         object *obj;
88         corner crn;
89         path *pth;
90         object_spec *spec;
91         saved_state *pstate;
92         graphics_state state;
93         object_type obtype;
94 } YYSTYPE;
95 #line 95 "pic.cpp"
96 #define LABEL 257
97 #define VARIABLE 258
98 #define NUMBER 259
99 #define TEXT 260
100 #define COMMAND_LINE 261
101 #define DELIMITED 262
102 #define ORDINAL 263
103 #define TH 264
104 #define LEFT_ARROW_HEAD 265
105 #define RIGHT_ARROW_HEAD 266
106 #define DOUBLE_ARROW_HEAD 267
107 #define LAST 268
108 #define BOX 269
109 #define CIRCLE 270
110 #define ELLIPSE 271
111 #define ARC 272
112 #define LINE 273
113 #define ARROW 274
114 #define MOVE 275
115 #define SPLINE 276
116 #define HEIGHT 277
117 #define RADIUS 278
118 #define FIGNAME 279
119 #define WIDTH 280
120 #define DIAMETER 281
121 #define UP 282
122 #define DOWN 283
123 #define RIGHT 284
124 #define LEFT 285
125 #define FROM 286
126 #define TO 287
127 #define AT 288
128 #define WITH 289
129 #define BY 290
130 #define THEN 291
131 #define SOLID 292
132 #define DOTTED 293
133 #define DASHED 294
134 #define CHOP 295
135 #define SAME 296
136 #define INVISIBLE 297
137 #define LJUST 298
138 #define RJUST 299
139 #define ABOVE 300
140 #define BELOW 301
141 #define OF 302
142 #define THE 303
143 #define WAY 304
144 #define BETWEEN 305
145 #define AND 306
146 #define HERE 307
147 #define DOT_N 308
148 #define DOT_E 309
149 #define DOT_W 310
150 #define DOT_S 311
151 #define DOT_NE 312
152 #define DOT_SE 313
153 #define DOT_NW 314
154 #define DOT_SW 315
155 #define DOT_C 316
156 #define DOT_START 317
157 #define DOT_END 318
158 #define DOT_X 319
159 #define DOT_Y 320
160 #define DOT_HT 321
161 #define DOT_WID 322
162 #define DOT_RAD 323
163 #define SIN 324
164 #define COS 325
165 #define ATAN2 326
166 #define LOG 327
167 #define EXP 328
168 #define SQRT 329
169 #define K_MAX 330
170 #define K_MIN 331
171 #define INT 332
172 #define RAND 333
173 #define SRAND 334
174 #define COPY 335
175 #define THRU 336
176 #define TOP 337
177 #define BOTTOM 338
178 #define UPPER 339
179 #define LOWER 340
180 #define SH 341
181 #define PRINT 342
182 #define CW 343
183 #define CCW 344
184 #define FOR 345
185 #define DO 346
186 #define IF 347
187 #define ELSE 348
188 #define ANDAND 349
189 #define OROR 350
190 #define NOTEQUAL 351
191 #define EQUALEQUAL 352
192 #define LESSEQUAL 353
193 #define GREATEREQUAL 354
194 #define LEFT_CORNER 355
195 #define RIGHT_CORNER 356
196 #define NORTH 357
197 #define SOUTH 358
198 #define EAST 359
199 #define WEST 360
200 #define CENTER 361
201 #define END 362
202 #define START 363
203 #define RESET 364
204 #define UNTIL 365
205 #define PLOT 366
206 #define THICKNESS 367
207 #define FILL 368
208 #define COLORED 369
209 #define OUTLINED 370
210 #define SHADED 371
211 #define XSLANTED 372
212 #define YSLANTED 373
213 #define ALIGNED 374
214 #define SPRINTF 375
215 #define COMMAND 376
216 #define DEFINE 377
217 #define UNDEF 378
218 #define YYERRCODE 256
219 static const short yylhs[] = {                           -1,
220     0,    0,   16,   17,   17,   29,   29,   30,   30,   31,
221    31,   31,   31,   31,   31,   31,   31,   31,   31,   32,
222    31,   31,   33,   34,   31,   35,   36,   31,   37,   31,
223    31,   38,   31,   31,   31,   23,   23,   39,   39,   39,
224    27,   27,   28,   28,   28,   40,    7,   24,   24,    2,
225     2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
226     4,    4,    4,   15,   15,   15,   15,   41,   43,   15,
227    15,   42,   42,   18,   18,   18,   18,   18,   18,   18,
228    18,   18,   18,   18,   44,   18,   18,   18,   18,   18,
229    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
230    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
231    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
232    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
233    18,   18,   18,   18,   26,   26,   25,   25,   19,   19,
234    19,    6,    6,    6,    6,    6,    6,    6,    6,    6,
235     6,   45,   45,    5,    5,   13,   13,   13,   13,   13,
236    14,   14,   14,   22,   22,   21,   21,    8,    8,   20,
237    20,   20,   20,   20,   20,   20,   20,   20,   11,   11,
238    12,   12,   12,   10,   10,   10,   10,   10,   10,    9,
239     9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
240     9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
241     9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
242     9,    1,    1,    1,    1,    1,    1,    1,    1,    1,
243     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
244     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
245     1,    1,    1,    1,    1,    1,    1,
246 };
247 static const short yylen[] = {                            2,
248     1,    1,    3,    1,    3,    0,    1,    1,    2,    3,
249     3,    4,    1,    1,    1,    1,    1,    2,    2,    0,
250     3,    2,    0,    0,    7,    0,    0,    6,    0,   10,
251     1,    0,    4,    1,    1,    1,    1,    2,    2,    3,
252     1,    2,    1,    1,    1,    0,    5,    0,    2,    1,
253     1,    3,    3,    3,    3,    3,    3,    3,    3,    2,
254     0,    2,    3,    1,    4,    4,    4,    0,    0,    6,
255     1,    0,    1,    1,    1,    1,    1,    1,    1,    1,
256     1,    1,    2,    3,    0,    4,    3,    3,    3,    3,
257     2,    2,    3,    2,    3,    2,    3,    2,    3,    3,
258     3,    3,    3,    3,    3,    2,    2,    2,    3,    2,
259     3,    2,    3,    3,    3,    3,    3,    3,    2,    3,
260     2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
261     2,    2,    3,    2,    1,    5,    0,    3,    1,    1,
262     3,    1,    3,    5,    3,    5,    5,    5,    7,    6,
263     8,    1,    4,    3,    3,    1,    2,    2,    3,    1,
264     1,    1,    3,    1,    3,    1,    2,    2,    2,    1,
265     1,    1,    1,    1,    1,    1,    2,    1,    2,    3,
266     1,    1,    2,    1,    5,    4,    3,    3,    2,    1,
267     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
268     1,    1,    1,    1,    2,    2,    2,    2,    1,    1,
269     2,    2,    2,    2,    1,    1,    1,    1,    1,    1,
270     1,    1,    1,    2,    2,    2,    2,    2,    3,    3,
271     3,    3,    3,    3,    2,    3,    4,    4,    6,    4,
272     4,    4,    6,    6,    4,    4,    3,    4,    3,    3,
273     3,    3,    3,    3,    3,    3,    2,
274 };
275 static const short yydefred[] = {                         0,
276     8,    0,    2,    0,    0,    0,    0,  135,   17,   74,
277    75,   76,   77,   78,   79,   80,   81,    0,   13,   14,
278    16,   15,    0,   20,    0,    0,    0,    0,    0,    0,
279     0,   85,   68,    0,    4,    0,    0,   82,   71,    0,
280     9,    0,    0,    0,    0,    0,   26,    0,  161,  222,
281   223,  164,  166,  204,  203,  160,  190,  191,  192,  193,
282   194,  195,  196,  197,  198,  199,  200,    0,    0,    0,
283     0,    0,    0,    0,    0,    0,    0,    0,  201,  202,
284     0,    0,  209,  210,  215,  216,  217,  218,  219,  221,
285   220,    0,    0,    0,    0,    0,  142,  139,  162,    0,
286     0,    0,    0,    0,    0,   44,    0,   41,    0,    0,
287     0,    0,    0,    0,    0,    0,   38,    0,    0,    0,
288     0,    0,   32,    3,    0,  123,  124,  125,    0,    0,
289     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
290     0,  106,  107,    0,    0,    0,  121,  122,  129,  130,
291   131,  132,  126,  127,    0,    0,    0,    0,    0,    0,
292     0,  134,    0,  128,   39,    0,    0,   11,    0,   37,
293    36,   10,   23,    0,   21,    0,    0,    0,    0,    0,
294     0,    0,    0,    0,    0,    0,  207,  205,  211,  213,
295   208,  206,  212,  214,    0,    0,    0,    0,    0,    0,
296     0,    0,    0,  152,    0,    0,    0,    0,    0,    0,
297     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
298     0,    0,  224,  225,  226,  227,  228,    0,  157,    0,
299     0,  178,  170,  171,  172,  173,  174,  175,  176,    0,
300   169,  167,  168,   42,    0,    0,   60,    0,    0,    0,
301    46,    0,    0,    0,    0,   84,  137,    0,    0,    0,
302     0,    5,    0,    0,    0,    0,    0,    0,    0,    0,
303     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
304   103,    0,  184,    0,    0,    0,  105,    0,    0,    0,
305     0,    0,  117,  118,  116,    0,    0,   40,    0,    0,
306     0,    0,    0,    0,   65,    0,   12,    0,   27,    0,
307     0,    0,    0,    0,    0,    0,    0,    0,  247,    0,
308     0,    0,    0,  236,  155,  141,    0,    0,    0,  165,
309     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
310     0,    0,    0,    0,    0,    0,    0,    0,    0,  163,
311   143,  145,  177,    0,    0,   56,    0,    0,    0,    0,
312     0,   54,    0,    0,   53,   52,    0,   86,   69,   33,
313   181,  189,    0,    0,    0,  179,    0,    0,  183,    0,
314     0,   24,    0,  237,  238,    0,  240,  241,  242,    0,
315     0,  245,  246,  248,    0,    0,    0,    0,    0,    0,
316     0,    0,    0,   47,    0,  136,    0,    0,  188,  187,
317     0,  180,    0,    0,   28,    0,    0,    0,    0,    0,
318   147,  144,  146,  153,    0,    0,    0,    0,   73,   70,
319   186,    0,   25,   49,  239,  243,  244,    0,    0,  150,
320     0,    0,  185,    0,  149,    0,    0,   29,  151,    0,
321     0,   30,
322 };
323 static const short yydgoto[] = {                          2,
324   112,  196,  114,  442,   97,   98,   34,   99,  100,  281,
325   282,  283,  115,  102,   35,    3,   36,   37,  103,  241,
326   104,  105,  172,  415,  367,  116,  107,  108,  259,    5,
327    39,   48,  308,  413,  174,  383,  451,  261,   40,  360,
328   122,  430,  407,  121,  220,
329 };
330 static const short yysindex[] = {                       -49,
331     0,    0,    0, 5473,  -26,  -10,  -15,    0,    0,    0,
332     0,    0,    0,    0,    0,    0,    0,    5,    0,    0,
333     0,    0, -238,    0,13272, -185,13356, -178,13858,   45,
334 13272,    0,    0, -255,    0,  -49,12851,    0,    0,  -36,
335     0,  -49,13356,   72, -231, -198,    0, -107,    0,    0,
336     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
337     0,    0,    0,    0,    0,    0,    0,  119,  123,  128,
338   139,  162,  164,  174,  175,  178,  179,  181,    0,    0,
339  -266, -233,    0,    0,    0,    0,    0,    0,    0,    0,
340     0,13521,13356,13858,13858, 1079,    0,    0,    0,  -17,
341   186,  454,   98,  997,  874,    0,13272,    0,  183,13356,
342 13356, 1218,  -56, -288,  186, -234,    0,  -22,  -18,13272,
343   -49,  -49,    0,    0, 5011,    0,    0,    0,13858,13858,
344 13858,13858,14111,14111,14111,14111,13942,13942,13942,13689,
345 14027,    0,    0,14111,14111,14111,    0,    0,    0,    0,
346     0,    0,    0,    0,13858,14111, -243, -243, -243,13858,
347 13858,    0, 1664,    0,    0,   -6,12604,    0,13356,    0,
348     0,    0,    0,  -14,    0,13356,13356,13356,13356,13356,
349 13356,13356,13356,13356,12970,13356,    0,    0,    0,    0,
350     0,    0,    0,    0, 1543,  217,  228,  -39,   84,    6,
351   192,  192,  -16,    0,13858,13858,13858,13858,13858,13858,
352 13858,13942,13858,13858,13858,13858,13858,13858,13858,13942,
353     4,  245,    0,    0,    0,    0,    0,   48,    0,14027,
354 14027,    0,    0,    0,    0,    0,    0,    0,    0,  214,
355     0,    0,    0,    0,13858,  192,    0,13356,13356,13858,
356     0,13356,13356, -243, -243,    0,    0,  226, 5473,  185,
357    63,    0, 1664, 1664, 1664, 1664, 1664, 1664, 1664, 1664,
358  1079,   98,   98,   98, 2203,  820,  820,   69,13153,  -17,
359     0,  465,    0,   98,13605,  -13,    0, 1664, 1664, 1664,
360  1664, 1664,    0,    0,    0, 1664, 1664,    0,  -10,  -15,
361     0,    0,    0,  186,    0,   98,    0,   73,    0,  293,
362   302,  300,  305,  306,  313,  317,  319,  316,    0,  323,
363   330,13942,13942,    0,    0,    0,13942,14027,14027,    0,
364    70, 2125, 1688,  107,  107,   54,   54, 1664,  194,  234,
365    54,  109,  109,  192,  192,  192,  192,  -38,  245,    0,
366     0,    0,    0,  394, 2125,    0, 2114,   26,   54,  126,
367  2125,    0, 2114,   26,    0,    0,   34,    0,    0,    0,
368     0,    0,  997,  870,  870,    0,  337,  129,    0,  325,
369   228,    0,   27,    0,    0,13356,    0,    0,    0,13356,
370 13356,    0,    0,    0,  272,  -32,  121,  350,  368,  108,
371 13942,13942,13858,    0,13858,    0, 5473,  870,    0,    0,
372   870,    0,   27,  152,    0,  374,  377,  381,13942,13942,
373     0,    0,    0,    0,   -8,   98, 1652, 1664,    0,    0,
374     0,  388,    0,    0,    0,    0,    0,   14,  221,    0,
375 13774,   87,    0,  389,    0,13858, 1664,    0,    0, 1664,
376   188,    0,
377 };
378 static const short yyrindex[] = {                       320,
379     0,    0,    0,  440,  210,    0,    0,    0,    0,    0,
380     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
381     0,    0,    0,    0,    0,    0,    0,  259,    0,    0,
382     0,    0,    0,  289,    0,   83,  324,    0,    0,  365,
383     0,12714,    0,    0,    0,  373,    0,    0,    0,    0,
384     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
385     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
386     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
387     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
388     0,    0,    0,    0,    0,10957,    0,    0,    0,    0,
389  4751,10318,11167,    0,    0,    0,  597,    0,    0,    0,
390     0,  587,    0, 1560,    0,    0,    0,12201,    0,  626,
391  5937, 5937,    0,    0,  124,    0,    0,    0,    0,    0,
392     0,    0,11428,11546,11096,11278,    0,    0,    0,    0,
393     0,    0,    0,11680,11804,11932,    0,    0,    0,    0,
394     0,    0,    0,    0,    0,12056,    0,    0,    0,    0,
395     0,    0, 5334,    0,    0,    0,    0,    0,    0,    0,
396     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
397     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
398     0,    0,    0,    0,  407,    0,  278,  383,    0,    0,
399   575,  694,    0,    0,    0,    0,    0,    0,    0,    0,
400     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
401     0, 3359,    0,    0,    0,    0,    0,    0,    0,    0,
402     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
403     0,    0,    0,    0,    0,12555,    0,    0,    0,    0,
404     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
405     0,    0, 5679, 5798, 6143, 6262, 6607, 6726, 7071, 7190,
406     0, 7535, 7654, 7999,10437, -205,  191,    0,    0, 9973,
407     0,10742,    0, 8118,    0,    0,    0, 8463, 8582, 8927,
408  9046, 9391,    0,    0,    0, 9510, 9855,    0,12268, 2007,
409  2510, 2872,  659,  664,    0,    0,    0,    0,    0,    0,
410     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
411     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
412     0, 4287, 4406, 3478, 3823, 2431, 2550, 5215,10820,    0,
413  2895, 1967, 2086, 1039, 1158, 1503, 1622,    0, 3942,    0,
414     0,    0,    0,    0,    9,    0,  349,  366, 3014,    0,
415     1,    0,  379, 3448,    0,    0,    0,    0,    0,    0,
416     0,    0,    0,    0,    0,    0,    0,    0,    0,  407,
417     0,    0,  633,    0,    0,    0,    0,    0,    0,    0,
418     0,    0,    0,    0,    0,    0,    0,  401,  419,    0,
419     0,    0,    0,    0,    0,    0, 1015,    0,    0,    0,
420     0,    0,  633,    0,    0,    0,    0,    0,    0,    0,
421     0,    0,    0,    0,    0, 4870,  111,   43,    0,    0,
422     0,    0,    0,    0,    0,    0,    0,    0,  411,    0,
423     0,    0,    0,  432,    0,    0,  141,    0,    0,  151,
424     0,    0,
425 };
426 static const short yygindex[] = {                         0,
427   -25,  220,  -19,    0,  -53,  298,    0,    0,  -66,    0,
428     0, -118,   33,  -84, -111,   90,    0,    0,10234, -102,
429     0,    0,    0,   88,    0,   40,  471,  -79,  103,  467,
430     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
431     0,    0,    0,    0,  315,
432 };
433 #define YYTABLESIZE 14474
434 static const short yytable[] = {                         96,
435    55,  326,  243,  118,  230,   96,  231,  166,  255,    1,
436   230,  163,  231,  262,  218,  222,    8,  187,  188,  216,
437   214,   46,  215,  218,  217,  170,  171,  244,  216,  214,
438   211,  215,   41,  217,  230,  229,  231,  250,  197,  213,
439   244,   55,   44,   38,   55,   43,  250,   42,  213,  255,
440   191,  192,  255,  440,  164,  305,  230,  101,  231,   55,
441   252,  253,  164,  101,  106,   45,  195,  255,  201,  202,
442   106,  219,  109,  280,  406,  444,  164,  405,   93,  117,
443   219,   96,    6,  138,  119,  246,  138,  287,  189,  190,
444   218,  247,  123,   55,   96,  216,  214,   47,  215,   93,
445   217,  255,    4,  263,  264,  265,  266,  267,  268,  269,
446   270,  271,  271,  271,  271,  286,  254,  255,  288,  289,
447   290,  193,  194,    7,  198,   55,  328,  327,  329,  291,
448   292,   30,  169,  255,  296,  297,  349,  173,  124,  101,
449   230,  271,  231,  218,  167,  218,  106,  219,  216,  214,
450   216,  215,  101,  217,  175,  217,  372,  256,  176,  106,
451   377,  421,  177,  230,   38,  231,  250,  178,  213,  101,
452   101,  101,  101,  374,  375,    6,  351,  352,  179,  332,
453   333,  334,  335,  336,  337,  338,  339,  341,  342,  343,
454   344,  345,  346,  347,  271,  222,  293,  294,  295,  304,
455   219,  180,  219,  181,  286,  286,   38,    6,  371,    7,
456   258,  260,  280,  182,  183,  379,    7,  184,  185,  354,
457   186,  165,  355,  357,  359,  197,  361,  363,  356,  358,
458   218,  381,  362,  364,  251,  216,  214,    8,  215,   49,
459   217,  257,    7,  245,  101,   52,  113,  309,    7,    7,
460    53,  298,  101,  195,    7,  409,  410,  324,   35,  380,
461    49,  445,  168,  230,   55,  231,   52,  402,  325,  330,
462   408,   53,  255,  420,  398,  399,  230,  401,  231,  223,
463   224,  225,  226,  227,  221,  219,  331,  219,   31,  431,
464   228,   55,  432,  365,  366,  429,  339,  271,   38,  255,
465     7,  271,  286,  286,  350,    7,  353,  371,  371,  369,
466   255,  198,  200,  255,  230,  419,  231,   35,  368,    6,
467   142,  142,  142,   64,  370,  376,  205,  206,  207,  208,
468   209,  210,    7,  384,  382,  205,  206,  207,  208,  209,
469   210,  371,  385,  386,  371,  387,  388,   31,  256,   55,
470    55,   35,   30,  389,  101,  101,  392,  255,  255,  101,
471   390,  218,  391,  393,   34,   59,  216,  214,  211,  215,
472   394,  217,   22,  400,  252,  271,  271,  427,   58,  428,
473   411,   31,   64,   35,  250,  412,  213,  404,  307,  256,
474   422,  414,  256,  271,  271,  310,  311,  312,  313,  314,
475   315,  316,  317,  318,  320,  321,   59,  256,  423,   59,
476     6,  434,  424,   31,  435,  447,   64,  436,  219,   58,
477   450,  437,   58,   34,   59,  140,  140,  140,  443,  449,
478   218,   22,  448,  101,  101,  216,  214,   58,  215,    1,
479   217,  256,    6,  143,  143,  143,   38,   50,   64,  452,
480   166,  101,  101,  250,  148,  213,   61,   34,   59,  209,
481   210,  145,  145,  145,  303,   22,    7,    7,    7,    7,
482     7,   58,    7,  256,  150,  150,  150,    7,    7,    7,
483     7,    7,    7,    7,    7,    7,   62,  219,    7,   34,
484    59,    7,    7,    7,    7,  203,   63,   22,  204,  228,
485   433,  120,  125,   58,  223,  224,  225,  226,  227,  323,
486   378,    0,    0,    0,    0,    0,    7,    7,    7,    7,
487     7,    7,    7,    7,    7,    7,    7,    7,    0,    0,
488     0,    0,    0,    7,    7,    7,    7,    7,    7,    7,
489     7,    7,    7,    7,    7,    0,    7,    7,    7,    7,
490     7,    7,    0,    0,    7,    0,    7,    0,    0,    0,
491     0,    0,    0,    0,    7,    7,    7,    7,    7,    7,
492     7,    7,    7,    7,  235,    7,    6,    6,    0,    6,
493     6,    0,    0,    0,    7,    7,   50,    0,    6,    6,
494     6,    6,    6,    6,    6,    6,   19,    0,    6,    0,
495     0,    6,    6,    6,    6,  416,    0,  235,    0,  417,
496   418,  235,  256,    0,  235,  235,  235,  235,  235,  235,
497     0,  235,    0,    0,    0,   18,    0,   50,    0,   59,
498    50,    0,   48,  235,  235,    0,  235,    0,    0,  256,
499     0,    0,   58,    0,    0,   50,    0,    0,    0,    0,
500   256,    0,    0,  256,    6,   19,   59,    0,   66,    0,
501     6,    6,    0,   67,    6,    0,    6,  235,    0,   58,
502   235,    0,    0,  248,  249,  207,  208,  209,  210,   50,
503   403,    0,    0,    6,   18,    6,    0,    0,    0,   19,
504     0,   48,    0,  257,    6,    6,    0,    0,  256,  235,
505     0,  139,    0,  139,    0,    0,  140,    0,  140,    0,
506     0,   50,    0,    0,    0,   59,    0,   66,   18,    0,
507     0,   19,   67,    0,    0,   48,  257,    0,   58,    0,
508   257,    0,    0,  257,  257,  257,  257,  257,  257,    0,
509   257,    0,  205,  206,  207,  208,  209,  210,   54,   55,
510    18,   66,  257,  257,    0,  257,   67,   48,    0,    0,
511     0,   57,   58,   59,   60,   61,   62,   63,   64,   65,
512    66,   67,   57,   58,   59,   60,   61,   62,   63,   64,
513    65,   66,   67,   66,    0,    0,  257,    0,   67,  257,
514    79,   80,   81,   82,    0,    0,    0,    0,    0,    0,
515     0,   79,   80,   81,   82,    0,    0,    0,   83,   84,
516    85,   86,   87,   88,   89,   90,   91,    0,  257,   83,
517    84,   85,   86,   87,   88,   89,   90,   91,    0,    0,
518     0,  235,  235,  235,  235,    0,    0,  235,  235,  235,
519   235,  235,  235,    0,    0,    0,    0,    0,    0,    0,
520    50,  235,  235,    0,  235,  235,  235,  235,  235,  235,
521   235,  235,  235,  235,  235,  235,  235,  235,  235,  235,
522   235,  235,  235,  235,  235,  235,  235,   50,    0,  235,
523   235,  235,  235,  235,  235,  235,  235,  235,  235,  235,
524   235,  235,  235,    0,    0,    0,    0,    0,  235,  235,
525   235,  235,  235,  235,  235,  235,  235,  235,  235,    0,
526   240,  235,  235,  235,  235,  278,    0,  235,  235,    0,
527   235,    0,    0,  235,  235,  235,  235,  235,  235,  235,
528   235,  235,  235,  235,  235,  235,  235,  235,    0,    0,
529     0,  235,  235,  235,  235,  235,  235,  235,  235,  235,
530   257,  257,  257,  257,    0,    0,  257,  257,  257,  257,
531   257,  257,    0,    0,  240,    0,    0,    0,    0,    0,
532   257,  257,    0,  257,  257,  257,  257,  257,  257,  257,
533   257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
534   257,  257,  257,  257,  257,  257,    0,    0,  257,  257,
535   257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
536   257,  257,    0,    0,   72,    0,    0,  257,  257,  257,
537   257,  257,  257,  257,  257,  257,  257,  257,    0,    0,
538   257,  257,  257,  257,    0,    0,  257,  257,  231,  257,
539     0,    0,  257,  257,  257,  257,  257,  257,  257,  257,
540   257,  257,  257,  257,  257,  257,  257,    0,    0,    0,
541   257,  257,  257,  257,  257,  257,  257,  257,  257,    0,
542     0,  231,    0,   72,    0,  231,    0,    0,  231,  231,
543   231,  231,  231,  231,    0,  231,    0,  240,  233,  234,
544   235,  236,  237,  238,    0,  239,    0,  231,  231,    0,
545   231,    0,    0,    0,    0,    0,    0,   72,    0,    0,
546     0,    0,    0,    0,    0,  218,    0,    0,    0,    0,
547   216,  214,  211,  215,    0,  217,    0,    0,    0,    0,
548     0,  231,    0,  232,  231,    0,    0,    0,  212,   72,
549   213,  242,  233,  234,  235,  236,  237,  238,    0,  239,
550     0,    0,    0,   54,   55,    0,    0,  232,    0,    0,
551     0,    0,    0,  231,    0,    0,    0,    0,    0,    0,
552     0,    0,  219,    0,    0,    0,    0,   57,   58,   59,
553    60,   61,   62,   63,   64,   65,   66,   67,    0,    0,
554   232,    0,    0,    0,  232,    0,    0,  232,  232,  232,
555   232,  232,  232,    0,  232,    0,   79,   80,   81,   82,
556     0,    0,    0,    0,    0,    0,  232,  232,    0,  232,
557     0,    0,    0,    0,   83,   84,   85,   86,   87,   88,
558    89,   90,   91,    0,    0,    0,    0,    0,    0,    0,
559     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
560   232,    0,    0,  232,  218,    0,  232,    0,    0,  216,
561   214,    0,  215,    0,  217,  233,  234,  235,  236,  237,
562   238,    0,  239,    0,    0,    0,    0,  250,    0,  213,
563     0,    0,  232,    0,    0,    0,    0,    0,    0,    0,
564     0,    0,    0,    0,    0,  231,  231,  231,  231,    0,
565     0,  231,  231,  231,  231,  231,  231,    0,    0,    0,
566     0,  219,    0,    0,    0,  231,  231,    0,  231,  231,
567   231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
568   231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
569   231,    0,    0,  231,  231,  231,  231,  231,  231,  231,
570   231,  231,  231,  231,  231,  231,  231,    0,    0,    0,
571     0,    0,  231,  231,  231,  231,  231,  231,  231,  231,
572   231,  231,  231,    0,    0,  231,  231,  231,  231,    0,
573   203,  231,  231,  204,  231,    0,    0,  231,  231,  231,
574   231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
575   231,  231,    0,    0,    0,  231,  231,  231,  231,  231,
576   231,  231,  231,  231,  232,  232,  232,  232,    0,    0,
577   232,  232,  232,  232,  232,  232,    0,  205,  206,  207,
578   208,  209,  210,    0,  232,  232,    0,  232,  232,  232,
579   232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
580   232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
581     0,    0,  232,  232,  232,  232,  232,  232,  232,  232,
582   232,  232,  232,  232,  232,  232,    0,    0,    0,    0,
583     0,  232,  232,  232,  232,  232,  232,  232,  232,  232,
584   232,  232,    0,    0,  232,  232,  232,  232,    0,    0,
585   232,  232,  233,  232,    0,    0,  232,  232,  232,  232,
586   232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
587   232,    0,    0,    0,  232,  232,  232,  232,  232,  232,
588   232,  232,  232,    0,    0,  233,    0,    0,    0,  233,
589     0,    0,  233,  233,  233,  233,  233,  233,    0,  233,
590     0,    0,    0,    0,    0,    0,    0,    0,    0,   51,
591     0,  233,  233,    0,  233,    0,  248,  249,  207,  208,
592   209,  210,    0,    0,    0,    0,    0,    0,    0,  218,
593     0,    0,    0,    0,  216,  214,  211,  215,    0,  217,
594     0,    0,    0,    0,    0,  233,    0,    0,  233,    0,
595    51,    0,  322,   51,  213,    0,    0,    0,    0,    0,
596     0,    0,    0,    0,    0,    0,    0,    0,   51,    0,
597     0,  234,    0,    0,    0,    0,    0,  233,    0,    0,
598     0,    0,    0,    0,    0,    0,  219,    0,    0,    0,
599     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
600     0,    0,   51,    0,  234,    0,    0,    0,  234,    0,
601     0,  234,  234,  234,  234,  234,  234,    0,  234,    0,
602     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
603   234,  234,    0,  234,   51,    0,    0,    0,  218,    0,
604     0,    0,    0,  216,  214,    0,  215,    0,  217,    0,
605   218,    0,    0,    0,    0,  216,  214,    0,  215,    0,
606   217,  250,    0,  213,  234,    0,    0,  234,    0,    0,
607     0,    0,    0,  250,  218,  213,    0,    0,    0,  216,
608   214,    0,  215,    0,  217,    0,    0,    0,    0,    0,
609     0,    0,    0,    0,    0,  219,  234,  250,    0,  213,
610     0,    0,    0,    0,    0,    0,    0,  219,    0,  233,
611   233,  233,  233,    0,    0,  233,  233,  233,  233,  233,
612   233,    0,    0,    0,    0,    0,    0,    0,    0,  233,
613   233,  219,  233,  233,  233,  233,  233,  233,  233,  233,
614   233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
615   233,  233,  233,  233,  233,    0,    0,  233,  233,  233,
616   233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
617   233,    0,    0,   51,    0,    0,  233,  233,  233,  233,
618   233,  233,  233,  233,  233,  233,  233,    0,    0,  233,
619   233,  233,  233,    0,  203,  233,  233,  204,  233,    0,
620    51,  233,  233,  233,  233,  233,  233,  233,  233,  233,
621   233,  233,  233,  233,  233,  233,    0,    0,    0,  233,
622   233,  233,  233,  233,  233,  233,  233,  233,  234,  234,
623   234,  234,    0,    0,  234,  234,  234,  234,  234,  234,
624     0,  248,  249,  207,  208,  209,  210,    0,  234,  234,
625     0,  234,  234,  234,  234,  234,  234,  234,  234,  234,
626   234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
627   234,  234,  234,  234,    0,    0,  234,  234,  234,  234,
628   234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
629     0,  441,    0,    0,    0,  234,  234,  234,  234,  234,
630   234,  234,  234,  234,  234,  234,    0,    0,  234,  234,
631   234,  234,    0,    0,  234,  234,  229,  234,    0,    0,
632   234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
633   234,  234,  234,  234,  234,    0,    0,    0,  234,  234,
634   234,  234,  234,  234,  234,  234,  234,    0,    0,  229,
635   205,  206,  207,  208,  209,  210,  229,  229,    0,  229,
636   229,  229,  205,  206,  207,  208,  209,  210,    0,    0,
637     0,    0,    0,    0,    0,  229,  229,    0,  229,    0,
638     0,    0,    0,    0,    0,    0,  205,    0,  207,  208,
639   209,  210,    0,  222,    0,    0,    0,    0,  222,  222,
640   222,  222,    0,  222,    0,    0,    0,    0,    0,  229,
641     0,    0,  229,    0,    0,    0,  222,    0,  222,    0,
642     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
643     0,    0,    0,    0,    0,  230,    0,    0,    0,    0,
644     0,  229,    0,    0,    0,    0,    0,    0,    0,    0,
645   222,    0,    0,    0,    0,    0,    0,    0,    0,    0,
646     0,    0,    0,    0,    0,    0,    0,    0,  230,    0,
647     0,    0,    0,    0,    0,  230,  230,    0,  230,  230,
648   230,    0,    0,    0,    0,    0,    0,    0,    0,    0,
649     0,    0,    0,    0,  230,  230,    0,  230,    0,    0,
650   218,    0,    0,    0,    0,  216,  214,    0,  215,    0,
651   217,  218,    0,    0,    0,    0,  216,  214,    0,  215,
652     0,  217,    0,  250,    0,  213,    0,    0,  230,    0,
653     0,  230,    0,    0,  250,    0,  213,    0,    0,    0,
654     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
655     0,    0,    0,    0,    0,    0,    0,  219,    0,    0,
656   230,    0,    0,    0,    0,    0,    0,    0,  219,    0,
657     0,    0,    0,  229,  229,  229,  229,    0,    0,  229,
658   229,  229,  229,  229,  229,    0,    0,    0,    0,    0,
659     0,    0,    0,  229,  229,    0,  229,  229,  229,  229,
660   229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
661   229,  229,  229,  229,  229,  229,  229,  229,  229,    0,
662     0,  229,  229,  229,  229,  229,  229,  229,  229,  229,
663   229,  229,  229,  229,  229,    0,    0,    0,    0,    0,
664   229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
665   229,    0,    0,  229,  229,  229,  229,    0,  222,  229,
666   229,  222,  229,    0,    0,  229,  229,  229,  229,  229,
667   229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
668     0,    0,    0,  229,  229,  229,  229,  229,  229,  229,
669   229,  229,  230,  230,  230,  230,    0,    0,  230,  230,
670   230,  230,  230,  230,    0,  222,  222,  222,  222,  222,
671   222,    0,  230,  230,    0,  230,  230,  230,  230,  230,
672   230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
673   230,  230,  230,  230,  230,  230,  230,  230,    0,    0,
674   230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
675   230,  230,  230,  230,    0,    0,    0,    0,    0,  230,
676   230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
677     0,    0,  230,  230,  230,  230,    0,    0,  230,  230,
678   250,  230,    0,    0,  230,  230,  230,  230,  230,  230,
679   230,  230,  230,  230,  230,  230,  230,  230,  230,    0,
680     0,    0,  230,  230,  230,  230,  230,  230,  230,  230,
681   230,    0,  248,  250,  207,  208,  209,  210,    0,    0,
682   250,  250,    0,    0,  250,  207,  208,  209,  210,    0,
683     0,    0,    0,    0,    0,    0,    0,    0,    0,  250,
684   250,    0,  250,    0,    0,    0,    0,    0,    0,    0,
685     0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
686    57,   58,   59,   60,   61,   62,   63,   64,   65,   66,
687    67,    0,    0,  250,    0,    0,  250,    0,    0,    0,
688     0,    0,    0,    0,    0,    0,    0,    0,    0,   79,
689    80,   81,   82,    0,    0,    0,    0,    0,    0,  252,
690     0,    0,    0,    0,    0,  250,    0,   83,   84,   85,
691    86,   87,   88,   89,   90,   91,    0,    0,   16,    0,
692     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
693     0,    0,  252,    0,    0,    0,    0,    0,    0,  252,
694   252,    0,    0,  252,    0,    0,    0,    0,    0,    0,
695     0,    0,   16,    0,    0,  204,    0,    0,  252,  252,
696     0,  252,    0,    0,    0,    0,    0,    0,    0,    0,
697     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
698     0,    0,    0,    0,   16,    0,    0,    0,    0,    0,
699     0,    0,  252,    0,    0,  252,    0,    0,    0,    0,
700     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
701     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
702     0,    0,    0,    0,  252,    0,    0,    0,    0,    0,
703     0,    0,    0,    0,    0,    0,    0,  250,  250,  250,
704   250,    0,    0,  250,  250,  250,  250,  250,  250,    0,
705     0,    0,    0,    0,    0,    0,    0,  250,  250,    0,
706   250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
707   250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
708   250,  250,  250,    0,    0,  250,  250,  250,  250,  250,
709   250,  250,  250,  250,  250,  250,  250,  250,  250,    0,
710     0,    0,    0,    0,  250,  250,  250,  250,  250,  250,
711   250,  250,  250,  250,  250,    0,  204,  250,  250,  250,
712   250,    0,  204,  250,  250,    0,  250,  204,    0,  250,
713   250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
714   250,  250,  250,  250,    0,    0,    0,  250,  250,  250,
715   250,  250,  250,  250,  250,  250,  252,  252,  252,  252,
716     0,  204,  252,  252,  252,  252,  252,  252,    0,    0,
717     0,    0,    0,    0,    0,    0,  252,  252,    0,  252,
718   252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
719   252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
720   252,  252,    0,    0,  252,  252,  252,  252,  252,  252,
721   252,  252,  252,  252,  252,  252,  252,  252,    0,    0,
722     0,   15,    0,  252,  252,  252,  252,  252,  252,  252,
723   252,  252,  252,  252,    0,    0,  252,  252,  252,  252,
724     0,    0,  252,  252,  251,  252,    0,    0,  252,  252,
725   252,  252,  252,  252,  252,  252,  252,  252,  252,  252,
726   252,  252,  252,    0,    0,    0,  252,  252,  252,  252,
727   252,  252,  252,  252,  252,    0,    0,  251,    0,    0,
728    15,    0,    0,    0,  251,  251,    0,    0,  251,    0,
729     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
730     0,    0,    0,  251,  251,    0,  251,    0,    0,    0,
731     0,    0,    0,    0,   15,    0,    0,  203,    0,    0,
732     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
733     0,    0,    0,    0,    0,    0,    0,  251,    0,    0,
734   251,    0,    0,    0,    0,    0,   15,    0,    0,    0,
735     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
736     0,    0,    0,  249,    0,    0,    0,    0,    0,  251,
737     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
738     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
739     0,    0,    0,    0,    0,    0,  249,    0,    0,    0,
740     0,    0,    0,  249,  249,    0,    0,  249,    0,    0,
741     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
742     0,    0,  249,  249,    0,  249,    0,    0,    0,    0,
743     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
744     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
745     0,    0,    0,    0,    0,    0,  249,    0,    0,  249,
746     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
747     0,    0,    0,    0,    0,    0,    0,    0,  203,    0,
748     0,    0,    0,    0,  203,    0,    0,    0,  249,  203,
749     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
750     0,  251,  251,  251,  251,    0,    0,  251,  251,  251,
751   251,  251,  251,    0,    0,    0,    0,    0,    0,    0,
752     0,  251,  251,  203,  251,  251,  251,  251,  251,  251,
753   251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
754   251,  251,  251,  251,  251,  251,  251,    0,    0,  251,
755   251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
756   251,  251,  251,    0,    0,    0,    0,    0,  251,  251,
757   251,  251,  251,  251,  251,  251,  251,  251,  251,    0,
758     0,  251,  251,  251,  251,    0,    0,  251,  251,    0,
759   251,    0,    0,  251,  251,  251,  251,  251,  251,  251,
760   251,  251,  251,  251,  251,  251,  251,  251,    0,    0,
761     0,  251,  251,  251,  251,  251,  251,  251,  251,  251,
762   249,  249,  249,  249,    0,    0,  249,  249,  249,  249,
763   249,  249,    0,    0,    0,    0,    0,    0,    0,    0,
764   249,  249,    0,  249,  249,  249,  249,  249,  249,  249,
765   249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
766   249,  249,  249,  249,  249,  249,    0,    0,  249,  249,
767   249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
768   249,  249,    0,    0,    0,    0,    0,  249,  249,  249,
769   249,  249,  249,  249,  249,  249,  249,  249,    0,    0,
770   249,  249,  249,  249,    0,    0,  249,  249,  158,  249,
771     0,    0,  249,  249,  249,  249,  249,  249,  249,  249,
772   249,  249,  249,  249,  249,  249,  249,    0,    0,    0,
773   249,  249,  249,  249,  249,  249,  249,  249,  249,    0,
774     0,  158,    0,    0,    0,    0,    0,    0,  158,  158,
775     0,  158,  158,  158,    0,    0,    0,    0,    0,    0,
776     0,    0,    0,    0,    0,    0,    0,  158,    0,    0,
777   158,    0,    0,    0,    0,    0,    0,    0,    0,    0,
778     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
779     0,    0,    0,    0,    0,    0,    0,   57,    0,    0,
780     0,  158,    0,    0,  158,    0,    0,    0,    0,    0,
781     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
782     0,    0,    0,    0,    0,    0,    0,  254,    0,    0,
783     0,    0,    0,  158,    0,    0,    0,    0,   57,    0,
784     0,   57,    0,    0,    0,    0,    0,    0,    0,    0,
785     0,    0,    0,    0,    0,    0,   57,    0,    0,    0,
786   254,    0,    0,    0,    0,    0,    0,  254,  254,    0,
787     0,  254,    0,    0,    0,    0,    0,    0,    0,    0,
788     0,    0,    0,    0,    0,    0,  254,    0,    0,    0,
789    57,    0,    0,    0,    0,    0,    0,    0,    0,    0,
790     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
791     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
792   254,    0,   57,  254,    0,    0,    0,    0,    0,    0,
793     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
794     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
795     0,    0,  254,    0,    0,    0,    0,    0,    0,    0,
796     0,    0,    0,    0,    0,  158,  158,  158,  158,    0,
797     0,  158,    0,  158,  158,  158,  158,    0,    0,    0,
798     0,    0,    0,    0,    0,  158,  158,    0,  158,  158,
799   158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
800   158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
801     0,    0,    0,    0,  158,  158,  158,  158,  158,  158,
802   158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
803   158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
804   158,  158,  158,    0,    0,  158,  158,  158,  158,    0,
805     0,  158,  158,    0,    0,    0,    0,    0,    0,    0,
806     0,   57,    0,  158,  158,  158,  158,  158,  158,  158,
807   158,  158,    0,    0,    0,  158,  158,  158,  158,  158,
808   158,  158,  158,  158,  254,  254,  254,  254,   57,    0,
809   254,  254,  254,  254,  254,  254,    0,    0,    0,    0,
810     0,    0,    0,    0,  254,  254,    0,  254,  254,  254,
811   254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
812   254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
813     0,    0,  254,  254,  254,  254,  254,  254,  254,  254,
814   254,  254,  254,  254,  254,  254,    0,   57,    0,    0,
815     0,  254,  254,  254,  254,  254,  254,  254,  254,  254,
816   254,  254,    0,    0,  254,  254,  254,  254,    0,    0,
817   254,  254,  253,  254,    0,    0,  254,  254,  254,  254,
818     0,    0,  254,  254,  254,  254,  254,  254,  254,  254,
819   254,    0,    0,    0,  254,  254,  254,  254,  254,  254,
820   254,  254,  254,    0,    0,  253,    0,    0,    0,    0,
821     0,    0,  253,  253,    0,    0,  253,    0,    0,    0,
822     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
823     0,  253,    0,    0,    0,    0,    0,    0,    0,    0,
824     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
825     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
826     0,    0,    0,    0,    0,  253,    0,    0,  253,    0,
827     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
828     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
829     0,  159,    0,    0,    0,    0,    0,  253,    0,    0,
830     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
831     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
832     0,    0,    0,    0,  159,    0,    0,    0,    0,    0,
833     0,  159,  159,    0,  159,  159,  159,    0,    0,    0,
834     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
835   159,    0,    0,  159,    0,    0,    0,    0,    0,    0,
836     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
837     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
838     0,    0,    0,    0,  159,    0,    0,  159,    0,    0,
839     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
840     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
841     0,    0,    0,    0,    0,    0,  159,    0,    0,    0,
842     0,    0,    0,    0,    0,    0,    0,    0,    0,  253,
843   253,  253,  253,    0,    0,  253,  253,  253,  253,  253,
844   253,    0,    0,    0,    0,    0,    0,    0,    0,  253,
845   253,    0,  253,  253,  253,  253,  253,  253,  253,  253,
846   253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
847   253,  253,  253,  253,  253,    0,    0,  253,  253,  253,
848   253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
849   253,    0,    0,    0,    0,    0,  253,  253,  253,  253,
850   253,  253,  253,  253,  253,  253,  253,    0,    0,  253,
851   253,  253,  253,    0,    0,  253,  253,    0,  253,    0,
852     0,  253,  253,  253,  253,    0,    0,  253,  253,  253,
853   253,  253,  253,  253,  253,  253,    0,    0,    0,  253,
854   253,  253,  253,  253,  253,  253,  253,  253,  159,  159,
855   159,  159,    0,    0,  159,    0,  159,  159,  159,  159,
856     0,    0,    0,    0,    0,    0,    0,    0,  159,  159,
857     0,  159,  159,  159,  159,  159,  159,  159,  159,  159,
858   159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
859   159,  159,  159,    0,    0,    0,    0,  159,  159,  159,
860   159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
861   159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
862   159,  159,  159,  159,  159,  159,    0,    0,  159,  159,
863   159,  159,    0,    0,  159,  159,  255,    0,    0,    0,
864     0,    0,    0,    0,    0,    0,  159,  159,  159,  159,
865   159,  159,  159,  159,  159,    0,    0,    0,  159,  159,
866   159,  159,  159,  159,  159,  159,  159,    0,    0,  255,
867     0,    0,    0,    0,    0,    0,  255,  255,    0,    0,
868   255,    0,    0,    0,    0,    0,    0,    0,    0,    0,
869     0,    0,    0,    0,    0,  255,    0,    0,    0,    0,
870     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
871     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
872     0,    0,    0,    0,    0,    0,    0,    0,    0,  255,
873     0,    0,  255,    0,    0,    0,    0,    0,    0,    0,
874     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
875     0,    0,    0,    0,    0,  256,    0,    0,    0,    0,
876     0,  255,    0,    0,    0,    0,    0,    0,    0,    0,
877     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
878     0,    0,    0,    0,    0,    0,    0,    0,  256,    0,
879     0,    0,    0,    0,    0,  256,  256,    0,    0,  256,
880     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
881     0,    0,    0,    0,  256,    0,    0,    0,    0,    0,
882     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
883     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
884     0,    0,    0,    0,    0,    0,    0,    0,  256,    0,
885     0,  256,    0,    0,    0,    0,    0,    0,    0,    0,
886     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
887     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
888   256,    0,    0,    0,    0,    0,    0,    0,    0,    0,
889     0,    0,    0,  255,  255,  255,  255,    0,    0,  255,
890   255,  255,  255,  255,  255,    0,    0,    0,    0,    0,
891     0,    0,    0,  255,  255,    0,  255,  255,  255,  255,
892   255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
893   255,  255,  255,  255,  255,  255,  255,  255,  255,    0,
894     0,  255,  255,  255,  255,  255,  255,  255,  255,  255,
895   255,  255,  255,  255,  255,    0,    0,    0,    0,    0,
896   255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
897   255,    0,    0,  255,  255,  255,  255,    0,    0,  255,
898   255,    0,  255,    0,    0,  255,  255,    0,    0,    0,
899     0,  255,  255,  255,  255,  255,  255,  255,  255,  255,
900     0,    0,    0,  255,  255,  255,  255,  255,  255,  255,
901   255,  255,  256,  256,  256,  256,    0,    0,  256,  256,
902   256,  256,  256,  256,    0,    0,    0,    0,    0,    0,
903     0,    0,  256,  256,    0,  256,  256,  256,  256,  256,
904   256,  256,  256,  256,  256,  256,  256,  256,  256,  256,
905   256,  256,  256,  256,  256,  256,  256,  256,    0,    0,
906   256,  256,  256,  256,  256,  256,  256,  256,  256,  256,
907   256,  256,  256,  256,    0,    0,    0,    0,    0,  256,
908   256,  256,  256,  256,  256,  256,  256,  256,  256,  256,
909     0,    0,  256,  256,  256,  256,    0,    0,  256,  256,
910   140,  256,    0,    0,    0,  256,    0,    0,    0,    0,
911   256,  256,  256,  256,  256,  256,  256,  256,  256,    0,
912     0,    0,  256,  256,  256,  256,  256,  256,  256,  256,
913   256,    0,    0,  140,    0,    0,    0,    0,    0,    0,
914   140,  140,    0,  140,  140,  140,    0,    0,    0,    0,
915     0,    0,    0,    0,    0,    0,    0,    0,    0,  140,
916     0,    0,  140,    0,    0,    0,    0,    0,    0,    0,
917     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
918     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
919     0,    0,    0,  140,    0,    0,  140,    0,    0,    0,
920     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
921     0,    0,    0,    0,    0,    0,    0,    0,    0,  148,
922     0,    0,    0,    0,    0,  140,    0,    0,    0,    0,
923     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
924     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
925     0,    0,  148,    0,    0,    0,    0,    0,    0,  148,
926   148,    0,    0,  148,    0,    0,    0,    0,    0,    0,
927     0,    0,    0,    0,    0,    0,    0,    0,  148,    0,
928     0,  148,    0,    0,    0,    0,    0,    0,    0,    0,
929     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
930     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
931     0,    0,  148,    0,    0,  148,    0,    0,    0,    0,
932     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
933     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
934     0,    0,    0,    0,  148,    0,    0,    0,    0,    0,
935     0,    0,    0,    0,    0,    0,    0,  140,  140,  140,
936   140,    0,    0,  140,    0,  140,  140,  140,  140,    0,
937     0,    0,    0,    0,    0,    0,    0,  140,  140,    0,
938   140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
939   140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
940   140,  140,    0,    0,    0,    0,  140,  140,  140,  140,
941   140,  140,  140,  140,  140,  140,  140,  140,  140,   41,
942     0,    0,    0,    0,  140,  140,  140,  140,  140,  140,
943   140,  140,  140,  140,  140,    0,    0,  140,  140,  140,
944   140,    0,    0,  140,  140,    0,    0,    0,    0,    0,
945     0,   32,    0,    0,    0,  140,  140,  140,  140,  140,
946   140,  140,  140,  140,    0,    0,    0,  140,  140,  140,
947   140,  140,  140,  140,  140,  140,  148,  148,  148,  148,
948     0,    0,  148,   33,  148,  148,  148,  148,    0,    0,
949     0,    0,    0,    0,    0,    0,  148,  148,    0,  148,
950   148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
951   148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
952   148,    0,    0,    0,    0,  148,  148,  148,  148,  148,
953   148,  148,  148,  148,  148,  148,  148,  148,    0,    0,
954     0,    0,    0,  148,  148,  148,  148,  148,  148,  148,
955   148,  148,  148,  148,    0,    0,  148,  148,  148,  148,
956     0,    0,  148,  148,  154,    0,    0,    0,    0,    0,
957     0,    0,    0,    0,  148,  148,  148,  148,  148,  148,
958   148,  148,  148,    0,    0,    0,  148,  148,  148,  148,
959   148,  148,  148,  148,  148,    0,    0,  154,    0,    0,
960     0,    0,    0,    0,  154,  154,    0,    0,  154,    0,
961     0,    0,    0,    0,    0,    0,    0,    6,    7,    0,
962     8,    9,    0,  154,    0,    0,    0,    0,    0,   10,
963    11,   12,   13,   14,   15,   16,   17,    0,    0,   18,
964     0,    0,   19,   20,   21,   22,    0,    0,    0,    0,
965     0,    0,    0,    0,    0,    0,    0,  154,    0,    0,
966   154,    0,    0,    0,    0,    0,    0,    0,    0,    0,
967     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
968     0,    0,    0,   91,    0,    0,    0,    0,    0,  154,
969     0,    0,    0,    0,    0,   23,    0,    0,    0,    0,
970     0,   24,   25,    0,    0,   26,    0,   27,    0,    0,
971     0,    0,    0,    0,    0,    0,   91,    0,    0,    0,
972     0,    0,    0,   91,   28,    0,   29,    0,    0,    0,
973     0,    0,    0,    0,    0,   30,   31,    0,    0,    0,
974     0,    0,   91,    0,    0,    0,    0,    0,    0,    0,
975     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
976     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
977     0,    0,    0,    0,    0,    0,   91,    0,    0,   91,
978     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
979     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
980     0,    0,    0,    0,    0,    0,    0,    0,   91,    0,
981     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
982     0,  154,  154,  154,  154,    0,    0,  154,    0,  154,
983   154,  154,  154,    0,    0,    0,    0,    0,    0,    0,
984     0,  154,  154,    0,  154,  154,  154,  154,  154,  154,
985   154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
986   154,  154,  154,  154,  154,  154,    0,    0,    0,    0,
987   154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
988   154,  154,  154,    0,    0,    0,    0,    0,  154,  154,
989   154,  154,  154,  154,  154,  154,  154,  154,  154,    0,
990     0,  154,  154,  154,  154,    0,    0,  154,  154,    0,
991     0,    0,    0,   32,    0,    0,    0,    0,    0,  154,
992   154,  154,  154,  154,  154,  154,  154,  154,    0,    0,
993     0,  154,  154,  154,  154,  154,  154,  154,  154,  154,
994    91,   91,   91,   91,    0,   33,   91,    0,   91,   91,
995    91,   91,    0,    0,    0,    0,    0,    0,    0,    0,
996    91,   91,    0,   91,   91,   91,   91,   91,   91,   91,
997    91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
998    91,   91,   91,   91,   91,    0,    0,    0,    0,    0,
999    91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
1000    91,   91,    0,    0,    0,    0,    0,   91,   91,   91,
1001    91,   91,   91,   91,   91,   91,   91,   91,    0,    0,
1002    91,   91,   91,   91,    0,    0,   91,   91,   87,    0,
1003     0,    0,    0,    0,    0,    0,    0,    0,   91,   91,
1004    91,   91,   91,   91,   91,   91,   91,    0,    0,    0,
1005    91,   91,   91,   91,   91,   91,   91,   91,   91,    0,
1006     0,   87,    0,    0,    0,    0,    0,    0,   87,    0,
1007     0,    0,    0,    0,    0,    0,    0,    0,    0,    6,
1008     7,    0,    8,    9,    0,    0,    0,   87,    0,    0,
1009     0,   10,   11,   12,   13,   14,   15,   16,   17,    0,
1010     0,   18,    0,    0,   19,   20,   21,   22,    0,    0,
1011     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1012     0,   87,    0,    0,   87,    0,    0,    0,    0,    0,
1013     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1014     0,    0,    0,    0,    0,    0,    0,   88,    0,    0,
1015     0,    0,    0,   87,    0,    0,    0,   23,    0,    0,
1016     0,    0,    0,   24,   25,    0,    0,   26,    0,   27,
1017     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1018    88,    0,    0,    0,    0,    0,   28,   88,   29,    0,
1019     0,    0,    0,    0,    0,    0,    0,   30,   31,    0,
1020     0,    0,    0,    0,    0,    0,   88,    0,    0,    0,
1021     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1022     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1023     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1024    88,    0,    0,   88,    0,    0,    0,    0,    0,    0,
1025     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1026     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1027     0,    0,   88,    0,    0,    0,    0,    0,    0,    0,
1028     0,    0,    0,    0,    0,   87,   87,   87,   87,    0,
1029     0,   87,    0,   87,   87,   87,   87,    0,    0,    0,
1030     0,    0,    0,    0,    0,   87,   87,    0,   87,   87,
1031    87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
1032    87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
1033     0,    0,    0,    0,    0,   87,   87,   87,   87,   87,
1034    87,   87,   87,   87,   87,   87,   87,    0,    0,    0,
1035     0,    0,   87,   87,   87,   87,   87,   87,   87,   87,
1036    87,   87,   87,    0,    0,   87,   87,   87,   87,    0,
1037     0,   87,   87,    0,    0,    0,    0,    6,    0,    0,
1038     0,    0,    0,   87,   87,   87,   87,   87,   87,   87,
1039    87,   87,    0,    0,    0,   87,   87,   87,   87,   87,
1040    87,   87,   87,   87,   88,   88,   88,   88,    0,    6,
1041    88,    0,   88,   88,   88,   88,    0,    0,    0,    0,
1042     0,    0,    0,    0,   88,   88,    0,   88,   88,   88,
1043    88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
1044    88,   88,   88,   88,   88,   88,   88,   88,   88,    0,
1045     0,    0,    0,    0,   88,   88,   88,   88,   88,   88,
1046    88,   88,   88,   88,   88,   88,    0,    0,    0,    0,
1047     0,   88,   88,   88,   88,   88,   88,   88,   88,   88,
1048    88,   88,    0,    0,   88,   88,   88,   88,    0,    0,
1049    88,   88,   89,    0,    0,    0,    0,    0,    0,    0,
1050     0,    0,   88,   88,   88,   88,   88,   88,   88,   88,
1051    88,    0,    0,    0,   88,   88,   88,   88,   88,   88,
1052    88,   88,   88,    0,    0,   89,    0,    0,    0,    0,
1053     0,    0,   89,    0,    0,    0,    0,    0,    0,    0,
1054     0,    0,    0,    6,    6,    0,    6,    6,    0,    0,
1055     0,   89,    0,    0,    0,    6,    6,    6,    6,    6,
1056     6,    6,    6,    0,    0,    6,    0,    0,    6,    6,
1057     6,    6,    0,    0,    0,    0,    0,    0,    0,    0,
1058     0,    0,    0,    0,    0,   89,    0,    0,   89,    0,
1059     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1060     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1061     0,   90,    0,    0,    0,    0,    0,   89,    0,    0,
1062     0,    6,    0,    0,    0,    0,    0,    6,    6,    0,
1063     0,    6,    0,    6,    0,    0,    0,    0,    0,    0,
1064     0,    0,    0,    0,   90,    0,    0,    0,    0,    0,
1065     6,   90,    6,    0,    0,    0,    0,    0,    0,    0,
1066     0,    6,    6,    0,    0,    0,    0,    0,    0,    0,
1067    90,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1068     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1069     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1070     0,    0,    0,    0,   90,    0,    0,   90,    0,    0,
1071     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1072     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1073     0,    0,    0,    0,    0,    0,   90,    0,    0,    0,
1074     0,    0,    0,    0,    0,    0,    0,    0,    0,   89,
1075    89,   89,   89,    0,    0,   89,    0,   89,   89,   89,
1076    89,    0,    0,    0,    0,    0,    0,    0,    0,   89,
1077    89,    0,   89,   89,   89,   89,   89,   89,   89,   89,
1078    89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
1079    89,   89,   89,   89,    0,    0,    0,    0,    0,   89,
1080    89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
1081    89,    0,    0,    0,    0,    0,   89,   89,   89,   89,
1082    89,   89,   89,   89,   89,   89,   89,    0,    0,   89,
1083    89,   89,   89,    0,    0,   89,   89,    0,    0,    0,
1084     0,    0,    0,    0,    0,    0,    0,   89,   89,   89,
1085    89,   89,   89,   89,   89,   89,    0,    0,    0,   89,
1086    89,   89,   89,   89,   89,   89,   89,   89,   90,   90,
1087    90,   90,    0,    0,   90,    0,   90,   90,   90,   90,
1088     0,    0,    0,    0,    0,    0,    0,    0,   90,   90,
1089     0,   90,   90,   90,   90,   90,   90,   90,   90,   90,
1090    90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
1091    90,   90,   90,    0,    0,    0,    0,    0,   90,   90,
1092    90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
1093     0,    0,    0,    0,    0,   90,   90,   90,   90,   90,
1094    90,   90,   90,   90,   90,   90,    0,    0,   90,   90,
1095    90,   90,    0,    0,   90,   90,   93,    0,    0,    0,
1096     0,    0,    0,    0,    0,    0,   90,   90,   90,   90,
1097    90,   90,   90,   90,   90,    0,    0,    0,   90,   90,
1098    90,   90,   90,   90,   90,   90,   90,    0,    0,   93,
1099     0,    0,    0,    0,    0,    0,   93,    0,    0,    0,
1100     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1101     0,    0,    0,    0,    0,   93,    0,    0,    0,    0,
1102     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1103     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1104     0,    0,    0,    0,    0,    0,    0,    0,    0,   93,
1105     0,    0,   93,    0,    0,    0,    0,    0,    0,    0,
1106     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1107     0,    0,    0,    0,    0,   95,    0,    0,    0,    0,
1108     0,   93,    0,    0,    0,    0,    0,    0,    0,    0,
1109     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1110     0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
1111     0,    0,    0,    0,    0,   95,    0,    0,    0,    0,
1112     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1113     0,    0,    0,    0,   95,    0,    0,    0,    0,    0,
1114     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1115     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1116     0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
1117     0,   95,    0,    0,    0,    0,    0,    0,    0,    0,
1118     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1119     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1120    95,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1121     0,    0,    0,   93,   93,   93,   93,    0,    0,   93,
1122     0,   93,   93,   93,   93,    0,    0,    0,    0,    0,
1123     0,    0,    0,   93,   93,    0,   93,   93,   93,   93,
1124    93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
1125    93,   93,   93,   93,   93,   93,   93,   93,    0,    0,
1126     0,    0,    0,   93,   93,   93,   93,   93,   93,   93,
1127    93,   93,   93,   93,   93,    0,    0,    0,    0,    0,
1128    93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
1129    93,    0,    0,   93,   93,   93,   93,    0,    0,   93,
1130    93,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1131     0,   93,   93,   93,   93,   93,   93,   93,   93,   93,
1132     0,    0,    0,   93,   93,   93,   93,   93,   93,   93,
1133    93,   93,   95,   95,   95,   95,    0,    0,   95,    0,
1134    95,   95,   95,   95,    0,    0,    0,    0,    0,    0,
1135     0,    0,   95,   95,    0,   95,   95,   95,   95,   95,
1136    95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
1137    95,   95,   95,   95,   95,   95,   95,    0,    0,    0,
1138     0,    0,   95,   95,   95,   95,   95,   95,   95,   95,
1139    95,   95,   95,   95,    0,    0,    0,    0,    0,   95,
1140    95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
1141     0,    0,   95,   95,   95,   95,    0,    0,   95,   95,
1142    97,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1143    95,   95,   95,   95,   95,   95,   95,   95,   95,    0,
1144     0,    0,   95,   95,   95,   95,   95,   95,   95,   95,
1145    95,    0,    0,   97,    0,    0,    0,    0,    0,    0,
1146    97,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1147     0,    0,    0,    0,    0,    0,    0,    0,    0,   97,
1148     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1149     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1150     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1151     0,    0,    0,   97,    0,    0,   97,    0,    0,    0,
1152     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1153     0,    0,    0,    0,    0,    0,    0,    0,    0,   99,
1154     0,    0,    0,    0,    0,   97,    0,    0,    0,    0,
1155     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1156     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1157     0,    0,   99,    0,    0,    0,    0,    0,    0,   99,
1158     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1159     0,    0,    0,    0,    0,    0,    0,    0,   99,    0,
1160     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1161     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1162     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1163     0,    0,   99,    0,    0,   99,    0,    0,    0,    0,
1164     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1165     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1166     0,    0,    0,    0,   99,    0,    0,    0,    0,    0,
1167     0,    0,    0,    0,    0,    0,    0,   97,   97,   97,
1168    97,    0,    0,   97,    0,   97,   97,   97,   97,    0,
1169     0,    0,    0,    0,    0,    0,    0,   97,   97,    0,
1170    97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
1171    97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
1172    97,   97,    0,    0,    0,    0,    0,   97,   97,   97,
1173    97,   97,   97,   97,   97,   97,   97,   97,   97,    0,
1174     0,    0,    0,    0,   97,   97,   97,   97,   97,   97,
1175    97,   97,   97,   97,   97,    0,    0,   97,   97,   97,
1176    97,    0,    0,   97,   97,    0,    0,    0,    0,    0,
1177     0,    0,    0,    0,    0,   97,   97,   97,   97,   97,
1178    97,   97,   97,   97,    0,    0,    0,   97,   97,   97,
1179    97,   97,   97,   97,   97,   97,   99,   99,   99,   99,
1180     0,    0,   99,    0,   99,   99,   99,   99,    0,    0,
1181     0,    0,    0,    0,    0,    0,   99,   99,    0,   99,
1182    99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1183    99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1184    99,    0,    0,    0,    0,    0,   99,   99,   99,   99,
1185    99,   99,   99,   99,   99,   99,   99,   99,    0,    0,
1186     0,    0,    0,   99,   99,   99,   99,   99,   99,   99,
1187    99,   99,   99,   99,    0,    0,   99,   99,   99,   99,
1188     0,    0,   99,   99,  100,    0,    0,    0,    0,    0,
1189     0,    0,    0,    0,   99,   99,   99,   99,   99,   99,
1190    99,   99,   99,    0,    0,    0,   99,   99,   99,   99,
1191    99,   99,   99,   99,   99,    0,    0,  100,    0,    0,
1192     0,    0,    0,    0,  100,    0,    0,    0,    0,    0,
1193     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1194     0,    0,    0,  100,    0,    0,    0,    0,    0,    0,
1195     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1196     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1197     0,    0,    0,    0,    0,    0,    0,  100,    0,    0,
1198   100,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1199     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1200     0,    0,    0,  101,    0,    0,    0,    0,    0,  100,
1201     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1202     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1203     0,    0,    0,    0,    0,    0,  101,    0,    0,    0,
1204     0,    0,    0,  101,    0,    0,    0,    0,    0,    0,
1205     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1206     0,    0,  101,    0,    0,    0,    0,    0,    0,    0,
1207     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1208     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1209     0,    0,    0,    0,    0,    0,  101,    0,    0,  101,
1210     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1211     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1212     0,    0,    0,    0,    0,    0,    0,    0,  101,    0,
1213     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1214     0,  100,  100,  100,  100,    0,    0,  100,    0,  100,
1215   100,  100,  100,    0,    0,    0,    0,    0,    0,    0,
1216     0,  100,  100,    0,  100,  100,  100,  100,  100,  100,
1217   100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
1218   100,  100,  100,  100,  100,  100,    0,    0,    0,    0,
1219     0,  100,  100,  100,  100,  100,  100,  100,  100,  100,
1220   100,  100,  100,    0,    0,    0,    0,    0,  100,  100,
1221   100,  100,  100,  100,  100,  100,  100,  100,  100,    0,
1222     0,  100,  100,  100,  100,    0,    0,  100,  100,    0,
1223     0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
1224   100,  100,  100,  100,  100,  100,  100,  100,    0,    0,
1225     0,  100,  100,  100,  100,  100,  100,  100,  100,  100,
1226   101,  101,  101,  101,    0,    0,  101,    0,  101,  101,
1227   101,  101,    0,    0,    0,    0,    0,    0,    0,    0,
1228   101,  101,    0,  101,  101,  101,  101,  101,  101,  101,
1229   101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
1230   101,  101,  101,  101,  101,    0,    0,    0,    0,    0,
1231   101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
1232   101,  101,    0,    0,    0,    0,    0,  101,  101,  101,
1233   101,  101,  101,  101,  101,  101,  101,  101,    0,    0,
1234   101,  101,  101,  101,    0,    0,  101,  101,  102,    0,
1235     0,    0,    0,    0,    0,    0,    0,    0,  101,  101,
1236   101,  101,  101,  101,  101,  101,  101,    0,    0,    0,
1237   101,  101,  101,  101,  101,  101,  101,  101,  101,    0,
1238     0,  102,    0,    0,    0,    0,    0,    0,  102,    0,
1239     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1240     0,    0,    0,    0,    0,    0,    0,  102,    0,    0,
1241     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1242     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1243     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1244     0,  102,    0,    0,  102,    0,    0,    0,    0,    0,
1245     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1246     0,    0,    0,    0,    0,    0,    0,  104,    0,    0,
1247     0,    0,    0,  102,    0,    0,    0,    0,    0,    0,
1248     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1249     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1250   104,    0,    0,    0,    0,    0,    0,  104,    0,    0,
1251     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1252     0,    0,    0,    0,    0,    0,  104,    0,    0,    0,
1253     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1254     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1255     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1256   104,    0,    0,  104,    0,    0,    0,    0,    0,    0,
1257     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1258     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1259     0,    0,  104,    0,    0,    0,    0,    0,    0,    0,
1260     0,    0,    0,    0,    0,  102,  102,  102,  102,    0,
1261     0,  102,    0,  102,  102,  102,  102,    0,    0,    0,
1262     0,    0,    0,    0,    0,  102,  102,    0,  102,  102,
1263   102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
1264   102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
1265     0,    0,    0,    0,    0,  102,  102,  102,  102,  102,
1266   102,  102,  102,  102,  102,  102,  102,    0,    0,    0,
1267     0,    0,  102,  102,  102,  102,  102,  102,  102,  102,
1268   102,  102,  102,    0,    0,  102,  102,  102,  102,    0,
1269     0,  102,  102,    0,    0,    0,    0,    0,    0,    0,
1270     0,    0,    0,  102,  102,  102,  102,  102,  102,  102,
1271   102,  102,    0,    0,    0,  102,  102,  102,  102,  102,
1272   102,  102,  102,  102,  104,  104,  104,  104,    0,    0,
1273   104,    0,  104,  104,  104,  104,    0,    0,    0,    0,
1274     0,    0,    0,    0,  104,  104,    0,  104,  104,  104,
1275   104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
1276   104,  104,  104,  104,  104,  104,  104,  104,  104,    0,
1277     0,    0,    0,    0,  104,  104,  104,  104,  104,  104,
1278   104,  104,  104,  104,  104,  104,    0,    0,    0,    0,
1279     0,  104,  104,  104,  104,  104,  104,  104,  104,  104,
1280   104,  104,    0,    0,  104,  104,  104,  104,    0,    0,
1281   104,  104,  109,    0,    0,    0,    0,    0,    0,    0,
1282     0,    0,  104,  104,  104,  104,  104,  104,  104,  104,
1283   104,    0,    0,    0,  104,  104,  104,  104,  104,  104,
1284   104,  104,  104,    0,    0,  109,    0,    0,    0,    0,
1285     0,    0,  109,    0,    0,    0,    0,    0,    0,    0,
1286     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1287     0,  109,    0,    0,    0,    0,    0,    0,    0,    0,
1288     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1289     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1290     0,    0,    0,    0,    0,  109,    0,    0,  109,    0,
1291     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1292     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1293     0,  111,    0,    0,    0,    0,    0,  109,    0,    0,
1294     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1295     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1296     0,    0,    0,    0,  111,    0,    0,    0,    0,    0,
1297     0,  111,    0,    0,    0,    0,    0,    0,    0,    0,
1298     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1299   111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1300     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1301     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1302     0,    0,    0,    0,  111,    0,    0,  111,    0,    0,
1303     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1304     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1305     0,    0,    0,    0,    0,    0,  111,    0,    0,    0,
1306     0,    0,    0,    0,    0,    0,    0,    0,    0,  109,
1307   109,  109,  109,    0,    0,  109,    0,  109,  109,  109,
1308   109,    0,    0,    0,    0,    0,    0,    0,    0,  109,
1309   109,    0,  109,  109,  109,  109,  109,  109,  109,  109,
1310   109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
1311   109,  109,  109,  109,    0,    0,    0,    0,    0,  109,
1312   109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
1313   109,    0,    0,    0,    0,    0,  109,  109,  109,  109,
1314   109,  109,  109,  109,  109,  109,  109,    0,    0,  109,
1315   109,  109,  109,    0,    0,  109,  109,    0,    0,    0,
1316     0,    0,    0,    0,    0,    0,    0,  109,  109,  109,
1317   109,  109,  109,  109,  109,  109,    0,    0,    0,  109,
1318   109,  109,  109,  109,  109,  109,  109,  109,  111,  111,
1319   111,  111,    0,    0,  111,    0,  111,  111,  111,  111,
1320     0,    0,    0,    0,    0,    0,    0,    0,  111,  111,
1321     0,  111,  111,  111,  111,  111,  111,  111,  111,  111,
1322   111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
1323   111,  111,  111,    0,    0,    0,    0,    0,  111,  111,
1324   111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
1325     0,    0,    0,    0,    0,  111,  111,  111,  111,  111,
1326   111,  111,  111,  111,  111,  111,    0,    0,  111,  111,
1327   111,  111,    0,    0,  111,  111,  120,    0,    0,    0,
1328     0,    0,    0,    0,    0,    0,  111,  111,  111,  111,
1329   111,  111,  111,  111,  111,    0,    0,    0,  111,  111,
1330   111,  111,  111,  111,  111,  111,  111,    0,    0,  120,
1331     0,    0,    0,    0,    0,    0,  120,    0,    0,    0,
1332     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1333     0,    0,    0,    0,    0,  120,    0,    0,    0,    0,
1334     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1335     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1336     0,    0,    0,    0,    0,    0,    0,    0,    0,  120,
1337     0,    0,  120,    0,    0,    0,    0,    0,    0,    0,
1338     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1339     0,    0,    0,    0,    0,  133,    0,    0,    0,    0,
1340     0,  120,    0,    0,    0,    0,    0,    0,    0,    0,
1341     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1342     0,    0,    0,    0,    0,    0,    0,    0,  133,    0,
1343     0,    0,    0,    0,    0,  133,    0,    0,    0,    0,
1344     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1345     0,    0,    0,    0,  133,    0,    0,    0,    0,    0,
1346     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1347     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1348     0,    0,    0,    0,    0,    0,    0,    0,  133,    0,
1349     0,  133,    0,    0,    0,    0,    0,    0,    0,    0,
1350     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1351     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1352   133,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1353     0,    0,    0,  120,  120,  120,  120,    0,    0,  120,
1354     0,  120,  120,  120,  120,    0,    0,    0,    0,    0,
1355     0,    0,    0,  120,  120,    0,  120,  120,  120,  120,
1356   120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
1357   120,  120,  120,  120,  120,  120,  120,  120,    0,    0,
1358     0,    0,    0,  120,  120,  120,  120,  120,  120,  120,
1359   120,  120,  120,  120,  120,    0,    0,    0,    0,    0,
1360   120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
1361   120,    0,    0,  120,  120,  120,  120,    0,    0,  120,
1362   120,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1363     0,  120,  120,  120,  120,  120,  120,  120,  120,  120,
1364     0,    0,    0,  120,  120,  120,  120,  120,  120,  120,
1365   120,  120,  133,  133,  133,  133,    0,    0,  133,    0,
1366   133,  133,  133,  133,    0,    0,    0,    0,    0,    0,
1367     0,    0,  133,  133,    0,  133,  133,  133,  133,  133,
1368   133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
1369   133,  133,  133,  133,  133,  133,  133,    0,    0,    0,
1370     0,    0,  133,  133,  133,  133,  133,  133,  133,  133,
1371   133,  133,  133,  133,    0,    0,    0,    0,    0,  133,
1372   133,  133,  133,  133,  133,  133,  133,  133,  133,  133,
1373     0,    0,  133,  133,  133,  133,    0,    0,  133,  133,
1374   113,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1375   133,  133,  133,  133,  133,  133,  133,  133,  133,    0,
1376     0,    0,  133,  133,  133,  133,  133,  133,  133,  133,
1377   133,    0,    0,  113,    0,    0,    0,    0,    0,    0,
1378   113,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1379     0,    0,    0,    0,    0,    0,    0,    0,    0,  113,
1380     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1381     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1382     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1383     0,    0,    0,  113,    0,    0,  113,    0,    0,    0,
1384     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1385     0,    0,    0,    0,    0,    0,    0,    0,    0,  114,
1386     0,    0,    0,    0,    0,  113,    0,    0,    0,    0,
1387     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1388     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1389     0,    0,  114,    0,    0,    0,    0,    0,    0,  114,
1390     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1391     0,    0,    0,    0,    0,    0,    0,    0,  114,    0,
1392     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1393     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1394     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1395     0,    0,  114,    0,    0,  114,    0,    0,    0,    0,
1396     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1397     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1398     0,    0,    0,    0,  114,    0,    0,    0,    0,    0,
1399     0,    0,    0,    0,    0,    0,    0,  113,  113,  113,
1400   113,    0,    0,  113,    0,  113,  113,  113,  113,    0,
1401     0,    0,    0,    0,    0,    0,    0,  113,  113,    0,
1402   113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
1403   113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
1404   113,  113,    0,    0,    0,    0,    0,  113,  113,  113,
1405   113,  113,  113,  113,  113,  113,  113,  113,  113,    0,
1406     0,    0,    0,    0,  113,  113,  113,  113,  113,  113,
1407   113,  113,  113,  113,  113,    0,    0,  113,  113,  113,
1408   113,    0,    0,  113,  113,    0,    0,    0,    0,    0,
1409     0,    0,    0,    0,    0,  113,  113,  113,  113,  113,
1410   113,  113,  113,  113,    0,    0,    0,  113,  113,  113,
1411   113,  113,  113,  113,  113,  113,  114,  114,  114,  114,
1412     0,    0,  114,    0,  114,  114,  114,  114,    0,    0,
1413     0,    0,    0,    0,    0,    0,  114,  114,    0,  114,
1414   114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
1415   114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
1416   114,    0,    0,    0,    0,    0,  114,  114,  114,  114,
1417   114,  114,  114,  114,  114,  114,  114,  114,    0,    0,
1418     0,    0,    0,  114,  114,  114,  114,  114,  114,  114,
1419   114,  114,  114,  114,    0,    0,  114,  114,  114,  114,
1420     0,    0,  114,  114,  115,    0,    0,    0,    0,    0,
1421     0,    0,    0,    0,  114,  114,  114,  114,  114,  114,
1422   114,  114,  114,    0,    0,    0,  114,  114,  114,  114,
1423   114,  114,  114,  114,  114,    0,    0,  115,    0,    0,
1424     0,    0,    0,    0,  115,    0,    0,    0,    0,    0,
1425     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1426     0,    0,    0,  115,    0,    0,    0,    0,    0,    0,
1427     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1428     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1429     0,    0,    0,    0,    0,    0,    0,  115,    0,    0,
1430   115,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1431     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1432     0,    0,  181,    0,    0,    0,    0,    0,    0,  115,
1433     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1434     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1435     0,    0,    0,    0,    0,  181,    0,    0,    0,    0,
1436     0,    0,  181,    0,    0,    0,  181,  181,    0,    0,
1437     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1438     0,  181,    0,    0,    0,    0,    0,    0,    0,    0,
1439     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1440     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1441     0,    0,    0,    0,    0,  181,    0,    0,    0,    0,
1442     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1443     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1444     0,    0,    0,    0,    0,    0,    0,  181,    0,    0,
1445     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1446     0,  115,  115,  115,  115,    0,    0,  115,    0,  115,
1447   115,  115,  115,    0,    0,    0,    0,    0,    0,    0,
1448     0,  115,  115,    0,  115,  115,  115,  115,  115,  115,
1449   115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
1450   115,  115,  115,  115,  115,  115,    0,    0,    0,    0,
1451     0,  115,  115,  115,  115,  115,  115,  115,  115,  115,
1452   115,  115,  115,    0,    0,    0,    0,    0,  115,  115,
1453   115,  115,  115,  115,  115,  115,  115,  115,  115,    0,
1454     0,  115,  115,  115,  115,    0,    0,  115,  115,    0,
1455     0,    0,    0,    0,    0,    0,    0,    0,    0,  115,
1456   115,  115,  115,  115,  115,  115,  115,  115,    0,    0,
1457     0,  115,  115,  115,  115,  115,  115,  115,  115,  115,
1458   181,  181,  181,    0,    0,    0,    0,  181,  181,  181,
1459     0,    0,    0,    0,    0,    0,    0,    0,    0,  181,
1460   181,    0,  181,  181,  181,  181,  181,  181,  181,  181,
1461   181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
1462   181,  181,  181,  181,    0,    0,    0,    0,    0,  181,
1463   181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
1464   181,    0,    0,    0,    0,    0,  181,  181,  181,  181,
1465   181,  181,  181,  181,  181,  181,  181,    0,    0,  181,
1466   181,  181,  181,    0,    0,  181,  181,  156,    0,    0,
1467     0,    0,    0,    0,    0,  199,    0,  181,  181,  181,
1468   181,  181,  181,  181,  181,  181,    0,    0,    0,  181,
1469   181,  181,  181,  181,  181,  181,  181,  181,    0,    0,
1470   156,    0,    0,    0,    0,    0,    0,  156,  156,    0,
1471   156,  156,  156,    0,    0,    0,    0,    0,    0,    0,
1472   272,  273,  274,  284,    0,    0,  156,    0,    0,  156,
1473     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1474     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1475   306,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1476   156,    0,    0,  156,    0,    0,    0,    0,    0,    0,
1477     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1478     0,    0,    0,    0,    0,    0,  161,    0,    0,    0,
1479     0,    0,  156,    0,    0,  340,    0,    0,    0,    0,
1480     0,    0,    0,  348,    0,    0,    0,    0,    0,    0,
1481     0,    0,    0,    0,    0,    0,    0,    0,    0,  161,
1482     0,    0,    0,    0,    0,    0,  161,    0,    0,  161,
1483     0,  161,  161,    0,    0,    0,    0,    0,    0,    0,
1484     0,    0,    0,    0,    0,  161,    0,    0,    0,    0,
1485     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1486     0,    0,  199,    0,    0,    0,    0,    0,    0,    0,
1487     0,    0,    0,    0,    0,    0,    0,    0,    0,  161,
1488     0,    0,  161,    0,    0,    0,    0,    0,    0,    0,
1489     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1490     0,    0,    0,    0,    0,  395,  396,    0,    0,    0,
1491   397,  161,    0,    0,    0,    0,    0,    0,    0,    0,
1492     0,    0,    0,    0,  156,  156,  156,  156,    0,    0,
1493   156,    0,  156,  156,  156,  156,    0,    0,    0,    0,
1494     0,    0,    0,    0,  156,  156,    0,  156,  156,  156,
1495   156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
1496   156,  156,  156,  156,  156,  156,  156,  156,  156,    0,
1497     0,    0,    0,  156,  156,    0,    0,    0,    0,    0,
1498     0,    0,    0,    0,  425,  426,  156,  156,  156,  156,
1499   156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
1500   156,  156,  438,  439,    0,    0,    0,    0,    0,    0,
1501   156,  156,    0,    0,    0,    0,    0,    0,    0,    0,
1502     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1503     0,    0,    0,    0,  156,  156,  156,  156,  156,  156,
1504   156,  156,  156,  161,  161,  161,  161,    0,    0,  161,
1505     0,  161,  161,  161,  161,    0,    0,    0,    0,    0,
1506     0,    0,    0,  161,  161,    0,  161,  161,  161,  161,
1507   161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
1508   161,  161,  161,  161,  161,  161,  161,  161,    0,    0,
1509     0,  182,    0,  161,    0,    0,    0,    0,    0,    0,
1510     0,    0,    0,    0,    0,  161,  161,  161,  161,  161,
1511   161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
1512   161,    0,    0,    0,  182,    0,    0,    0,    0,  161,
1513   161,  182,  182,    0,    0,  182,  182,    0,    0,    0,
1514     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1515   182,    0,    0,  161,  161,  161,  161,  161,  161,  161,
1516   161,  161,    0,    0,    0,    0,    0,    0,    0,  249,
1517     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1518     0,    0,    0,    0,  182,    0,    0,  182,    0,    0,
1519     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1520     0,    0,  249,    0,    0,    0,    0,    0,    0,  249,
1521   249,    0,    0,  249,    0,    0,  182,    0,    0,    0,
1522     0,    0,    0,    0,    0,    0,    0,    0,  249,  249,
1523     0,  249,    0,    0,    0,    0,    0,    0,    0,    0,
1524     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1525     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1526     0,    0,  249,    0,    0,  249,    0,    0,    0,    0,
1527     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1528     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1529     0,    0,    0,    0,  249,    0,    0,    0,    0,    0,
1530     0,    0,    0,    0,    0,    0,   43,    0,    0,    0,
1531     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1532     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1533     0,    0,    0,    0,    0,    0,    0,    0,    0,   43,
1534     0,    0,    0,    0,    0,    0,   43,    0,  182,  182,
1535   182,  182,    0,    0,  182,    0,  182,  182,  182,  182,
1536     0,    0,    0,    0,    0,   43,    0,    0,  182,  182,
1537     0,  182,  182,  182,  182,    0,    0,  182,  182,  182,
1538   182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
1539   182,  182,  182,    0,    0,    0,    0,    0,  182,   43,
1540     0,    0,   43,    0,    0,    0,    0,    0,    0,    0,
1541     0,    0,    0,    0,    0,  182,  182,  182,  182,  182,
1542   182,  182,  182,  182,  182,  182,  249,  249,  249,  249,
1543     0,   43,  249,    0,  182,  182,    0,  249,    0,    0,
1544     0,    0,    0,    0,    0,   96,    0,    0,    0,    0,
1545     0,    0,    0,  249,  249,    0,    0,    0,  182,  182,
1546   182,  182,  182,  182,  182,  182,  182,    0,    0,    0,
1547     0,    0,    0,    0,    0,    0,  249,  249,  249,  249,
1548   249,  249,  249,  249,  249,  249,  249,  249,    0,    0,
1549     0,    0,    0,  249,  249,  249,  249,  249,  249,  249,
1550   249,  249,  249,  249,   96,    0,  249,  249,  249,  249,
1551     0,    0,    0,    0,    0,    0,   45,    0,  249,  249,
1552   249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
1553   249,  249,  249,    0,    0,    0,    0,    0,   96,    0,
1554     0,    0,    0,    0,  249,    0,    0,    0,    0,   45,
1555     0,    0,    0,    0,    0,    0,   45,    0,    0,    0,
1556     0,    0,    0,   43,   43,   43,   43,    0,    0,   43,
1557    96,    0,    0,    0,   43,   45,    0,    0,    0,    0,
1558     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1559    43,   43,    0,    0,    0,    0,    0,    0,    0,    0,
1560     0,    0,    0,    0,    0,    0,    0,    0,    0,   45,
1561     0,    0,   45,   43,   43,   43,   43,   43,   43,   43,
1562    43,   43,   43,   43,   43,    0,    0,   98,    0,    0,
1563    43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
1564    43,   45,    0,   43,   43,   43,   43,    0,    0,    0,
1565     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1566     0,   43,   43,   43,   43,   43,   43,   43,   43,   43,
1567     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1568     0,   43,    0,    0,    0,    0,   98,    0,    0,    0,
1569     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1570     0,    0,    0,    0,    0,   96,    0,    0,    0,    0,
1571    96,   96,   96,    0,    0,    0,    0,    0,    0,    0,
1572    98,    0,   96,   96,    0,   96,   96,   96,   96,   96,
1573    96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
1574    96,   96,   96,   96,   96,   96,   96,  204,    0,    0,
1575     0,    0,   98,    0,    0,    0,    0,    0,    0,    0,
1576     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1577     0,    0,    0,   45,   45,   45,   45,   92,    0,   45,
1578     0,    0,    0,    0,   45,    0,    0,    0,   96,   96,
1579     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1580    45,   45,    0,    0,    0,    0,    0,    0,    0,    0,
1581     0,    0,   96,   96,   96,   96,   96,   96,   96,   96,
1582    96,    0,    0,   45,   45,   45,   45,   45,   45,   45,
1583    45,   45,   45,   45,   45,    0,   92,    0,    0,    0,
1584    45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1585    45,    0,    0,   45,   45,   45,   45,    0,    0,    0,
1586     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1587    92,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1588     0,    0,    0,    0,    0,    0,    0,   98,    0,    0,
1589     0,   45,   98,   98,   98,   94,    0,    0,    0,    0,
1590     0,    0,   92,    0,   98,   98,    0,   98,   98,   98,
1591    98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
1592    98,   98,   98,   98,   98,   98,   98,   98,   98,  203,
1593     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1594     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1595     0,    0,    0,    0,   94,    0,    0,    0,    0,    0,
1596     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1597    98,   98,    0,    0,    0,    0,    0,    0,    0,    0,
1598     0,    0,    0,    0,    0,    0,    0,    0,   94,    0,
1599     0,    0,    0,    0,   98,   98,   98,   98,   98,   98,
1600    98,   98,   98,    0,    0,    0,    0,    0,    0,    0,
1601     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1602    94,    0,    0,    0,    0,    0,    0,    0,    0,  108,
1603     0,    0,    0,    0,    0,    0,    0,   92,    0,    0,
1604     0,    0,   92,   92,   92,    0,    0,    0,    0,    0,
1605     0,    0,    0,    0,   92,   92,    0,   92,   92,   92,
1606    92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
1607    92,   92,   92,   92,   92,   92,   92,   92,   92,    0,
1608     0,    0,    0,    0,    0,    0,    0,    0,  108,    0,
1609     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1610     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1611     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1612    92,   92,  108,    0,    0,    0,    0,    0,    0,    0,
1613     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1614     0,    0,    0,    0,   92,   92,   92,   92,   92,   92,
1615    92,   92,   92,  110,  108,   94,    0,    0,    0,    0,
1616    94,   94,   94,    0,    0,    0,    0,    0,    0,    0,
1617     0,    0,   94,   94,    0,   94,   94,   94,   94,   94,
1618    94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
1619    94,   94,   94,   94,   94,   94,   94,    0,    0,    0,
1620     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1621     0,    0,  110,    0,    0,    0,    0,    0,    0,    0,
1622     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1623     0,    0,    0,    0,    0,    0,    0,    0,   94,   94,
1624     0,    0,    0,    0,    0,    0,  110,    0,    0,    0,
1625     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1626     0,    0,   94,   94,   94,   94,   94,   94,   94,   94,
1627    94,    0,    0,    0,    0,    0,    0,    0,  110,    0,
1628     0,  119,    0,    0,    0,    0,    0,    0,    0,  108,
1629     0,    0,    0,    0,  108,  108,  108,    0,    0,    0,
1630     0,    0,    0,    0,    0,    0,  108,  108,    0,  108,
1631   108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
1632   108,  108,  108,  108,  108,  108,  108,  108,  108,  108,
1633   108,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1634   119,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1635     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1636     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1637     0,    0,  108,  108,  119,    0,    0,    0,    0,    0,
1638     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1639     0,    0,    0,    0,    0,    0,  108,  108,  108,  108,
1640   108,  108,  108,  108,  108,  112,  119,    0,    0,    0,
1641     0,    0,    0,  110,    0,    0,    0,    0,  110,  110,
1642   110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1643   110,  110,    0,  110,  110,  110,  110,  110,  110,  110,
1644   110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
1645   110,  110,  110,  110,  110,    0,    0,    0,    0,    0,
1646     0,    0,    0,    0,  112,    0,    0,    0,    0,    0,
1647     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1648     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1649     0,    0,    0,    0,    0,    0,  110,  110,  112,    0,
1650     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1651     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1652   110,  110,  110,  110,  110,  110,  110,  110,  110,    0,
1653   112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1654     0,  119,    0,    0,    0,    0,  119,  119,  119,    0,
1655    83,    0,    0,    0,    0,    0,    0,    0,  119,  119,
1656     0,  119,  119,  119,  119,  119,  119,  119,  119,  119,
1657   119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
1658   119,  119,  119,   83,    0,    0,    0,    0,    0,    0,
1659    83,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1660     0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
1661     0,    0,    0,    0,    0,    0,    0,  161,    0,    0,
1662     0,    0,    0,    0,  119,  119,    0,    0,    0,    0,
1663     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1664     0,    0,    0,   83,    0,    0,   83,    0,  119,  119,
1665   119,  119,  119,  119,  119,  119,  119,    0,    0,    0,
1666   161,    0,  161,  161,    0,  112,    0,    0,    0,    0,
1667   112,  112,  112,    0,    0,   83,  161,    0,    0,    0,
1668     0,    0,  112,  112,    0,  112,  112,  112,  112,  112,
1669   112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
1670   112,  112,  112,  112,  112,  112,  112,    0,    0,    0,
1671   161,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1672     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1673     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1674     0,    0,  161,    0,    0,    0,    0,    0,  112,  112,
1675     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1676     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1677     0,    0,  112,  112,  112,  112,  112,  112,  112,  112,
1678   112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1679     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1680     0,    0,    0,    0,    0,    0,    0,   83,   83,   83,
1681     0,    0,    0,   83,    0,   83,   83,   83,   83,    0,
1682     0,    0,    0,    0,    0,    0,    0,   83,   83,    0,
1683    83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
1684    83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
1685    83,   83,    0,    0,    0,    0,    0,   83,   83,   83,
1686    83,   83,   83,   83,   83,   83,   83,   83,   83,    0,
1687     0,    0,    0,    0,   83,   83,   83,   83,   83,   83,
1688    83,   83,   83,   83,   83,    0,    0,   83,   83,   83,
1689    83,    0,    0,   83,   83,    0,    0,    0,    0,    0,
1690     0,  161,  161,    0,  257,   83,   83,   83,   83,   83,
1691    83,   83,   83,   83,    0,    0,    0,   83,   83,   83,
1692    83,   83,   83,   83,   83,  161,  161,  161,  161,  161,
1693   161,  161,  161,  161,  161,  161,  161,  161,  161,  161,
1694   161,  257,    0,    0,    0,  257,  257,  257,  257,  257,
1695     0,  257,    0,    0,  161,  161,  161,  161,    0,    0,
1696     0,    0,    0,  257,  257,    0,  257,    0,    0,    0,
1697     0,    0,  161,  161,  161,  161,  161,  161,  161,  161,
1698   161,    0,    0,    0,    0,    0,   95,    0,    0,    0,
1699     0,    0,    0,   92,    0,    0,    0,  257,   94,    0,
1700     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1701     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1702     0,    0,    0,    0,    0,    0,    0,    0,    0,  257,
1703     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1704     0,    0,    0,    0,   32,    0,    0,    0,    0,   93,
1705     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1706     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1707     0,    0,    0,    0,    0,    0,   33,    0,    0,    0,
1708     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1709     0,    0,    0,    0,    0,    0,    6,    0,    0,    0,
1710     0,    0,    0,    6,    0,    0,    0,    0,    6,    0,
1711     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1712     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1713     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1714     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1715     0,    0,    0,    0,    6,    0,    0,    0,    0,    6,
1716     0,    0,    0,    0,    0,    0,    0,    0,  257,    0,
1717     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1718     0,    0,    0,    0,    0,    0,    6,    0,    0,    0,
1719     0,    0,    0,    0,    0,  257,    0,    0,    0,    0,
1720     0,    0,    0,    0,    0,    0,  257,    0,    0,  257,
1721   299,  300,   51,    8,    9,    0,   52,    0,    0,    0,
1722     0,   53,   10,   11,   12,   13,   14,   15,   16,   17,
1723     0,    0,   18,   95,    0,   19,   20,  301,  302,    0,
1724   110,    0,    0,    0,    0,   94,    0,    0,    0,    0,
1725     0,    0,    0,  257,  257,  257,  257,  257,  257,    0,
1726    56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
1727    66,   67,    0,    0,    0,    0,    0,   68,   69,   70,
1728    71,   72,   73,   74,   75,   76,   77,   78,   23,    0,
1729    79,   80,   81,   82,   24,   25,   93,    0,   26,    0,
1730    27,    0,    0,    0,    0,    0,    0,    0,   83,   84,
1731    85,   86,   87,   88,   89,   90,   91,   28,    0,   29,
1732     6,    6,    6,    6,    6,    0,    6,    0,   30,   31,
1733     0,    6,    6,    6,    6,    6,    6,    6,    6,    6,
1734     0,    0,    6,    0,    0,    6,    6,    6,    6,    0,
1735     0,    0,  111,    0,    0,    0,    0,    0,    0,  110,
1736   319,    0,    0,    0,   94,    0,    0,    0,    0,    0,
1737     6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
1738     6,    6,    0,    0,    0,    0,    0,    6,    6,    6,
1739     6,    6,    6,    6,    6,    6,    6,    6,    6,    0,
1740     6,    6,    6,    6,    6,    6,    0,    0,    6,    0,
1741     6,    0,    0,    0,    0,   93,    0,    0,    6,    6,
1742     6,    6,    6,    6,    6,    6,    6,    6,    0,    6,
1743     0,    0,    0,    0,    0,    0,    0,    0,    6,    6,
1744     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1745     0,    0,    0,    0,    0,    0,    0,   49,   50,   51,
1746     8,    0,    0,   52,    0,  126,  127,  128,   53,    0,
1747     0,    0,    0,    0,    0,    0,    0,  129,  130,    0,
1748   131,  132,  133,  134,  135,  136,  137,  138,  139,  140,
1749   141,  142,  143,  144,  145,  146,  147,  148,  149,  150,
1750   151,  152,    0,    0,    0,    0,    0,   56,   57,   58,
1751    59,   60,   61,   62,   63,   64,   65,   66,   67,    0,
1752     0,    0,    0,    0,   68,   69,   70,   71,   72,   73,
1753    74,   75,   76,   77,   78,  111,    0,   79,   80,   81,
1754    82,    0,   92,  153,  154,    0,    0,   94,  278,    0,
1755     0,    0,    0,    0,    0,   83,   84,   85,   86,   87,
1756    88,   89,   90,   91,    0,    0,    0,  155,  156,  157,
1757   158,  159,  160,  161,  162,   30,   49,   50,   51,    8,
1758     0,    0,   52,    0,    0,    0,    0,   53,    0,    0,
1759     0,    0,    0,    0,    0,    0,    0,    0,   93,    0,
1760     0,    0,    0,   54,   55,    0,    0,    0,    0,    0,
1761     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1762     0,    0,    0,    0,    0,    0,   56,   57,   58,   59,
1763    60,   61,   62,   63,   64,   65,   66,   67,    0,    0,
1764     0,    0,    0,   68,   69,   70,   71,   72,   73,   74,
1765    75,   76,   77,   78,   95,    0,   79,   80,   81,   82,
1766     0,   92,    0,    0,    0,    0,   94,    0,    0,    0,
1767     0,    0,    0,    0,   83,   84,   85,   86,   87,   88,
1768    89,   90,   91,    0,    0,    0,    0,    0,    0,    0,
1769     0,    0,    0,    0,   30,    0,    0,    0,    0,    0,
1770     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1771     0,    0,    0,    0,    0,    0,    0,   93,    0,    0,
1772     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1773     0,    0,    0,    0,    0,    0,    0,    0,  111,    0,
1774     0,    0,    0,    0,    0,  110,    0,    0,    0,    0,
1775    94,    0,    0,    0,    0,    0,    0,    0,    0,   49,
1776    50,   51,    8,    0,    0,   52,    0,    0,    0,    0,
1777    53,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1778     0,    0,    0,    0,    0,    0,   54,   55,    0,    0,
1779     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1780     0,   93,    0,    0,    0,    0,    0,    0,    0,   56,
1781    57,   58,   59,   60,   61,   62,   63,   64,   65,   66,
1782    67,    0,    0,    0,    0,    0,   68,   69,   70,   71,
1783    72,   73,   74,   75,   76,   77,   78,    0,    0,   79,
1784    80,   81,   82,    0,    0,    0,    0,    0,    0,    0,
1785     0,    0,    0,    0,    0,    0,    0,   83,   84,   85,
1786    86,   87,   88,   89,   90,   91,    0,    0,    0,    0,
1787     0,    0,    0,    0,    0,    0,    0,   30,   49,   50,
1788    51,    8,    0,    0,   52,    0,    0,    0,    0,   53,
1789     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1790     0,    0,    0,  111,    0,   54,   55,    0,    0,    0,
1791    92,    0,    0,    0,    0,   94,    0,    0,    0,    0,
1792     0,    0,    0,    0,    0,    0,    0,    0,   56,   57,
1793    58,   59,   60,   61,   62,   63,   64,   65,   66,   67,
1794     0,    0,    0,    0,    0,   68,   69,   70,   71,   72,
1795    73,   74,   75,   76,   77,   78,    0,    0,   79,   80,
1796    81,   82,   49,   50,   51,    8,   93,    0,   52,    0,
1797     0,    0,    0,   53,    0,    0,   83,   84,   85,   86,
1798    87,   88,   89,   90,   91,    0,    0,  111,    0,   54,
1799    55,    0,    0,    0,  285,    0,   30,    0,    0,   94,
1800     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1801     0,    0,   56,   57,   58,   59,   60,   61,   62,   63,
1802    64,   65,   66,   67,    0,    0,    0,    0,    0,   68,
1803    69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
1804     0,    0,   79,   80,   81,   82,    0,    0,    0,    0,
1805    93,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1806    83,   84,   85,   86,   87,   88,   89,   90,   91,    0,
1807     0,   95,    0,    0,    0,    0,    0,    0,  279,    0,
1808    30,    0,    0,   94,  278,    0,    0,    0,    0,    0,
1809     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1810     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1811     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1812     0,    0,    0,    0,    0,    0,    0,   49,   50,   51,
1813     8,    0,    0,   52,   93,    0,    0,    0,   53,    0,
1814     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1815     0,    0,    0,    0,   54,   55,   95,    0,    0,    0,
1816     0,    0,    0,  110,    0,  446,    0,    0,   94,    0,
1817     0,    0,    0,    0,    0,    0,    0,   56,   57,   58,
1818    59,   60,   61,   62,   63,   64,   65,   66,   67,    0,
1819     0,    0,    0,    0,   68,   69,   70,   71,   72,   73,
1820    74,   75,   76,   77,   78,    0,    0,   79,   80,   81,
1821    82,   49,   50,   51,    8,    0,    0,   52,    0,   93,
1822     0,    0,   53,    0,    0,   83,   84,   85,   86,   87,
1823    88,   89,   90,   91,    0,    0,    0,    0,   54,   55,
1824    95,    0,    0,    0,    0,   30,    0,  110,    0,    0,
1825     0,    0,   94,    0,    0,    0,    0,    0,    0,    0,
1826     0,   56,   57,   58,   59,   60,   61,   62,   63,   64,
1827    65,   66,   67,    0,    0,    0,    0,    0,   68,   69,
1828    70,   71,   72,   73,   74,   75,   76,   77,   78,    0,
1829     0,   79,   80,   81,   82,  275,   50,   51,    0,    0,
1830     0,  276,    0,   93,    0,    0,  277,    0,    0,   83,
1831    84,   85,   86,   87,   88,   89,   90,   91,    0,    0,
1832     0,    0,   54,   55,   95,    0,    0,    0,    0,   30,
1833     0,   92,    0,    0,    0,    0,   94,    0,    0,    0,
1834     0,    0,    0,    0,    0,   56,   57,   58,   59,   60,
1835    61,   62,   63,   64,   65,   66,   67,    0,    0,    0,
1836     0,    0,   68,   69,   70,   71,   72,   73,   74,   75,
1837    76,   77,   78,    0,    0,   79,   80,   81,   82,    0,
1838    49,   50,   51,    0,    0,    0,   52,   93,    0,    0,
1839     0,   53,    0,   83,   84,   85,   86,   87,   88,   89,
1840    90,   91,    0,    0,    0,    0,    0,   54,   55,   95,
1841     0,    0,    0,    0,    0,    0,  285,    0,    0,    0,
1842     0,   94,    0,    0,    0,    0,    0,    0,    0,    0,
1843    56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
1844    66,   67,    0,    0,    0,    0,    0,   68,   69,   70,
1845    71,   72,   73,   74,   75,   76,   77,   78,    0,    0,
1846    79,   80,   81,   82,   49,   50,   51,    0,    0,    0,
1847    52,    0,   93,    0,    0,   53,    0,    0,   83,   84,
1848    85,   86,   87,   88,   89,   90,   91,    0,    0,    0,
1849     0,   54,   55,   95,    0,    0,    0,    0,    0,    0,
1850   110,    0,    0,    0,    0,   94,    0,    0,    0,    0,
1851     0,    0,    0,    0,   56,   57,   58,   59,   60,   61,
1852    62,   63,   64,   65,   66,   67,    0,    0,    0,    0,
1853     0,   68,   69,   70,   71,   72,   73,   74,   75,   76,
1854    77,   78,    0,    0,   79,   80,   81,   82,   49,   50,
1855    51,    0,    0,    0,   52,    0,   93,    0,    0,   53,
1856     0,    0,   83,   84,   85,   86,   87,   88,   89,   90,
1857    91,    0,    0,    0,    0,   54,   55,    0,    0,    0,
1858     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1859     0,    0,    0,    0,    0,    0,    0,    0,   56,   57,
1860    58,   59,   60,   61,   62,   63,   64,   65,   66,   67,
1861     0,    0,    0,    0,    0,   68,   69,   70,   71,   72,
1862    73,   74,   75,   76,   77,   78,    0,    0,   79,   80,
1863    81,   82,    0,   49,   50,   51,    0,    0,    0,   52,
1864     0,    0,    0,    0,   53,    0,   83,   84,   85,   86,
1865    87,   88,   89,   90,   91,    0,    0,    0,    0,    0,
1866    54,   55,    0,    0,    0,    0,    0,    0,    0,    0,
1867     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1868     0,    0,    0,   56,   57,   58,   59,   60,   61,   62,
1869    63,   64,   65,   66,   67,    0,    0,    0,    0,    0,
1870    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
1871    78,    0,    0,   79,   80,   81,   82,   49,   50,   51,
1872     0,    0,    0,   52,    0,    0,    0,    0,   53,    0,
1873     0,   83,   84,   85,   86,   87,   88,   89,   90,   91,
1874     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1875     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1876     0,    0,    0,    0,    0,    0,    0,   56,   57,   58,
1877    59,   60,   61,   62,   63,   64,   65,   66,   67,    0,
1878     0,    0,    0,    0,   68,   69,   70,   71,   72,   73,
1879    74,   75,   76,   77,   78,    0,    0,   79,   80,   81,
1880    82,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1881     0,    0,    0,    0,    0,   83,   84,   85,   86,   87,
1882    88,   89,   90,   91,
1883 };
1884 static const short yycheck[] = {                         25,
1885     0,   41,  105,   29,   43,   31,   45,   44,    0,   59,
1886    43,   37,   45,  125,   37,  100,  260,  284,  285,   42,
1887    43,  260,   45,   37,   47,  257,  258,  107,   42,   43,
1888    44,   45,   59,   47,   43,  102,   45,   60,   92,   62,
1889   120,   41,   58,    4,   44,   61,   60,   58,   62,   41,
1890   284,  285,   44,   62,  260,  167,   43,   25,   45,   59,
1891   349,  350,  268,   31,   25,   61,   92,   59,   94,   95,
1892    31,   94,  258,  140,   41,   62,   37,   44,   96,  258,
1893    94,  107,    0,   41,   40,  111,   44,  141,  355,  356,
1894    37,  111,  348,   93,  120,   42,   43,  336,   45,   96,
1895    47,   93,    0,  129,  130,  131,  132,  133,  134,  135,
1896   136,  137,  138,  139,  140,  141,  351,  352,  144,  145,
1897   146,  355,  356,    0,   92,  125,   43,   44,   45,  155,
1898   156,  375,   61,  125,  160,  161,  221,  336,   36,  107,
1899    43,  167,   45,   37,   42,   37,  107,   94,   42,   43,
1900    42,   45,  120,   47,  262,   47,  275,  118,   40,  120,
1901   279,   41,   40,   43,  125,   45,   60,   40,   62,  137,
1902   138,  139,  140,  276,  277,   93,  230,  231,   40,  205,
1903   206,  207,  208,  209,  210,  211,  212,  213,  214,  215,
1904   216,  217,  218,  219,  220,  280,  157,  158,  159,  167,
1905    94,   40,   94,   40,  230,  231,  167,  125,  275,    0,
1906   121,  122,  279,   40,   40,  282,   93,   40,   40,  245,
1907    40,  258,  248,  249,  250,  279,  252,  253,  248,  249,
1908    37,  285,  252,  253,  291,   42,   43,  260,   45,  257,
1909    47,  260,   33,   61,  212,  263,   27,  262,  125,   40,
1910   268,  258,  220,  279,   45,  374,  375,   41,    0,  285,
1911   257,   41,   43,   43,  264,   45,  263,  306,   41,  264,
1912   373,  268,  264,  306,  328,  329,   43,   44,   45,  319,
1913   320,  321,  322,  323,  302,   94,  303,   94,    0,  408,
1914    46,  291,  411,  254,  255,  407,  322,  323,  259,  291,
1915    91,  327,  328,  329,  257,   96,   93,  374,  375,  125,
1916   302,  279,   93,  305,   43,   44,   45,   59,   93,    0,
1917    43,   44,   45,    0,  262,  257,  349,  350,  351,  352,
1918   353,  354,  123,   41,  262,  349,  350,  351,  352,  353,
1919   354,  408,   41,   44,  411,   41,   41,   59,    0,  349,
1920   350,   93,  375,   41,  322,  323,   41,  349,  350,  327,
1921    44,   37,   44,   41,    0,    0,   42,   43,   44,   45,
1922    41,   47,    0,  304,  349,  401,  402,  403,    0,  405,
1923    44,   93,   59,  125,   60,  257,   62,  262,  169,   41,
1924    41,  365,   44,  419,  420,  176,  177,  178,  179,  180,
1925   181,  182,  183,  184,  185,  186,   41,   59,   41,   44,
1926    91,  260,  305,  125,   41,  441,   93,   41,   94,   41,
1927   446,   41,   44,   59,   59,   43,   44,   45,   41,   41,
1928    37,   59,  346,  401,  402,   42,   43,   59,   45,    0,
1929    47,   93,  123,   43,   44,   45,  407,   41,  125,  262,
1930   260,  419,  420,   60,   44,   62,  346,   93,   93,  353,
1931   354,   43,   44,   45,  167,   93,  257,  258,  259,  260,
1932   261,   93,  263,  125,   43,   44,   45,  268,  269,  270,
1933   271,  272,  273,  274,  275,  276,  346,   94,  279,  125,
1934   125,  282,  283,  284,  285,  302,  346,  125,  305,   46,
1935   413,   31,   36,  125,  319,  320,  321,  322,  323,  195,
1936    46,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,  310,
1937   311,  312,  313,  314,  315,  316,  317,  318,   -1,   -1,
1938    -1,   -1,   -1,  324,  325,  326,  327,  328,  329,  330,
1939   331,  332,  333,  334,  335,   -1,  337,  338,  339,  340,
1940   341,  342,   -1,   -1,  345,   -1,  347,   -1,   -1,   -1,
1941    -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,  360,
1942   361,  362,  363,  364,    0,  366,  257,  258,   -1,  260,
1943   261,   -1,   -1,   -1,  375,  376,    0,   -1,  269,  270,
1944   271,  272,  273,  274,  275,  276,    0,   -1,  279,   -1,
1945    -1,  282,  283,  284,  285,  386,   -1,   33,   -1,  390,
1946   391,   37,  264,   -1,   40,   41,   42,   43,   44,   45,
1947    -1,   47,   -1,   -1,   -1,    0,   -1,   41,   -1,  264,
1948    44,   -1,    0,   59,   60,   -1,   62,   -1,   -1,  291,
1949    -1,   -1,  264,   -1,   -1,   59,   -1,   -1,   -1,   -1,
1950   302,   -1,   -1,  305,  335,   59,  291,   -1,    0,   -1,
1951   341,  342,   -1,    0,  345,   -1,  347,   93,   -1,  291,
1952    96,   -1,   -1,  349,  350,  351,  352,  353,  354,   93,
1953   287,   -1,   -1,  364,   59,  366,   -1,   -1,   -1,   93,
1954    -1,   59,   -1,    0,  375,  376,   -1,   -1,  350,  125,
1955    -1,   43,   -1,   45,   -1,   -1,   43,   -1,   45,   -1,
1956    -1,  125,   -1,   -1,   -1,  350,   -1,   59,   93,   -1,
1957    -1,  125,   59,   -1,   -1,   93,   33,   -1,  350,   -1,
1958    37,   -1,   -1,   40,   41,   42,   43,   44,   45,   -1,
1959    47,   -1,  349,  350,  351,  352,  353,  354,  284,  285,
1960   125,   93,   59,   60,   -1,   62,   93,  125,   -1,   -1,
1961    -1,  308,  309,  310,  311,  312,  313,  314,  315,  316,
1962   317,  318,  308,  309,  310,  311,  312,  313,  314,  315,
1963   316,  317,  318,  125,   -1,   -1,   93,   -1,  125,   96,
1964   337,  338,  339,  340,   -1,   -1,   -1,   -1,   -1,   -1,
1965    -1,  337,  338,  339,  340,   -1,   -1,   -1,  355,  356,
1966   357,  358,  359,  360,  361,  362,  363,   -1,  125,  355,
1967   356,  357,  358,  359,  360,  361,  362,  363,   -1,   -1,
1968    -1,  257,  258,  259,  260,   -1,   -1,  263,  264,  265,
1969   266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
1970   264,  277,  278,   -1,  280,  281,  282,  283,  284,  285,
1971   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
1972   296,  297,  298,  299,  300,  301,  302,  291,   -1,  305,
1973   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
1974   316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,
1975   326,  327,  328,  329,  330,  331,  332,  333,  334,   -1,
1976    91,  337,  338,  339,  340,   46,   -1,  343,  344,   -1,
1977   346,   -1,   -1,  349,  350,  351,  352,  353,  354,  355,
1978   356,  357,  358,  359,  360,  361,  362,  363,   -1,   -1,
1979    -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
1980   257,  258,  259,  260,   -1,   -1,  263,  264,  265,  266,
1981   267,  268,   -1,   -1,   91,   -1,   -1,   -1,   -1,   -1,
1982   277,  278,   -1,  280,  281,  282,  283,  284,  285,  286,
1983   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
1984   297,  298,  299,  300,  301,  302,   -1,   -1,  305,  306,
1985   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
1986   317,  318,   -1,   -1,    0,   -1,   -1,  324,  325,  326,
1987   327,  328,  329,  330,  331,  332,  333,  334,   -1,   -1,
1988   337,  338,  339,  340,   -1,   -1,  343,  344,    0,  346,
1989    -1,   -1,  349,  350,  351,  352,  353,  354,  355,  356,
1990   357,  358,  359,  360,  361,  362,  363,   -1,   -1,   -1,
1991   367,  368,  369,  370,  371,  372,  373,  374,  375,   -1,
1992    -1,   33,   -1,   59,   -1,   37,   -1,   -1,   40,   41,
1993    42,   43,   44,   45,   -1,   47,   -1,   91,  269,  270,
1994   271,  272,  273,  274,   -1,  276,   -1,   59,   60,   -1,
1995    62,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
1996    -1,   -1,   -1,   -1,   -1,   37,   -1,   -1,   -1,   -1,
1997    42,   43,   44,   45,   -1,   47,   -1,   -1,   -1,   -1,
1998    -1,   93,   -1,  260,   96,   -1,   -1,   -1,   60,  125,
1999    62,  268,  269,  270,  271,  272,  273,  274,   -1,  276,
2000    -1,   -1,   -1,  284,  285,   -1,   -1,    0,   -1,   -1,
2001    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
2002    -1,   -1,   94,   -1,   -1,   -1,   -1,  308,  309,  310,
2003   311,  312,  313,  314,  315,  316,  317,  318,   -1,   -1,
2004    33,   -1,   -1,   -1,   37,   -1,   -1,   40,   41,   42,
2005    43,   44,   45,   -1,   47,   -1,  337,  338,  339,  340,
2006    -1,   -1,   -1,   -1,   -1,   -1,   59,   60,   -1,   62,
2007    -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,  360,
2008   361,  362,  363,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2009    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2010    93,   -1,   -1,   96,   37,   -1,  260,   -1,   -1,   42,
2011    43,   -1,   45,   -1,   47,  269,  270,  271,  272,  273,
2012   274,   -1,  276,   -1,   -1,   -1,   -1,   60,   -1,   62,
2013    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2014    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,
2015    -1,  263,  264,  265,  266,  267,  268,   -1,   -1,   -1,
2016    -1,   94,   -1,   -1,   -1,  277,  278,   -1,  280,  281,
2017   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
2018   292,  293,  294,  295,  296,  297,  298,  299,  300,  301,
2019   302,   -1,   -1,  305,  306,  307,  308,  309,  310,  311,
2020   312,  313,  314,  315,  316,  317,  318,   -1,   -1,   -1,
2021    -1,   -1,  324,  325,  326,  327,  328,  329,  330,  331,
2022   332,  333,  334,   -1,   -1,  337,  338,  339,  340,   -1,
2023   302,  343,  344,  305,  346,   -1,   -1,  349,  350,  351,
2024   352,  353,  354,  355,  356,  357,  358,  359,  360,  361,
2025   362,  363,   -1,   -1,   -1,  367,  368,  369,  370,  371,
2026   372,  373,  374,  375,  257,  258,  259,  260,   -1,   -1,
2027   263,  264,  265,  266,  267,  268,   -1,  349,  350,  351,
2028   352,  353,  354,   -1,  277,  278,   -1,  280,  281,  282,
2029   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
2030   293,  294,  295,  296,  297,  298,  299,  300,  301,  302,
2031    -1,   -1,  305,  306,  307,  308,  309,  310,  311,  312,
2032   313,  314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,
2033    -1,  324,  325,  326,  327,  328,  329,  330,  331,  332,
2034   333,  334,   -1,   -1,  337,  338,  339,  340,   -1,   -1,
2035   343,  344,    0,  346,   -1,   -1,  349,  350,  351,  352,
2036   353,  354,  355,  356,  357,  358,  359,  360,  361,  362,
2037   363,   -1,   -1,   -1,  367,  368,  369,  370,  371,  372,
2038   373,  374,  375,   -1,   -1,   33,   -1,   -1,   -1,   37,
2039    -1,   -1,   40,   41,   42,   43,   44,   45,   -1,   47,
2040    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
2041    -1,   59,   60,   -1,   62,   -1,  349,  350,  351,  352,
2042   353,  354,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   37,
2043    -1,   -1,   -1,   -1,   42,   43,   44,   45,   -1,   47,
2044    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,
2045    41,   -1,   60,   44,   62,   -1,   -1,   -1,   -1,   -1,
2046    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
2047    -1,    0,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,
2048    -1,   -1,   -1,   -1,   -1,   -1,   94,   -1,   -1,   -1,
2049    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2050    -1,   -1,   93,   -1,   33,   -1,   -1,   -1,   37,   -1,
2051    -1,   40,   41,   42,   43,   44,   45,   -1,   47,   -1,
2052    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2053    59,   60,   -1,   62,  125,   -1,   -1,   -1,   37,   -1,
2054    -1,   -1,   -1,   42,   43,   -1,   45,   -1,   47,   -1,
2055    37,   -1,   -1,   -1,   -1,   42,   43,   -1,   45,   -1,
2056    47,   60,   -1,   62,   93,   -1,   -1,   96,   -1,   -1,
2057    -1,   -1,   -1,   60,   37,   62,   -1,   -1,   -1,   42,
2058    43,   -1,   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,
2059    -1,   -1,   -1,   -1,   -1,   94,  125,   60,   -1,   62,
2060    -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,   -1,  257,
2061   258,  259,  260,   -1,   -1,  263,  264,  265,  266,  267,
2062   268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,
2063   278,   94,  280,  281,  282,  283,  284,  285,  286,  287,
2064   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
2065   298,  299,  300,  301,  302,   -1,   -1,  305,  306,  307,
2066   308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
2067   318,   -1,   -1,  264,   -1,   -1,  324,  325,  326,  327,
2068   328,  329,  330,  331,  332,  333,  334,   -1,   -1,  337,
2069   338,  339,  340,   -1,  302,  343,  344,  305,  346,   -1,
2070   291,  349,  350,  351,  352,  353,  354,  355,  356,  357,
2071   358,  359,  360,  361,  362,  363,   -1,   -1,   -1,  367,
2072   368,  369,  370,  371,  372,  373,  374,  375,  257,  258,
2073   259,  260,   -1,   -1,  263,  264,  265,  266,  267,  268,
2074    -1,  349,  350,  351,  352,  353,  354,   -1,  277,  278,
2075    -1,  280,  281,  282,  283,  284,  285,  286,  287,  288,
2076   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
2077   299,  300,  301,  302,   -1,   -1,  305,  306,  307,  308,
2078   309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
2079    -1,  290,   -1,   -1,   -1,  324,  325,  326,  327,  328,
2080   329,  330,  331,  332,  333,  334,   -1,   -1,  337,  338,
2081   339,  340,   -1,   -1,  343,  344,    0,  346,   -1,   -1,
2082   349,  350,  351,  352,  353,  354,  355,  356,  357,  358,
2083   359,  360,  361,  362,  363,   -1,   -1,   -1,  367,  368,
2084   369,  370,  371,  372,  373,  374,  375,   -1,   -1,   33,
2085   349,  350,  351,  352,  353,  354,   40,   41,   -1,   43,
2086    44,   45,  349,  350,  351,  352,  353,  354,   -1,   -1,
2087    -1,   -1,   -1,   -1,   -1,   59,   60,   -1,   62,   -1,
2088    -1,   -1,   -1,   -1,   -1,   -1,  349,   -1,  351,  352,
2089   353,  354,   -1,   37,   -1,   -1,   -1,   -1,   42,   43,
2090    44,   45,   -1,   47,   -1,   -1,   -1,   -1,   -1,   93,
2091    -1,   -1,   96,   -1,   -1,   -1,   60,   -1,   62,   -1,
2092    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2093    -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
2094    -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2095    94,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2096    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
2097    -1,   -1,   -1,   -1,   -1,   40,   41,   -1,   43,   44,
2098    45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2099    -1,   -1,   -1,   -1,   59,   60,   -1,   62,   -1,   -1,
2100    37,   -1,   -1,   -1,   -1,   42,   43,   -1,   45,   -1,
2101    47,   37,   -1,   -1,   -1,   -1,   42,   43,   -1,   45,
2102    -1,   47,   -1,   60,   -1,   62,   -1,   -1,   93,   -1,
2103    -1,   96,   -1,   -1,   60,   -1,   62,   -1,   -1,   -1,
2104    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2105    -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,   -1,   -1,
2106   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   94,   -1,
2107    -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,
2108   264,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,
2109    -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,  283,
2110   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
2111   294,  295,  296,  297,  298,  299,  300,  301,  302,   -1,
2112    -1,  305,  306,  307,  308,  309,  310,  311,  312,  313,
2113   314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,
2114   324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
2115   334,   -1,   -1,  337,  338,  339,  340,   -1,  302,  343,
2116   344,  305,  346,   -1,   -1,  349,  350,  351,  352,  353,
2117   354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
2118    -1,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
2119   374,  375,  257,  258,  259,  260,   -1,   -1,  263,  264,
2120   265,  266,  267,  268,   -1,  349,  350,  351,  352,  353,
2121   354,   -1,  277,  278,   -1,  280,  281,  282,  283,  284,
2122   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
2123   295,  296,  297,  298,  299,  300,  301,  302,   -1,   -1,
2124   305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
2125   315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,
2126   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
2127    -1,   -1,  337,  338,  339,  340,   -1,   -1,  343,  344,
2128     0,  346,   -1,   -1,  349,  350,  351,  352,  353,  354,
2129   355,  356,  357,  358,  359,  360,  361,  362,  363,   -1,
2130    -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
2131   375,   -1,  349,   33,  351,  352,  353,  354,   -1,   -1,
2132    40,   41,   -1,   -1,   44,  351,  352,  353,  354,   -1,
2133    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
2134    60,   -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2135    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
2136   308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
2137   318,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,
2138    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  337,
2139   338,  339,  340,   -1,   -1,   -1,   -1,   -1,   -1,    0,
2140    -1,   -1,   -1,   -1,   -1,  125,   -1,  355,  356,  357,
2141   358,  359,  360,  361,  362,  363,   -1,   -1,   59,   -1,
2142    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2143    -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,
2144    41,   -1,   -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,
2145    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   59,   60,
2146    -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2147    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2148    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
2149    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,
2150    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2151    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2152    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
2153    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
2154   260,   -1,   -1,  263,  264,  265,  266,  267,  268,   -1,
2155    -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,
2156   280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
2157   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
2158   300,  301,  302,   -1,   -1,  305,  306,  307,  308,  309,
2159   310,  311,  312,  313,  314,  315,  316,  317,  318,   -1,
2160    -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,  329,
2161   330,  331,  332,  333,  334,   -1,  257,  337,  338,  339,
2162   340,   -1,  263,  343,  344,   -1,  346,  268,   -1,  349,
2163   350,  351,  352,  353,  354,  355,  356,  357,  358,  359,
2164   360,  361,  362,  363,   -1,   -1,   -1,  367,  368,  369,
2165   370,  371,  372,  373,  374,  375,  257,  258,  259,  260,
2166    -1,  302,  263,  264,  265,  266,  267,  268,   -1,   -1,
2167    -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,  280,
2168   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
2169   291,  292,  293,  294,  295,  296,  297,  298,  299,  300,
2170   301,  302,   -1,   -1,  305,  306,  307,  308,  309,  310,
2171   311,  312,  313,  314,  315,  316,  317,  318,   -1,   -1,
2172    -1,    0,   -1,  324,  325,  326,  327,  328,  329,  330,
2173   331,  332,  333,  334,   -1,   -1,  337,  338,  339,  340,
2174    -1,   -1,  343,  344,    0,  346,   -1,   -1,  349,  350,
2175   351,  352,  353,  354,  355,  356,  357,  358,  359,  360,
2176   361,  362,  363,   -1,   -1,   -1,  367,  368,  369,  370,
2177   371,  372,  373,  374,  375,   -1,   -1,   33,   -1,   -1,
2178    59,   -1,   -1,   -1,   40,   41,   -1,   -1,   44,   -1,
2179    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2180    -1,   -1,   -1,   59,   60,   -1,   62,   -1,   -1,   -1,
2181    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
2182    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2183    -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
2184    96,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
2185    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2186    -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,  125,
2187    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2188    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2189    -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,
2190    -1,   -1,   -1,   40,   41,   -1,   -1,   44,   -1,   -1,
2191    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2192    -1,   -1,   59,   60,   -1,   62,   -1,   -1,   -1,   -1,
2193    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2194    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2195    -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,
2196    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2197    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,   -1,
2198    -1,   -1,   -1,   -1,  263,   -1,   -1,   -1,  125,  268,
2199    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2200    -1,  257,  258,  259,  260,   -1,   -1,  263,  264,  265,
2201   266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2202    -1,  277,  278,  302,  280,  281,  282,  283,  284,  285,
2203   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
2204   296,  297,  298,  299,  300,  301,  302,   -1,   -1,  305,
2205   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
2206   316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,
2207   326,  327,  328,  329,  330,  331,  332,  333,  334,   -1,
2208    -1,  337,  338,  339,  340,   -1,   -1,  343,  344,   -1,
2209   346,   -1,   -1,  349,  350,  351,  352,  353,  354,  355,
2210   356,  357,  358,  359,  360,  361,  362,  363,   -1,   -1,
2211    -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
2212   257,  258,  259,  260,   -1,   -1,  263,  264,  265,  266,
2213   267,  268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2214   277,  278,   -1,  280,  281,  282,  283,  284,  285,  286,
2215   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
2216   297,  298,  299,  300,  301,  302,   -1,   -1,  305,  306,
2217   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
2218   317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,
2219   327,  328,  329,  330,  331,  332,  333,  334,   -1,   -1,
2220   337,  338,  339,  340,   -1,   -1,  343,  344,    0,  346,
2221    -1,   -1,  349,  350,  351,  352,  353,  354,  355,  356,
2222   357,  358,  359,  360,  361,  362,  363,   -1,   -1,   -1,
2223   367,  368,  369,  370,  371,  372,  373,  374,  375,   -1,
2224    -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   41,
2225    -1,   43,   44,   45,   -1,   -1,   -1,   -1,   -1,   -1,
2226    -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,
2227    62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2228    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2229    -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,
2230    -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,
2231    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2232    -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,
2233    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   41,   -1,
2234    -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2235    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
2236    33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   41,   -1,
2237    -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2238    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
2239    93,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2240    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2241    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2242    93,   -1,  125,   96,   -1,   -1,   -1,   -1,   -1,   -1,
2243    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2244    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2245    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2246    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,
2247    -1,  263,   -1,  265,  266,  267,  268,   -1,   -1,   -1,
2248    -1,   -1,   -1,   -1,   -1,  277,  278,   -1,  280,  281,
2249   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
2250   292,  293,  294,  295,  296,  297,  298,  299,  300,  301,
2251    -1,   -1,   -1,   -1,  306,  307,  308,  309,  310,  311,
2252   312,  313,  314,  315,  316,  317,  318,  319,  320,  321,
2253   322,  323,  324,  325,  326,  327,  328,  329,  330,  331,
2254   332,  333,  334,   -1,   -1,  337,  338,  339,  340,   -1,
2255    -1,  343,  344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2256    -1,  264,   -1,  355,  356,  357,  358,  359,  360,  361,
2257   362,  363,   -1,   -1,   -1,  367,  368,  369,  370,  371,
2258   372,  373,  374,  375,  257,  258,  259,  260,  291,   -1,
2259   263,  264,  265,  266,  267,  268,   -1,   -1,   -1,   -1,
2260    -1,   -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,
2261   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
2262   293,  294,  295,  296,  297,  298,  299,  300,  301,  302,
2263    -1,   -1,  305,  306,  307,  308,  309,  310,  311,  312,
2264   313,  314,  315,  316,  317,  318,   -1,  350,   -1,   -1,
2265    -1,  324,  325,  326,  327,  328,  329,  330,  331,  332,
2266   333,  334,   -1,   -1,  337,  338,  339,  340,   -1,   -1,
2267   343,  344,    0,  346,   -1,   -1,  349,  350,  351,  352,
2268    -1,   -1,  355,  356,  357,  358,  359,  360,  361,  362,
2269   363,   -1,   -1,   -1,  367,  368,  369,  370,  371,  372,
2270   373,  374,  375,   -1,   -1,   33,   -1,   -1,   -1,   -1,
2271    -1,   -1,   40,   41,   -1,   -1,   44,   -1,   -1,   -1,
2272    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2273    -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2274    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2275    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2276    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,
2277    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2278    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2279    -1,    0,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,
2280    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2281    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2282    -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,
2283    -1,   40,   41,   -1,   43,   44,   45,   -1,   -1,   -1,
2284    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2285    59,   -1,   -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,
2286    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2287    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2288    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
2289    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2290    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2291    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
2292    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
2293   258,  259,  260,   -1,   -1,  263,  264,  265,  266,  267,
2294   268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,
2295   278,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
2296   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
2297   298,  299,  300,  301,  302,   -1,   -1,  305,  306,  307,
2298   308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
2299   318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,
2300   328,  329,  330,  331,  332,  333,  334,   -1,   -1,  337,
2301   338,  339,  340,   -1,   -1,  343,  344,   -1,  346,   -1,
2302    -1,  349,  350,  351,  352,   -1,   -1,  355,  356,  357,
2303   358,  359,  360,  361,  362,  363,   -1,   -1,   -1,  367,
2304   368,  369,  370,  371,  372,  373,  374,  375,  257,  258,
2305   259,  260,   -1,   -1,  263,   -1,  265,  266,  267,  268,
2306    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,
2307    -1,  280,  281,  282,  283,  284,  285,  286,  287,  288,
2308   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
2309   299,  300,  301,   -1,   -1,   -1,   -1,  306,  307,  308,
2310   309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
2311   319,  320,  321,  322,  323,  324,  325,  326,  327,  328,
2312   329,  330,  331,  332,  333,  334,   -1,   -1,  337,  338,
2313   339,  340,   -1,   -1,  343,  344,    0,   -1,   -1,   -1,
2314    -1,   -1,   -1,   -1,   -1,   -1,  355,  356,  357,  358,
2315   359,  360,  361,  362,  363,   -1,   -1,   -1,  367,  368,
2316   369,  370,  371,  372,  373,  374,  375,   -1,   -1,   33,
2317    -1,   -1,   -1,   -1,   -1,   -1,   40,   41,   -1,   -1,
2318    44,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2319    -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,
2320    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2321    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2322    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
2323    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2324    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2325    -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
2326    -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2327    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2328    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
2329    -1,   -1,   -1,   -1,   -1,   40,   41,   -1,   -1,   44,
2330    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2331    -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,
2332    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2333    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2334    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,
2335    -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2336    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2337    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2338   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2339    -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,
2340   264,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,
2341    -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,  283,
2342   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
2343   294,  295,  296,  297,  298,  299,  300,  301,  302,   -1,
2344    -1,  305,  306,  307,  308,  309,  310,  311,  312,  313,
2345   314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,
2346   324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
2347   334,   -1,   -1,  337,  338,  339,  340,   -1,   -1,  343,
2348   344,   -1,  346,   -1,   -1,  349,  350,   -1,   -1,   -1,
2349    -1,  355,  356,  357,  358,  359,  360,  361,  362,  363,
2350    -1,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
2351   374,  375,  257,  258,  259,  260,   -1,   -1,  263,  264,
2352   265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,
2353    -1,   -1,  277,  278,   -1,  280,  281,  282,  283,  284,
2354   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
2355   295,  296,  297,  298,  299,  300,  301,  302,   -1,   -1,
2356   305,  306,  307,  308,  309,  310,  311,  312,  313,  314,
2357   315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,
2358   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
2359    -1,   -1,  337,  338,  339,  340,   -1,   -1,  343,  344,
2360     0,  346,   -1,   -1,   -1,  350,   -1,   -1,   -1,   -1,
2361   355,  356,  357,  358,  359,  360,  361,  362,  363,   -1,
2362    -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
2363   375,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
2364    40,   41,   -1,   43,   44,   45,   -1,   -1,   -1,   -1,
2365    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
2366    -1,   -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2367    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2368    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2369    -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,
2370    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2371    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
2372    -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,
2373    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2374    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2375    -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,
2376    41,   -1,   -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,
2377    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
2378    -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2379    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2380    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2381    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,
2382    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2383    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2384    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
2385    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
2386   260,   -1,   -1,  263,   -1,  265,  266,  267,  268,   -1,
2387    -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,
2388   280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
2389   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
2390   300,  301,   -1,   -1,   -1,   -1,  306,  307,  308,  309,
2391   310,  311,  312,  313,  314,  315,  316,  317,  318,   59,
2392    -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,  329,
2393   330,  331,  332,  333,  334,   -1,   -1,  337,  338,  339,
2394   340,   -1,   -1,  343,  344,   -1,   -1,   -1,   -1,   -1,
2395    -1,   91,   -1,   -1,   -1,  355,  356,  357,  358,  359,
2396   360,  361,  362,  363,   -1,   -1,   -1,  367,  368,  369,
2397   370,  371,  372,  373,  374,  375,  257,  258,  259,  260,
2398    -1,   -1,  263,  123,  265,  266,  267,  268,   -1,   -1,
2399    -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,  280,
2400   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
2401   291,  292,  293,  294,  295,  296,  297,  298,  299,  300,
2402   301,   -1,   -1,   -1,   -1,  306,  307,  308,  309,  310,
2403   311,  312,  313,  314,  315,  316,  317,  318,   -1,   -1,
2404    -1,   -1,   -1,  324,  325,  326,  327,  328,  329,  330,
2405   331,  332,  333,  334,   -1,   -1,  337,  338,  339,  340,
2406    -1,   -1,  343,  344,    0,   -1,   -1,   -1,   -1,   -1,
2407    -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,  360,
2408   361,  362,  363,   -1,   -1,   -1,  367,  368,  369,  370,
2409   371,  372,  373,  374,  375,   -1,   -1,   33,   -1,   -1,
2410    -1,   -1,   -1,   -1,   40,   41,   -1,   -1,   44,   -1,
2411    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,   -1,
2412   260,  261,   -1,   59,   -1,   -1,   -1,   -1,   -1,  269,
2413   270,  271,  272,  273,  274,  275,  276,   -1,   -1,  279,
2414    -1,   -1,  282,  283,  284,  285,   -1,   -1,   -1,   -1,
2415    -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
2416    96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2417    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2418    -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,  125,
2419    -1,   -1,   -1,   -1,   -1,  335,   -1,   -1,   -1,   -1,
2420    -1,  341,  342,   -1,   -1,  345,   -1,  347,   -1,   -1,
2421    -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,
2422    -1,   -1,   -1,   40,  364,   -1,  366,   -1,   -1,   -1,
2423    -1,   -1,   -1,   -1,   -1,  375,  376,   -1,   -1,   -1,
2424    -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2425    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2426    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2427    -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,
2428    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2429    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2430    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
2431    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2432    -1,  257,  258,  259,  260,   -1,   -1,  263,   -1,  265,
2433   266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2434    -1,  277,  278,   -1,  280,  281,  282,  283,  284,  285,
2435   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
2436   296,  297,  298,  299,  300,  301,   -1,   -1,   -1,   -1,
2437   306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
2438   316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,
2439   326,  327,  328,  329,  330,  331,  332,  333,  334,   -1,
2440    -1,  337,  338,  339,  340,   -1,   -1,  343,  344,   -1,
2441    -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,   -1,  355,
2442   356,  357,  358,  359,  360,  361,  362,  363,   -1,   -1,
2443    -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
2444   257,  258,  259,  260,   -1,  123,  263,   -1,  265,  266,
2445   267,  268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2446   277,  278,   -1,  280,  281,  282,  283,  284,  285,  286,
2447   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
2448   297,  298,  299,  300,  301,   -1,   -1,   -1,   -1,   -1,
2449   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
2450   317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,
2451   327,  328,  329,  330,  331,  332,  333,  334,   -1,   -1,
2452   337,  338,  339,  340,   -1,   -1,  343,  344,    0,   -1,
2453    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,  356,
2454   357,  358,  359,  360,  361,  362,  363,   -1,   -1,   -1,
2455   367,  368,  369,  370,  371,  372,  373,  374,  375,   -1,
2456    -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,
2457    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
2458   258,   -1,  260,  261,   -1,   -1,   -1,   59,   -1,   -1,
2459    -1,  269,  270,  271,  272,  273,  274,  275,  276,   -1,
2460    -1,  279,   -1,   -1,  282,  283,  284,  285,   -1,   -1,
2461    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2462    -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,
2463    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2464    -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,
2465    -1,   -1,   -1,  125,   -1,   -1,   -1,  335,   -1,   -1,
2466    -1,   -1,   -1,  341,  342,   -1,   -1,  345,   -1,  347,
2467    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2468    33,   -1,   -1,   -1,   -1,   -1,  364,   40,  366,   -1,
2469    -1,   -1,   -1,   -1,   -1,   -1,   -1,  375,  376,   -1,
2470    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
2471    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2472    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2473    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2474    93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,
2475    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2476    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2477    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2478    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,
2479    -1,  263,   -1,  265,  266,  267,  268,   -1,   -1,   -1,
2480    -1,   -1,   -1,   -1,   -1,  277,  278,   -1,  280,  281,
2481   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
2482   292,  293,  294,  295,  296,  297,  298,  299,  300,  301,
2483    -1,   -1,   -1,   -1,   -1,  307,  308,  309,  310,  311,
2484   312,  313,  314,  315,  316,  317,  318,   -1,   -1,   -1,
2485    -1,   -1,  324,  325,  326,  327,  328,  329,  330,  331,
2486   332,  333,  334,   -1,   -1,  337,  338,  339,  340,   -1,
2487    -1,  343,  344,   -1,   -1,   -1,   -1,   91,   -1,   -1,
2488    -1,   -1,   -1,  355,  356,  357,  358,  359,  360,  361,
2489   362,  363,   -1,   -1,   -1,  367,  368,  369,  370,  371,
2490   372,  373,  374,  375,  257,  258,  259,  260,   -1,  123,
2491   263,   -1,  265,  266,  267,  268,   -1,   -1,   -1,   -1,
2492    -1,   -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,
2493   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
2494   293,  294,  295,  296,  297,  298,  299,  300,  301,   -1,
2495    -1,   -1,   -1,   -1,  307,  308,  309,  310,  311,  312,
2496   313,  314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,
2497    -1,  324,  325,  326,  327,  328,  329,  330,  331,  332,
2498   333,  334,   -1,   -1,  337,  338,  339,  340,   -1,   -1,
2499   343,  344,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2500    -1,   -1,  355,  356,  357,  358,  359,  360,  361,  362,
2501   363,   -1,   -1,   -1,  367,  368,  369,  370,  371,  372,
2502   373,  374,  375,   -1,   -1,   33,   -1,   -1,   -1,   -1,
2503    -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2504    -1,   -1,   -1,  257,  258,   -1,  260,  261,   -1,   -1,
2505    -1,   59,   -1,   -1,   -1,  269,  270,  271,  272,  273,
2506   274,  275,  276,   -1,   -1,  279,   -1,   -1,  282,  283,
2507   284,  285,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2508    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,
2509    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2510    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2511    -1,    0,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,
2512    -1,  335,   -1,   -1,   -1,   -1,   -1,  341,  342,   -1,
2513    -1,  345,   -1,  347,   -1,   -1,   -1,   -1,   -1,   -1,
2514    -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,
2515   364,   40,  366,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2516    -1,  375,  376,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2517    59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2518    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2519    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2520    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
2521    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2522    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2523    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
2524    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
2525   258,  259,  260,   -1,   -1,  263,   -1,  265,  266,  267,
2526   268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,
2527   278,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
2528   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
2529   298,  299,  300,  301,   -1,   -1,   -1,   -1,   -1,  307,
2530   308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
2531   318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,
2532   328,  329,  330,  331,  332,  333,  334,   -1,   -1,  337,
2533   338,  339,  340,   -1,   -1,  343,  344,   -1,   -1,   -1,
2534    -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,  356,  357,
2535   358,  359,  360,  361,  362,  363,   -1,   -1,   -1,  367,
2536   368,  369,  370,  371,  372,  373,  374,  375,  257,  258,
2537   259,  260,   -1,   -1,  263,   -1,  265,  266,  267,  268,
2538    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,
2539    -1,  280,  281,  282,  283,  284,  285,  286,  287,  288,
2540   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
2541   299,  300,  301,   -1,   -1,   -1,   -1,   -1,  307,  308,
2542   309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
2543    -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,
2544   329,  330,  331,  332,  333,  334,   -1,   -1,  337,  338,
2545   339,  340,   -1,   -1,  343,  344,    0,   -1,   -1,   -1,
2546    -1,   -1,   -1,   -1,   -1,   -1,  355,  356,  357,  358,
2547   359,  360,  361,  362,  363,   -1,   -1,   -1,  367,  368,
2548   369,  370,  371,  372,  373,  374,  375,   -1,   -1,   33,
2549    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
2550    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2551    -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,
2552    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2553    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2554    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
2555    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2556    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2557    -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
2558    -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2559    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2560    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
2561    -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,
2562    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2563    -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,
2564    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2565    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2566    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,
2567    -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2568    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2569    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2570   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2571    -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,
2572    -1,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,
2573    -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,  283,
2574   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
2575   294,  295,  296,  297,  298,  299,  300,  301,   -1,   -1,
2576    -1,   -1,   -1,  307,  308,  309,  310,  311,  312,  313,
2577   314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,
2578   324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
2579   334,   -1,   -1,  337,  338,  339,  340,   -1,   -1,  343,
2580   344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2581    -1,  355,  356,  357,  358,  359,  360,  361,  362,  363,
2582    -1,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
2583   374,  375,  257,  258,  259,  260,   -1,   -1,  263,   -1,
2584   265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,
2585    -1,   -1,  277,  278,   -1,  280,  281,  282,  283,  284,
2586   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
2587   295,  296,  297,  298,  299,  300,  301,   -1,   -1,   -1,
2588    -1,   -1,  307,  308,  309,  310,  311,  312,  313,  314,
2589   315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,
2590   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
2591    -1,   -1,  337,  338,  339,  340,   -1,   -1,  343,  344,
2592     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2593   355,  356,  357,  358,  359,  360,  361,  362,  363,   -1,
2594    -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
2595   375,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
2596    40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2597    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
2598    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2599    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2600    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2601    -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,
2602    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2603    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
2604    -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,
2605    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2606    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2607    -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,
2608    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2609    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
2610    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2611    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2612    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2613    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,
2614    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2615    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2616    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
2617    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
2618   260,   -1,   -1,  263,   -1,  265,  266,  267,  268,   -1,
2619    -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,
2620   280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
2621   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
2622   300,  301,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,
2623   310,  311,  312,  313,  314,  315,  316,  317,  318,   -1,
2624    -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,  329,
2625   330,  331,  332,  333,  334,   -1,   -1,  337,  338,  339,
2626   340,   -1,   -1,  343,  344,   -1,   -1,   -1,   -1,   -1,
2627    -1,   -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,
2628   360,  361,  362,  363,   -1,   -1,   -1,  367,  368,  369,
2629   370,  371,  372,  373,  374,  375,  257,  258,  259,  260,
2630    -1,   -1,  263,   -1,  265,  266,  267,  268,   -1,   -1,
2631    -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,  280,
2632   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
2633   291,  292,  293,  294,  295,  296,  297,  298,  299,  300,
2634   301,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,  310,
2635   311,  312,  313,  314,  315,  316,  317,  318,   -1,   -1,
2636    -1,   -1,   -1,  324,  325,  326,  327,  328,  329,  330,
2637   331,  332,  333,  334,   -1,   -1,  337,  338,  339,  340,
2638    -1,   -1,  343,  344,    0,   -1,   -1,   -1,   -1,   -1,
2639    -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,  360,
2640   361,  362,  363,   -1,   -1,   -1,  367,  368,  369,  370,
2641   371,  372,  373,  374,  375,   -1,   -1,   33,   -1,   -1,
2642    -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,
2643    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2644    -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,
2645    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2646    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2647    -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
2648    96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2649    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2650    -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,  125,
2651    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2652    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2653    -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,
2654    -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,   -1,
2655    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2656    -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2657    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2658    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2659    -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,
2660    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2661    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2662    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
2663    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2664    -1,  257,  258,  259,  260,   -1,   -1,  263,   -1,  265,
2665   266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2666    -1,  277,  278,   -1,  280,  281,  282,  283,  284,  285,
2667   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
2668   296,  297,  298,  299,  300,  301,   -1,   -1,   -1,   -1,
2669    -1,  307,  308,  309,  310,  311,  312,  313,  314,  315,
2670   316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,
2671   326,  327,  328,  329,  330,  331,  332,  333,  334,   -1,
2672    -1,  337,  338,  339,  340,   -1,   -1,  343,  344,   -1,
2673    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,
2674   356,  357,  358,  359,  360,  361,  362,  363,   -1,   -1,
2675    -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
2676   257,  258,  259,  260,   -1,   -1,  263,   -1,  265,  266,
2677   267,  268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2678   277,  278,   -1,  280,  281,  282,  283,  284,  285,  286,
2679   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
2680   297,  298,  299,  300,  301,   -1,   -1,   -1,   -1,   -1,
2681   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
2682   317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,
2683   327,  328,  329,  330,  331,  332,  333,  334,   -1,   -1,
2684   337,  338,  339,  340,   -1,   -1,  343,  344,    0,   -1,
2685    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,  356,
2686   357,  358,  359,  360,  361,  362,  363,   -1,   -1,   -1,
2687   367,  368,  369,  370,  371,  372,  373,  374,  375,   -1,
2688    -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,
2689    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2690    -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,
2691    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2692    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2693    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2694    -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,
2695    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2696    -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,
2697    -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
2698    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2699    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2700    33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,
2701    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2702    -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
2703    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2704    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2705    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2706    93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,
2707    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2708    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2709    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2710    -1,   -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,
2711    -1,  263,   -1,  265,  266,  267,  268,   -1,   -1,   -1,
2712    -1,   -1,   -1,   -1,   -1,  277,  278,   -1,  280,  281,
2713   282,  283,  284,  285,  286,  287,  288,  289,  290,  291,
2714   292,  293,  294,  295,  296,  297,  298,  299,  300,  301,
2715    -1,   -1,   -1,   -1,   -1,  307,  308,  309,  310,  311,
2716   312,  313,  314,  315,  316,  317,  318,   -1,   -1,   -1,
2717    -1,   -1,  324,  325,  326,  327,  328,  329,  330,  331,
2718   332,  333,  334,   -1,   -1,  337,  338,  339,  340,   -1,
2719    -1,  343,  344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2720    -1,   -1,   -1,  355,  356,  357,  358,  359,  360,  361,
2721   362,  363,   -1,   -1,   -1,  367,  368,  369,  370,  371,
2722   372,  373,  374,  375,  257,  258,  259,  260,   -1,   -1,
2723   263,   -1,  265,  266,  267,  268,   -1,   -1,   -1,   -1,
2724    -1,   -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,
2725   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
2726   293,  294,  295,  296,  297,  298,  299,  300,  301,   -1,
2727    -1,   -1,   -1,   -1,  307,  308,  309,  310,  311,  312,
2728   313,  314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,
2729    -1,  324,  325,  326,  327,  328,  329,  330,  331,  332,
2730   333,  334,   -1,   -1,  337,  338,  339,  340,   -1,   -1,
2731   343,  344,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2732    -1,   -1,  355,  356,  357,  358,  359,  360,  361,  362,
2733   363,   -1,   -1,   -1,  367,  368,  369,  370,  371,  372,
2734   373,  374,  375,   -1,   -1,   33,   -1,   -1,   -1,   -1,
2735    -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2736    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2737    -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2738    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2739    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2740    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,
2741    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2742    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2743    -1,    0,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,
2744    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2745    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2746    -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,
2747    -1,   40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2748    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2749    59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2750    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2751    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2752    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
2753    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2754    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2755    -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,
2756    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
2757   258,  259,  260,   -1,   -1,  263,   -1,  265,  266,  267,
2758   268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,
2759   278,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
2760   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
2761   298,  299,  300,  301,   -1,   -1,   -1,   -1,   -1,  307,
2762   308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
2763   318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,
2764   328,  329,  330,  331,  332,  333,  334,   -1,   -1,  337,
2765   338,  339,  340,   -1,   -1,  343,  344,   -1,   -1,   -1,
2766    -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,  356,  357,
2767   358,  359,  360,  361,  362,  363,   -1,   -1,   -1,  367,
2768   368,  369,  370,  371,  372,  373,  374,  375,  257,  258,
2769   259,  260,   -1,   -1,  263,   -1,  265,  266,  267,  268,
2770    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,
2771    -1,  280,  281,  282,  283,  284,  285,  286,  287,  288,
2772   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
2773   299,  300,  301,   -1,   -1,   -1,   -1,   -1,  307,  308,
2774   309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
2775    -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,
2776   329,  330,  331,  332,  333,  334,   -1,   -1,  337,  338,
2777   339,  340,   -1,   -1,  343,  344,    0,   -1,   -1,   -1,
2778    -1,   -1,   -1,   -1,   -1,   -1,  355,  356,  357,  358,
2779   359,  360,  361,  362,  363,   -1,   -1,   -1,  367,  368,
2780   369,  370,  371,  372,  373,  374,  375,   -1,   -1,   33,
2781    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
2782    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2783    -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,
2784    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2785    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2786    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
2787    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2788    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2789    -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
2790    -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2791    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2792    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
2793    -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,
2794    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2795    -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,
2796    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2797    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2798    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,
2799    -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2800    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2801    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2802   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2803    -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,
2804    -1,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,
2805    -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,  283,
2806   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
2807   294,  295,  296,  297,  298,  299,  300,  301,   -1,   -1,
2808    -1,   -1,   -1,  307,  308,  309,  310,  311,  312,  313,
2809   314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,
2810   324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
2811   334,   -1,   -1,  337,  338,  339,  340,   -1,   -1,  343,
2812   344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2813    -1,  355,  356,  357,  358,  359,  360,  361,  362,  363,
2814    -1,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
2815   374,  375,  257,  258,  259,  260,   -1,   -1,  263,   -1,
2816   265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,
2817    -1,   -1,  277,  278,   -1,  280,  281,  282,  283,  284,
2818   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
2819   295,  296,  297,  298,  299,  300,  301,   -1,   -1,   -1,
2820    -1,   -1,  307,  308,  309,  310,  311,  312,  313,  314,
2821   315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,
2822   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
2823    -1,   -1,  337,  338,  339,  340,   -1,   -1,  343,  344,
2824     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2825   355,  356,  357,  358,  359,  360,  361,  362,  363,   -1,
2826    -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
2827   375,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
2828    40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2829    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
2830    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2831    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2832    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2833    -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,
2834    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2835    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
2836    -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,
2837    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2838    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2839    -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,
2840    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2841    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
2842    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2843    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2844    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2845    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,
2846    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2847    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2848    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
2849    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
2850   260,   -1,   -1,  263,   -1,  265,  266,  267,  268,   -1,
2851    -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,
2852   280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
2853   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
2854   300,  301,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,
2855   310,  311,  312,  313,  314,  315,  316,  317,  318,   -1,
2856    -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,  329,
2857   330,  331,  332,  333,  334,   -1,   -1,  337,  338,  339,
2858   340,   -1,   -1,  343,  344,   -1,   -1,   -1,   -1,   -1,
2859    -1,   -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,
2860   360,  361,  362,  363,   -1,   -1,   -1,  367,  368,  369,
2861   370,  371,  372,  373,  374,  375,  257,  258,  259,  260,
2862    -1,   -1,  263,   -1,  265,  266,  267,  268,   -1,   -1,
2863    -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,  280,
2864   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
2865   291,  292,  293,  294,  295,  296,  297,  298,  299,  300,
2866   301,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,  310,
2867   311,  312,  313,  314,  315,  316,  317,  318,   -1,   -1,
2868    -1,   -1,   -1,  324,  325,  326,  327,  328,  329,  330,
2869   331,  332,  333,  334,   -1,   -1,  337,  338,  339,  340,
2870    -1,   -1,  343,  344,    0,   -1,   -1,   -1,   -1,   -1,
2871    -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,  360,
2872   361,  362,  363,   -1,   -1,   -1,  367,  368,  369,  370,
2873   371,  372,  373,  374,  375,   -1,   -1,   33,   -1,   -1,
2874    -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,   -1,
2875    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2876    -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,
2877    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2878    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2879    -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,
2880    96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2881    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2882    -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,  125,
2883    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2884    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2885    -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,
2886    -1,   -1,   40,   -1,   -1,   -1,   44,   45,   -1,   -1,
2887    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2888    -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2889    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2890    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2891    -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   -1,   -1,
2892    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2893    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2894    -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,   -1,
2895    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2896    -1,  257,  258,  259,  260,   -1,   -1,  263,   -1,  265,
2897   266,  267,  268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2898    -1,  277,  278,   -1,  280,  281,  282,  283,  284,  285,
2899   286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
2900   296,  297,  298,  299,  300,  301,   -1,   -1,   -1,   -1,
2901    -1,  307,  308,  309,  310,  311,  312,  313,  314,  315,
2902   316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,
2903   326,  327,  328,  329,  330,  331,  332,  333,  334,   -1,
2904    -1,  337,  338,  339,  340,   -1,   -1,  343,  344,   -1,
2905    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,
2906   356,  357,  358,  359,  360,  361,  362,  363,   -1,   -1,
2907    -1,  367,  368,  369,  370,  371,  372,  373,  374,  375,
2908   258,  259,  260,   -1,   -1,   -1,   -1,  265,  266,  267,
2909    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,
2910   278,   -1,  280,  281,  282,  283,  284,  285,  286,  287,
2911   288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
2912   298,  299,  300,  301,   -1,   -1,   -1,   -1,   -1,  307,
2913   308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
2914   318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,
2915   328,  329,  330,  331,  332,  333,  334,   -1,   -1,  337,
2916   338,  339,  340,   -1,   -1,  343,  344,    0,   -1,   -1,
2917    -1,   -1,   -1,   -1,   -1,   92,   -1,  355,  356,  357,
2918   358,  359,  360,  361,  362,  363,   -1,   -1,   -1,  367,
2919   368,  369,  370,  371,  372,  373,  374,  375,   -1,   -1,
2920    33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   41,   -1,
2921    43,   44,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2922   137,  138,  139,  140,   -1,   -1,   59,   -1,   -1,   62,
2923    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2924    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2925   167,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2926    93,   -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,
2927    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2928    -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,
2929    -1,   -1,  125,   -1,   -1,  212,   -1,   -1,   -1,   -1,
2930    -1,   -1,   -1,  220,   -1,   -1,   -1,   -1,   -1,   -1,
2931    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,
2932    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   43,
2933    -1,   45,   46,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2934    -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,
2935    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2936    -1,   -1,  279,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2937    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
2938    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2939    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2940    -1,   -1,   -1,   -1,   -1,  322,  323,   -1,   -1,   -1,
2941   327,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2942    -1,   -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,
2943   263,   -1,  265,  266,  267,  268,   -1,   -1,   -1,   -1,
2944    -1,   -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,
2945   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
2946   293,  294,  295,  296,  297,  298,  299,  300,  301,   -1,
2947    -1,   -1,   -1,  306,  307,   -1,   -1,   -1,   -1,   -1,
2948    -1,   -1,   -1,   -1,  401,  402,  319,  320,  321,  322,
2949   323,  324,  325,  326,  327,  328,  329,  330,  331,  332,
2950   333,  334,  419,  420,   -1,   -1,   -1,   -1,   -1,   -1,
2951   343,  344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2952    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2953    -1,   -1,   -1,   -1,  367,  368,  369,  370,  371,  372,
2954   373,  374,  375,  257,  258,  259,  260,   -1,   -1,  263,
2955    -1,  265,  266,  267,  268,   -1,   -1,   -1,   -1,   -1,
2956    -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,  283,
2957   284,  285,  286,  287,  288,  289,  290,  291,  292,  293,
2958   294,  295,  296,  297,  298,  299,  300,  301,   -1,   -1,
2959    -1,    0,   -1,  307,   -1,   -1,   -1,   -1,   -1,   -1,
2960    -1,   -1,   -1,   -1,   -1,  319,  320,  321,  322,  323,
2961   324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
2962   334,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,  343,
2963   344,   40,   41,   -1,   -1,   44,   45,   -1,   -1,   -1,
2964    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2965    59,   -1,   -1,  367,  368,  369,  370,  371,  372,  373,
2966   374,  375,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
2967    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2968    -1,   -1,   -1,   -1,   93,   -1,   -1,   96,   -1,   -1,
2969    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2970    -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,
2971    41,   -1,   -1,   44,   -1,   -1,  125,   -1,   -1,   -1,
2972    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   60,
2973    -1,   62,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2974    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2975    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2976    -1,   -1,   93,   -1,   -1,   96,   -1,   -1,   -1,   -1,
2977    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2978    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2979    -1,   -1,   -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,
2980    -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,
2981    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2982    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2983    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,
2984    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,  257,  258,
2985   259,  260,   -1,   -1,  263,   -1,  265,  266,  267,  268,
2986    -1,   -1,   -1,   -1,   -1,   59,   -1,   -1,  277,  278,
2987    -1,  280,  281,  282,  283,   -1,   -1,  286,  287,  288,
2988   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
2989   299,  300,  301,   -1,   -1,   -1,   -1,   -1,  307,   93,
2990    -1,   -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
2991    -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,
2992   329,  330,  331,  332,  333,  334,  257,  258,  259,  260,
2993    -1,  125,  263,   -1,  343,  344,   -1,  268,   -1,   -1,
2994    -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
2995    -1,   -1,   -1,  284,  285,   -1,   -1,   -1,  367,  368,
2996   369,  370,  371,  372,  373,  374,  375,   -1,   -1,   -1,
2997    -1,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,  310,
2998   311,  312,  313,  314,  315,  316,  317,  318,   -1,   -1,
2999    -1,   -1,   -1,  324,  325,  326,  327,  328,  329,  330,
3000   331,  332,  333,  334,   59,   -1,  337,  338,  339,  340,
3001    -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,  349,  350,
3002   351,  352,  353,  354,  355,  356,  357,  358,  359,  360,
3003   361,  362,  363,   -1,   -1,   -1,   -1,   -1,   93,   -1,
3004    -1,   -1,   -1,   -1,  375,   -1,   -1,   -1,   -1,   33,
3005    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
3006    -1,   -1,   -1,  257,  258,  259,  260,   -1,   -1,  263,
3007   125,   -1,   -1,   -1,  268,   59,   -1,   -1,   -1,   -1,
3008    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3009   284,  285,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3010    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,
3011    -1,   -1,   96,  307,  308,  309,  310,  311,  312,  313,
3012   314,  315,  316,  317,  318,   -1,   -1,    0,   -1,   -1,
3013   324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
3014   334,  125,   -1,  337,  338,  339,  340,   -1,   -1,   -1,
3015    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3016    -1,  355,  356,  357,  358,  359,  360,  361,  362,  363,
3017    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3018    -1,  375,   -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,
3019    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3020    -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,
3021   265,  266,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3022    93,   -1,  277,  278,   -1,  280,  281,  282,  283,  284,
3023   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
3024   295,  296,  297,  298,  299,  300,  301,  302,   -1,   -1,
3025    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3026    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3027    -1,   -1,   -1,  257,  258,  259,  260,    0,   -1,  263,
3028    -1,   -1,   -1,   -1,  268,   -1,   -1,   -1,  343,  344,
3029    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3030   284,  285,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3031    -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
3032   375,   -1,   -1,  307,  308,  309,  310,  311,  312,  313,
3033   314,  315,  316,  317,  318,   -1,   59,   -1,   -1,   -1,
3034   324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
3035   334,   -1,   -1,  337,  338,  339,  340,   -1,   -1,   -1,
3036    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3037    93,  355,  356,  357,  358,  359,  360,  361,  362,  363,
3038    -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,
3039    -1,  375,  265,  266,  267,    0,   -1,   -1,   -1,   -1,
3040    -1,   -1,  125,   -1,  277,  278,   -1,  280,  281,  282,
3041   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
3042   293,  294,  295,  296,  297,  298,  299,  300,  301,  302,
3043    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3044    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3045    -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,
3046    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3047   343,  344,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3048    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,
3049    -1,   -1,   -1,   -1,  367,  368,  369,  370,  371,  372,
3050   373,  374,  375,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3051    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3052   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
3053    -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,   -1,   -1,
3054    -1,   -1,  265,  266,  267,   -1,   -1,   -1,   -1,   -1,
3055    -1,   -1,   -1,   -1,  277,  278,   -1,  280,  281,  282,
3056   283,  284,  285,  286,  287,  288,  289,  290,  291,  292,
3057   293,  294,  295,  296,  297,  298,  299,  300,  301,   -1,
3058    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,   -1,
3059    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3060    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3061    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3062   343,  344,   93,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3063    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3064    -1,   -1,   -1,   -1,  367,  368,  369,  370,  371,  372,
3065   373,  374,  375,    0,  125,  260,   -1,   -1,   -1,   -1,
3066   265,  266,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3067    -1,   -1,  277,  278,   -1,  280,  281,  282,  283,  284,
3068   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
3069   295,  296,  297,  298,  299,  300,  301,   -1,   -1,   -1,
3070    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3071    -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3072    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3073    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  343,  344,
3074    -1,   -1,   -1,   -1,   -1,   -1,   93,   -1,   -1,   -1,
3075    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3076    -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
3077   375,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,   -1,
3078    -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  260,
3079    -1,   -1,   -1,   -1,  265,  266,  267,   -1,   -1,   -1,
3080    -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,  280,
3081   281,  282,  283,  284,  285,  286,  287,  288,  289,  290,
3082   291,  292,  293,  294,  295,  296,  297,  298,  299,  300,
3083   301,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3084    59,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3085    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3086    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3087    -1,   -1,  343,  344,   93,   -1,   -1,   -1,   -1,   -1,
3088    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3089    -1,   -1,   -1,   -1,   -1,   -1,  367,  368,  369,  370,
3090   371,  372,  373,  374,  375,    0,  125,   -1,   -1,   -1,
3091    -1,   -1,   -1,  260,   -1,   -1,   -1,   -1,  265,  266,
3092   267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3093   277,  278,   -1,  280,  281,  282,  283,  284,  285,  286,
3094   287,  288,  289,  290,  291,  292,  293,  294,  295,  296,
3095   297,  298,  299,  300,  301,   -1,   -1,   -1,   -1,   -1,
3096    -1,   -1,   -1,   -1,   59,   -1,   -1,   -1,   -1,   -1,
3097    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3098    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3099    -1,   -1,   -1,   -1,   -1,   -1,  343,  344,   93,   -1,
3100    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3101    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3102   367,  368,  369,  370,  371,  372,  373,  374,  375,   -1,
3103   125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3104    -1,  260,   -1,   -1,   -1,   -1,  265,  266,  267,   -1,
3105     0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,
3106    -1,  280,  281,  282,  283,  284,  285,  286,  287,  288,
3107   289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
3108   299,  300,  301,   33,   -1,   -1,   -1,   -1,   -1,   -1,
3109    40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3110    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   59,
3111    -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,
3112    -1,   -1,   -1,   -1,  343,  344,   -1,   -1,   -1,   -1,
3113    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3114    -1,   -1,   -1,   93,   -1,   -1,   96,   -1,  367,  368,
3115   369,  370,  371,  372,  373,  374,  375,   -1,   -1,   -1,
3116    43,   -1,   45,   46,   -1,  260,   -1,   -1,   -1,   -1,
3117   265,  266,  267,   -1,   -1,  125,   59,   -1,   -1,   -1,
3118    -1,   -1,  277,  278,   -1,  280,  281,  282,  283,  284,
3119   285,  286,  287,  288,  289,  290,  291,  292,  293,  294,
3120   295,  296,  297,  298,  299,  300,  301,   -1,   -1,   -1,
3121    93,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3122    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3123    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3124    -1,   -1,  125,   -1,   -1,   -1,   -1,   -1,  343,  344,
3125    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3126    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3127    -1,   -1,  367,  368,  369,  370,  371,  372,  373,  374,
3128   375,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3129    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3130    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
3131    -1,   -1,   -1,  263,   -1,  265,  266,  267,  268,   -1,
3132    -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,
3133   280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
3134   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
3135   300,  301,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,
3136   310,  311,  312,  313,  314,  315,  316,  317,  318,   -1,
3137    -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,  329,
3138   330,  331,  332,  333,  334,   -1,   -1,  337,  338,  339,
3139   340,   -1,   -1,  343,  344,   -1,   -1,   -1,   -1,   -1,
3140    -1,  284,  285,   -1,    0,  355,  356,  357,  358,  359,
3141   360,  361,  362,  363,   -1,   -1,   -1,  367,  368,  369,
3142   370,  371,  372,  373,  374,  308,  309,  310,  311,  312,
3143   313,  314,  315,  316,  317,  318,  319,  320,  321,  322,
3144   323,   37,   -1,   -1,   -1,   41,   42,   43,   44,   45,
3145    -1,   47,   -1,   -1,  337,  338,  339,  340,   -1,   -1,
3146    -1,   -1,   -1,   59,   60,   -1,   62,   -1,   -1,   -1,
3147    -1,   -1,  355,  356,  357,  358,  359,  360,  361,  362,
3148   363,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,
3149    -1,   -1,   -1,   40,   -1,   -1,   -1,   93,   45,   -1,
3150    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3151    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3152    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  125,
3153    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3154    -1,   -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,   96,
3155    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3156    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3157    -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,   -1,   -1,
3158    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3159    -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,
3160    -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,   45,   -1,
3161    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3162    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3163    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3164    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3165    -1,   -1,   -1,   -1,   91,   -1,   -1,   -1,   -1,   96,
3166    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  264,   -1,
3167    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3168    -1,   -1,   -1,   -1,   -1,   -1,  123,   -1,   -1,   -1,
3169    -1,   -1,   -1,   -1,   -1,  291,   -1,   -1,   -1,   -1,
3170    -1,   -1,   -1,   -1,   -1,   -1,  302,   -1,   -1,  305,
3171   257,  258,  259,  260,  261,   -1,  263,   -1,   -1,   -1,
3172    -1,  268,  269,  270,  271,  272,  273,  274,  275,  276,
3173    -1,   -1,  279,   33,   -1,  282,  283,  284,  285,   -1,
3174    40,   -1,   -1,   -1,   -1,   45,   -1,   -1,   -1,   -1,
3175    -1,   -1,   -1,  349,  350,  351,  352,  353,  354,   -1,
3176   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
3177   317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,
3178   327,  328,  329,  330,  331,  332,  333,  334,  335,   -1,
3179   337,  338,  339,  340,  341,  342,   96,   -1,  345,   -1,
3180   347,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,  356,
3181   357,  358,  359,  360,  361,  362,  363,  364,   -1,  366,
3182   257,  258,  259,  260,  261,   -1,  263,   -1,  375,  376,
3183    -1,  268,  269,  270,  271,  272,  273,  274,  275,  276,
3184    -1,   -1,  279,   -1,   -1,  282,  283,  284,  285,   -1,
3185    -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,
3186    41,   -1,   -1,   -1,   45,   -1,   -1,   -1,   -1,   -1,
3187   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
3188   317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,
3189   327,  328,  329,  330,  331,  332,  333,  334,  335,   -1,
3190   337,  338,  339,  340,  341,  342,   -1,   -1,  345,   -1,
3191   347,   -1,   -1,   -1,   -1,   96,   -1,   -1,  355,  356,
3192   357,  358,  359,  360,  361,  362,  363,  364,   -1,  366,
3193    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  375,  376,
3194    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3195    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
3196   260,   -1,   -1,  263,   -1,  265,  266,  267,  268,   -1,
3197    -1,   -1,   -1,   -1,   -1,   -1,   -1,  277,  278,   -1,
3198   280,  281,  282,  283,  284,  285,  286,  287,  288,  289,
3199   290,  291,  292,  293,  294,  295,  296,  297,  298,  299,
3200   300,  301,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,
3201   310,  311,  312,  313,  314,  315,  316,  317,  318,   -1,
3202    -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,  329,
3203   330,  331,  332,  333,  334,   33,   -1,  337,  338,  339,
3204   340,   -1,   40,  343,  344,   -1,   -1,   45,   46,   -1,
3205    -1,   -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,
3206   360,  361,  362,  363,   -1,   -1,   -1,  367,  368,  369,
3207   370,  371,  372,  373,  374,  375,  257,  258,  259,  260,
3208    -1,   -1,  263,   -1,   -1,   -1,   -1,  268,   -1,   -1,
3209    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   96,   -1,
3210    -1,   -1,   -1,  284,  285,   -1,   -1,   -1,   -1,   -1,
3211    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3212    -1,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,  310,
3213   311,  312,  313,  314,  315,  316,  317,  318,   -1,   -1,
3214    -1,   -1,   -1,  324,  325,  326,  327,  328,  329,  330,
3215   331,  332,  333,  334,   33,   -1,  337,  338,  339,  340,
3216    -1,   40,   -1,   -1,   -1,   -1,   45,   -1,   -1,   -1,
3217    -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,  360,
3218   361,  362,  363,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3219    -1,   -1,   -1,   -1,  375,   -1,   -1,   -1,   -1,   -1,
3220    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3221    -1,   -1,   -1,   -1,   -1,   -1,   -1,   96,   -1,   -1,
3222    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3223    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
3224    -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,   -1,
3225    45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,
3226   258,  259,  260,   -1,   -1,  263,   -1,   -1,   -1,   -1,
3227   268,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3228    -1,   -1,   -1,   -1,   -1,   -1,  284,  285,   -1,   -1,
3229    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3230    -1,   96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  307,
3231   308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
3232   318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,
3233   328,  329,  330,  331,  332,  333,  334,   -1,   -1,  337,
3234   338,  339,  340,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3235    -1,   -1,   -1,   -1,   -1,   -1,   -1,  355,  356,  357,
3236   358,  359,  360,  361,  362,  363,   -1,   -1,   -1,   -1,
3237    -1,   -1,   -1,   -1,   -1,   -1,   -1,  375,  257,  258,
3238   259,  260,   -1,   -1,  263,   -1,   -1,   -1,   -1,  268,
3239    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3240    -1,   -1,   -1,   33,   -1,  284,  285,   -1,   -1,   -1,
3241    40,   -1,   -1,   -1,   -1,   45,   -1,   -1,   -1,   -1,
3242    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  307,  308,
3243   309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
3244    -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,
3245   329,  330,  331,  332,  333,  334,   -1,   -1,  337,  338,
3246   339,  340,  257,  258,  259,  260,   96,   -1,  263,   -1,
3247    -1,   -1,   -1,  268,   -1,   -1,  355,  356,  357,  358,
3248   359,  360,  361,  362,  363,   -1,   -1,   33,   -1,  284,
3249   285,   -1,   -1,   -1,   40,   -1,  375,   -1,   -1,   45,
3250    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3251    -1,   -1,  307,  308,  309,  310,  311,  312,  313,  314,
3252   315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,
3253   325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
3254    -1,   -1,  337,  338,  339,  340,   -1,   -1,   -1,   -1,
3255    96,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3256   355,  356,  357,  358,  359,  360,  361,  362,  363,   -1,
3257    -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,
3258   375,   -1,   -1,   45,   46,   -1,   -1,   -1,   -1,   -1,
3259    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3260    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3261    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3262    -1,   -1,   -1,   -1,   -1,   -1,   -1,  257,  258,  259,
3263   260,   -1,   -1,  263,   96,   -1,   -1,   -1,  268,   -1,
3264    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3265    -1,   -1,   -1,   -1,  284,  285,   33,   -1,   -1,   -1,
3266    -1,   -1,   -1,   40,   -1,   42,   -1,   -1,   45,   -1,
3267    -1,   -1,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,
3268   310,  311,  312,  313,  314,  315,  316,  317,  318,   -1,
3269    -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,  329,
3270   330,  331,  332,  333,  334,   -1,   -1,  337,  338,  339,
3271   340,  257,  258,  259,  260,   -1,   -1,  263,   -1,   96,
3272    -1,   -1,  268,   -1,   -1,  355,  356,  357,  358,  359,
3273   360,  361,  362,  363,   -1,   -1,   -1,   -1,  284,  285,
3274    33,   -1,   -1,   -1,   -1,  375,   -1,   40,   -1,   -1,
3275    -1,   -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3276    -1,  307,  308,  309,  310,  311,  312,  313,  314,  315,
3277   316,  317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,
3278   326,  327,  328,  329,  330,  331,  332,  333,  334,   -1,
3279    -1,  337,  338,  339,  340,  257,  258,  259,   -1,   -1,
3280    -1,  263,   -1,   96,   -1,   -1,  268,   -1,   -1,  355,
3281   356,  357,  358,  359,  360,  361,  362,  363,   -1,   -1,
3282    -1,   -1,  284,  285,   33,   -1,   -1,   -1,   -1,  375,
3283    -1,   40,   -1,   -1,   -1,   -1,   45,   -1,   -1,   -1,
3284    -1,   -1,   -1,   -1,   -1,  307,  308,  309,  310,  311,
3285   312,  313,  314,  315,  316,  317,  318,   -1,   -1,   -1,
3286    -1,   -1,  324,  325,  326,  327,  328,  329,  330,  331,
3287   332,  333,  334,   -1,   -1,  337,  338,  339,  340,   -1,
3288   257,  258,  259,   -1,   -1,   -1,  263,   96,   -1,   -1,
3289    -1,  268,   -1,  355,  356,  357,  358,  359,  360,  361,
3290   362,  363,   -1,   -1,   -1,   -1,   -1,  284,  285,   33,
3291    -1,   -1,   -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
3292    -1,   45,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3293   307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
3294   317,  318,   -1,   -1,   -1,   -1,   -1,  324,  325,  326,
3295   327,  328,  329,  330,  331,  332,  333,  334,   -1,   -1,
3296   337,  338,  339,  340,  257,  258,  259,   -1,   -1,   -1,
3297   263,   -1,   96,   -1,   -1,  268,   -1,   -1,  355,  356,
3298   357,  358,  359,  360,  361,  362,  363,   -1,   -1,   -1,
3299    -1,  284,  285,   33,   -1,   -1,   -1,   -1,   -1,   -1,
3300    40,   -1,   -1,   -1,   -1,   45,   -1,   -1,   -1,   -1,
3301    -1,   -1,   -1,   -1,  307,  308,  309,  310,  311,  312,
3302   313,  314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,
3303    -1,  324,  325,  326,  327,  328,  329,  330,  331,  332,
3304   333,  334,   -1,   -1,  337,  338,  339,  340,  257,  258,
3305   259,   -1,   -1,   -1,  263,   -1,   96,   -1,   -1,  268,
3306    -1,   -1,  355,  356,  357,  358,  359,  360,  361,  362,
3307   363,   -1,   -1,   -1,   -1,  284,  285,   -1,   -1,   -1,
3308    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3309    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  307,  308,
3310   309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
3311    -1,   -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,
3312   329,  330,  331,  332,  333,  334,   -1,   -1,  337,  338,
3313   339,  340,   -1,  257,  258,  259,   -1,   -1,   -1,  263,
3314    -1,   -1,   -1,   -1,  268,   -1,  355,  356,  357,  358,
3315   359,  360,  361,  362,  363,   -1,   -1,   -1,   -1,   -1,
3316   284,  285,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3317    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3318    -1,   -1,   -1,  307,  308,  309,  310,  311,  312,  313,
3319   314,  315,  316,  317,  318,   -1,   -1,   -1,   -1,   -1,
3320   324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
3321   334,   -1,   -1,  337,  338,  339,  340,  257,  258,  259,
3322    -1,   -1,   -1,  263,   -1,   -1,   -1,   -1,  268,   -1,
3323    -1,  355,  356,  357,  358,  359,  360,  361,  362,  363,
3324    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3325    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3326    -1,   -1,   -1,   -1,   -1,   -1,   -1,  307,  308,  309,
3327   310,  311,  312,  313,  314,  315,  316,  317,  318,   -1,
3328    -1,   -1,   -1,   -1,  324,  325,  326,  327,  328,  329,
3329   330,  331,  332,  333,  334,   -1,   -1,  337,  338,  339,
3330   340,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
3331    -1,   -1,   -1,   -1,   -1,  355,  356,  357,  358,  359,
3332   360,  361,  362,  363,
3333 };
3334 #define YYFINAL 2
3335 #ifndef YYDEBUG
3336 #define YYDEBUG 0
3337 #endif
3338 #define YYMAXTOKEN 378
3339 #if YYDEBUG
3340 static const char *yyname[] = {
3341
3342 "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3343 "'!'",0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0,
3344 0,0,0,0,0,"':'","';'","'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3345 0,0,0,0,0,0,0,0,"'['",0,"']'","'^'",0,"'`'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3346 0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3347 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3348 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3349 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"LABEL","VARIABLE","NUMBER",
3350 "TEXT","COMMAND_LINE","DELIMITED","ORDINAL","TH","LEFT_ARROW_HEAD",
3351 "RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","BOX","CIRCLE","ELLIPSE","ARC",
3352 "LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS","FIGNAME","WIDTH","DIAMETER",
3353 "UP","DOWN","RIGHT","LEFT","FROM","TO","AT","WITH","BY","THEN","SOLID","DOTTED",
3354 "DASHED","CHOP","SAME","INVISIBLE","LJUST","RJUST","ABOVE","BELOW","OF","THE",
3355 "WAY","BETWEEN","AND","HERE","DOT_N","DOT_E","DOT_W","DOT_S","DOT_NE","DOT_SE",
3356 "DOT_NW","DOT_SW","DOT_C","DOT_START","DOT_END","DOT_X","DOT_Y","DOT_HT",
3357 "DOT_WID","DOT_RAD","SIN","COS","ATAN2","LOG","EXP","SQRT","K_MAX","K_MIN",
3358 "INT","RAND","SRAND","COPY","THRU","TOP","BOTTOM","UPPER","LOWER","SH","PRINT",
3359 "CW","CCW","FOR","DO","IF","ELSE","ANDAND","OROR","NOTEQUAL","EQUALEQUAL",
3360 "LESSEQUAL","GREATEREQUAL","LEFT_CORNER","RIGHT_CORNER","NORTH","SOUTH","EAST",
3361 "WEST","CENTER","END","START","RESET","UNTIL","PLOT","THICKNESS","FILL",
3362 "COLORED","OUTLINED","SHADED","XSLANTED","YSLANTED","ALIGNED","SPRINTF",
3363 "COMMAND","DEFINE","UNDEF",
3364 };
3365 static const char *yyrule[] = {
3366 "$accept : top",
3367 "top : optional_separator",
3368 "top : element_list",
3369 "element_list : optional_separator middle_element_list optional_separator",
3370 "middle_element_list : element",
3371 "middle_element_list : middle_element_list separator element",
3372 "optional_separator :",
3373 "optional_separator : separator",
3374 "separator : ';'",
3375 "separator : separator ';'",
3376 "placeless_element : FIGNAME '=' macro_name",
3377 "placeless_element : VARIABLE '=' any_expr",
3378 "placeless_element : VARIABLE ':' '=' any_expr",
3379 "placeless_element : UP",
3380 "placeless_element : DOWN",
3381 "placeless_element : LEFT",
3382 "placeless_element : RIGHT",
3383 "placeless_element : COMMAND_LINE",
3384 "placeless_element : COMMAND print_args",
3385 "placeless_element : PRINT print_args",
3386 "$$1 :",
3387 "placeless_element : SH $$1 DELIMITED",
3388 "placeless_element : COPY TEXT",
3389 "$$2 :",
3390 "$$3 :",
3391 "placeless_element : COPY TEXT THRU $$2 DELIMITED $$3 until",
3392 "$$4 :",
3393 "$$5 :",
3394 "placeless_element : COPY THRU $$4 DELIMITED $$5 until",
3395 "$$6 :",
3396 "placeless_element : FOR VARIABLE '=' expr TO expr optional_by DO $$6 DELIMITED",
3397 "placeless_element : simple_if",
3398 "$$7 :",
3399 "placeless_element : simple_if ELSE $$7 DELIMITED",
3400 "placeless_element : reset_variables",
3401 "placeless_element : RESET",
3402 "macro_name : VARIABLE",
3403 "macro_name : LABEL",
3404 "reset_variables : RESET VARIABLE",
3405 "reset_variables : reset_variables VARIABLE",
3406 "reset_variables : reset_variables ',' VARIABLE",
3407 "print_args : print_arg",
3408 "print_args : print_args print_arg",
3409 "print_arg : expr",
3410 "print_arg : text",
3411 "print_arg : position",
3412 "$$8 :",
3413 "simple_if : IF any_expr THEN $$8 DELIMITED",
3414 "until :",
3415 "until : UNTIL TEXT",
3416 "any_expr : expr",
3417 "any_expr : text_expr",
3418 "text_expr : text EQUALEQUAL text",
3419 "text_expr : text NOTEQUAL text",
3420 "text_expr : text_expr ANDAND text_expr",
3421 "text_expr : text_expr ANDAND expr",
3422 "text_expr : expr ANDAND text_expr",
3423 "text_expr : text_expr OROR text_expr",
3424 "text_expr : text_expr OROR expr",
3425 "text_expr : expr OROR text_expr",
3426 "text_expr : '!' text_expr",
3427 "optional_by :",
3428 "optional_by : BY expr",
3429 "optional_by : BY '*' expr",
3430 "element : object_spec",
3431 "element : LABEL ':' optional_separator element",
3432 "element : LABEL ':' optional_separator position_not_place",
3433 "element : LABEL ':' optional_separator place",
3434 "$$9 :",
3435 "$$10 :",
3436 "element : '{' $$9 element_list '}' $$10 optional_element",
3437 "element : placeless_element",
3438 "optional_element :",
3439 "optional_element : element",
3440 "object_spec : BOX",
3441 "object_spec : CIRCLE",
3442 "object_spec : ELLIPSE",
3443 "object_spec : ARC",
3444 "object_spec : LINE",
3445 "object_spec : ARROW",
3446 "object_spec : MOVE",
3447 "object_spec : SPLINE",
3448 "object_spec : text",
3449 "object_spec : PLOT expr",
3450 "object_spec : PLOT expr text",
3451 "$$11 :",
3452 "object_spec : '[' $$11 element_list ']'",
3453 "object_spec : object_spec HEIGHT expr",
3454 "object_spec : object_spec RADIUS expr",
3455 "object_spec : object_spec WIDTH expr",
3456 "object_spec : object_spec DIAMETER expr",
3457 "object_spec : object_spec expr",
3458 "object_spec : object_spec UP",
3459 "object_spec : object_spec UP expr",
3460 "object_spec : object_spec DOWN",
3461 "object_spec : object_spec DOWN expr",
3462 "object_spec : object_spec RIGHT",
3463 "object_spec : object_spec RIGHT expr",
3464 "object_spec : object_spec LEFT",
3465 "object_spec : object_spec LEFT expr",
3466 "object_spec : object_spec FROM position",
3467 "object_spec : object_spec TO position",
3468 "object_spec : object_spec AT position",
3469 "object_spec : object_spec WITH path",
3470 "object_spec : object_spec WITH position",
3471 "object_spec : object_spec BY expr_pair",
3472 "object_spec : object_spec THEN",
3473 "object_spec : object_spec SOLID",
3474 "object_spec : object_spec DOTTED",
3475 "object_spec : object_spec DOTTED expr",
3476 "object_spec : object_spec DASHED",
3477 "object_spec : object_spec DASHED expr",
3478 "object_spec : object_spec FILL",
3479 "object_spec : object_spec FILL expr",
3480 "object_spec : object_spec XSLANTED expr",
3481 "object_spec : object_spec YSLANTED expr",
3482 "object_spec : object_spec SHADED text",
3483 "object_spec : object_spec COLORED text",
3484 "object_spec : object_spec OUTLINED text",
3485 "object_spec : object_spec CHOP",
3486 "object_spec : object_spec CHOP expr",
3487 "object_spec : object_spec SAME",
3488 "object_spec : object_spec INVISIBLE",
3489 "object_spec : object_spec LEFT_ARROW_HEAD",
3490 "object_spec : object_spec RIGHT_ARROW_HEAD",
3491 "object_spec : object_spec DOUBLE_ARROW_HEAD",
3492 "object_spec : object_spec CW",
3493 "object_spec : object_spec CCW",
3494 "object_spec : object_spec text",
3495 "object_spec : object_spec LJUST",
3496 "object_spec : object_spec RJUST",
3497 "object_spec : object_spec ABOVE",
3498 "object_spec : object_spec BELOW",
3499 "object_spec : object_spec THICKNESS expr",
3500 "object_spec : object_spec ALIGNED",
3501 "text : TEXT",
3502 "text : SPRINTF '(' TEXT sprintf_args ')'",
3503 "sprintf_args :",
3504 "sprintf_args : sprintf_args ',' expr",
3505 "position : position_not_place",
3506 "position : place",
3507 "position : '(' place ')'",
3508 "position_not_place : expr_pair",
3509 "position_not_place : position '+' expr_pair",
3510 "position_not_place : '(' position '+' expr_pair ')'",
3511 "position_not_place : position '-' expr_pair",
3512 "position_not_place : '(' position '-' expr_pair ')'",
3513 "position_not_place : '(' position ',' position ')'",
3514 "position_not_place : expr between position AND position",
3515 "position_not_place : '(' expr between position AND position ')'",
3516 "position_not_place : expr '<' position ',' position '>'",
3517 "position_not_place : '(' expr '<' position ',' position '>' ')'",
3518 "between : BETWEEN",
3519 "between : OF THE WAY BETWEEN",
3520 "expr_pair : expr ',' expr",
3521 "expr_pair : '(' expr_pair ')'",
3522 "place : label",
3523 "place : label corner",
3524 "place : corner label",
3525 "place : corner OF label",
3526 "place : HERE",
3527 "label : LABEL",
3528 "label : nth_primitive",
3529 "label : label '.' LABEL",
3530 "ordinal : ORDINAL",
3531 "ordinal : '`' any_expr TH",
3532 "optional_ordinal_last : LAST",
3533 "optional_ordinal_last : ordinal LAST",
3534 "nth_primitive : ordinal object_type",
3535 "nth_primitive : optional_ordinal_last object_type",
3536 "object_type : BOX",
3537 "object_type : CIRCLE",
3538 "object_type : ELLIPSE",
3539 "object_type : ARC",
3540 "object_type : LINE",
3541 "object_type : ARROW",
3542 "object_type : SPLINE",
3543 "object_type : '[' ']'",
3544 "object_type : TEXT",
3545 "label_path : '.' LABEL",
3546 "label_path : label_path '.' LABEL",
3547 "relative_path : corner",
3548 "relative_path : label_path",
3549 "relative_path : label_path corner",
3550 "path : relative_path",
3551 "path : '(' relative_path ',' relative_path ')'",
3552 "path : ORDINAL LAST object_type relative_path",
3553 "path : LAST object_type relative_path",
3554 "path : ORDINAL object_type relative_path",
3555 "path : LABEL relative_path",
3556 "corner : DOT_N",
3557 "corner : DOT_E",
3558 "corner : DOT_W",
3559 "corner : DOT_S",
3560 "corner : DOT_NE",
3561 "corner : DOT_SE",
3562 "corner : DOT_NW",
3563 "corner : DOT_SW",
3564 "corner : DOT_C",
3565 "corner : DOT_START",
3566 "corner : DOT_END",
3567 "corner : TOP",
3568 "corner : BOTTOM",
3569 "corner : LEFT",
3570 "corner : RIGHT",
3571 "corner : UPPER LEFT",
3572 "corner : LOWER LEFT",
3573 "corner : UPPER RIGHT",
3574 "corner : LOWER RIGHT",
3575 "corner : LEFT_CORNER",
3576 "corner : RIGHT_CORNER",
3577 "corner : UPPER LEFT_CORNER",
3578 "corner : LOWER LEFT_CORNER",
3579 "corner : UPPER RIGHT_CORNER",
3580 "corner : LOWER RIGHT_CORNER",
3581 "corner : NORTH",
3582 "corner : SOUTH",
3583 "corner : EAST",
3584 "corner : WEST",
3585 "corner : CENTER",
3586 "corner : START",
3587 "corner : END",
3588 "expr : VARIABLE",
3589 "expr : NUMBER",
3590 "expr : place DOT_X",
3591 "expr : place DOT_Y",
3592 "expr : place DOT_HT",
3593 "expr : place DOT_WID",
3594 "expr : place DOT_RAD",
3595 "expr : expr '+' expr",
3596 "expr : expr '-' expr",
3597 "expr : expr '*' expr",
3598 "expr : expr '/' expr",
3599 "expr : expr '%' expr",
3600 "expr : expr '^' expr",
3601 "expr : '-' expr",
3602 "expr : '(' any_expr ')'",
3603 "expr : SIN '(' any_expr ')'",
3604 "expr : COS '(' any_expr ')'",
3605 "expr : ATAN2 '(' any_expr ',' any_expr ')'",
3606 "expr : LOG '(' any_expr ')'",
3607 "expr : EXP '(' any_expr ')'",
3608 "expr : SQRT '(' any_expr ')'",
3609 "expr : K_MAX '(' any_expr ',' any_expr ')'",
3610 "expr : K_MIN '(' any_expr ',' any_expr ')'",
3611 "expr : INT '(' any_expr ')'",
3612 "expr : RAND '(' any_expr ')'",
3613 "expr : RAND '(' ')'",
3614 "expr : SRAND '(' any_expr ')'",
3615 "expr : expr '<' expr",
3616 "expr : expr LESSEQUAL expr",
3617 "expr : expr '>' expr",
3618 "expr : expr GREATEREQUAL expr",
3619 "expr : expr EQUALEQUAL expr",
3620 "expr : expr NOTEQUAL expr",
3621 "expr : expr ANDAND expr",
3622 "expr : expr OROR expr",
3623 "expr : '!' expr",
3624
3625 };
3626 #endif
3627 #if YYDEBUG
3628 #include <stdio.h>
3629 #endif
3630
3631 /* define the initial stack-sizes */
3632 #ifdef YYSTACKSIZE
3633 #undef YYMAXDEPTH
3634 #define YYMAXDEPTH  YYSTACKSIZE
3635 #else
3636 #ifdef YYMAXDEPTH
3637 #define YYSTACKSIZE YYMAXDEPTH
3638 #else
3639 #define YYSTACKSIZE 500
3640 #define YYMAXDEPTH  500
3641 #endif
3642 #endif
3643
3644 #define YYINITSTACKSIZE 500
3645
3646 int      yydebug;
3647 int      yynerrs;
3648 int      yyerrflag;
3649 int      yychar;
3650 short   *yyssp;
3651 YYSTYPE *yyvsp;
3652 YYSTYPE  yyval;
3653 YYSTYPE  yylval;
3654
3655 /* variables for the parser stack */
3656 static short   *yyss;
3657 static short   *yysslim;
3658 static YYSTYPE *yyvs;
3659 static unsigned yystacksize;
3660 #line 1667 "pic.y"
3661
3662 /* bison defines const to be empty unless __STDC__ is defined, which it
3663 isn't under cfront */
3664
3665 #ifdef const
3666 #undef const
3667 #endif
3668
3669 static struct {
3670   const char *name;
3671   double val;
3672   int scaled;                // non-zero if val should be multiplied by scale
3673 } defaults_table[] = {
3674   { "arcrad", .25, 1 },
3675   { "arrowht", .1, 1 },
3676   { "arrowwid", .05, 1 },
3677   { "circlerad", .25, 1 },
3678   { "boxht", .5, 1 },
3679   { "boxwid", .75, 1 },
3680   { "boxrad", 0.0, 1 },
3681   { "dashwid", .05, 1 },
3682   { "ellipseht", .5, 1 },
3683   { "ellipsewid", .75, 1 },
3684   { "moveht", .5, 1 },
3685   { "movewid", .5, 1 },
3686   { "lineht", .5, 1 },
3687   { "linewid", .5, 1 },
3688   { "textht", 0.0, 1 },
3689   { "textwid", 0.0, 1 },
3690   { "scale", 1.0, 0 },
3691   { "linethick", -1.0, 0 },             // in points
3692   { "fillval", .5, 0 },
3693   { "arrowhead", 1.0, 0 },
3694   { "maxpswid", 8.5, 0 },
3695   { "maxpsht", 11.0, 0 },
3696 };
3697
3698 place *lookup_label(const char *label)
3699 {
3700   saved_state *state = current_saved_state;
3701   PTABLE(place) *tbl = current_table;
3702   for (;;) {
3703     place *pl = tbl->lookup(label);
3704     if (pl)
3705       return pl;
3706     if (!state)
3707       return 0;
3708     tbl = state->tbl;
3709     state = state->prev;
3710   }
3711 }
3712
3713 void define_label(const char *label, const place *pl)
3714 {
3715   place *p = new place[1];
3716   *p = *pl;
3717   current_table->define(label, p);
3718 }
3719
3720 int lookup_variable(const char *name, double *val)
3721 {
3722   place *pl = lookup_label(name);
3723   if (pl) {
3724     *val = pl->x;
3725     return 1;
3726   }
3727   return 0;
3728 }
3729
3730 void define_variable(const char *name, double val)
3731 {
3732   place *p = new place[1];
3733   p->obj = 0;
3734   p->x = val;
3735   p->y = 0.0;
3736   current_table->define(name, p);
3737   if (strcmp(name, "scale") == 0) {
3738     // When the scale changes, reset all scaled pre-defined variables to
3739     // their default values.
3740     for (unsigned int i = 0;
3741          i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) 
3742       if (defaults_table[i].scaled)
3743         define_variable(defaults_table[i].name, val*defaults_table[i].val);
3744   }
3745 }
3746
3747 // called once only (not once per parse)
3748
3749 void parse_init()
3750 {
3751   current_direction = RIGHT_DIRECTION;
3752   current_position.x = 0.0;
3753   current_position.y = 0.0;
3754   // This resets everything to its default value.
3755   reset_all();
3756 }
3757
3758 void reset(const char *nm)
3759 {
3760   for (unsigned int i = 0;
3761        i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
3762     if (strcmp(nm, defaults_table[i].name) == 0) {
3763       double val = defaults_table[i].val;
3764       if (defaults_table[i].scaled) {
3765         double scale;
3766         lookup_variable("scale", &scale);
3767         val *= scale;
3768       }
3769       define_variable(defaults_table[i].name, val);
3770       return;
3771     }
3772   lex_error("`%1' is not a predefined variable", nm);
3773 }
3774
3775 void reset_all()
3776 {
3777   // We only have to explicitly reset the pre-defined variables that
3778   // aren't scaled because `scale' is not scaled, and changing the
3779   // value of `scale' will reset all the pre-defined variables that
3780   // are scaled.
3781   for (unsigned int i = 0;
3782        i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++)
3783     if (!defaults_table[i].scaled)
3784       define_variable(defaults_table[i].name, defaults_table[i].val);
3785 }
3786
3787 // called after each parse
3788
3789 void parse_cleanup()
3790 {
3791   while (current_saved_state != 0) {
3792     delete current_table;
3793     current_table = current_saved_state->tbl;
3794     saved_state *tem = current_saved_state;
3795     current_saved_state = current_saved_state->prev;
3796     delete tem;
3797   }
3798   assert(current_table == &top_table);
3799   PTABLE_ITERATOR(place) iter(current_table);
3800   const char *key;
3801   place *pl;
3802   while (iter.next(&key, &pl))
3803     if (pl->obj != 0) {
3804       position pos = pl->obj->origin();
3805       pl->obj = 0;
3806       pl->x = pos.x;
3807       pl->y = pos.y;
3808     }
3809   while (olist.head != 0) {
3810     object *tem = olist.head;
3811     olist.head = olist.head->next;
3812     delete tem;
3813   }
3814   olist.tail = 0;
3815   current_direction = RIGHT_DIRECTION;
3816   current_position.x = 0.0;
3817   current_position.y = 0.0;
3818 }
3819
3820 const char *ordinal_postfix(int n)
3821 {
3822   if (n < 10 || n > 20)
3823     switch (n % 10) {
3824     case 1:
3825       return "st";
3826     case 2:
3827       return "nd";
3828     case 3:
3829       return "rd";
3830     }
3831   return "th";
3832 }
3833
3834 const char *object_type_name(object_type type)
3835 {
3836   switch (type) {
3837   case BOX_OBJECT:
3838     return "box";
3839   case CIRCLE_OBJECT:
3840     return "circle";
3841   case ELLIPSE_OBJECT:
3842     return "ellipse";
3843   case ARC_OBJECT:
3844     return "arc";
3845   case SPLINE_OBJECT:
3846     return "spline";
3847   case LINE_OBJECT:
3848     return "line";
3849   case ARROW_OBJECT:
3850     return "arrow";
3851   case MOVE_OBJECT:
3852     return "move";
3853   case TEXT_OBJECT:
3854     return "\"\"";
3855   case BLOCK_OBJECT:
3856     return "[]";
3857   case OTHER_OBJECT:
3858   case MARK_OBJECT:
3859   default:
3860     break;
3861   }
3862   return "object";
3863 }
3864
3865 static char sprintf_buf[1024];
3866
3867 char *format_number(const char *form, double n)
3868 {
3869   if (form == 0)
3870     form = "%g";
3871   return do_sprintf(form, &n, 1);
3872 }
3873
3874 char *do_sprintf(const char *form, const double *v, int nv)
3875 {
3876   string result;
3877   int i = 0;
3878   string one_format;
3879   while (*form) {
3880     if (*form == '%') {
3881       one_format += *form++;
3882       for (; *form != '\0' && strchr("#-+ 0123456789.", *form) != 0; form++)
3883         one_format += *form;
3884       if (*form == '\0' || strchr("eEfgG%", *form) == 0) {
3885         lex_error("bad sprintf format");
3886         result += one_format;
3887         result += form;
3888         break;
3889       }
3890       if (*form == '%') {
3891         one_format += *form++;
3892         one_format += '\0';
3893         snprintf(sprintf_buf, sizeof(sprintf_buf),
3894                  "%s", one_format.contents());
3895       }
3896       else {
3897         if (i >= nv) {
3898           lex_error("too few arguments to snprintf");
3899           result += one_format;
3900           result += form;
3901           break;
3902         }
3903         one_format += *form++;
3904         one_format += '\0';
3905         snprintf(sprintf_buf, sizeof(sprintf_buf),
3906                  one_format.contents(), v[i++]);
3907       }
3908       one_format.clear();
3909       result += sprintf_buf;
3910     }
3911     else
3912       result += *form++;
3913   }
3914   result += '\0';
3915   return strsave(result.contents());
3916 }
3917 #line 3917 "pic.cpp"
3918 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
3919 static int yygrowstack(void)
3920 {
3921     int i;
3922     unsigned newsize;
3923     short *newss;
3924     YYSTYPE *newvs;
3925
3926     if ((newsize = yystacksize) == 0)
3927         newsize = YYINITSTACKSIZE;
3928     else if (newsize >= YYMAXDEPTH)
3929         return -1;
3930     else if ((newsize *= 2) > YYMAXDEPTH)
3931         newsize = YYMAXDEPTH;
3932
3933     i = yyssp - yyss;
3934     newss = (yyss != 0)
3935           ? (short *)realloc(yyss, newsize * sizeof(*newss))
3936           : (short *)malloc(newsize * sizeof(*newss));
3937     if (newss == 0)
3938         return -1;
3939
3940     yyss  = newss;
3941     yyssp = newss + i;
3942     newvs = (yyvs != 0)
3943           ? (YYSTYPE *)realloc(yyvs, newsize * sizeof(*newvs))
3944           : (YYSTYPE *)malloc(newsize * sizeof(*newvs));
3945     if (newvs == 0)
3946         return -1;
3947
3948     yyvs = newvs;
3949     yyvsp = newvs + i;
3950     yystacksize = newsize;
3951     yysslim = yyss + newsize - 1;
3952     return 0;
3953 }
3954
3955 #define YYABORT  goto yyabort
3956 #define YYREJECT goto yyabort
3957 #define YYACCEPT goto yyaccept
3958 #define YYERROR  goto yyerrlab
3959
3960 int
3961 YYPARSE_DECL()
3962 {
3963     int yym, yyn, yystate;
3964 #if YYDEBUG
3965     const char *yys;
3966
3967     if ((yys = getenv("YYDEBUG")) != 0)
3968     {
3969         yyn = *yys;
3970         if (yyn >= '0' && yyn <= '9')
3971             yydebug = yyn - '0';
3972     }
3973 #endif
3974
3975     yynerrs = 0;
3976     yyerrflag = 0;
3977     yychar = YYEMPTY;
3978     yystate = 0;
3979
3980     if (yyss == NULL && yygrowstack()) goto yyoverflow;
3981     yyssp = yyss;
3982     yyvsp = yyvs;
3983     yystate = 0;
3984     *yyssp = 0;
3985
3986 yyloop:
3987     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
3988     if (yychar < 0)
3989     {
3990         if ((yychar = yylex()) < 0) yychar = 0;
3991 #if YYDEBUG
3992         if (yydebug)
3993         {
3994             yys = 0;
3995             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
3996             if (!yys) yys = "illegal-symbol";
3997             printf("%sdebug: state %d, reading %d (%s)\n",
3998                     YYPREFIX, yystate, yychar, yys);
3999         }
4000 #endif
4001     }
4002     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
4003             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
4004     {
4005 #if YYDEBUG
4006         if (yydebug)
4007             printf("%sdebug: state %d, shifting to state %d\n",
4008                     YYPREFIX, yystate, yytable[yyn]);
4009 #endif
4010         if (yyssp >= yysslim && yygrowstack())
4011         {
4012             goto yyoverflow;
4013         }
4014         yystate = yytable[yyn];
4015         *++yyssp = yytable[yyn];
4016         *++yyvsp = yylval;
4017         yychar = YYEMPTY;
4018         if (yyerrflag > 0)  --yyerrflag;
4019         goto yyloop;
4020     }
4021     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
4022             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
4023     {
4024         yyn = yytable[yyn];
4025         goto yyreduce;
4026     }
4027     if (yyerrflag) goto yyinrecovery;
4028
4029     yyerror("syntax error");
4030
4031     goto yyerrlab;
4032
4033 yyerrlab:
4034     ++yynerrs;
4035
4036 yyinrecovery:
4037     if (yyerrflag < 3)
4038     {
4039         yyerrflag = 3;
4040         for (;;)
4041         {
4042             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
4043                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
4044             {
4045 #if YYDEBUG
4046                 if (yydebug)
4047                     printf("%sdebug: state %d, error recovery shifting\
4048  to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
4049 #endif
4050                 if (yyssp >= yysslim && yygrowstack())
4051                 {
4052                     goto yyoverflow;
4053                 }
4054                 yystate = yytable[yyn];
4055                 *++yyssp = yytable[yyn];
4056                 *++yyvsp = yylval;
4057                 goto yyloop;
4058             }
4059             else
4060             {
4061 #if YYDEBUG
4062                 if (yydebug)
4063                     printf("%sdebug: error recovery discarding state %d\n",
4064                             YYPREFIX, *yyssp);
4065 #endif
4066                 if (yyssp <= yyss) goto yyabort;
4067                 --yyssp;
4068                 --yyvsp;
4069             }
4070         }
4071     }
4072     else
4073     {
4074         if (yychar == 0) goto yyabort;
4075 #if YYDEBUG
4076         if (yydebug)
4077         {
4078             yys = 0;
4079             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
4080             if (!yys) yys = "illegal-symbol";
4081             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
4082                     YYPREFIX, yystate, yychar, yys);
4083         }
4084 #endif
4085         yychar = YYEMPTY;
4086         goto yyloop;
4087     }
4088
4089 yyreduce:
4090 #if YYDEBUG
4091     if (yydebug)
4092         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
4093                 YYPREFIX, yystate, yyn, yyrule[yyn]);
4094 #endif
4095     yym = yylen[yyn];
4096     if (yym)
4097         yyval = yyvsp[1-yym];
4098     else
4099         memset(&yyval, 0, sizeof yyval);
4100     switch (yyn)
4101     {
4102 case 2:
4103 #line 277 "pic.y"
4104         {
4105                   if (olist.head)
4106                     print_picture(olist.head);
4107                 }
4108 break;
4109 case 3:
4110 #line 286 "pic.y"
4111         { yyval.pl = yyvsp[-1].pl; }
4112 break;
4113 case 4:
4114 #line 291 "pic.y"
4115         { yyval.pl = yyvsp[0].pl; }
4116 break;
4117 case 5:
4118 #line 293 "pic.y"
4119         { yyval.pl = yyvsp[-2].pl; }
4120 break;
4121 case 10:
4122 #line 308 "pic.y"
4123         {
4124                   a_delete graphname;
4125                   graphname = new char[strlen(yyvsp[0].str) + 1];
4126                   strcpy(graphname, yyvsp[0].str);
4127                   a_delete yyvsp[0].str;
4128                 }
4129 break;
4130 case 11:
4131 #line 316 "pic.y"
4132         {
4133                   define_variable(yyvsp[-2].str, yyvsp[0].x);
4134                   a_delete yyvsp[-2].str;
4135                 }
4136 break;
4137 case 12:
4138 #line 321 "pic.y"
4139         {
4140                   place *p = lookup_label(yyvsp[-3].str);
4141                   if (!p) {
4142                     lex_error("variable `%1' not defined", yyvsp[-3].str);
4143                     YYABORT;
4144                   }
4145                   p->obj = 0;
4146                   p->x = yyvsp[0].x;
4147                   p->y = 0.0;
4148                   a_delete yyvsp[-3].str;
4149                 }
4150 break;
4151 case 13:
4152 #line 333 "pic.y"
4153         { current_direction = UP_DIRECTION; }
4154 break;
4155 case 14:
4156 #line 335 "pic.y"
4157         { current_direction = DOWN_DIRECTION; }
4158 break;
4159 case 15:
4160 #line 337 "pic.y"
4161         { current_direction = LEFT_DIRECTION; }
4162 break;
4163 case 16:
4164 #line 339 "pic.y"
4165         { current_direction = RIGHT_DIRECTION; }
4166 break;
4167 case 17:
4168 #line 341 "pic.y"
4169         {
4170                   olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
4171                                                    yyvsp[0].lstr.lineno));
4172                 }
4173 break;
4174 case 18:
4175 #line 346 "pic.y"
4176         {
4177                   olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename,
4178                                                    yyvsp[0].lstr.lineno));
4179                 }
4180 break;
4181 case 19:
4182 #line 351 "pic.y"
4183         {
4184                   fprintf(stderr, "%s\n", yyvsp[0].lstr.str);
4185                   a_delete yyvsp[0].lstr.str;
4186                   fflush(stderr);
4187                 }
4188 break;
4189 case 20:
4190 #line 357 "pic.y"
4191         { delim_flag = 1; }
4192 break;
4193 case 21:
4194 #line 359 "pic.y"
4195         {
4196                   delim_flag = 0;
4197                   if (safer_flag)
4198                     lex_error("unsafe to run command `%1'", yyvsp[0].str);
4199                   else
4200                     system(yyvsp[0].str);
4201                   a_delete yyvsp[0].str;
4202                 }
4203 break;
4204 case 22:
4205 #line 368 "pic.y"
4206         {
4207                   if (yychar < 0)
4208                     do_lookahead();
4209                   do_copy(yyvsp[0].lstr.str);
4210                   /* do not delete the filename*/
4211                 }
4212 break;
4213 case 23:
4214 #line 375 "pic.y"
4215         { delim_flag = 2; }
4216 break;
4217 case 24:
4218 #line 377 "pic.y"
4219         { delim_flag = 0; }
4220 break;
4221 case 25:
4222 #line 379 "pic.y"
4223         {
4224                   if (yychar < 0)
4225                     do_lookahead();
4226                   copy_file_thru(yyvsp[-5].lstr.str, yyvsp[-2].str, yyvsp[0].str);
4227                   /* do not delete the filename*/
4228                   a_delete yyvsp[-2].str;
4229                   a_delete yyvsp[0].str;
4230                 }
4231 break;
4232 case 26:
4233 #line 388 "pic.y"
4234         { delim_flag = 2; }
4235 break;
4236 case 27:
4237 #line 390 "pic.y"
4238         { delim_flag = 0; }
4239 break;
4240 case 28:
4241 #line 392 "pic.y"
4242         {
4243                   if (yychar < 0)
4244                     do_lookahead();
4245                   copy_rest_thru(yyvsp[-2].str, yyvsp[0].str);
4246                   a_delete yyvsp[-2].str;
4247                   a_delete yyvsp[0].str;
4248                 }
4249 break;
4250 case 29:
4251 #line 400 "pic.y"
4252         { delim_flag = 1; }
4253 break;
4254 case 30:
4255 #line 402 "pic.y"
4256         {
4257                   delim_flag = 0;
4258                   if (yychar < 0)
4259                     do_lookahead();
4260                   do_for(yyvsp[-8].str, yyvsp[-6].x, yyvsp[-4].x, yyvsp[-3].by.is_multiplicative, yyvsp[-3].by.val, yyvsp[0].str); 
4261                 }
4262 break;
4263 case 31:
4264 #line 409 "pic.y"
4265         {
4266                   if (yychar < 0)
4267                     do_lookahead();
4268                   if (yyvsp[0].if_data.x != 0.0)
4269                     push_body(yyvsp[0].if_data.body);
4270                   a_delete yyvsp[0].if_data.body;
4271                 }
4272 break;
4273 case 32:
4274 #line 417 "pic.y"
4275         { delim_flag = 1; }
4276 break;
4277 case 33:
4278 #line 419 "pic.y"
4279         {
4280                   delim_flag = 0;
4281                   if (yychar < 0)
4282                     do_lookahead();
4283                   if (yyvsp[-3].if_data.x != 0.0)
4284                     push_body(yyvsp[-3].if_data.body);
4285                   else
4286                     push_body(yyvsp[0].str);
4287                   a_delete yyvsp[-3].if_data.body;
4288                   a_delete yyvsp[0].str;
4289                 }
4290 break;
4291 case 35:
4292 #line 432 "pic.y"
4293         { define_variable("scale", 1.0); }
4294 break;
4295 case 38:
4296 #line 442 "pic.y"
4297         {
4298                   reset(yyvsp[0].str);
4299                   a_delete yyvsp[0].str;
4300                 }
4301 break;
4302 case 39:
4303 #line 447 "pic.y"
4304         {
4305                   reset(yyvsp[0].str);
4306                   a_delete yyvsp[0].str;
4307                 }
4308 break;
4309 case 40:
4310 #line 452 "pic.y"
4311         {
4312                   reset(yyvsp[0].str);
4313                   a_delete yyvsp[0].str;
4314                 }
4315 break;
4316 case 41:
4317 #line 460 "pic.y"
4318         { yyval.lstr = yyvsp[0].lstr; }
4319 break;
4320 case 42:
4321 #line 462 "pic.y"
4322         {
4323                   yyval.lstr.str = new char[strlen(yyvsp[-1].lstr.str) + strlen(yyvsp[0].lstr.str) + 1];
4324                   strcpy(yyval.lstr.str, yyvsp[-1].lstr.str);
4325                   strcat(yyval.lstr.str, yyvsp[0].lstr.str);
4326                   a_delete yyvsp[-1].lstr.str;
4327                   a_delete yyvsp[0].lstr.str;
4328                   if (yyvsp[-1].lstr.filename) {
4329                     yyval.lstr.filename = yyvsp[-1].lstr.filename;
4330                     yyval.lstr.lineno = yyvsp[-1].lstr.lineno;
4331                   }
4332                   else if (yyvsp[0].lstr.filename) {
4333                     yyval.lstr.filename = yyvsp[0].lstr.filename;
4334                     yyval.lstr.lineno = yyvsp[0].lstr.lineno;
4335                   }
4336                 }
4337 break;
4338 case 43:
4339 #line 481 "pic.y"
4340         {
4341                   yyval.lstr.str = new char[GDIGITS + 1];
4342                   sprintf(yyval.lstr.str, "%g", yyvsp[0].x);
4343                   yyval.lstr.filename = 0;
4344                   yyval.lstr.lineno = 0;
4345                 }
4346 break;
4347 case 44:
4348 #line 488 "pic.y"
4349         { yyval.lstr = yyvsp[0].lstr; }
4350 break;
4351 case 45:
4352 #line 490 "pic.y"
4353         {
4354                   yyval.lstr.str = new char[GDIGITS + 2 + GDIGITS + 1];
4355                   sprintf(yyval.lstr.str, "%g, %g", yyvsp[0].pair.x, yyvsp[0].pair.y);
4356                   yyval.lstr.filename = 0;
4357                   yyval.lstr.lineno = 0;
4358                 }
4359 break;
4360 case 46:
4361 #line 500 "pic.y"
4362         { delim_flag = 1; }
4363 break;
4364 case 47:
4365 #line 502 "pic.y"
4366         {
4367                   delim_flag = 0;
4368                   yyval.if_data.x = yyvsp[-3].x;
4369                   yyval.if_data.body = yyvsp[0].str;
4370                 }
4371 break;
4372 case 48:
4373 #line 511 "pic.y"
4374         { yyval.str = 0; }
4375 break;
4376 case 49:
4377 #line 513 "pic.y"
4378         { yyval.str = yyvsp[0].lstr.str; }
4379 break;
4380 case 50:
4381 #line 518 "pic.y"
4382         { yyval.x = yyvsp[0].x; }
4383 break;
4384 case 51:
4385 #line 520 "pic.y"
4386         { yyval.x = yyvsp[0].x; }
4387 break;
4388 case 52:
4389 #line 525 "pic.y"
4390         {
4391                   yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) == 0;
4392                   a_delete yyvsp[-2].lstr.str;
4393                   a_delete yyvsp[0].lstr.str;
4394                 }
4395 break;
4396 case 53:
4397 #line 531 "pic.y"
4398         {
4399                   yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) != 0;
4400                   a_delete yyvsp[-2].lstr.str;
4401                   a_delete yyvsp[0].lstr.str;
4402                 }
4403 break;
4404 case 54:
4405 #line 537 "pic.y"
4406         { yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
4407 break;
4408 case 55:
4409 #line 539 "pic.y"
4410         { yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
4411 break;
4412 case 56:
4413 #line 541 "pic.y"
4414         { yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
4415 break;
4416 case 57:
4417 #line 543 "pic.y"
4418         { yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
4419 break;
4420 case 58:
4421 #line 545 "pic.y"
4422         { yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
4423 break;
4424 case 59:
4425 #line 547 "pic.y"
4426         { yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
4427 break;
4428 case 60:
4429 #line 549 "pic.y"
4430         { yyval.x = (yyvsp[0].x == 0.0); }
4431 break;
4432 case 61:
4433 #line 555 "pic.y"
4434         {
4435                   yyval.by.val = 1.0;
4436                   yyval.by.is_multiplicative = 0;
4437                 }
4438 break;
4439 case 62:
4440 #line 560 "pic.y"
4441         {
4442                   yyval.by.val = yyvsp[0].x;
4443                   yyval.by.is_multiplicative = 0;
4444                 }
4445 break;
4446 case 63:
4447 #line 565 "pic.y"
4448         {
4449                   yyval.by.val = yyvsp[0].x;
4450                   yyval.by.is_multiplicative = 1;
4451                 }
4452 break;
4453 case 64:
4454 #line 573 "pic.y"
4455         {
4456                   yyval.pl.obj = yyvsp[0].spec->make_object(&current_position,
4457                                            &current_direction);
4458                   if (yyval.pl.obj == 0)
4459                     YYABORT;
4460                   delete yyvsp[0].spec;
4461                   if (yyval.pl.obj)
4462                     olist.append(yyval.pl.obj);
4463                   else {
4464                     yyval.pl.x = current_position.x;
4465                     yyval.pl.y = current_position.y;
4466                   }
4467                 }
4468 break;
4469 case 65:
4470 #line 587 "pic.y"
4471         {
4472                   yyval.pl = yyvsp[0].pl;
4473                   define_label(yyvsp[-3].str, & yyval.pl);
4474                   a_delete yyvsp[-3].str;
4475                 }
4476 break;
4477 case 66:
4478 #line 593 "pic.y"
4479         {
4480                   yyval.pl.obj = 0;
4481                   yyval.pl.x = yyvsp[0].pair.x;
4482                   yyval.pl.y = yyvsp[0].pair.y;
4483                   define_label(yyvsp[-3].str, & yyval.pl);
4484                   a_delete yyvsp[-3].str;
4485                 }
4486 break;
4487 case 67:
4488 #line 601 "pic.y"
4489         {
4490                   yyval.pl = yyvsp[0].pl;
4491                   define_label(yyvsp[-3].str, & yyval.pl);
4492                   a_delete yyvsp[-3].str;
4493                 }
4494 break;
4495 case 68:
4496 #line 607 "pic.y"
4497         {
4498                   yyval.state.x = current_position.x;
4499                   yyval.state.y = current_position.y;
4500                   yyval.state.dir = current_direction;
4501                 }
4502 break;
4503 case 69:
4504 #line 613 "pic.y"
4505         {
4506                   current_position.x = yyvsp[-2].state.x;
4507                   current_position.y = yyvsp[-2].state.y;
4508                   current_direction = yyvsp[-2].state.dir;
4509                 }
4510 break;
4511 case 70:
4512 #line 619 "pic.y"
4513         {
4514                   yyval.pl = yyvsp[-3].pl;
4515                 }
4516 break;
4517 case 71:
4518 #line 623 "pic.y"
4519         {
4520                   yyval.pl.obj = 0;
4521                   yyval.pl.x = current_position.x;
4522                   yyval.pl.y = current_position.y;
4523                 }
4524 break;
4525 case 72:
4526 #line 632 "pic.y"
4527         {}
4528 break;
4529 case 73:
4530 #line 634 "pic.y"
4531         {}
4532 break;
4533 case 74:
4534 #line 639 "pic.y"
4535         { yyval.spec = new object_spec(BOX_OBJECT); }
4536 break;
4537 case 75:
4538 #line 641 "pic.y"
4539         { yyval.spec = new object_spec(CIRCLE_OBJECT); }
4540 break;
4541 case 76:
4542 #line 643 "pic.y"
4543         { yyval.spec = new object_spec(ELLIPSE_OBJECT); }
4544 break;
4545 case 77:
4546 #line 645 "pic.y"
4547         {
4548                   yyval.spec = new object_spec(ARC_OBJECT);
4549                   yyval.spec->dir = current_direction;
4550                 }
4551 break;
4552 case 78:
4553 #line 650 "pic.y"
4554         {
4555                   yyval.spec = new object_spec(LINE_OBJECT);
4556                   lookup_variable("lineht", & yyval.spec->segment_height);
4557                   lookup_variable("linewid", & yyval.spec->segment_width);
4558                   yyval.spec->dir = current_direction;
4559                 }
4560 break;
4561 case 79:
4562 #line 657 "pic.y"
4563         {
4564                   yyval.spec = new object_spec(ARROW_OBJECT);
4565                   lookup_variable("lineht", & yyval.spec->segment_height);
4566                   lookup_variable("linewid", & yyval.spec->segment_width);
4567                   yyval.spec->dir = current_direction;
4568                 }
4569 break;
4570 case 80:
4571 #line 664 "pic.y"
4572         {
4573                   yyval.spec = new object_spec(MOVE_OBJECT);
4574                   lookup_variable("moveht", & yyval.spec->segment_height);
4575                   lookup_variable("movewid", & yyval.spec->segment_width);
4576                   yyval.spec->dir = current_direction;
4577                 }
4578 break;
4579 case 81:
4580 #line 671 "pic.y"
4581         {
4582                   yyval.spec = new object_spec(SPLINE_OBJECT);
4583                   lookup_variable("lineht", & yyval.spec->segment_height);
4584                   lookup_variable("linewid", & yyval.spec->segment_width);
4585                   yyval.spec->dir = current_direction;
4586                 }
4587 break;
4588 case 82:
4589 #line 678 "pic.y"
4590         {
4591                   yyval.spec = new object_spec(TEXT_OBJECT);
4592                   yyval.spec->text = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
4593                 }
4594 break;
4595 case 83:
4596 #line 683 "pic.y"
4597         {
4598                   yyval.spec = new object_spec(TEXT_OBJECT);
4599                   yyval.spec->text = new text_item(format_number(0, yyvsp[0].x), 0, -1);
4600                 }
4601 break;
4602 case 84:
4603 #line 688 "pic.y"
4604         {
4605                   yyval.spec = new object_spec(TEXT_OBJECT);
4606                   yyval.spec->text = new text_item(format_number(yyvsp[0].lstr.str, yyvsp[-1].x),
4607                                            yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
4608                   a_delete yyvsp[0].lstr.str;
4609                 }
4610 break;
4611 case 85:
4612 #line 695 "pic.y"
4613         {
4614                   saved_state *p = new saved_state;
4615                   yyval.pstate = p;
4616                   p->x = current_position.x;
4617                   p->y = current_position.y;
4618                   p->dir = current_direction;
4619                   p->tbl = current_table;
4620                   p->prev = current_saved_state;
4621                   current_position.x = 0.0;
4622                   current_position.y = 0.0;
4623                   current_table = new PTABLE(place);
4624                   current_saved_state = p;
4625                   olist.append(make_mark_object());
4626                 }
4627 break;
4628 case 86:
4629 #line 710 "pic.y"
4630         {
4631                   current_position.x = yyvsp[-2].pstate->x;
4632                   current_position.y = yyvsp[-2].pstate->y;
4633                   current_direction = yyvsp[-2].pstate->dir;
4634                   yyval.spec = new object_spec(BLOCK_OBJECT);
4635                   olist.wrap_up_block(& yyval.spec->oblist);
4636                   yyval.spec->tbl = current_table;
4637                   current_table = yyvsp[-2].pstate->tbl;
4638                   current_saved_state = yyvsp[-2].pstate->prev;
4639                   delete yyvsp[-2].pstate;
4640                 }
4641 break;
4642 case 87:
4643 #line 722 "pic.y"
4644         {
4645                   yyval.spec = yyvsp[-2].spec;
4646                   yyval.spec->height = yyvsp[0].x;
4647                   yyval.spec->flags |= HAS_HEIGHT;
4648                 }
4649 break;
4650 case 88:
4651 #line 728 "pic.y"
4652         {
4653                   yyval.spec = yyvsp[-2].spec;
4654                   yyval.spec->radius = yyvsp[0].x;
4655                   yyval.spec->flags |= HAS_RADIUS;
4656                 }
4657 break;
4658 case 89:
4659 #line 734 "pic.y"
4660         {
4661                   yyval.spec = yyvsp[-2].spec;
4662                   yyval.spec->width = yyvsp[0].x;
4663                   yyval.spec->flags |= HAS_WIDTH;
4664                 }
4665 break;
4666 case 90:
4667 #line 740 "pic.y"
4668         {
4669                   yyval.spec = yyvsp[-2].spec;
4670                   yyval.spec->radius = yyvsp[0].x/2.0;
4671                   yyval.spec->flags |= HAS_RADIUS;
4672                 }
4673 break;
4674 case 91:
4675 #line 746 "pic.y"
4676         {
4677                   yyval.spec = yyvsp[-1].spec;
4678                   yyval.spec->flags |= HAS_SEGMENT;
4679                   switch (yyval.spec->dir) {
4680                   case UP_DIRECTION:
4681                     yyval.spec->segment_pos.y += yyvsp[0].x;
4682                     break;
4683                   case DOWN_DIRECTION:
4684                     yyval.spec->segment_pos.y -= yyvsp[0].x;
4685                     break;
4686                   case RIGHT_DIRECTION:
4687                     yyval.spec->segment_pos.x += yyvsp[0].x;
4688                     break;
4689                   case LEFT_DIRECTION:
4690                     yyval.spec->segment_pos.x -= yyvsp[0].x;
4691                     break;
4692                   }
4693                 }
4694 break;
4695 case 92:
4696 #line 765 "pic.y"
4697         {
4698                   yyval.spec = yyvsp[-1].spec;
4699                   yyval.spec->dir = UP_DIRECTION;
4700                   yyval.spec->flags |= HAS_SEGMENT;
4701                   yyval.spec->segment_pos.y += yyval.spec->segment_height;
4702                 }
4703 break;
4704 case 93:
4705 #line 772 "pic.y"
4706         {
4707                   yyval.spec = yyvsp[-2].spec;
4708                   yyval.spec->dir = UP_DIRECTION;
4709                   yyval.spec->flags |= HAS_SEGMENT;
4710                   yyval.spec->segment_pos.y += yyvsp[0].x;
4711                 }
4712 break;
4713 case 94:
4714 #line 779 "pic.y"
4715         {
4716                   yyval.spec = yyvsp[-1].spec;
4717                   yyval.spec->dir = DOWN_DIRECTION;
4718                   yyval.spec->flags |= HAS_SEGMENT;
4719                   yyval.spec->segment_pos.y -= yyval.spec->segment_height;
4720                 }
4721 break;
4722 case 95:
4723 #line 786 "pic.y"
4724         {
4725                   yyval.spec = yyvsp[-2].spec;
4726                   yyval.spec->dir = DOWN_DIRECTION;
4727                   yyval.spec->flags |= HAS_SEGMENT;
4728                   yyval.spec->segment_pos.y -= yyvsp[0].x;
4729                 }
4730 break;
4731 case 96:
4732 #line 793 "pic.y"
4733         {
4734                   yyval.spec = yyvsp[-1].spec;
4735                   yyval.spec->dir = RIGHT_DIRECTION;
4736                   yyval.spec->flags |= HAS_SEGMENT;
4737                   yyval.spec->segment_pos.x += yyval.spec->segment_width;
4738                 }
4739 break;
4740 case 97:
4741 #line 800 "pic.y"
4742         {
4743                   yyval.spec = yyvsp[-2].spec;
4744                   yyval.spec->dir = RIGHT_DIRECTION;
4745                   yyval.spec->flags |= HAS_SEGMENT;
4746                   yyval.spec->segment_pos.x += yyvsp[0].x;
4747                 }
4748 break;
4749 case 98:
4750 #line 807 "pic.y"
4751         {
4752                   yyval.spec = yyvsp[-1].spec;
4753                   yyval.spec->dir = LEFT_DIRECTION;
4754                   yyval.spec->flags |= HAS_SEGMENT;
4755                   yyval.spec->segment_pos.x -= yyval.spec->segment_width;
4756                 }
4757 break;
4758 case 99:
4759 #line 814 "pic.y"
4760         {
4761                   yyval.spec = yyvsp[-2].spec;
4762                   yyval.spec->dir = LEFT_DIRECTION;
4763                   yyval.spec->flags |= HAS_SEGMENT;
4764                   yyval.spec->segment_pos.x -= yyvsp[0].x;
4765                 }
4766 break;
4767 case 100:
4768 #line 821 "pic.y"
4769         {
4770                   yyval.spec = yyvsp[-2].spec;
4771                   yyval.spec->flags |= HAS_FROM;
4772                   yyval.spec->from.x = yyvsp[0].pair.x;
4773                   yyval.spec->from.y = yyvsp[0].pair.y;
4774                 }
4775 break;
4776 case 101:
4777 #line 828 "pic.y"
4778         {
4779                   yyval.spec = yyvsp[-2].spec;
4780                   if (yyval.spec->flags & HAS_SEGMENT)
4781                     yyval.spec->segment_list = new segment(yyval.spec->segment_pos,
4782                                                    yyval.spec->segment_is_absolute,
4783                                                    yyval.spec->segment_list);
4784                   yyval.spec->flags |= HAS_SEGMENT;
4785                   yyval.spec->segment_pos.x = yyvsp[0].pair.x;
4786                   yyval.spec->segment_pos.y = yyvsp[0].pair.y;
4787                   yyval.spec->segment_is_absolute = 1;
4788                   yyval.spec->flags |= HAS_TO;
4789                   yyval.spec->to.x = yyvsp[0].pair.x;
4790                   yyval.spec->to.y = yyvsp[0].pair.y;
4791                 }
4792 break;
4793 case 102:
4794 #line 843 "pic.y"
4795         {
4796                   yyval.spec = yyvsp[-2].spec;
4797                   yyval.spec->flags |= HAS_AT;
4798                   yyval.spec->at.x = yyvsp[0].pair.x;
4799                   yyval.spec->at.y = yyvsp[0].pair.y;
4800                   if (yyval.spec->type != ARC_OBJECT) {
4801                     yyval.spec->flags |= HAS_FROM;
4802                     yyval.spec->from.x = yyvsp[0].pair.x;
4803                     yyval.spec->from.y = yyvsp[0].pair.y;
4804                   }
4805                 }
4806 break;
4807 case 103:
4808 #line 855 "pic.y"
4809         {
4810                   yyval.spec = yyvsp[-2].spec;
4811                   yyval.spec->flags |= HAS_WITH;
4812                   yyval.spec->with = yyvsp[0].pth;
4813                 }
4814 break;
4815 case 104:
4816 #line 861 "pic.y"
4817         {
4818                   yyval.spec = yyvsp[-2].spec;
4819                   yyval.spec->flags |= HAS_WITH;
4820                   position pos;
4821                   pos.x = yyvsp[0].pair.x;
4822                   pos.y = yyvsp[0].pair.y;
4823                   yyval.spec->with = new path(pos);
4824                 }
4825 break;
4826 case 105:
4827 #line 870 "pic.y"
4828         {
4829                   yyval.spec = yyvsp[-2].spec;
4830                   yyval.spec->flags |= HAS_SEGMENT;
4831                   yyval.spec->segment_pos.x += yyvsp[0].pair.x;
4832                   yyval.spec->segment_pos.y += yyvsp[0].pair.y;
4833                 }
4834 break;
4835 case 106:
4836 #line 877 "pic.y"
4837         {
4838                   yyval.spec = yyvsp[-1].spec;
4839                   if (!(yyval.spec->flags & HAS_SEGMENT))
4840                     switch (yyval.spec->dir) {
4841                     case UP_DIRECTION:
4842                       yyval.spec->segment_pos.y += yyval.spec->segment_width;
4843                       break;
4844                     case DOWN_DIRECTION:
4845                       yyval.spec->segment_pos.y -= yyval.spec->segment_width;
4846                       break;
4847                     case RIGHT_DIRECTION:
4848                       yyval.spec->segment_pos.x += yyval.spec->segment_width;
4849                       break;
4850                     case LEFT_DIRECTION:
4851                       yyval.spec->segment_pos.x -= yyval.spec->segment_width;
4852                       break;
4853                     }
4854                   yyval.spec->segment_list = new segment(yyval.spec->segment_pos,
4855                                                  yyval.spec->segment_is_absolute,
4856                                                  yyval.spec->segment_list);
4857                   yyval.spec->flags &= ~HAS_SEGMENT;
4858                   yyval.spec->segment_pos.x = yyval.spec->segment_pos.y = 0.0;
4859                   yyval.spec->segment_is_absolute = 0;
4860                 }
4861 break;
4862 case 107:
4863 #line 902 "pic.y"
4864         {
4865                   yyval.spec = yyvsp[-1].spec;  /* nothing*/
4866                 }
4867 break;
4868 case 108:
4869 #line 906 "pic.y"
4870         {
4871                   yyval.spec = yyvsp[-1].spec;
4872                   yyval.spec->flags |= IS_DOTTED;
4873                   lookup_variable("dashwid", & yyval.spec->dash_width);
4874                 }
4875 break;
4876 case 109:
4877 #line 912 "pic.y"
4878         {
4879                   yyval.spec = yyvsp[-2].spec;
4880                   yyval.spec->flags |= IS_DOTTED;
4881                   yyval.spec->dash_width = yyvsp[0].x;
4882                 }
4883 break;
4884 case 110:
4885 #line 918 "pic.y"
4886         {
4887                   yyval.spec = yyvsp[-1].spec;
4888                   yyval.spec->flags |= IS_DASHED;
4889                   lookup_variable("dashwid", & yyval.spec->dash_width);
4890                 }
4891 break;
4892 case 111:
4893 #line 924 "pic.y"
4894         {
4895                   yyval.spec = yyvsp[-2].spec;
4896                   yyval.spec->flags |= IS_DASHED;
4897                   yyval.spec->dash_width = yyvsp[0].x;
4898                 }
4899 break;
4900 case 112:
4901 #line 930 "pic.y"
4902         {
4903                   yyval.spec = yyvsp[-1].spec;
4904                   yyval.spec->flags |= IS_DEFAULT_FILLED;
4905                 }
4906 break;
4907 case 113:
4908 #line 935 "pic.y"
4909         {
4910                   yyval.spec = yyvsp[-2].spec;
4911                   yyval.spec->flags |= IS_FILLED;
4912                   yyval.spec->fill = yyvsp[0].x;
4913                 }
4914 break;
4915 case 114:
4916 #line 941 "pic.y"
4917         {
4918                   yyval.spec = yyvsp[-2].spec;
4919                   yyval.spec->flags |= IS_XSLANTED;
4920                   yyval.spec->xslanted = yyvsp[0].x;
4921                 }
4922 break;
4923 case 115:
4924 #line 947 "pic.y"
4925         {
4926                   yyval.spec = yyvsp[-2].spec;
4927                   yyval.spec->flags |= IS_YSLANTED;
4928                   yyval.spec->yslanted = yyvsp[0].x;
4929                 }
4930 break;
4931 case 116:
4932 #line 953 "pic.y"
4933         {
4934                   yyval.spec = yyvsp[-2].spec;
4935                   yyval.spec->flags |= (IS_SHADED | IS_FILLED);
4936                   yyval.spec->shaded = new char[strlen(yyvsp[0].lstr.str)+1];
4937                   strcpy(yyval.spec->shaded, yyvsp[0].lstr.str);
4938                 }
4939 break;
4940 case 117:
4941 #line 960 "pic.y"
4942         {
4943                   yyval.spec = yyvsp[-2].spec;
4944                   yyval.spec->flags |= (IS_SHADED | IS_OUTLINED | IS_FILLED);
4945                   yyval.spec->shaded = new char[strlen(yyvsp[0].lstr.str)+1];
4946                   strcpy(yyval.spec->shaded, yyvsp[0].lstr.str);
4947                   yyval.spec->outlined = new char[strlen(yyvsp[0].lstr.str)+1];
4948                   strcpy(yyval.spec->outlined, yyvsp[0].lstr.str);
4949                 }
4950 break;
4951 case 118:
4952 #line 969 "pic.y"
4953         {
4954                   yyval.spec = yyvsp[-2].spec;
4955                   yyval.spec->flags |= IS_OUTLINED;
4956                   yyval.spec->outlined = new char[strlen(yyvsp[0].lstr.str)+1];
4957                   strcpy(yyval.spec->outlined, yyvsp[0].lstr.str);
4958                 }
4959 break;
4960 case 119:
4961 #line 976 "pic.y"
4962         {
4963                   yyval.spec = yyvsp[-1].spec;
4964                   /* line chop chop means line chop 0 chop 0*/
4965                   if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
4966                     yyval.spec->flags |= IS_CHOPPED;
4967                     yyval.spec->flags &= ~IS_DEFAULT_CHOPPED;
4968                     yyval.spec->start_chop = yyval.spec->end_chop = 0.0;
4969                   }
4970                   else if (yyval.spec->flags & IS_CHOPPED) {
4971                     yyval.spec->end_chop = 0.0;
4972                   }
4973                   else {
4974                     yyval.spec->flags |= IS_DEFAULT_CHOPPED;
4975                   }
4976                 }
4977 break;
4978 case 120:
4979 #line 992 "pic.y"
4980         {
4981                   yyval.spec = yyvsp[-2].spec;
4982                   if (yyval.spec->flags & IS_DEFAULT_CHOPPED) {
4983                     yyval.spec->flags |= IS_CHOPPED;
4984                     yyval.spec->flags &= ~IS_DEFAULT_CHOPPED;
4985                     yyval.spec->start_chop = 0.0;
4986                     yyval.spec->end_chop = yyvsp[0].x;
4987                   }
4988                   else if (yyval.spec->flags & IS_CHOPPED) {
4989                     yyval.spec->end_chop = yyvsp[0].x;
4990                   }
4991                   else {
4992                     yyval.spec->start_chop = yyval.spec->end_chop = yyvsp[0].x;
4993                     yyval.spec->flags |= IS_CHOPPED;
4994                   }
4995                 }
4996 break;
4997 case 121:
4998 #line 1009 "pic.y"
4999         {
5000                   yyval.spec = yyvsp[-1].spec;
5001                   yyval.spec->flags |= IS_SAME;
5002                 }
5003 break;
5004 case 122:
5005 #line 1014 "pic.y"
5006         {
5007                   yyval.spec = yyvsp[-1].spec;
5008                   yyval.spec->flags |= IS_INVISIBLE;
5009                 }
5010 break;
5011 case 123:
5012 #line 1019 "pic.y"
5013         {
5014                   yyval.spec = yyvsp[-1].spec;
5015                   yyval.spec->flags |= HAS_LEFT_ARROW_HEAD;
5016                 }
5017 break;
5018 case 124:
5019 #line 1024 "pic.y"
5020         {
5021                   yyval.spec = yyvsp[-1].spec;
5022                   yyval.spec->flags |= HAS_RIGHT_ARROW_HEAD;
5023                 }
5024 break;
5025 case 125:
5026 #line 1029 "pic.y"
5027         {
5028                   yyval.spec = yyvsp[-1].spec;
5029                   yyval.spec->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD);
5030                 }
5031 break;
5032 case 126:
5033 #line 1034 "pic.y"
5034         {
5035                   yyval.spec = yyvsp[-1].spec;
5036                   yyval.spec->flags |= IS_CLOCKWISE;
5037                 }
5038 break;
5039 case 127:
5040 #line 1039 "pic.y"
5041         {
5042                   yyval.spec = yyvsp[-1].spec;
5043                   yyval.spec->flags &= ~IS_CLOCKWISE;
5044                 }
5045 break;
5046 case 128:
5047 #line 1044 "pic.y"
5048         {
5049                   yyval.spec = yyvsp[-1].spec;
5050                   text_item **p;
5051                   for (p = & yyval.spec->text; *p; p = &(*p)->next)
5052                     ;
5053                   *p = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno);
5054                 }
5055 break;
5056 case 129:
5057 #line 1052 "pic.y"
5058         {
5059                   yyval.spec = yyvsp[-1].spec;
5060                   if (yyval.spec->text) {
5061                     text_item *p;
5062                     for (p = yyval.spec->text; p->next; p = p->next)
5063                       ;
5064                     p->adj.h = LEFT_ADJUST;
5065                   }
5066                 }
5067 break;
5068 case 130:
5069 #line 1062 "pic.y"
5070         {
5071                   yyval.spec = yyvsp[-1].spec;
5072                   if (yyval.spec->text) {
5073                     text_item *p;
5074                     for (p = yyval.spec->text; p->next; p = p->next)
5075                       ;
5076                     p->adj.h = RIGHT_ADJUST;
5077                   }
5078                 }
5079 break;
5080 case 131:
5081 #line 1072 "pic.y"
5082         {
5083                   yyval.spec = yyvsp[-1].spec;
5084                   if (yyval.spec->text) {
5085                     text_item *p;
5086                     for (p = yyval.spec->text; p->next; p = p->next)
5087                       ;
5088                     p->adj.v = ABOVE_ADJUST;
5089                   }
5090                 }
5091 break;
5092 case 132:
5093 #line 1082 "pic.y"
5094         {
5095                   yyval.spec = yyvsp[-1].spec;
5096                   if (yyval.spec->text) {
5097                     text_item *p;
5098                     for (p = yyval.spec->text; p->next; p = p->next)
5099                       ;
5100                     p->adj.v = BELOW_ADJUST;
5101                   }
5102                 }
5103 break;
5104 case 133:
5105 #line 1092 "pic.y"
5106         {
5107                   yyval.spec = yyvsp[-2].spec;
5108                   yyval.spec->flags |= HAS_THICKNESS;
5109                   yyval.spec->thickness = yyvsp[0].x;
5110                 }
5111 break;
5112 case 134:
5113 #line 1098 "pic.y"
5114         {
5115                   yyval.spec = yyvsp[-1].spec;
5116                   yyval.spec->flags |= IS_ALIGNED;
5117                 }
5118 break;
5119 case 135:
5120 #line 1106 "pic.y"
5121         { yyval.lstr = yyvsp[0].lstr; }
5122 break;
5123 case 136:
5124 #line 1108 "pic.y"
5125         {
5126                   yyval.lstr.filename = yyvsp[-2].lstr.filename;
5127                   yyval.lstr.lineno = yyvsp[-2].lstr.lineno;
5128                   yyval.lstr.str = do_sprintf(yyvsp[-2].lstr.str, yyvsp[-1].dv.v, yyvsp[-1].dv.nv);
5129                   a_delete yyvsp[-1].dv.v;
5130                   a_delete yyvsp[-2].lstr.str;
5131                 }
5132 break;
5133 case 137:
5134 #line 1119 "pic.y"
5135         {
5136                   yyval.dv.v = 0;
5137                   yyval.dv.nv = 0;
5138                   yyval.dv.maxv = 0;
5139                 }
5140 break;
5141 case 138:
5142 #line 1125 "pic.y"
5143         {
5144                   yyval.dv = yyvsp[-2].dv;
5145                   if (yyval.dv.nv >= yyval.dv.maxv) {
5146                     if (yyval.dv.nv == 0) {
5147                       yyval.dv.v = new double[4];
5148                       yyval.dv.maxv = 4;
5149                     }
5150                     else {
5151                       double *oldv = yyval.dv.v;
5152                       yyval.dv.maxv *= 2;
5153 #if 0
5154                       yyval.dv.v = new double[yyval.dv.maxv];
5155                       memcpy(yyval.dv.v, oldv, yyval.dv.nv*sizeof(double));
5156 #else
5157                       /* workaround for bug in Compaq C++ V6.5-033*/
5158                       /* for Compaq Tru64 UNIX V5.1A (Rev. 1885)*/
5159                       double *foo = new double[yyval.dv.maxv];
5160                       memcpy(foo, oldv, yyval.dv.nv*sizeof(double));
5161                       yyval.dv.v = foo;
5162 #endif
5163                       a_delete oldv;
5164                     }
5165                   }
5166                   yyval.dv.v[yyval.dv.nv] = yyvsp[0].x;
5167                   yyval.dv.nv += 1;
5168                 }
5169 break;
5170 case 139:
5171 #line 1155 "pic.y"
5172         { yyval.pair = yyvsp[0].pair; }
5173 break;
5174 case 140:
5175 #line 1157 "pic.y"
5176         {
5177                   position pos = yyvsp[0].pl;
5178                   yyval.pair.x = pos.x;
5179                   yyval.pair.y = pos.y;
5180                 }
5181 break;
5182 case 141:
5183 #line 1163 "pic.y"
5184         {
5185                   position pos = yyvsp[-1].pl;
5186                   yyval.pair.x = pos.x;
5187                   yyval.pair.y = pos.y;
5188                 }
5189 break;
5190 case 142:
5191 #line 1172 "pic.y"
5192         { yyval.pair = yyvsp[0].pair; }
5193 break;
5194 case 143:
5195 #line 1174 "pic.y"
5196         {
5197                   yyval.pair.x = yyvsp[-2].pair.x + yyvsp[0].pair.x;
5198                   yyval.pair.y = yyvsp[-2].pair.y + yyvsp[0].pair.y;
5199                 }
5200 break;
5201 case 144:
5202 #line 1179 "pic.y"
5203         {
5204                   yyval.pair.x = yyvsp[-3].pair.x + yyvsp[-1].pair.x;
5205                   yyval.pair.y = yyvsp[-3].pair.y + yyvsp[-1].pair.y;
5206                 }
5207 break;
5208 case 145:
5209 #line 1184 "pic.y"
5210         {
5211                   yyval.pair.x = yyvsp[-2].pair.x - yyvsp[0].pair.x;
5212                   yyval.pair.y = yyvsp[-2].pair.y - yyvsp[0].pair.y;
5213                 }
5214 break;
5215 case 146:
5216 #line 1189 "pic.y"
5217         {
5218                   yyval.pair.x = yyvsp[-3].pair.x - yyvsp[-1].pair.x;
5219                   yyval.pair.y = yyvsp[-3].pair.y - yyvsp[-1].pair.y;
5220                 }
5221 break;
5222 case 147:
5223 #line 1194 "pic.y"
5224         {
5225                   yyval.pair.x = yyvsp[-3].pair.x;
5226                   yyval.pair.y = yyvsp[-1].pair.y;
5227                 }
5228 break;
5229 case 148:
5230 #line 1199 "pic.y"
5231         {
5232                   yyval.pair.x = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.x + yyvsp[-4].x*yyvsp[0].pair.x;
5233                   yyval.pair.y = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.y + yyvsp[-4].x*yyvsp[0].pair.y;
5234                 }
5235 break;
5236 case 149:
5237 #line 1204 "pic.y"
5238         {
5239                   yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x;
5240                   yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y;
5241                 }
5242 break;
5243 case 150:
5244 #line 1209 "pic.y"
5245         {
5246                   yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x;
5247                   yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y;
5248                 }
5249 break;
5250 case 151:
5251 #line 1214 "pic.y"
5252         {
5253                   yyval.pair.x = (1.0 - yyvsp[-6].x)*yyvsp[-4].pair.x + yyvsp[-6].x*yyvsp[-2].pair.x;
5254                   yyval.pair.y = (1.0 - yyvsp[-6].x)*yyvsp[-4].pair.y + yyvsp[-6].x*yyvsp[-2].pair.y;
5255                 }
5256 break;
5257 case 154:
5258 #line 1227 "pic.y"
5259         {
5260                   yyval.pair.x = yyvsp[-2].x;
5261                   yyval.pair.y = yyvsp[0].x;
5262                 }
5263 break;
5264 case 155:
5265 #line 1232 "pic.y"
5266         { yyval.pair = yyvsp[-1].pair; }
5267 break;
5268 case 156:
5269 #line 1238 "pic.y"
5270         { yyval.pl = yyvsp[0].pl; }
5271 break;
5272 case 157:
5273 #line 1240 "pic.y"
5274         {
5275                   path pth(yyvsp[0].crn);
5276                   if (!pth.follow(yyvsp[-1].pl, & yyval.pl))
5277                     YYABORT;
5278                 }
5279 break;
5280 case 158:
5281 #line 1246 "pic.y"
5282         {
5283                   path pth(yyvsp[-1].crn);
5284                   if (!pth.follow(yyvsp[0].pl, & yyval.pl))
5285                     YYABORT;
5286                 }
5287 break;
5288 case 159:
5289 #line 1252 "pic.y"
5290         {
5291                   path pth(yyvsp[-2].crn);
5292                   if (!pth.follow(yyvsp[0].pl, & yyval.pl))
5293                     YYABORT;
5294                 }
5295 break;
5296 case 160:
5297 #line 1258 "pic.y"
5298         {
5299                   yyval.pl.x = current_position.x;
5300                   yyval.pl.y = current_position.y;
5301                   yyval.pl.obj = 0;
5302                 }
5303 break;
5304 case 161:
5305 #line 1267 "pic.y"
5306         {
5307                   place *p = lookup_label(yyvsp[0].str);
5308                   if (!p) {
5309                     lex_error("there is no place `%1'", yyvsp[0].str);
5310                     YYABORT;
5311                   }
5312                   yyval.pl = *p;
5313                   a_delete yyvsp[0].str;
5314                 }
5315 break;
5316 case 162:
5317 #line 1277 "pic.y"
5318         { yyval.pl.obj = yyvsp[0].obj; }
5319 break;
5320 case 163:
5321 #line 1279 "pic.y"
5322         {
5323                   path pth(yyvsp[0].str);
5324                   if (!pth.follow(yyvsp[-2].pl, & yyval.pl))
5325                     YYABORT;
5326                 }
5327 break;
5328 case 164:
5329 #line 1288 "pic.y"
5330         { yyval.n = yyvsp[0].n; }
5331 break;
5332 case 165:
5333 #line 1290 "pic.y"
5334         {
5335                   /* XXX Check for overflow (and non-integers?).*/
5336                   yyval.n = (int)yyvsp[-1].x;
5337                 }
5338 break;
5339 case 166:
5340 #line 1298 "pic.y"
5341         { yyval.n = 1; }
5342 break;
5343 case 167:
5344 #line 1300 "pic.y"
5345         { yyval.n = yyvsp[-1].n; }
5346 break;
5347 case 168:
5348 #line 1305 "pic.y"
5349         {
5350                   int count = 0;
5351                   object *p;
5352                   for (p = olist.head; p != 0; p = p->next)
5353                     if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) {
5354                       yyval.obj = p;
5355                       break;
5356                     }
5357                   if (p == 0) {
5358                     lex_error("there is no %1%2 %3", yyvsp[-1].n, ordinal_postfix(yyvsp[-1].n),
5359                               object_type_name(yyvsp[0].obtype));
5360                     YYABORT;
5361                   }
5362                 }
5363 break;
5364 case 169:
5365 #line 1320 "pic.y"
5366         {
5367                   int count = 0;
5368                   object *p;
5369                   for (p = olist.tail; p != 0; p = p->prev)
5370                     if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) {
5371                       yyval.obj = p;
5372                       break;
5373                     }
5374                   if (p == 0) {
5375                     lex_error("there is no %1%2 last %3", yyvsp[-1].n,
5376                               ordinal_postfix(yyvsp[-1].n), object_type_name(yyvsp[0].obtype));
5377                     YYABORT;
5378                   }
5379                 }
5380 break;
5381 case 170:
5382 #line 1338 "pic.y"
5383         { yyval.obtype = BOX_OBJECT; }
5384 break;
5385 case 171:
5386 #line 1340 "pic.y"
5387         { yyval.obtype = CIRCLE_OBJECT; }
5388 break;
5389 case 172:
5390 #line 1342 "pic.y"
5391         { yyval.obtype = ELLIPSE_OBJECT; }
5392 break;
5393 case 173:
5394 #line 1344 "pic.y"
5395         { yyval.obtype = ARC_OBJECT; }
5396 break;
5397 case 174:
5398 #line 1346 "pic.y"
5399         { yyval.obtype = LINE_OBJECT; }
5400 break;
5401 case 175:
5402 #line 1348 "pic.y"
5403         { yyval.obtype = ARROW_OBJECT; }
5404 break;
5405 case 176:
5406 #line 1350 "pic.y"
5407         { yyval.obtype = SPLINE_OBJECT; }
5408 break;
5409 case 177:
5410 #line 1352 "pic.y"
5411         { yyval.obtype = BLOCK_OBJECT; }
5412 break;
5413 case 178:
5414 #line 1354 "pic.y"
5415         { yyval.obtype = TEXT_OBJECT; }
5416 break;
5417 case 179:
5418 #line 1359 "pic.y"
5419         { yyval.pth = new path(yyvsp[0].str); }
5420 break;
5421 case 180:
5422 #line 1361 "pic.y"
5423         {
5424                   yyval.pth = yyvsp[-2].pth;
5425                   yyval.pth->append(yyvsp[0].str);
5426                 }
5427 break;
5428 case 181:
5429 #line 1369 "pic.y"
5430         { yyval.pth = new path(yyvsp[0].crn); }
5431 break;
5432 case 182:
5433 #line 1373 "pic.y"
5434         { yyval.pth = yyvsp[0].pth; }
5435 break;
5436 case 183:
5437 #line 1375 "pic.y"
5438         {
5439                   yyval.pth = yyvsp[-1].pth;
5440                   yyval.pth->append(yyvsp[0].crn);
5441                 }
5442 break;
5443 case 184:
5444 #line 1383 "pic.y"
5445         { yyval.pth = yyvsp[0].pth; }
5446 break;
5447 case 185:
5448 #line 1385 "pic.y"
5449         {
5450                   yyval.pth = yyvsp[-3].pth;
5451                   yyval.pth->set_ypath(yyvsp[-1].pth);
5452                 }
5453 break;
5454 case 186:
5455 #line 1391 "pic.y"
5456         {
5457                   lex_warning("`%1%2 last %3' in `with' argument ignored",
5458                               yyvsp[-3].n, ordinal_postfix(yyvsp[-3].n), object_type_name(yyvsp[-1].obtype));
5459                   yyval.pth = yyvsp[0].pth;
5460                 }
5461 break;
5462 case 187:
5463 #line 1397 "pic.y"
5464         {
5465                   lex_warning("`last %1' in `with' argument ignored",
5466                               object_type_name(yyvsp[-1].obtype));
5467                   yyval.pth = yyvsp[0].pth;
5468                 }
5469 break;
5470 case 188:
5471 #line 1403 "pic.y"
5472         {
5473                   lex_warning("`%1%2 %3' in `with' argument ignored",
5474                               yyvsp[-2].n, ordinal_postfix(yyvsp[-2].n), object_type_name(yyvsp[-1].obtype));
5475                   yyval.pth = yyvsp[0].pth;
5476                 }
5477 break;
5478 case 189:
5479 #line 1409 "pic.y"
5480         {
5481                   lex_warning("initial `%1' in `with' argument ignored", yyvsp[-1].str);
5482                   a_delete yyvsp[-1].str;
5483                   yyval.pth = yyvsp[0].pth;
5484                 }
5485 break;
5486 case 190:
5487 #line 1418 "pic.y"
5488         { yyval.crn = &object::north; }
5489 break;
5490 case 191:
5491 #line 1420 "pic.y"
5492         { yyval.crn = &object::east; }
5493 break;
5494 case 192:
5495 #line 1422 "pic.y"
5496         { yyval.crn = &object::west; }
5497 break;
5498 case 193:
5499 #line 1424 "pic.y"
5500         { yyval.crn = &object::south; }
5501 break;
5502 case 194:
5503 #line 1426 "pic.y"
5504         { yyval.crn = &object::north_east; }
5505 break;
5506 case 195:
5507 #line 1428 "pic.y"
5508         { yyval.crn = &object:: south_east; }
5509 break;
5510 case 196:
5511 #line 1430 "pic.y"
5512         { yyval.crn = &object::north_west; }
5513 break;
5514 case 197:
5515 #line 1432 "pic.y"
5516         { yyval.crn = &object::south_west; }
5517 break;
5518 case 198:
5519 #line 1434 "pic.y"
5520         { yyval.crn = &object::center; }
5521 break;
5522 case 199:
5523 #line 1436 "pic.y"
5524         { yyval.crn = &object::start; }
5525 break;
5526 case 200:
5527 #line 1438 "pic.y"
5528         { yyval.crn = &object::end; }
5529 break;
5530 case 201:
5531 #line 1440 "pic.y"
5532         { yyval.crn = &object::north; }
5533 break;
5534 case 202:
5535 #line 1442 "pic.y"
5536         { yyval.crn = &object::south; }
5537 break;
5538 case 203:
5539 #line 1444 "pic.y"
5540         { yyval.crn = &object::west; }
5541 break;
5542 case 204:
5543 #line 1446 "pic.y"
5544         { yyval.crn = &object::east; }
5545 break;
5546 case 205:
5547 #line 1448 "pic.y"
5548         { yyval.crn = &object::north_west; }
5549 break;
5550 case 206:
5551 #line 1450 "pic.y"
5552         { yyval.crn = &object::south_west; }
5553 break;
5554 case 207:
5555 #line 1452 "pic.y"
5556         { yyval.crn = &object::north_east; }
5557 break;
5558 case 208:
5559 #line 1454 "pic.y"
5560         { yyval.crn = &object::south_east; }
5561 break;
5562 case 209:
5563 #line 1456 "pic.y"
5564         { yyval.crn = &object::west; }
5565 break;
5566 case 210:
5567 #line 1458 "pic.y"
5568         { yyval.crn = &object::east; }
5569 break;
5570 case 211:
5571 #line 1460 "pic.y"
5572         { yyval.crn = &object::north_west; }
5573 break;
5574 case 212:
5575 #line 1462 "pic.y"
5576         { yyval.crn = &object::south_west; }
5577 break;
5578 case 213:
5579 #line 1464 "pic.y"
5580         { yyval.crn = &object::north_east; }
5581 break;
5582 case 214:
5583 #line 1466 "pic.y"
5584         { yyval.crn = &object::south_east; }
5585 break;
5586 case 215:
5587 #line 1468 "pic.y"
5588         { yyval.crn = &object::north; }
5589 break;
5590 case 216:
5591 #line 1470 "pic.y"
5592         { yyval.crn = &object::south; }
5593 break;
5594 case 217:
5595 #line 1472 "pic.y"
5596         { yyval.crn = &object::east; }
5597 break;
5598 case 218:
5599 #line 1474 "pic.y"
5600         { yyval.crn = &object::west; }
5601 break;
5602 case 219:
5603 #line 1476 "pic.y"
5604         { yyval.crn = &object::center; }
5605 break;
5606 case 220:
5607 #line 1478 "pic.y"
5608         { yyval.crn = &object::start; }
5609 break;
5610 case 221:
5611 #line 1480 "pic.y"
5612         { yyval.crn = &object::end; }
5613 break;
5614 case 222:
5615 #line 1485 "pic.y"
5616         {
5617                   if (!lookup_variable(yyvsp[0].str, & yyval.x)) {
5618                     lex_error("there is no variable `%1'", yyvsp[0].str);
5619                     YYABORT;
5620                   }
5621                   a_delete yyvsp[0].str;
5622                 }
5623 break;
5624 case 223:
5625 #line 1493 "pic.y"
5626         { yyval.x = yyvsp[0].x; }
5627 break;
5628 case 224:
5629 #line 1495 "pic.y"
5630         {
5631                   if (yyvsp[-1].pl.obj != 0)
5632                     yyval.x = yyvsp[-1].pl.obj->origin().x;
5633                   else
5634                     yyval.x = yyvsp[-1].pl.x;
5635                 }
5636 break;
5637 case 225:
5638 #line 1502 "pic.y"
5639         {
5640                   if (yyvsp[-1].pl.obj != 0)
5641                     yyval.x = yyvsp[-1].pl.obj->origin().y;
5642                   else
5643                     yyval.x = yyvsp[-1].pl.y;
5644                 }
5645 break;
5646 case 226:
5647 #line 1509 "pic.y"
5648         {
5649                   if (yyvsp[-1].pl.obj != 0)
5650                     yyval.x = yyvsp[-1].pl.obj->height();
5651                   else
5652                     yyval.x = 0.0;
5653                 }
5654 break;
5655 case 227:
5656 #line 1516 "pic.y"
5657         {
5658                   if (yyvsp[-1].pl.obj != 0)
5659                     yyval.x = yyvsp[-1].pl.obj->width();
5660                   else
5661                     yyval.x = 0.0;
5662                 }
5663 break;
5664 case 228:
5665 #line 1523 "pic.y"
5666         {
5667                   if (yyvsp[-1].pl.obj != 0)
5668                     yyval.x = yyvsp[-1].pl.obj->radius();
5669                   else
5670                     yyval.x = 0.0;
5671                 }
5672 break;
5673 case 229:
5674 #line 1530 "pic.y"
5675         { yyval.x = yyvsp[-2].x + yyvsp[0].x; }
5676 break;
5677 case 230:
5678 #line 1532 "pic.y"
5679         { yyval.x = yyvsp[-2].x - yyvsp[0].x; }
5680 break;
5681 case 231:
5682 #line 1534 "pic.y"
5683         { yyval.x = yyvsp[-2].x * yyvsp[0].x; }
5684 break;
5685 case 232:
5686 #line 1536 "pic.y"
5687         {
5688                   if (yyvsp[0].x == 0.0) {
5689                     lex_error("division by zero");
5690                     YYABORT;
5691                   }
5692                   yyval.x = yyvsp[-2].x/yyvsp[0].x;
5693                 }
5694 break;
5695 case 233:
5696 #line 1544 "pic.y"
5697         {
5698                   if (yyvsp[0].x == 0.0) {
5699                     lex_error("modulus by zero");
5700                     YYABORT;
5701                   }
5702                   yyval.x = fmod(yyvsp[-2].x, yyvsp[0].x);
5703                 }
5704 break;
5705 case 234:
5706 #line 1552 "pic.y"
5707         {
5708                   errno = 0;
5709                   yyval.x = pow(yyvsp[-2].x, yyvsp[0].x);
5710                   if (errno == EDOM) {
5711                     lex_error("arguments to `^' operator out of domain");
5712                     YYABORT;
5713                   }
5714                   if (errno == ERANGE) {
5715                     lex_error("result of `^' operator out of range");
5716                     YYABORT;
5717                   }
5718                 }
5719 break;
5720 case 235:
5721 #line 1565 "pic.y"
5722         { yyval.x = -yyvsp[0].x; }
5723 break;
5724 case 236:
5725 #line 1567 "pic.y"
5726         { yyval.x = yyvsp[-1].x; }
5727 break;
5728 case 237:
5729 #line 1569 "pic.y"
5730         {
5731                   errno = 0;
5732                   yyval.x = sin(yyvsp[-1].x);
5733                   if (errno == ERANGE) {
5734                     lex_error("sin result out of range");
5735                     YYABORT;
5736                   }
5737                 }
5738 break;
5739 case 238:
5740 #line 1578 "pic.y"
5741         {
5742                   errno = 0;
5743                   yyval.x = cos(yyvsp[-1].x);
5744                   if (errno == ERANGE) {
5745                     lex_error("cos result out of range");
5746                     YYABORT;
5747                   }
5748                 }
5749 break;
5750 case 239:
5751 #line 1587 "pic.y"
5752         {
5753                   errno = 0;
5754                   yyval.x = atan2(yyvsp[-3].x, yyvsp[-1].x);
5755                   if (errno == EDOM) {
5756                     lex_error("atan2 argument out of domain");
5757                     YYABORT;
5758                   }
5759                   if (errno == ERANGE) {
5760                     lex_error("atan2 result out of range");
5761                     YYABORT;
5762                   }
5763                 }
5764 break;
5765 case 240:
5766 #line 1600 "pic.y"
5767         {
5768                   errno = 0;
5769                   yyval.x = log10(yyvsp[-1].x);
5770                   if (errno == ERANGE) {
5771                     lex_error("log result out of range");
5772                     YYABORT;
5773                   }
5774                 }
5775 break;
5776 case 241:
5777 #line 1609 "pic.y"
5778         {
5779                   errno = 0;
5780                   yyval.x = pow(10.0, yyvsp[-1].x);
5781                   if (errno == ERANGE) {
5782                     lex_error("exp result out of range");
5783                     YYABORT;
5784                   }
5785                 }
5786 break;
5787 case 242:
5788 #line 1618 "pic.y"
5789         {
5790                   errno = 0;
5791                   yyval.x = sqrt(yyvsp[-1].x);
5792                   if (errno == EDOM) {
5793                     lex_error("sqrt argument out of domain");
5794                     YYABORT;
5795                   }
5796                 }
5797 break;
5798 case 243:
5799 #line 1627 "pic.y"
5800         { yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; }
5801 break;
5802 case 244:
5803 #line 1629 "pic.y"
5804         { yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; }
5805 break;
5806 case 245:
5807 #line 1631 "pic.y"
5808         { yyval.x = yyvsp[-1].x < 0 ? -floor(-yyvsp[-1].x) : floor(yyvsp[-1].x); }
5809 break;
5810 case 246:
5811 #line 1633 "pic.y"
5812         { yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); }
5813 break;
5814 case 247:
5815 #line 1635 "pic.y"
5816         {
5817                   /* return a random number in the range [0,1) */
5818                   /* portable, but not very random */
5819                   yyval.x = (rand() & 0x7fff) / double(0x8000);
5820                 }
5821 break;
5822 case 248:
5823 #line 1641 "pic.y"
5824         {
5825                   yyval.x = 0;
5826                   srand((unsigned int)yyvsp[-1].x);
5827                 }
5828 break;
5829 case 249:
5830 #line 1646 "pic.y"
5831         { yyval.x = (yyvsp[-2].x < yyvsp[0].x); }
5832 break;
5833 case 250:
5834 #line 1648 "pic.y"
5835         { yyval.x = (yyvsp[-2].x <= yyvsp[0].x); }
5836 break;
5837 case 251:
5838 #line 1650 "pic.y"
5839         { yyval.x = (yyvsp[-2].x > yyvsp[0].x); }
5840 break;
5841 case 252:
5842 #line 1652 "pic.y"
5843         { yyval.x = (yyvsp[-2].x >= yyvsp[0].x); }
5844 break;
5845 case 253:
5846 #line 1654 "pic.y"
5847         { yyval.x = (yyvsp[-2].x == yyvsp[0].x); }
5848 break;
5849 case 254:
5850 #line 1656 "pic.y"
5851         { yyval.x = (yyvsp[-2].x != yyvsp[0].x); }
5852 break;
5853 case 255:
5854 #line 1658 "pic.y"
5855         { yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); }
5856 break;
5857 case 256:
5858 #line 1660 "pic.y"
5859         { yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); }
5860 break;
5861 case 257:
5862 #line 1662 "pic.y"
5863         { yyval.x = (yyvsp[0].x == 0.0); }
5864 break;
5865 #line 5865 "pic.cpp"
5866     }
5867     yyssp -= yym;
5868     yystate = *yyssp;
5869     yyvsp -= yym;
5870     yym = yylhs[yyn];
5871     if (yystate == 0 && yym == 0)
5872     {
5873 #if YYDEBUG
5874         if (yydebug)
5875             printf("%sdebug: after reduction, shifting from state 0 to\
5876  state %d\n", YYPREFIX, YYFINAL);
5877 #endif
5878         yystate = YYFINAL;
5879         *++yyssp = YYFINAL;
5880         *++yyvsp = yyval;
5881         if (yychar < 0)
5882         {
5883             if ((yychar = yylex()) < 0) yychar = 0;
5884 #if YYDEBUG
5885             if (yydebug)
5886             {
5887                 yys = 0;
5888                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
5889                 if (!yys) yys = "illegal-symbol";
5890                 printf("%sdebug: state %d, reading %d (%s)\n",
5891                         YYPREFIX, YYFINAL, yychar, yys);
5892             }
5893 #endif
5894         }
5895         if (yychar == 0) goto yyaccept;
5896         goto yyloop;
5897     }
5898     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
5899             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
5900         yystate = yytable[yyn];
5901     else
5902         yystate = yydgoto[yym];
5903 #if YYDEBUG
5904     if (yydebug)
5905         printf("%sdebug: after reduction, shifting from state %d \
5906 to state %d\n", YYPREFIX, *yyssp, yystate);
5907 #endif
5908     if (yyssp >= yysslim && yygrowstack())
5909     {
5910         goto yyoverflow;
5911     }
5912     *++yyssp = (short) yystate;
5913     *++yyvsp = yyval;
5914     goto yyloop;
5915
5916 yyoverflow:
5917     yyerror("yacc stack overflow");
5918
5919 yyabort:
5920     return (1);
5921
5922 yyaccept:
5923     return (0);
5924 }