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