http://ftp.x.org/contrib/applications/xscreensaver-3.26.tar.gz
[xscreensaver] / hacks / hyperball.c
1 /* xscreensaver, Copyright (c) 1992, 1995, 1996, 1998, 2000
2  *  Jamie Zawinski <jwz@jwz.org>
3  *
4  * Permission to use, copy, modify, distribute, and sell this software and its
5  * documentation for any purpose is hereby granted without fee, provided that
6  * the above copyright notice appear in all copies and that both that
7  * copyright notice and this permission notice appear in supporting
8  * documentation.  No representations are made about the suitability of this
9  * software for any purpose.  It is provided "as is" without express or 
10  * implied warranty.
11  *
12  * This code derived from TI Explorer Lisp code by Joe Keane, Fritz Mueller,
13  * and Jamie Zawinski.
14  */
15
16 #include <math.h>
17 #include "screenhack.h"
18
19 #define POINT_COUNT 600
20 #define LINE_COUNT 1200
21
22 #define ANGLE_SCALE 0.001
23
24 struct point_info
25 {
26   float pg_a;
27   float pg_b;
28   float pg_c;
29   float pg_d;
30 };
31
32 struct line_info
33 {
34   short li_ip;
35   short li_iq;
36   char li_color;
37   char li_pad[3];
38 };
39
40 struct point_state
41 {
42   short old_x, old_y;
43   short new_x, new_y;
44   unsigned char old_dep, new_dep;
45 };
46
47 struct hyper_state
48 {
49   char hs_stop;
50   char hs_resize;
51   char hs_redraw;
52   char hs_icon;
53   Display *hs_display;
54   Window hs_window;
55   float hs_observer_z;
56   float hs_unit_scale;
57   float hs_offset_x;
58   float hs_offset_y;
59   int hs_delay;
60   double hs_angle_xy;
61   double hs_angle_xz;
62   double hs_angle_yz;
63   double hs_angle_xw;
64   double hs_angle_yw;
65   double hs_angle_zw;
66   double hs_cos_xy, hs_sin_xy;
67   double hs_cos_xz, hs_sin_xz;
68   double hs_cos_yz, hs_sin_yz;
69   double hs_cos_xw, hs_sin_xw;
70   double hs_cos_yw, hs_sin_yw;
71   double hs_cos_zw, hs_sin_zw;
72   double hs_ref_ax, hs_ref_ay, hs_ref_az, hs_ref_aw;
73   double hs_ref_bx, hs_ref_by, hs_ref_bz, hs_ref_bw;
74   double hs_ref_cx, hs_ref_cy, hs_ref_cz, hs_ref_cw;
75   double hs_ref_dx, hs_ref_dy, hs_ref_dz, hs_ref_dw;
76   GC hs_color_gcs[8][8];
77   char hs_moved[POINT_COUNT];
78   struct point_state hs_points[POINT_COUNT];
79 };
80
81 static const struct point_info point_table[POINT_COUNT];
82 static const struct line_info line_table[LINE_COUNT];
83
84 static struct hyper_state hyper_state;
85
86 static void init (struct hyper_state *hs);
87 static void hyper (struct hyper_state *hs);
88 static void check_events (struct hyper_state *hs);
89 static void set_sizes (struct hyper_state *hs, int width, int height);
90
91
92 char *progclass = "Hyperball";
93
94 char *defaults[] =
95 {
96   "*observer-z: 3",
97   "*delay: 20000",
98   "*xy: 3",
99   "*xz: 5",
100   "*yw: 10",
101   "*yz: 0",
102   "*xw: 0",
103   "*zw: 0",
104   ".background: black",
105   ".foreground: white",
106   "*color00:#FF66BE",
107   "*color10:#FFA300",
108   "*color20:#BEDC00",
109   "*color30:#12FB00",
110   "*color40:#00F9BE",
111   "*color50:#12D5FF",
112   "*color60:#BE9AFF",
113   "*color70:#FF5FFF",
114   "*color01:#FF5BAA",
115   "*color11:#F09200",
116   "*color21:#AAC500",
117   "*color31:#10E100",
118   "*color41:#00DFAA",
119   "*color51:#10BFFF",
120   "*color61:#AA8AFF",
121   "*color71:#F055FF",
122   "*color02:#EE529A",
123   "*color12:#D98400",
124   "*color22:#9AB200",
125   "*color32:#0ECB00",
126   "*color42:#00C99A",
127   "*color52:#0EADE7",
128   "*color62:#9A7DFF",
129   "*color72:#D94DE7",
130   "*color03:#DA4B8C",
131   "*color13:#C67900",
132   "*color23:#8CA300",
133   "*color33:#0DBA00",
134   "*color43:#00B88C",
135   "*color53:#0D9ED3",
136   "*color63:#8C72EA",
137   "*color73:#C646D3",
138   "*color04:#C84581",
139   "*color14:#B66F00",
140   "*color24:#819600",
141   "*color34:#0CAB00",
142   "*color44:#00A981",
143   "*color54:#0C91C2",
144   "*color64:#8169D7",
145   "*color74:#B641C2",
146   "*color05:#B94078",
147   "*color15:#A96700",
148   "*color25:#788B00",
149   "*color35:#0B9E00",
150   "*color45:#009D78",
151   "*color55:#0B86B3",
152   "*color65:#7861C7",
153   "*color75:#A93CB3",
154   "*color06:#AC3C6F",
155   "*color16:#9D6000",
156   "*color26:#6F8100",
157   "*color36:#0A9300",
158   "*color46:#00926F",
159   "*color56:#0A7DA7",
160   "*color66:#6F5AB9",
161   "*color76:#9D38A7",
162   "*color07:#A13868",
163   "*color17:#935900",
164   "*color27:#687900",
165   "*color37:#0A8A00",
166   "*color47:#008868",
167   "*color57:#0A759C",
168   "*color67:#6854AD",
169   "*color77:#93349C",
170   0,
171 };
172
173 XrmOptionDescRec options [] =
174 {
175   { "-observer-z",      ".observer-z",  XrmoptionSepArg, 0 },
176   { "-delay",           ".delay",       XrmoptionSepArg, 0 },
177   { "-xw",              ".xw",          XrmoptionSepArg, 0 },
178   { "-xy",              ".xy",          XrmoptionSepArg, 0 },
179   { "-xz",              ".xz",          XrmoptionSepArg, 0 },
180   { "-yw",              ".yw",          XrmoptionSepArg, 0 },
181   { "-yz",              ".yz",          XrmoptionSepArg, 0 },
182   { "-zw",              ".zw",          XrmoptionSepArg, 0 },
183   { 0, 0, 0, 0 },
184 };
185
186
187 void
188 screenhack (Display *d, Window w)
189 {
190   struct hyper_state *hs;
191
192   hs = &hyper_state;
193   hs->hs_display = d;
194   hs->hs_window = w;
195
196   init (hs);
197
198   hyper (hs);
199 }
200
201
202 static void
203 init (struct hyper_state *hs)
204 {
205   Display *dpy;
206   Window win;
207   XGCValues gcv;
208   Colormap cmap;
209   /* double xy, xz, yz, xw, yw, zw; */
210   unsigned long bg_pixel;
211   float observer_z;
212   int delay;
213
214   dpy = hs->hs_display;
215   win = hs->hs_window;
216
217   observer_z = get_float_resource ("observer-z", "Float");
218   if (observer_z < 1.125)
219     observer_z = 1.125;
220   hs->hs_observer_z = observer_z;
221
222   {
223     int root;
224     XWindowAttributes wa;
225     int width;
226     int height;
227
228     root = get_boolean_resource("root", "Boolean");
229     XGetWindowAttributes (dpy, win, &wa);
230     XSelectInput(dpy, win, root ? ExposureMask :
231                  wa.your_event_mask | ExposureMask |
232                  ButtonPressMask | StructureNotifyMask);
233
234     width = wa.width;
235     height = wa.height;
236     cmap = wa.colormap;
237     set_sizes (hs, width, height);
238   }
239
240   hs->hs_angle_xy = get_float_resource ("xy", "Float") * ANGLE_SCALE;
241   hs->hs_angle_xz = get_float_resource ("xz", "Float") * ANGLE_SCALE;
242   hs->hs_angle_yz = get_float_resource ("yz", "Float") * ANGLE_SCALE;
243   hs->hs_angle_xw = get_float_resource ("xw", "Float") * ANGLE_SCALE;
244   hs->hs_angle_yw = get_float_resource ("yw", "Float") * ANGLE_SCALE;
245   hs->hs_angle_zw = get_float_resource ("zw", "Float") * ANGLE_SCALE;
246
247   delay = get_integer_resource ("delay", "Integer");
248   hs->hs_delay = delay;
249
250   bg_pixel = get_pixel_resource ("background", "Background", dpy, cmap);
251
252   if (mono_p)
253     {
254       GC black_gc;
255       unsigned long fg_pixel;
256       GC white_gc;
257
258       gcv.function = GXcopy;
259       gcv.foreground = bg_pixel;
260       black_gc = XCreateGC (dpy, win, GCForeground|GCFunction, &gcv);
261       fg_pixel = get_pixel_resource ("foreground", "Foreground", dpy, cmap);
262       gcv.foreground = fg_pixel;
263       white_gc = XCreateGC (dpy, win, GCForeground|GCFunction, &gcv);
264       hs->hs_color_gcs[0][0] = black_gc;
265       hs->hs_color_gcs[0][1] = white_gc;
266     }
267   else
268     {
269       int col;
270       int dep;
271
272       gcv.function = GXxor;
273       for (col = 0; col < 8; col++)
274         for (dep = 0; dep < 8; dep++)
275           {
276             char buffer[16];
277             unsigned long fg_pixel;
278             GC color_gc;
279
280             sprintf (buffer, "color%d%d", col, dep);
281             fg_pixel = get_pixel_resource (buffer, "Foreground", dpy, cmap);
282             gcv.foreground = fg_pixel ^ bg_pixel;
283             color_gc = XCreateGC (dpy, win, GCForeground|GCFunction, &gcv);
284             hs->hs_color_gcs[col][dep] = color_gc;
285           }
286     }
287
288   {
289   double xy;
290   double xz;
291   double yz;
292   double xw;
293   double yw;
294   double zw;
295 #if 1
296   double cos_xy, sin_xy;
297   double cos_xz, sin_xz;
298   double cos_yz, sin_yz;
299   double cos_xw, sin_xw;
300   double cos_yw, sin_yw;
301   double cos_zw, sin_zw;
302 #endif
303
304   hs->hs_ref_ax = 1.0, hs->hs_ref_ay = 0.0, hs->hs_ref_az = 0.0, hs->hs_ref_aw = 0.0;
305   hs->hs_ref_bx = 0.0, hs->hs_ref_by = 1.0, hs->hs_ref_bz = 0.0, hs->hs_ref_bw = 0.0;
306   hs->hs_ref_cx = 0.0, hs->hs_ref_cy = 0.0, hs->hs_ref_cz = 1.0, hs->hs_ref_cw = 0.0;
307   hs->hs_ref_dx = 0.0, hs->hs_ref_dy = 0.0, hs->hs_ref_dz = 0.0, hs->hs_ref_dw = 1.0;
308
309   xy = hs->hs_angle_xy;
310   xz = hs->hs_angle_xz;
311   yz = hs->hs_angle_yz;
312   xw = hs->hs_angle_xw;
313   yw = hs->hs_angle_yw;
314   zw = hs->hs_angle_zw;
315
316   cos_xy = cos (xy), sin_xy = sin (xy);
317   hs->hs_cos_xy = cos_xy, hs->hs_sin_xy = sin_xy;
318   cos_xz = cos (xz), sin_xz = sin (xz);
319   hs->hs_cos_xz = cos_xz, hs->hs_sin_xz = sin_xz;
320   cos_yz = cos (yz), sin_yz = sin (yz);
321   hs->hs_cos_yz = cos_yz, hs->hs_sin_yz = sin_yz;
322   cos_xw = cos (xw), sin_xw = sin (xw);
323   hs->hs_cos_xw = cos_xw, hs->hs_sin_xw = sin_xw;
324   cos_yw = cos (yw), sin_yw = sin (yw);
325   hs->hs_cos_yw = cos_yw, hs->hs_sin_yw = sin_yw;
326   cos_zw = cos (zw), sin_zw = sin (zw);
327   hs->hs_cos_zw = cos_zw, hs->hs_sin_zw = sin_zw;
328   }
329 }
330
331
332 static void
333 hyper (struct hyper_state *hs)
334 {
335   int roted;
336
337   roted = 0;
338
339   for (;;)
340     {
341       int icon;
342       int resize;
343       int redraw;
344       int stop;
345       int delay;
346
347       check_events (hs);
348
349       icon = hs->hs_icon;
350       resize = hs->hs_resize;
351       if (icon || !(roted | resize))
352         goto skip1;
353
354       {
355         int pc;
356         const struct point_info *point_ptr;
357         struct point_state *point_state;
358         float observer_z;
359         float unit_scale;
360         float offset_x;
361         float offset_y;
362         char *mark_ptr;
363
364         pc = POINT_COUNT;
365         point_ptr = &point_table[0];
366         point_state = &hs->hs_points[0];
367         mark_ptr = &hs->hs_moved[0];
368
369         while (--pc >= 0)
370           {
371             double pos_a;
372             double pos_b;
373             double pos_c;
374             double pos_d;
375             double az, bz, cz, dz;
376             double sum_z;
377             double ax, bx, cx, dx;
378             double sum_x;
379             double ay, by, cy, dy;
380             double sum_y;
381             double mul;
382             int old_x;
383             int old_y;
384             int old_dep;
385             double xf;
386             double yf;
387             int new_x;
388             int new_y;
389             int new_dep;
390             int mov;
391
392             pos_a = point_ptr->pg_a;
393             pos_b = point_ptr->pg_b;
394             pos_c = point_ptr->pg_c;
395             pos_d = point_ptr->pg_d;
396             point_ptr++;
397             az = hs->hs_ref_az; bz = hs->hs_ref_bz; cz = hs->hs_ref_cz; dz = hs->hs_ref_dz;
398             ax = hs->hs_ref_ax; bx = hs->hs_ref_bx; cx = hs->hs_ref_cx; dx = hs->hs_ref_dx;
399             ay = hs->hs_ref_ay; by = hs->hs_ref_by; cy = hs->hs_ref_cy; dy = hs->hs_ref_dy;
400             sum_z = pos_a * az + pos_b * bz + pos_c * cz + pos_d * dz;
401             observer_z = hs->hs_observer_z;
402             unit_scale = hs->hs_unit_scale;
403             sum_x = pos_a * ax + pos_b * bx + pos_c * cx + pos_d * dx;
404             sum_y = pos_a * ay + pos_b * by + pos_c * cy + pos_d * dy;
405             mul = unit_scale / (observer_z - sum_z);
406             offset_x = hs->hs_offset_x;
407             offset_y = hs->hs_offset_y;
408             old_x = point_state->new_x;
409             old_y = point_state->new_y;
410             old_dep = point_state->new_dep;
411             xf = sum_x * mul + offset_x;
412             yf = sum_y * mul + offset_y;
413             new_x = (int)rint(xf);
414             new_y = (int)rint(yf);
415             new_dep = (int)floor(sum_z * -128.0) + 128;
416             point_state->old_x = old_x;
417             point_state->old_y = old_y;
418             point_state->old_dep = old_dep;
419             point_state->new_x = new_x;
420             point_state->new_y = new_y;
421             point_state->new_dep = new_dep;
422             point_state++;
423             mov = new_x != old_x || new_y != old_y || new_dep != old_dep;
424             *mark_ptr = mov;
425             mark_ptr++;
426           }
427       }
428
429     skip1:
430       icon = hs->hs_icon;
431       redraw = hs->hs_redraw;
432       if (icon || !(roted | redraw))
433         goto skip2;
434
435       {
436         int lc;
437         const struct line_info *li_ptr;
438         int mono;
439         Display *dpy;
440         Window win;
441
442         lc = LINE_COUNT;
443         li_ptr = &line_table[0];
444         mono = mono_p;
445         dpy = hs->hs_display;
446         win = hs->hs_window;
447
448         while (--lc >= 0)
449           {
450             int ip;
451             int iq;
452             int col;
453             int mov_p;
454             int mov_q;
455             struct point_state *sp;
456             struct point_state *sq;
457             int p_x;
458             int p_y;
459             int q_x;
460             int q_y;
461             GC erase_gc;
462             GC draw_gc;
463             int old_sum;
464             int new_sum;
465             int old_dep;
466             int new_dep;
467
468             ip = li_ptr->li_ip;
469             iq = li_ptr->li_iq;
470             col = li_ptr->li_color;
471             li_ptr++;
472             mov_p = hs->hs_moved[ip];
473             mov_q = hs->hs_moved[iq];
474             if (!(redraw | mov_p | mov_q))
475               continue;
476
477             sp = &hs->hs_points[ip];
478             sq = &hs->hs_points[iq];
479
480             if (mono)
481               {
482                 erase_gc = hs->hs_color_gcs[0][0];
483                 draw_gc = hs->hs_color_gcs[0][1];
484               }
485             else
486               {
487                 GC *row;
488
489                 old_sum = sp->old_dep + sq->old_dep;
490                 new_sum = sp->new_dep + sq->new_dep;
491                 row = &hs->hs_color_gcs[col][0];
492                 old_dep = old_sum >> 6;
493                 new_dep = new_sum >> 6;
494                 erase_gc = row[old_dep];
495                 draw_gc = row[new_dep];
496               }
497
498             if (!redraw)
499               {
500                 p_x = sp->old_x;
501                 p_y = sp->old_y;
502                 q_x = sq->old_x;
503                 q_y = sq->old_y;
504                 XDrawLine (dpy, win, erase_gc, p_x, p_y, q_x, q_y);
505               }
506
507             p_x = sp->new_x;
508             p_y = sp->new_y;
509             q_x = sq->new_x;
510             q_y = sq->new_y;
511             XDrawLine (dpy, win, draw_gc, p_x, p_y, q_x, q_y);
512           }
513
514         XFlush (dpy);
515       }
516
517     skip2:
518       stop = hs->hs_stop;
519       roted = 0;
520       if (stop)
521         goto skip3;
522
523       roted = 1;
524
525       {
526         double cos_a;
527         double sin_a;
528         double old_u;
529         double old_v;
530         double new_u;
531         double new_v;
532
533  /* If you get error messages about the following forms, and you think you're
534     using an ANSI C conforming compiler, then you're mistaken.  Possibly you're
535     mixing an ANSI compiler with a non-ANSI preprocessor, or vice versa.
536     Regardless, your system is broken; it's not a bug in this program.
537   */
538 #if defined(__STDC__) || defined(__ANSI_CPP__)
539
540 #define rotate(name,dim0,dim1) \
541   old_u = hs->hs_ref_##name##dim0; \
542   old_v = hs->hs_ref_##name##dim1; \
543   new_u = old_u * cos_a + old_v * sin_a; \
544   new_v = old_v * cos_a - old_u * sin_a; \
545   hs->hs_ref_##name##dim0 = new_u; \
546   hs->hs_ref_##name##dim1 = new_v;
547
548 #define rotates(dim0,dim1) \
549   if (hs->hs_sin_##dim0##dim1 != 0) { \
550     cos_a = hs->hs_cos_##dim0##dim1; \
551     sin_a = hs->hs_sin_##dim0##dim1; \
552     rotate(a, dim0, dim1); \
553     rotate(b, dim0, dim1); \
554     rotate(c, dim0, dim1); \
555     rotate(d, dim0, dim1); \
556   }
557
558 #else /* !__STDC__, courtesy of Andreas Luik <luik@isa.de> */
559
560 #define rotate(name,dim0,dim1,cos,sin) \
561   old_u = hs->hs_ref_/**/name/**/dim0; \
562   old_v = hs->hs_ref_/**/name/**/dim1; \
563   new_u = old_u * cos_a + old_v * sin_a; \
564   new_v = old_v * cos_a - old_u * sin_a; \
565   hs->hs_ref_/**/name/**/dim0 = new_u; \
566   hs->hs_ref_/**/name/**/dim1 = new_v;
567
568 #define rotates(dim0,dim1) \
569   if (hs->hs_sin_/**/dim0/**/dim1 != 0) { \
570     cos_a = hs->hs_cos_/**/dim0/**/dim1; \
571     sin_a = hs->hs_sin_/**/dim0/**/dim1; \
572     rotate(a, dim0, dim1); \
573     rotate(b, dim0, dim1); \
574     rotate(c, dim0, dim1); \
575     rotate(d, dim0, dim1); \
576   }
577
578 #endif
579
580         rotates (x, y);
581         rotates (x, z);
582         rotates (y, z);
583         rotates (x, w);
584         rotates (y, w);
585         rotates (z, w);
586       }
587
588     skip3:
589       /* stop = hs->hs_stop; */
590       delay = hs->hs_delay;
591       if (stop && delay < 10000)
592         delay = 10000;
593       if (delay > 0)
594         usleep (delay);
595     }
596 }
597
598
599 static void
600 check_events (struct hyper_state *hs)
601 {
602   Display *dpy;
603   int count;
604   int ic;
605   int resize;
606   Window win;
607   int redraw;
608
609   dpy = hs->hs_display;
610   count = XEventsQueued (dpy, QueuedAfterReading);
611   ic = count;
612   hs->hs_resize = 0;
613   hs->hs_redraw = 0;
614
615   while (--ic >= 0)
616     {
617       XEvent    e;
618
619       XNextEvent (dpy, &e);
620
621       switch (e.type)
622         {
623         case Expose:
624           hs->hs_icon = 0;
625           hs->hs_redraw = 1;
626           break;
627
628         case ConfigureNotify:
629           hs->hs_icon = 0;
630           hs->hs_resize = 1;
631           hs->hs_redraw = 1;
632           break;
633
634         case ButtonPress:
635           switch (e.xbutton.button)
636             {
637             case 2:
638               hs->hs_stop = !hs->hs_stop;
639               break;
640             default:
641               break;
642             }
643           break;
644
645         case UnmapNotify:
646           hs->hs_icon = 1;
647           hs->hs_redraw = 0;
648           break;
649
650         default:
651           screenhack_handle_event(dpy, &e);
652           break;
653         }
654     }
655
656   resize = hs->hs_resize;
657   win = hs->hs_window;
658   if (resize)
659     {
660       XWindowAttributes wa;
661       int width;
662       int height;
663
664       XGetWindowAttributes (dpy, win, &wa);
665       width = wa.width;
666       height = wa.height;
667       set_sizes (hs, width, height);
668     }
669
670   redraw = hs->hs_redraw;
671   if (redraw)
672     XClearWindow (dpy, win);
673 }
674
675
676 static void
677 set_sizes (struct hyper_state *hs, int width, int height)
678 {
679   double observer_z;
680   int min_dim;
681   double var;
682   double offset_x;
683   double offset_y;
684   double unit_scale;
685
686   observer_z = hs->hs_observer_z;
687   min_dim = width < height ? width : height;
688   var = sqrt(observer_z * observer_z - 1.0);
689   offset_x = 0.5 * (width - 1);
690   offset_y = 0.5 * (height - 1);
691   unit_scale = 0.4 * min_dim * var;
692   hs->hs_offset_x = (float)offset_x;
693   hs->hs_offset_y = (float)offset_y;
694   hs->hs_unit_scale = (float)unit_scale;
695 }
696
697
698 /* data */
699
700 static const struct point_info point_table[POINT_COUNT] =
701 {
702     { 0.93, 0.30, 0.09, 0.03, },
703     { 0.84, 0.49, -0.08, 0.05, },
704     { 0.72, 0.65, 0.02, -0.09, },
705     { 0.57, 0.79, 0.05, 0.07, },
706     { 0.40, 0.89, -0.09, -0.01, },
707     { 0.20, 0.95, 0.07, -0.06, },
708     { 0.00, 0.97, 0.00, 0.09, },
709     { -0.20, 0.95, -0.07, -0.06, },
710     { -0.40, 0.89, 0.09, -0.01, },
711     { -0.57, 0.79, -0.05, 0.07, },
712     { -0.72, 0.65, -0.02, -0.09, },
713     { -0.84, 0.49, 0.08, 0.05, },
714     { -0.93, 0.30, -0.09, 0.03, },
715     { -0.97, 0.10, 0.04, -0.08, },
716     { -0.97, -0.10, 0.04, 0.08, },
717     { -0.93, -0.30, -0.09, -0.03, },
718     { -0.84, -0.49, 0.08, -0.05, },
719     { -0.72, -0.65, -0.02, 0.09, },
720     { -0.57, -0.79, -0.05, -0.07, },
721     { -0.40, -0.89, 0.09, 0.01, },
722     { -0.20, -0.95, -0.07, 0.06, },
723     { 0.00, -0.97, 0.00, -0.09, },
724     { 0.20, -0.95, 0.07, 0.06, },
725     { 0.40, -0.89, -0.09, 0.01, },
726     { 0.57, -0.79, 0.05, -0.07, },
727     { 0.72, -0.65, 0.02, 0.09, },
728     { 0.84, -0.49, -0.08, -0.05, },
729     { 0.93, -0.30, 0.09, -0.03, },
730     { 0.97, -0.10, -0.04, 0.08, },
731     { 0.97, 0.10, -0.04, -0.08, },
732     { 0.27, 0.83, -0.13, -0.41, },
733     { 0.09, 0.87, 0.40, 0.18, },
734     { -0.09, 0.87, -0.40, 0.18, },
735     { -0.27, 0.83, 0.13, -0.41, },
736     { -0.44, 0.76, 0.22, 0.38, },
737     { -0.59, 0.65, -0.42, -0.09, },
738     { -0.71, 0.51, 0.35, -0.25, },
739     { -0.80, 0.36, -0.05, 0.43, },
740     { -0.86, 0.18, -0.29, -0.32, },
741     { -0.88, 0.00, 0.43, 0.00, },
742     { -0.86, -0.18, -0.29, 0.32, },
743     { -0.80, -0.36, -0.05, -0.43, },
744     { -0.71, -0.51, 0.35, 0.25, },
745     { -0.59, -0.65, -0.42, 0.09, },
746     { -0.44, -0.76, 0.22, -0.38, },
747     { -0.27, -0.83, 0.13, 0.41, },
748     { -0.09, -0.87, -0.40, -0.18, },
749     { 0.09, -0.87, 0.40, -0.18, },
750     { 0.27, -0.83, -0.13, 0.41, },
751     { 0.44, -0.76, -0.22, -0.38, },
752     { 0.59, -0.65, 0.42, 0.09, },
753     { 0.71, -0.51, -0.35, 0.25, },
754     { 0.80, -0.36, 0.05, -0.43, },
755     { 0.86, -0.18, 0.29, 0.32, },
756     { 0.88, 0.00, -0.43, 0.00, },
757     { 0.86, 0.18, 0.29, -0.32, },
758     { 0.80, 0.36, 0.05, 0.43, },
759     { 0.71, 0.51, -0.35, -0.25, },
760     { 0.59, 0.65, 0.42, -0.09, },
761     { 0.44, 0.76, -0.22, 0.38, },
762     { -0.13, 0.41, -0.27, 0.83, },
763     { -0.22, 0.38, -0.44, -0.76, },
764     { -0.29, 0.32, 0.86, 0.18, },
765     { -0.35, 0.25, -0.71, 0.51, },
766     { -0.40, 0.18, 0.09, -0.87, },
767     { -0.42, 0.09, 0.59, 0.65, },
768     { -0.43, 0.00, -0.88, 0.00, },
769     { -0.42, -0.09, 0.59, -0.65, },
770     { -0.40, -0.18, 0.09, 0.87, },
771     { -0.35, -0.25, -0.71, -0.51, },
772     { -0.29, -0.32, 0.86, -0.18, },
773     { -0.22, -0.38, -0.44, 0.76, },
774     { -0.13, -0.41, -0.27, -0.83, },
775     { -0.05, -0.43, 0.80, 0.36, },
776     { 0.05, -0.43, -0.80, 0.36, },
777     { 0.13, -0.41, 0.27, -0.83, },
778     { 0.22, -0.38, 0.44, 0.76, },
779     { 0.29, -0.32, -0.86, -0.18, },
780     { 0.35, -0.25, 0.71, -0.51, },
781     { 0.40, -0.18, -0.09, 0.87, },
782     { 0.42, -0.09, -0.59, -0.65, },
783     { 0.43, 0.00, 0.88, 0.00, },
784     { 0.42, 0.09, -0.59, 0.65, },
785     { 0.40, 0.18, -0.09, -0.87, },
786     { 0.35, 0.25, 0.71, 0.51, },
787     { 0.29, 0.32, -0.86, 0.18, },
788     { 0.22, 0.38, 0.44, -0.76, },
789     { 0.13, 0.41, 0.27, 0.83, },
790     { 0.05, 0.43, -0.80, -0.36, },
791     { -0.05, 0.43, 0.80, -0.36, },
792     { 0.09, -0.03, -0.93, 0.30, },
793     { 0.09, -0.01, 0.40, -0.89, },
794     { 0.09, 0.01, 0.40, 0.89, },
795     { 0.09, 0.03, -0.93, -0.30, },
796     { 0.08, 0.05, 0.84, -0.49, },
797     { 0.07, 0.06, -0.20, 0.95, },
798     { 0.05, 0.07, -0.57, -0.79, },
799     { 0.04, 0.08, 0.97, 0.10, },
800     { 0.02, 0.09, -0.72, 0.65, },
801     { 0.00, 0.09, 0.00, -0.97, },
802     { -0.02, 0.09, 0.72, 0.65, },
803     { -0.04, 0.08, -0.97, 0.10, },
804     { -0.05, 0.07, 0.57, -0.79, },
805     { -0.07, 0.06, 0.20, 0.95, },
806     { -0.08, 0.05, -0.84, -0.49, },
807     { -0.09, 0.03, 0.93, -0.30, },
808     { -0.09, 0.01, -0.40, 0.89, },
809     { -0.09, -0.01, -0.40, -0.89, },
810     { -0.09, -0.03, 0.93, 0.30, },
811     { -0.08, -0.05, -0.84, 0.49, },
812     { -0.07, -0.06, 0.20, -0.95, },
813     { -0.05, -0.07, 0.57, 0.79, },
814     { -0.04, -0.08, -0.97, -0.10, },
815     { -0.02, -0.09, 0.72, -0.65, },
816     { 0.00, -0.09, 0.00, 0.97, },
817     { 0.02, -0.09, -0.72, -0.65, },
818     { 0.04, -0.08, 0.97, -0.10, },
819     { 0.05, -0.07, -0.57, 0.79, },
820     { 0.07, -0.06, -0.20, -0.95, },
821     { 0.08, -0.05, 0.84, 0.49, },
822     { 0.64, 0.67, -0.15, -0.28, },
823     { 0.49, 0.79, 0.30, 0.07, },
824     { 0.31, 0.87, -0.26, 0.18, },
825     { 0.13, 0.92, 0.04, -0.31, },
826     { -0.07, 0.92, 0.20, 0.24, },
827     { -0.26, 0.89, -0.31, -0.01, },
828     { -0.44, 0.82, 0.22, -0.23, },
829     { -0.60, 0.71, 0.02, 0.31, },
830     { -0.73, 0.57, -0.25, -0.19, },
831     { -0.83, 0.40, 0.31, -0.06, },
832     { -0.90, 0.22, -0.16, 0.27, },
833     { -0.93, 0.03, -0.09, -0.30, },
834     { -0.91, -0.16, 0.28, 0.14, },
835     { -0.86, -0.35, -0.29, 0.12, },
836     { -0.77, -0.52, 0.11, -0.29, },
837     { -0.64, -0.67, 0.15, 0.28, },
838     { -0.49, -0.79, -0.30, -0.07, },
839     { -0.31, -0.87, 0.26, -0.18, },
840     { -0.13, -0.92, -0.04, 0.31, },
841     { 0.07, -0.92, -0.20, -0.24, },
842     { 0.26, -0.89, 0.31, 0.01, },
843     { 0.44, -0.82, -0.22, 0.23, },
844     { 0.60, -0.71, -0.02, -0.31, },
845     { 0.73, -0.57, 0.25, 0.19, },
846     { 0.83, -0.40, -0.31, 0.06, },
847     { 0.90, -0.22, 0.16, -0.27, },
848     { 0.93, -0.03, 0.09, 0.30, },
849     { 0.91, 0.16, -0.28, -0.14, },
850     { 0.86, 0.35, 0.29, -0.12, },
851     { 0.77, 0.52, -0.11, 0.29, },
852     { 0.44, 0.82, -0.22, -0.23, },
853     { 0.26, 0.89, 0.31, -0.01, },
854     { 0.07, 0.92, -0.20, 0.24, },
855     { -0.12, 0.92, -0.04, -0.31, },
856     { -0.31, 0.87, 0.26, 0.18, },
857     { -0.49, 0.79, -0.30, 0.07, },
858     { -0.64, 0.67, 0.15, -0.28, },
859     { -0.77, 0.52, 0.11, 0.29, },
860     { -0.86, 0.35, -0.29, -0.12, },
861     { -0.91, 0.16, 0.28, -0.14, },
862     { -0.93, -0.03, -0.09, 0.30, },
863     { -0.90, -0.22, -0.16, -0.27, },
864     { -0.83, -0.40, 0.31, 0.06, },
865     { -0.73, -0.57, -0.25, 0.19, },
866     { -0.60, -0.71, 0.02, -0.31, },
867     { -0.44, -0.82, 0.22, 0.23, },
868     { -0.26, -0.89, -0.31, 0.01, },
869     { -0.07, -0.92, 0.20, -0.24, },
870     { 0.12, -0.92, 0.04, 0.31, },
871     { 0.31, -0.87, -0.26, -0.18, },
872     { 0.49, -0.79, 0.30, -0.07, },
873     { 0.64, -0.67, -0.15, 0.28, },
874     { 0.77, -0.52, -0.11, -0.29, },
875     { 0.86, -0.35, 0.29, 0.12, },
876     { 0.91, -0.16, -0.28, 0.14, },
877     { 0.93, 0.03, 0.09, -0.30, },
878     { 0.90, 0.22, 0.16, 0.27, },
879     { 0.83, 0.40, -0.31, -0.06, },
880     { 0.73, 0.57, 0.25, -0.19, },
881     { 0.60, 0.71, -0.02, 0.31, },
882     { -0.13, 0.83, -0.27, -0.41, },
883     { -0.30, 0.79, 0.49, 0.07, },
884     { -0.46, 0.71, -0.38, 0.31, },
885     { -0.60, 0.60, 0.02, -0.49, },
886     { -0.71, 0.46, 0.35, 0.35, },
887     { -0.79, 0.30, -0.49, 0.03, },
888     { -0.83, 0.13, 0.31, -0.38, },
889     { -0.84, -0.05, 0.08, 0.49, },
890     { -0.81, -0.22, -0.41, -0.27, },
891     { -0.75, -0.38, 0.48, -0.13, },
892     { -0.65, -0.53, -0.22, 0.44, },
893     { -0.53, -0.66, -0.18, -0.46, },
894     { -0.38, -0.75, 0.46, 0.17, },
895     { -0.22, -0.82, -0.44, 0.23, },
896     { -0.04, -0.84, 0.12, -0.48, },
897     { 0.13, -0.83, 0.27, 0.41, },
898     { 0.30, -0.79, -0.49, -0.07, },
899     { 0.46, -0.71, 0.38, -0.31, },
900     { 0.60, -0.60, -0.02, 0.49, },
901     { 0.71, -0.46, -0.35, -0.35, },
902     { 0.79, -0.30, 0.49, -0.03, },
903     { 0.83, -0.13, -0.31, 0.38, },
904     { 0.84, 0.05, -0.08, -0.49, },
905     { 0.81, 0.22, 0.41, 0.27, },
906     { 0.75, 0.38, -0.48, 0.13, },
907     { 0.65, 0.53, 0.22, -0.44, },
908     { 0.53, 0.66, 0.18, 0.46, },
909     { 0.38, 0.75, -0.46, -0.17, },
910     { 0.22, 0.82, 0.44, -0.23, },
911     { 0.04, 0.84, -0.12, 0.48, },
912     { -0.65, 0.53, -0.22, -0.44, },
913     { -0.75, 0.38, 0.48, 0.13, },
914     { -0.81, 0.22, -0.41, 0.27, },
915     { -0.84, 0.05, 0.08, -0.49, },
916     { -0.83, -0.13, 0.31, 0.38, },
917     { -0.79, -0.30, -0.49, -0.03, },
918     { -0.71, -0.46, 0.35, -0.35, },
919     { -0.60, -0.60, 0.02, 0.49, },
920     { -0.46, -0.71, -0.38, -0.31, },
921     { -0.30, -0.79, 0.49, -0.07, },
922     { -0.13, -0.83, -0.27, 0.41, },
923     { 0.04, -0.84, -0.13, -0.48, },
924     { 0.22, -0.82, 0.44, 0.23, },
925     { 0.38, -0.75, -0.46, 0.17, },
926     { 0.53, -0.66, 0.18, -0.46, },
927     { 0.65, -0.53, 0.22, 0.44, },
928     { 0.75, -0.38, -0.48, -0.13, },
929     { 0.81, -0.22, 0.41, -0.27, },
930     { 0.84, -0.05, -0.08, 0.49, },
931     { 0.83, 0.13, -0.31, -0.38, },
932     { 0.79, 0.30, 0.49, 0.03, },
933     { 0.71, 0.46, -0.35, 0.35, },
934     { 0.60, 0.60, -0.02, -0.49, },
935     { 0.46, 0.71, 0.38, 0.31, },
936     { 0.30, 0.79, -0.49, 0.07, },
937     { 0.13, 0.83, 0.27, -0.41, },
938     { -0.04, 0.84, 0.13, 0.48, },
939     { -0.22, 0.82, -0.44, -0.23, },
940     { -0.38, 0.75, 0.46, -0.17, },
941     { -0.53, 0.66, -0.18, 0.46, },
942     { 0.11, 0.78, -0.33, -0.47, },
943     { -0.05, 0.79, 0.57, 0.07, },
944     { -0.22, 0.76, -0.44, 0.38, },
945     { -0.37, 0.70, 0.01, -0.58, },
946     { -0.51, 0.60, 0.42, 0.40, },
947     { -0.62, 0.49, -0.57, 0.05, },
948     { -0.71, 0.35, 0.35, -0.46, },
949     { -0.77, 0.19, 0.11, 0.57, },
950     { -0.79, 0.03, -0.49, -0.30, },
951     { -0.78, -0.14, 0.55, -0.16, },
952     { -0.73, -0.29, -0.25, 0.52, },
953     { -0.65, -0.44, -0.22, -0.53, },
954     { -0.55, -0.57, 0.54, 0.19, },
955     { -0.42, -0.67, -0.51, 0.28, },
956     { -0.27, -0.74, 0.13, -0.56, },
957     { -0.11, -0.78, 0.33, 0.47, },
958     { 0.05, -0.79, -0.57, -0.07, },
959     { 0.22, -0.76, 0.44, -0.38, },
960     { 0.37, -0.70, -0.01, 0.58, },
961     { 0.51, -0.60, -0.42, -0.40, },
962     { 0.62, -0.49, 0.57, -0.05, },
963     { 0.71, -0.35, -0.35, 0.46, },
964     { 0.77, -0.19, -0.11, -0.57, },
965     { 0.79, -0.03, 0.49, 0.30, },
966     { 0.78, 0.14, -0.55, 0.16, },
967     { 0.73, 0.29, 0.25, -0.52, },
968     { 0.65, 0.44, 0.22, 0.53, },
969     { 0.55, 0.57, -0.54, -0.19, },
970     { 0.42, 0.67, 0.51, -0.28, },
971     { 0.27, 0.74, -0.13, 0.56, },
972     { -0.73, 0.29, -0.25, -0.52, },
973     { -0.78, 0.14, 0.55, 0.16, },
974     { -0.79, -0.03, -0.49, 0.30, },
975     { -0.77, -0.19, 0.11, -0.57, },
976     { -0.71, -0.35, 0.35, 0.46, },
977     { -0.62, -0.49, -0.57, -0.05, },
978     { -0.51, -0.60, 0.42, -0.40, },
979     { -0.37, -0.70, 0.01, 0.58, },
980     { -0.22, -0.76, -0.44, -0.38, },
981     { -0.05, -0.79, 0.57, -0.07, },
982     { 0.11, -0.78, -0.33, 0.47, },
983     { 0.27, -0.74, -0.13, -0.56, },
984     { 0.42, -0.67, 0.51, 0.28, },
985     { 0.55, -0.57, -0.54, 0.19, },
986     { 0.65, -0.44, 0.22, -0.53, },
987     { 0.73, -0.29, 0.25, 0.52, },
988     { 0.78, -0.14, -0.55, -0.16, },
989     { 0.79, 0.03, 0.49, -0.30, },
990     { 0.77, 0.19, -0.11, 0.57, },
991     { 0.71, 0.35, -0.35, -0.46, },
992     { 0.62, 0.49, 0.57, 0.05, },
993     { 0.51, 0.60, -0.42, 0.40, },
994     { 0.37, 0.70, -0.01, -0.58, },
995     { 0.22, 0.76, 0.44, 0.38, },
996     { 0.05, 0.79, -0.57, 0.07, },
997     { -0.11, 0.78, 0.33, -0.47, },
998     { -0.27, 0.74, 0.13, 0.56, },
999     { -0.42, 0.67, -0.51, -0.28, },
1000     { -0.55, 0.57, 0.54, -0.19, },
1001     { -0.65, 0.44, -0.22, 0.53, },
1002     { -0.28, 0.70, -0.24, -0.58, },
1003     { -0.42, 0.62, 0.59, 0.21, },
1004     { -0.54, 0.52, -0.55, 0.29, },
1005     { -0.64, 0.40, 0.15, -0.60, },
1006     { -0.71, 0.25, 0.35, 0.51, },
1007     { -0.75, 0.10, -0.62, -0.08, },
1008     { -0.75, -0.06, 0.48, -0.40, },
1009     { -0.72, -0.21, -0.02, 0.62, },
1010     { -0.66, -0.36, -0.45, -0.43, },
1011     { -0.57, -0.49, 0.62, -0.05, },
1012     { -0.46, -0.60, -0.38, 0.49, },
1013     { -0.33, -0.68, -0.11, -0.61, },
1014     { -0.18, -0.73, 0.53, 0.33, },
1015     { -0.02, -0.75, -0.60, 0.17, },
1016     { 0.13, -0.74, 0.27, -0.56, },
1017     { 0.28, -0.70, 0.24, 0.58, },
1018     { 0.42, -0.62, -0.59, -0.21, },
1019     { 0.54, -0.52, 0.55, -0.29, },
1020     { 0.64, -0.40, -0.15, 0.60, },
1021     { 0.71, -0.25, -0.35, -0.51, },
1022     { 0.75, -0.10, 0.62, 0.08, },
1023     { 0.75, 0.06, -0.48, 0.40, },
1024     { 0.72, 0.21, 0.02, -0.62, },
1025     { 0.66, 0.36, 0.45, 0.43, },
1026     { 0.57, 0.49, -0.62, 0.05, },
1027     { 0.46, 0.60, 0.38, -0.49, },
1028     { 0.33, 0.68, 0.11, 0.61, },
1029     { 0.18, 0.73, -0.53, -0.33, },
1030     { 0.02, 0.75, 0.60, -0.17, },
1031     { -0.13, 0.74, -0.27, 0.56, },
1032     { -0.46, 0.60, -0.38, -0.49, },
1033     { -0.57, 0.49, 0.62, 0.05, },
1034     { -0.66, 0.36, -0.45, 0.43, },
1035     { -0.72, 0.21, -0.02, -0.62, },
1036     { -0.75, 0.06, 0.48, 0.40, },
1037     { -0.75, -0.10, -0.62, 0.08, },
1038     { -0.71, -0.25, 0.35, -0.51, },
1039     { -0.64, -0.40, 0.15, 0.60, },
1040     { -0.54, -0.52, -0.55, -0.29, },
1041     { -0.42, -0.62, 0.59, -0.21, },
1042     { -0.28, -0.70, -0.24, 0.58, },
1043     { -0.13, -0.74, -0.27, -0.56, },
1044     { 0.02, -0.75, 0.60, 0.17, },
1045     { 0.18, -0.73, -0.53, 0.33, },
1046     { 0.33, -0.68, 0.11, -0.61, },
1047     { 0.46, -0.60, 0.38, 0.49, },
1048     { 0.57, -0.49, -0.62, -0.05, },
1049     { 0.66, -0.36, 0.45, -0.43, },
1050     { 0.72, -0.21, 0.02, 0.62, },
1051     { 0.75, -0.06, -0.48, -0.40, },
1052     { 0.75, 0.10, 0.62, -0.08, },
1053     { 0.71, 0.25, -0.35, 0.51, },
1054     { 0.64, 0.40, -0.15, -0.60, },
1055     { 0.54, 0.52, 0.55, 0.29, },
1056     { 0.42, 0.62, -0.59, 0.21, },
1057     { 0.28, 0.70, 0.24, -0.58, },
1058     { 0.13, 0.74, 0.27, 0.56, },
1059     { -0.02, 0.75, -0.60, -0.17, },
1060     { -0.18, 0.73, 0.53, -0.33, },
1061     { -0.33, 0.68, -0.11, 0.61, },
1062     { -0.24, 0.58, 0.28, 0.70, },
1063     { -0.35, 0.51, -0.71, -0.25, },
1064     { -0.45, 0.43, 0.66, -0.36, },
1065     { -0.53, 0.33, -0.18, 0.73, },
1066     { -0.59, 0.21, -0.42, -0.62, },
1067     { -0.62, 0.08, 0.75, 0.10, },
1068     { -0.62, -0.05, -0.57, 0.49, },
1069     { -0.60, -0.17, 0.02, -0.75, },
1070     { -0.55, -0.29, 0.54, 0.52, },
1071     { -0.48, -0.40, -0.75, 0.06, },
1072     { -0.38, -0.49, 0.46, -0.60, },
1073     { -0.27, -0.56, 0.13, 0.74, },
1074     { -0.15, -0.60, -0.64, -0.40, },
1075     { -0.02, -0.62, 0.72, -0.21, },
1076     { 0.11, -0.61, -0.33, 0.68, },
1077     { 0.24, -0.58, -0.29, -0.70, },
1078     { 0.35, -0.51, 0.71, 0.25, },
1079     { 0.45, -0.43, -0.66, 0.36, },
1080     { 0.53, -0.33, 0.18, -0.73, },
1081     { 0.59, -0.21, 0.42, 0.62, },
1082     { 0.62, -0.08, -0.75, -0.10, },
1083     { 0.62, 0.05, 0.57, -0.49, },
1084     { 0.60, 0.17, -0.02, 0.75, },
1085     { 0.55, 0.29, -0.54, -0.52, },
1086     { 0.48, 0.40, 0.75, -0.06, },
1087     { 0.38, 0.49, -0.46, 0.60, },
1088     { 0.27, 0.56, -0.13, -0.74, },
1089     { 0.15, 0.60, 0.64, 0.40, },
1090     { 0.02, 0.62, -0.72, 0.21, },
1091     { -0.11, 0.61, 0.33, -0.68, },
1092     { -0.38, 0.49, 0.46, 0.60, },
1093     { -0.48, 0.40, -0.75, -0.06, },
1094     { -0.55, 0.29, 0.54, -0.52, },
1095     { -0.60, 0.17, 0.02, 0.75, },
1096     { -0.62, 0.05, -0.57, -0.49, },
1097     { -0.62, -0.08, 0.75, -0.10, },
1098     { -0.59, -0.21, -0.42, 0.62, },
1099     { -0.53, -0.33, -0.18, -0.73, },
1100     { -0.45, -0.43, 0.66, 0.36, },
1101     { -0.35, -0.51, -0.71, 0.25, },
1102     { -0.24, -0.58, 0.28, -0.70, },
1103     { -0.11, -0.61, 0.33, 0.68, },
1104     { 0.02, -0.62, -0.72, -0.21, },
1105     { 0.15, -0.60, 0.64, -0.40, },
1106     { 0.27, -0.56, -0.13, 0.74, },
1107     { 0.38, -0.49, -0.46, -0.60, },
1108     { 0.48, -0.40, 0.75, 0.06, },
1109     { 0.55, -0.29, -0.54, 0.52, },
1110     { 0.60, -0.17, -0.02, -0.75, },
1111     { 0.62, -0.05, 0.57, 0.49, },
1112     { 0.62, 0.08, -0.75, 0.10, },
1113     { 0.59, 0.21, 0.42, -0.62, },
1114     { 0.53, 0.33, 0.18, 0.73, },
1115     { 0.45, 0.43, -0.66, -0.36, },
1116     { 0.35, 0.51, 0.71, -0.25, },
1117     { 0.24, 0.58, -0.28, 0.70, },
1118     { 0.11, 0.61, -0.33, -0.68, },
1119     { -0.02, 0.62, 0.72, 0.21, },
1120     { -0.15, 0.60, -0.64, 0.40, },
1121     { -0.27, 0.56, 0.13, -0.74, },
1122     { -0.33, 0.47, -0.11, 0.78, },
1123     { -0.42, 0.40, -0.51, -0.60, },
1124     { -0.49, 0.30, 0.79, 0.03, },
1125     { -0.54, 0.19, -0.55, 0.57, },
1126     { -0.57, 0.07, -0.05, -0.79, },
1127     { -0.57, -0.05, 0.62, 0.49, },
1128     { -0.55, -0.16, -0.78, 0.14, },
1129     { -0.51, -0.28, 0.42, -0.67, },
1130     { -0.44, -0.38, 0.22, 0.76, },
1131     { -0.35, -0.46, -0.71, -0.35, },
1132     { -0.25, -0.52, 0.73, -0.29, },
1133     { -0.13, -0.56, -0.27, 0.74, },
1134     { -0.01, -0.58, -0.37, -0.70, },
1135     { 0.11, -0.57, 0.77, 0.19, },
1136     { 0.22, -0.53, -0.65, 0.44, },
1137     { 0.33, -0.47, 0.11, -0.78, },
1138     { 0.42, -0.40, 0.51, 0.60, },
1139     { 0.49, -0.30, -0.79, -0.03, },
1140     { 0.54, -0.19, 0.55, -0.57, },
1141     { 0.57, -0.07, 0.05, 0.79, },
1142     { 0.57, 0.05, -0.62, -0.49, },
1143     { 0.55, 0.16, 0.78, -0.14, },
1144     { 0.51, 0.28, -0.42, 0.67, },
1145     { 0.44, 0.38, -0.22, -0.76, },
1146     { 0.35, 0.46, 0.71, 0.35, },
1147     { 0.25, 0.52, -0.73, 0.29, },
1148     { 0.13, 0.56, 0.27, -0.74, },
1149     { 0.01, 0.58, 0.37, 0.70, },
1150     { -0.11, 0.57, -0.77, -0.19, },
1151     { -0.22, 0.53, 0.65, -0.44, },
1152     { -0.25, 0.52, 0.73, 0.29, },
1153     { -0.35, 0.46, -0.71, 0.35, },
1154     { -0.44, 0.38, 0.22, -0.76, },
1155     { -0.51, 0.28, 0.42, 0.67, },
1156     { -0.55, 0.16, -0.78, -0.14, },
1157     { -0.57, 0.05, 0.62, -0.49, },
1158     { -0.57, -0.07, -0.05, 0.79, },
1159     { -0.54, -0.19, -0.55, -0.57, },
1160     { -0.49, -0.30, 0.79, -0.03, },
1161     { -0.42, -0.40, -0.51, 0.60, },
1162     { -0.33, -0.47, -0.11, -0.78, },
1163     { -0.22, -0.53, 0.65, 0.44, },
1164     { -0.11, -0.57, -0.77, 0.19, },
1165     { 0.01, -0.58, 0.37, -0.70, },
1166     { 0.13, -0.56, 0.27, 0.74, },
1167     { 0.25, -0.52, -0.73, -0.29, },
1168     { 0.35, -0.46, 0.71, -0.35, },
1169     { 0.44, -0.38, -0.22, 0.76, },
1170     { 0.51, -0.28, -0.42, -0.67, },
1171     { 0.55, -0.16, 0.78, 0.14, },
1172     { 0.57, -0.05, -0.62, 0.49, },
1173     { 0.57, 0.07, 0.05, -0.79, },
1174     { 0.54, 0.19, 0.55, 0.57, },
1175     { 0.49, 0.30, -0.79, 0.03, },
1176     { 0.42, 0.40, 0.51, -0.60, },
1177     { 0.33, 0.47, 0.11, 0.78, },
1178     { 0.22, 0.53, -0.65, -0.44, },
1179     { 0.11, 0.57, 0.77, -0.19, },
1180     { -0.01, 0.58, -0.37, 0.70, },
1181     { -0.13, 0.56, -0.27, -0.74, },
1182     { -0.27, 0.41, 0.13, 0.83, },
1183     { -0.35, 0.35, -0.71, -0.46, },
1184     { -0.41, 0.27, 0.81, -0.22, },
1185     { -0.46, 0.17, -0.38, 0.75, },
1186     { -0.49, 0.07, -0.30, -0.79, },
1187     { -0.49, -0.03, 0.79, 0.30, },
1188     { -0.48, -0.13, -0.75, 0.38, },
1189     { -0.44, -0.23, 0.22, -0.82, },
1190     { -0.38, -0.31, 0.46, 0.71, },
1191     { -0.31, -0.38, -0.83, -0.13, },
1192     { -0.22, -0.44, 0.65, -0.53, },
1193     { -0.13, -0.48, -0.04, 0.84, },
1194     { -0.02, -0.49, -0.60, -0.60, },
1195     { 0.08, -0.49, 0.84, -0.05, },
1196     { 0.18, -0.46, -0.53, 0.66, },
1197     { 0.27, -0.41, -0.13, -0.83, },
1198     { 0.35, -0.35, 0.71, 0.46, },
1199     { 0.41, -0.27, -0.81, 0.22, },
1200     { 0.46, -0.17, 0.38, -0.75, },
1201     { 0.49, -0.07, 0.30, 0.79, },
1202     { 0.49, 0.03, -0.79, -0.30, },
1203     { 0.48, 0.13, 0.75, -0.38, },
1204     { 0.44, 0.23, -0.22, 0.82, },
1205     { 0.38, 0.31, -0.46, -0.71, },
1206     { 0.31, 0.38, 0.83, 0.13, },
1207     { 0.22, 0.44, -0.65, 0.53, },
1208     { 0.12, 0.48, 0.04, -0.84, },
1209     { 0.02, 0.49, 0.60, 0.60, },
1210     { -0.08, 0.49, -0.84, 0.05, },
1211     { -0.18, 0.46, 0.53, -0.66, },
1212     { -0.22, 0.44, 0.65, 0.53, },
1213     { -0.31, 0.38, -0.83, 0.13, },
1214     { -0.38, 0.31, 0.46, -0.71, },
1215     { -0.44, 0.23, 0.22, 0.82, },
1216     { -0.48, 0.13, -0.75, -0.38, },
1217     { -0.49, 0.03, 0.79, -0.30, },
1218     { -0.49, -0.07, -0.30, 0.79, },
1219     { -0.46, -0.17, -0.38, -0.75, },
1220     { -0.41, -0.27, 0.81, 0.22, },
1221     { -0.35, -0.35, -0.71, 0.46, },
1222     { -0.27, -0.41, 0.13, -0.83, },
1223     { -0.18, -0.46, 0.53, 0.66, },
1224     { -0.08, -0.49, -0.84, -0.05, },
1225     { 0.02, -0.49, 0.60, -0.60, },
1226     { 0.12, -0.48, 0.04, 0.84, },
1227     { 0.22, -0.44, -0.65, -0.53, },
1228     { 0.31, -0.38, 0.83, -0.13, },
1229     { 0.38, -0.31, -0.46, 0.71, },
1230     { 0.44, -0.23, -0.22, -0.82, },
1231     { 0.48, -0.13, 0.75, 0.38, },
1232     { 0.49, -0.03, -0.79, 0.30, },
1233     { 0.49, 0.07, 0.30, -0.79, },
1234     { 0.46, 0.17, 0.38, 0.75, },
1235     { 0.41, 0.27, -0.81, -0.22, },
1236     { 0.35, 0.35, 0.71, -0.46, },
1237     { 0.27, 0.41, -0.13, 0.83, },
1238     { 0.18, 0.46, -0.53, -0.66, },
1239     { 0.08, 0.49, 0.84, 0.05, },
1240     { -0.02, 0.49, -0.60, 0.60, },
1241     { -0.12, 0.48, -0.04, -0.84, },
1242     { -0.15, 0.28, -0.64, 0.67, },
1243     { -0.20, 0.24, -0.07, -0.92, },
1244     { -0.25, 0.19, 0.73, 0.57, },
1245     { -0.28, 0.14, -0.91, 0.16, },
1246     { -0.30, 0.07, 0.49, -0.79, },
1247     { -0.31, 0.01, 0.26, 0.89, },
1248     { -0.31, -0.06, -0.83, -0.40, },
1249     { -0.29, -0.12, 0.86, -0.35, },
1250     { -0.26, -0.18, -0.31, 0.87, },
1251     { -0.22, -0.23, -0.44, -0.82, },
1252     { -0.16, -0.27, 0.90, 0.22, },
1253     { -0.11, -0.29, -0.77, 0.52, },
1254     { -0.04, -0.31, 0.12, -0.92, },
1255     { 0.02, -0.31, 0.60, 0.71, },
1256     { 0.09, -0.30, -0.93, -0.03, },
1257     { 0.15, -0.28, 0.64, -0.67, },
1258     { 0.20, -0.24, 0.07, 0.92, },
1259     { 0.25, -0.19, -0.73, -0.57, },
1260     { 0.28, -0.14, 0.91, -0.16, },
1261     { 0.30, -0.07, -0.49, 0.79, },
1262     { 0.31, -0.01, -0.26, -0.89, },
1263     { 0.31, 0.06, 0.83, 0.40, },
1264     { 0.29, 0.12, -0.86, 0.35, },
1265     { 0.26, 0.18, 0.31, -0.87, },
1266     { 0.22, 0.23, 0.44, 0.82, },
1267     { 0.16, 0.27, -0.90, -0.22, },
1268     { 0.11, 0.29, 0.77, -0.52, },
1269     { 0.04, 0.31, -0.12, 0.92, },
1270     { -0.02, 0.31, -0.60, -0.71, },
1271     { -0.09, 0.30, 0.93, 0.03, },
1272     { -0.22, 0.23, -0.44, 0.82, },
1273     { -0.26, 0.18, -0.31, -0.87, },
1274     { -0.29, 0.12, 0.86, 0.35, },
1275     { -0.31, 0.06, -0.83, 0.40, },
1276     { -0.31, -0.01, 0.26, -0.89, },
1277     { -0.30, -0.07, 0.49, 0.79, },
1278     { -0.28, -0.14, -0.91, -0.16, },
1279     { -0.25, -0.19, 0.73, -0.57, },
1280     { -0.20, -0.24, -0.07, 0.92, },
1281     { -0.15, -0.28, -0.64, -0.67, },
1282     { -0.09, -0.30, 0.93, -0.03, },
1283     { -0.02, -0.31, -0.60, 0.71, },
1284     { 0.04, -0.31, -0.13, -0.92, },
1285     { 0.11, -0.29, 0.77, 0.52, },
1286     { 0.16, -0.27, -0.90, 0.22, },
1287     { 0.22, -0.23, 0.44, -0.82, },
1288     { 0.26, -0.18, 0.31, 0.87, },
1289     { 0.29, -0.12, -0.86, -0.35, },
1290     { 0.31, -0.06, 0.83, -0.40, },
1291     { 0.31, 0.01, -0.26, 0.89, },
1292     { 0.30, 0.07, -0.49, -0.79, },
1293     { 0.28, 0.14, 0.91, 0.16, },
1294     { 0.25, 0.19, -0.73, 0.57, },
1295     { 0.20, 0.24, 0.07, -0.92, },
1296     { 0.15, 0.28, 0.64, 0.67, },
1297     { 0.09, 0.30, -0.93, 0.03, },
1298     { 0.02, 0.31, 0.60, -0.71, },
1299     { -0.04, 0.31, 0.13, 0.92, },
1300     { -0.11, 0.29, -0.77, -0.52, },
1301     { -0.16, 0.27, 0.90, -0.22, },
1302 };
1303
1304 static const struct line_info line_table[LINE_COUNT] =
1305 {
1306     { 0, 1, 0, },
1307     { 0, 29, 0, },
1308     { 0, 148, 0, },
1309     { 0, 176, 0, },
1310     { 1, 2, 0, },
1311     { 1, 149, 0, },
1312     { 1, 177, 0, },
1313     { 2, 3, 0, },
1314     { 2, 120, 0, },
1315     { 2, 178, 0, },
1316     { 3, 4, 0, },
1317     { 3, 121, 0, },
1318     { 3, 179, 0, },
1319     { 4, 5, 0, },
1320     { 4, 122, 0, },
1321     { 4, 150, 0, },
1322     { 5, 6, 0, },
1323     { 5, 123, 0, },
1324     { 5, 151, 0, },
1325     { 6, 7, 0, },
1326     { 6, 124, 0, },
1327     { 6, 152, 0, },
1328     { 7, 8, 0, },
1329     { 7, 125, 0, },
1330     { 7, 153, 0, },
1331     { 8, 9, 0, },
1332     { 8, 126, 0, },
1333     { 8, 154, 0, },
1334     { 9, 10, 0, },
1335     { 9, 127, 0, },
1336     { 9, 155, 0, },
1337     { 10, 11, 0, },
1338     { 10, 128, 0, },
1339     { 10, 156, 0, },
1340     { 11, 12, 0, },
1341     { 11, 129, 0, },
1342     { 11, 157, 0, },
1343     { 12, 13, 0, },
1344     { 12, 130, 0, },
1345     { 12, 158, 0, },
1346     { 13, 14, 0, },
1347     { 13, 131, 0, },
1348     { 13, 159, 0, },
1349     { 14, 15, 0, },
1350     { 14, 132, 0, },
1351     { 14, 160, 0, },
1352     { 15, 16, 0, },
1353     { 15, 133, 0, },
1354     { 15, 161, 0, },
1355     { 16, 17, 0, },
1356     { 16, 134, 0, },
1357     { 16, 162, 0, },
1358     { 17, 18, 0, },
1359     { 17, 135, 0, },
1360     { 17, 163, 0, },
1361     { 18, 19, 0, },
1362     { 18, 136, 0, },
1363     { 18, 164, 0, },
1364     { 19, 20, 0, },
1365     { 19, 137, 0, },
1366     { 19, 165, 0, },
1367     { 20, 21, 0, },
1368     { 20, 138, 0, },
1369     { 20, 166, 0, },
1370     { 21, 22, 0, },
1371     { 21, 139, 0, },
1372     { 21, 167, 0, },
1373     { 22, 23, 0, },
1374     { 22, 140, 0, },
1375     { 22, 168, 0, },
1376     { 23, 24, 0, },
1377     { 23, 141, 0, },
1378     { 23, 169, 0, },
1379     { 24, 25, 0, },
1380     { 24, 142, 0, },
1381     { 24, 170, 0, },
1382     { 25, 26, 0, },
1383     { 25, 143, 0, },
1384     { 25, 171, 0, },
1385     { 26, 27, 0, },
1386     { 26, 144, 0, },
1387     { 26, 172, 0, },
1388     { 27, 28, 0, },
1389     { 27, 145, 0, },
1390     { 27, 173, 0, },
1391     { 28, 29, 0, },
1392     { 28, 146, 0, },
1393     { 28, 174, 0, },
1394     { 29, 147, 0, },
1395     { 29, 175, 0, },
1396     { 30, 123, 0, },
1397     { 30, 150, 0, },
1398     { 30, 240, 0, },
1399     { 30, 292, 0, },
1400     { 31, 124, 0, },
1401     { 31, 151, 0, },
1402     { 31, 241, 0, },
1403     { 31, 293, 0, },
1404     { 32, 125, 0, },
1405     { 32, 152, 0, },
1406     { 32, 242, 0, },
1407     { 32, 294, 0, },
1408     { 33, 126, 0, },
1409     { 33, 153, 0, },
1410     { 33, 243, 0, },
1411     { 33, 295, 0, },
1412     { 34, 127, 0, },
1413     { 34, 154, 0, },
1414     { 34, 244, 0, },
1415     { 34, 296, 0, },
1416     { 35, 128, 0, },
1417     { 35, 155, 0, },
1418     { 35, 245, 0, },
1419     { 35, 297, 0, },
1420     { 36, 129, 0, },
1421     { 36, 156, 0, },
1422     { 36, 246, 0, },
1423     { 36, 298, 0, },
1424     { 37, 130, 0, },
1425     { 37, 157, 0, },
1426     { 37, 247, 0, },
1427     { 37, 299, 0, },
1428     { 38, 131, 0, },
1429     { 38, 158, 0, },
1430     { 38, 248, 0, },
1431     { 38, 270, 0, },
1432     { 39, 132, 0, },
1433     { 39, 159, 0, },
1434     { 39, 249, 0, },
1435     { 39, 271, 0, },
1436     { 40, 133, 0, },
1437     { 40, 160, 0, },
1438     { 40, 250, 0, },
1439     { 40, 272, 0, },
1440     { 41, 134, 0, },
1441     { 41, 161, 0, },
1442     { 41, 251, 0, },
1443     { 41, 273, 0, },
1444     { 42, 135, 0, },
1445     { 42, 162, 0, },
1446     { 42, 252, 0, },
1447     { 42, 274, 0, },
1448     { 43, 136, 0, },
1449     { 43, 163, 0, },
1450     { 43, 253, 0, },
1451     { 43, 275, 0, },
1452     { 44, 137, 0, },
1453     { 44, 164, 0, },
1454     { 44, 254, 0, },
1455     { 44, 276, 0, },
1456     { 45, 138, 1, },
1457     { 45, 165, 1, },
1458     { 45, 255, 1, },
1459     { 45, 277, 1, },
1460     { 46, 139, 1, },
1461     { 46, 166, 1, },
1462     { 46, 256, 1, },
1463     { 46, 278, 1, },
1464     { 47, 140, 1, },
1465     { 47, 167, 1, },
1466     { 47, 257, 1, },
1467     { 47, 279, 1, },
1468     { 48, 141, 1, },
1469     { 48, 168, 1, },
1470     { 48, 258, 1, },
1471     { 48, 280, 1, },
1472     { 49, 142, 1, },
1473     { 49, 169, 1, },
1474     { 49, 259, 1, },
1475     { 49, 281, 1, },
1476     { 50, 143, 1, },
1477     { 50, 170, 1, },
1478     { 50, 260, 1, },
1479     { 50, 282, 1, },
1480     { 51, 144, 1, },
1481     { 51, 171, 1, },
1482     { 51, 261, 1, },
1483     { 51, 283, 1, },
1484     { 52, 145, 1, },
1485     { 52, 172, 1, },
1486     { 52, 262, 1, },
1487     { 52, 284, 1, },
1488     { 53, 146, 1, },
1489     { 53, 173, 1, },
1490     { 53, 263, 1, },
1491     { 53, 285, 1, },
1492     { 54, 147, 1, },
1493     { 54, 174, 1, },
1494     { 54, 264, 1, },
1495     { 54, 286, 1, },
1496     { 55, 148, 1, },
1497     { 55, 175, 1, },
1498     { 55, 265, 1, },
1499     { 55, 287, 1, },
1500     { 56, 149, 1, },
1501     { 56, 176, 1, },
1502     { 56, 266, 1, },
1503     { 56, 288, 1, },
1504     { 57, 120, 1, },
1505     { 57, 177, 1, },
1506     { 57, 267, 1, },
1507     { 57, 289, 1, },
1508     { 58, 121, 1, },
1509     { 58, 178, 1, },
1510     { 58, 268, 1, },
1511     { 58, 290, 1, },
1512     { 59, 122, 1, },
1513     { 59, 179, 1, },
1514     { 59, 269, 1, },
1515     { 59, 291, 1, },
1516     { 60, 420, 1, },
1517     { 60, 478, 1, },
1518     { 60, 567, 1, },
1519     { 60, 570, 1, },
1520     { 61, 421, 1, },
1521     { 61, 479, 1, },
1522     { 61, 568, 1, },
1523     { 61, 571, 1, },
1524     { 62, 422, 1, },
1525     { 62, 450, 1, },
1526     { 62, 569, 1, },
1527     { 62, 572, 1, },
1528     { 63, 423, 1, },
1529     { 63, 451, 1, },
1530     { 63, 540, 1, },
1531     { 63, 573, 1, },
1532     { 64, 424, 1, },
1533     { 64, 452, 1, },
1534     { 64, 541, 1, },
1535     { 64, 574, 1, },
1536     { 65, 425, 1, },
1537     { 65, 453, 1, },
1538     { 65, 542, 1, },
1539     { 65, 575, 1, },
1540     { 66, 426, 1, },
1541     { 66, 454, 1, },
1542     { 66, 543, 1, },
1543     { 66, 576, 1, },
1544     { 67, 427, 1, },
1545     { 67, 455, 1, },
1546     { 67, 544, 1, },
1547     { 67, 577, 1, },
1548     { 68, 428, 1, },
1549     { 68, 456, 1, },
1550     { 68, 545, 1, },
1551     { 68, 578, 1, },
1552     { 69, 429, 1, },
1553     { 69, 457, 1, },
1554     { 69, 546, 1, },
1555     { 69, 579, 1, },
1556     { 70, 430, 1, },
1557     { 70, 458, 1, },
1558     { 70, 547, 1, },
1559     { 70, 580, 1, },
1560     { 71, 431, 1, },
1561     { 71, 459, 1, },
1562     { 71, 548, 1, },
1563     { 71, 581, 1, },
1564     { 72, 432, 1, },
1565     { 72, 460, 1, },
1566     { 72, 549, 1, },
1567     { 72, 582, 1, },
1568     { 73, 433, 1, },
1569     { 73, 461, 1, },
1570     { 73, 550, 1, },
1571     { 73, 583, 1, },
1572     { 74, 434, 1, },
1573     { 74, 462, 1, },
1574     { 74, 551, 1, },
1575     { 74, 584, 1, },
1576     { 75, 435, 1, },
1577     { 75, 463, 1, },
1578     { 75, 552, 1, },
1579     { 75, 585, 1, },
1580     { 76, 436, 1, },
1581     { 76, 464, 1, },
1582     { 76, 553, 1, },
1583     { 76, 586, 1, },
1584     { 77, 437, 1, },
1585     { 77, 465, 1, },
1586     { 77, 554, 1, },
1587     { 77, 587, 1, },
1588     { 78, 438, 1, },
1589     { 78, 466, 1, },
1590     { 78, 555, 1, },
1591     { 78, 588, 1, },
1592     { 79, 439, 1, },
1593     { 79, 467, 1, },
1594     { 79, 556, 1, },
1595     { 79, 589, 1, },
1596     { 80, 440, 1, },
1597     { 80, 468, 1, },
1598     { 80, 557, 1, },
1599     { 80, 590, 1, },
1600     { 81, 441, 1, },
1601     { 81, 469, 1, },
1602     { 81, 558, 1, },
1603     { 81, 591, 1, },
1604     { 82, 442, 1, },
1605     { 82, 470, 1, },
1606     { 82, 559, 2, },
1607     { 82, 592, 2, },
1608     { 83, 443, 2, },
1609     { 83, 471, 2, },
1610     { 83, 560, 2, },
1611     { 83, 593, 2, },
1612     { 84, 444, 2, },
1613     { 84, 472, 2, },
1614     { 84, 561, 2, },
1615     { 84, 594, 2, },
1616     { 85, 445, 2, },
1617     { 85, 473, 2, },
1618     { 85, 562, 2, },
1619     { 85, 595, 2, },
1620     { 86, 446, 2, },
1621     { 86, 474, 2, },
1622     { 86, 563, 2, },
1623     { 86, 596, 2, },
1624     { 87, 447, 2, },
1625     { 87, 475, 2, },
1626     { 87, 564, 2, },
1627     { 87, 597, 2, },
1628     { 88, 448, 2, },
1629     { 88, 476, 2, },
1630     { 88, 565, 2, },
1631     { 88, 598, 2, },
1632     { 89, 449, 2, },
1633     { 89, 477, 2, },
1634     { 89, 566, 2, },
1635     { 89, 599, 2, },
1636     { 90, 101, 2, },
1637     { 90, 109, 2, },
1638     { 90, 562, 2, },
1639     { 90, 584, 2, },
1640     { 91, 102, 2, },
1641     { 91, 110, 2, },
1642     { 91, 563, 2, },
1643     { 91, 585, 2, },
1644     { 92, 103, 2, },
1645     { 92, 111, 2, },
1646     { 92, 564, 2, },
1647     { 92, 586, 2, },
1648     { 93, 104, 2, },
1649     { 93, 112, 2, },
1650     { 93, 565, 2, },
1651     { 93, 587, 2, },
1652     { 94, 105, 2, },
1653     { 94, 113, 2, },
1654     { 94, 566, 2, },
1655     { 94, 588, 2, },
1656     { 95, 106, 2, },
1657     { 95, 114, 2, },
1658     { 95, 567, 2, },
1659     { 95, 589, 2, },
1660     { 96, 107, 2, },
1661     { 96, 115, 2, },
1662     { 96, 568, 2, },
1663     { 96, 590, 2, },
1664     { 97, 108, 2, },
1665     { 97, 116, 2, },
1666     { 97, 569, 2, },
1667     { 97, 591, 2, },
1668     { 98, 109, 2, },
1669     { 98, 117, 2, },
1670     { 98, 540, 2, },
1671     { 98, 592, 2, },
1672     { 99, 110, 2, },
1673     { 99, 118, 2, },
1674     { 99, 541, 2, },
1675     { 99, 593, 2, },
1676     { 100, 111, 2, },
1677     { 100, 119, 2, },
1678     { 100, 542, 2, },
1679     { 100, 594, 2, },
1680     { 101, 112, 2, },
1681     { 101, 543, 2, },
1682     { 101, 595, 2, },
1683     { 102, 113, 2, },
1684     { 102, 544, 2, },
1685     { 102, 596, 2, },
1686     { 103, 114, 2, },
1687     { 103, 545, 2, },
1688     { 103, 597, 2, },
1689     { 104, 115, 2, },
1690     { 104, 546, 2, },
1691     { 104, 598, 2, },
1692     { 105, 116, 2, },
1693     { 105, 547, 2, },
1694     { 105, 599, 2, },
1695     { 106, 117, 2, },
1696     { 106, 548, 2, },
1697     { 106, 570, 2, },
1698     { 107, 118, 2, },
1699     { 107, 549, 2, },
1700     { 107, 571, 2, },
1701     { 108, 119, 2, },
1702     { 108, 550, 2, },
1703     { 108, 572, 2, },
1704     { 109, 551, 2, },
1705     { 109, 573, 2, },
1706     { 110, 552, 2, },
1707     { 110, 574, 2, },
1708     { 111, 553, 2, },
1709     { 111, 575, 2, },
1710     { 112, 554, 2, },
1711     { 112, 576, 2, },
1712     { 113, 555, 2, },
1713     { 113, 577, 2, },
1714     { 114, 556, 2, },
1715     { 114, 578, 2, },
1716     { 115, 557, 2, },
1717     { 115, 579, 2, },
1718     { 116, 558, 2, },
1719     { 116, 580, 2, },
1720     { 117, 559, 2, },
1721     { 117, 581, 2, },
1722     { 118, 560, 2, },
1723     { 118, 582, 2, },
1724     { 119, 561, 2, },
1725     { 119, 583, 2, },
1726     { 120, 150, 2, },
1727     { 120, 232, 2, },
1728     { 121, 151, 2, },
1729     { 121, 233, 2, },
1730     { 122, 152, 2, },
1731     { 122, 234, 2, },
1732     { 123, 153, 2, },
1733     { 123, 235, 2, },
1734     { 124, 154, 2, },
1735     { 124, 236, 2, },
1736     { 125, 155, 2, },
1737     { 125, 237, 2, },
1738     { 126, 156, 2, },
1739     { 126, 238, 2, },
1740     { 127, 157, 2, },
1741     { 127, 239, 2, },
1742     { 128, 158, 2, },
1743     { 128, 210, 2, },
1744     { 129, 159, 2, },
1745     { 129, 211, 2, },
1746     { 130, 160, 2, },
1747     { 130, 212, 2, },
1748     { 131, 161, 2, },
1749     { 131, 213, 2, },
1750     { 132, 162, 2, },
1751     { 132, 214, 2, },
1752     { 133, 163, 2, },
1753     { 133, 215, 2, },
1754     { 134, 164, 2, },
1755     { 134, 216, 2, },
1756     { 135, 165, 3, },
1757     { 135, 217, 3, },
1758     { 136, 166, 3, },
1759     { 136, 218, 3, },
1760     { 137, 167, 3, },
1761     { 137, 219, 3, },
1762     { 138, 168, 3, },
1763     { 138, 220, 3, },
1764     { 139, 169, 3, },
1765     { 139, 221, 3, },
1766     { 140, 170, 3, },
1767     { 140, 222, 3, },
1768     { 141, 171, 3, },
1769     { 141, 223, 3, },
1770     { 142, 172, 3, },
1771     { 142, 224, 3, },
1772     { 143, 173, 3, },
1773     { 143, 225, 3, },
1774     { 144, 174, 3, },
1775     { 144, 226, 3, },
1776     { 145, 175, 3, },
1777     { 145, 227, 3, },
1778     { 146, 176, 3, },
1779     { 146, 228, 3, },
1780     { 147, 177, 3, },
1781     { 147, 229, 3, },
1782     { 148, 178, 3, },
1783     { 148, 230, 3, },
1784     { 149, 179, 3, },
1785     { 149, 231, 3, },
1786     { 150, 207, 3, },
1787     { 151, 208, 3, },
1788     { 152, 209, 3, },
1789     { 153, 180, 3, },
1790     { 154, 181, 3, },
1791     { 155, 182, 3, },
1792     { 156, 183, 3, },
1793     { 157, 184, 3, },
1794     { 158, 185, 3, },
1795     { 159, 186, 3, },
1796     { 160, 187, 3, },
1797     { 161, 188, 3, },
1798     { 162, 189, 3, },
1799     { 163, 190, 3, },
1800     { 164, 191, 3, },
1801     { 165, 192, 3, },
1802     { 166, 193, 3, },
1803     { 167, 194, 3, },
1804     { 168, 195, 3, },
1805     { 169, 196, 3, },
1806     { 170, 197, 3, },
1807     { 171, 198, 3, },
1808     { 172, 199, 3, },
1809     { 173, 200, 3, },
1810     { 174, 201, 3, },
1811     { 175, 202, 3, },
1812     { 176, 203, 3, },
1813     { 177, 204, 3, },
1814     { 178, 205, 3, },
1815     { 179, 206, 3, },
1816     { 180, 237, 3, },
1817     { 180, 240, 3, },
1818     { 180, 300, 3, },
1819     { 181, 238, 3, },
1820     { 181, 241, 3, },
1821     { 181, 301, 3, },
1822     { 182, 239, 3, },
1823     { 182, 242, 3, },
1824     { 182, 302, 3, },
1825     { 183, 210, 3, },
1826     { 183, 243, 3, },
1827     { 183, 303, 3, },
1828     { 184, 211, 3, },
1829     { 184, 244, 3, },
1830     { 184, 304, 3, },
1831     { 185, 212, 3, },
1832     { 185, 245, 3, },
1833     { 185, 305, 3, },
1834     { 186, 213, 3, },
1835     { 186, 246, 3, },
1836     { 186, 306, 3, },
1837     { 187, 214, 3, },
1838     { 187, 247, 3, },
1839     { 187, 307, 3, },
1840     { 188, 215, 3, },
1841     { 188, 248, 3, },
1842     { 188, 308, 3, },
1843     { 189, 216, 3, },
1844     { 189, 249, 3, },
1845     { 189, 309, 3, },
1846     { 190, 217, 3, },
1847     { 190, 250, 3, },
1848     { 190, 310, 3, },
1849     { 191, 218, 3, },
1850     { 191, 251, 3, },
1851     { 191, 311, 3, },
1852     { 192, 219, 3, },
1853     { 192, 252, 3, },
1854     { 192, 312, 3, },
1855     { 193, 220, 3, },
1856     { 193, 253, 3, },
1857     { 193, 313, 3, },
1858     { 194, 221, 3, },
1859     { 194, 254, 3, },
1860     { 194, 314, 3, },
1861     { 195, 222, 3, },
1862     { 195, 255, 3, },
1863     { 195, 315, 3, },
1864     { 196, 223, 3, },
1865     { 196, 256, 3, },
1866     { 196, 316, 3, },
1867     { 197, 224, 3, },
1868     { 197, 257, 3, },
1869     { 197, 317, 3, },
1870     { 198, 225, 3, },
1871     { 198, 258, 3, },
1872     { 198, 318, 3, },
1873     { 199, 226, 3, },
1874     { 199, 259, 3, },
1875     { 199, 319, 3, },
1876     { 200, 227, 3, },
1877     { 200, 260, 3, },
1878     { 200, 320, 3, },
1879     { 201, 228, 3, },
1880     { 201, 261, 3, },
1881     { 201, 321, 3, },
1882     { 202, 229, 3, },
1883     { 202, 262, 3, },
1884     { 202, 322, 3, },
1885     { 203, 230, 3, },
1886     { 203, 263, 3, },
1887     { 203, 323, 3, },
1888     { 204, 231, 3, },
1889     { 204, 264, 3, },
1890     { 204, 324, 3, },
1891     { 205, 232, 3, },
1892     { 205, 265, 3, },
1893     { 205, 325, 3, },
1894     { 206, 233, 3, },
1895     { 206, 266, 3, },
1896     { 206, 326, 3, },
1897     { 207, 234, 3, },
1898     { 207, 267, 3, },
1899     { 207, 327, 3, },
1900     { 208, 235, 3, },
1901     { 208, 268, 3, },
1902     { 208, 328, 3, },
1903     { 209, 236, 3, },
1904     { 209, 269, 3, },
1905     { 209, 329, 3, },
1906     { 210, 270, 4, },
1907     { 210, 330, 4, },
1908     { 211, 271, 4, },
1909     { 211, 331, 4, },
1910     { 212, 272, 4, },
1911     { 212, 332, 4, },
1912     { 213, 273, 4, },
1913     { 213, 333, 4, },
1914     { 214, 274, 4, },
1915     { 214, 334, 4, },
1916     { 215, 275, 4, },
1917     { 215, 335, 4, },
1918     { 216, 276, 4, },
1919     { 216, 336, 4, },
1920     { 217, 277, 4, },
1921     { 217, 337, 4, },
1922     { 218, 278, 4, },
1923     { 218, 338, 4, },
1924     { 219, 279, 4, },
1925     { 219, 339, 4, },
1926     { 220, 280, 4, },
1927     { 220, 340, 4, },
1928     { 221, 281, 4, },
1929     { 221, 341, 4, },
1930     { 222, 282, 4, },
1931     { 222, 342, 4, },
1932     { 223, 283, 4, },
1933     { 223, 343, 4, },
1934     { 224, 284, 4, },
1935     { 224, 344, 4, },
1936     { 225, 285, 4, },
1937     { 225, 345, 4, },
1938     { 226, 286, 4, },
1939     { 226, 346, 4, },
1940     { 227, 287, 4, },
1941     { 227, 347, 4, },
1942     { 228, 288, 4, },
1943     { 228, 348, 4, },
1944     { 229, 289, 4, },
1945     { 229, 349, 4, },
1946     { 230, 290, 4, },
1947     { 230, 350, 4, },
1948     { 231, 291, 4, },
1949     { 231, 351, 4, },
1950     { 232, 292, 4, },
1951     { 232, 352, 4, },
1952     { 233, 293, 4, },
1953     { 233, 353, 4, },
1954     { 234, 294, 4, },
1955     { 234, 354, 4, },
1956     { 235, 295, 4, },
1957     { 235, 355, 4, },
1958     { 236, 296, 4, },
1959     { 236, 356, 4, },
1960     { 237, 297, 4, },
1961     { 237, 357, 4, },
1962     { 238, 298, 4, },
1963     { 238, 358, 4, },
1964     { 239, 299, 4, },
1965     { 239, 359, 4, },
1966     { 240, 327, 4, },
1967     { 240, 416, 4, },
1968     { 241, 328, 4, },
1969     { 241, 417, 4, },
1970     { 242, 329, 4, },
1971     { 242, 418, 4, },
1972     { 243, 300, 4, },
1973     { 243, 419, 4, },
1974     { 244, 301, 4, },
1975     { 244, 390, 4, },
1976     { 245, 302, 4, },
1977     { 245, 391, 4, },
1978     { 246, 303, 4, },
1979     { 246, 392, 4, },
1980     { 247, 304, 4, },
1981     { 247, 393, 4, },
1982     { 248, 305, 4, },
1983     { 248, 394, 4, },
1984     { 249, 306, 4, },
1985     { 249, 395, 4, },
1986     { 250, 307, 4, },
1987     { 250, 396, 4, },
1988     { 251, 308, 4, },
1989     { 251, 397, 4, },
1990     { 252, 309, 4, },
1991     { 252, 398, 4, },
1992     { 253, 310, 4, },
1993     { 253, 399, 4, },
1994     { 254, 311, 4, },
1995     { 254, 400, 4, },
1996     { 255, 312, 4, },
1997     { 255, 401, 4, },
1998     { 256, 313, 4, },
1999     { 256, 402, 4, },
2000     { 257, 314, 4, },
2001     { 257, 403, 4, },
2002     { 258, 315, 4, },
2003     { 258, 404, 4, },
2004     { 259, 316, 4, },
2005     { 259, 405, 4, },
2006     { 260, 317, 4, },
2007     { 260, 406, 4, },
2008     { 261, 318, 4, },
2009     { 261, 407, 4, },
2010     { 262, 319, 4, },
2011     { 262, 408, 4, },
2012     { 263, 320, 4, },
2013     { 263, 409, 4, },
2014     { 264, 321, 4, },
2015     { 264, 410, 4, },
2016     { 265, 322, 4, },
2017     { 265, 411, 4, },
2018     { 266, 323, 4, },
2019     { 266, 412, 4, },
2020     { 267, 324, 4, },
2021     { 267, 413, 4, },
2022     { 268, 325, 4, },
2023     { 268, 414, 4, },
2024     { 269, 326, 4, },
2025     { 269, 415, 4, },
2026     { 270, 333, 4, },
2027     { 270, 364, 4, },
2028     { 271, 334, 4, },
2029     { 271, 365, 4, },
2030     { 272, 335, 4, },
2031     { 272, 366, 4, },
2032     { 273, 336, 4, },
2033     { 273, 367, 4, },
2034     { 274, 337, 4, },
2035     { 274, 368, 4, },
2036     { 275, 338, 4, },
2037     { 275, 369, 4, },
2038     { 276, 339, 4, },
2039     { 276, 370, 4, },
2040     { 277, 340, 4, },
2041     { 277, 371, 4, },
2042     { 278, 341, 4, },
2043     { 278, 372, 4, },
2044     { 279, 342, 4, },
2045     { 279, 373, 4, },
2046     { 280, 343, 4, },
2047     { 280, 374, 4, },
2048     { 281, 344, 4, },
2049     { 281, 375, 4, },
2050     { 282, 345, 4, },
2051     { 282, 376, 4, },
2052     { 283, 346, 4, },
2053     { 283, 377, 4, },
2054     { 284, 347, 4, },
2055     { 284, 378, 4, },
2056     { 285, 348, 5, },
2057     { 285, 379, 5, },
2058     { 286, 349, 5, },
2059     { 286, 380, 5, },
2060     { 287, 350, 5, },
2061     { 287, 381, 5, },
2062     { 288, 351, 5, },
2063     { 288, 382, 5, },
2064     { 289, 352, 5, },
2065     { 289, 383, 5, },
2066     { 290, 353, 5, },
2067     { 290, 384, 5, },
2068     { 291, 354, 5, },
2069     { 291, 385, 5, },
2070     { 292, 355, 5, },
2071     { 292, 386, 5, },
2072     { 293, 356, 5, },
2073     { 293, 387, 5, },
2074     { 294, 357, 5, },
2075     { 294, 388, 5, },
2076     { 295, 358, 5, },
2077     { 295, 389, 5, },
2078     { 296, 359, 5, },
2079     { 296, 360, 5, },
2080     { 297, 330, 5, },
2081     { 297, 361, 5, },
2082     { 298, 331, 5, },
2083     { 298, 362, 5, },
2084     { 299, 332, 5, },
2085     { 299, 363, 5, },
2086     { 300, 330, 5, },
2087     { 300, 479, 5, },
2088     { 301, 331, 5, },
2089     { 301, 450, 5, },
2090     { 302, 332, 5, },
2091     { 302, 451, 5, },
2092     { 303, 333, 5, },
2093     { 303, 452, 5, },
2094     { 304, 334, 5, },
2095     { 304, 453, 5, },
2096     { 305, 335, 5, },
2097     { 305, 454, 5, },
2098     { 306, 336, 5, },
2099     { 306, 455, 5, },
2100     { 307, 337, 5, },
2101     { 307, 456, 5, },
2102     { 308, 338, 5, },
2103     { 308, 457, 5, },
2104     { 309, 339, 5, },
2105     { 309, 458, 5, },
2106     { 310, 340, 5, },
2107     { 310, 459, 5, },
2108     { 311, 341, 5, },
2109     { 311, 460, 5, },
2110     { 312, 342, 5, },
2111     { 312, 461, 5, },
2112     { 313, 343, 5, },
2113     { 313, 462, 5, },
2114     { 314, 344, 5, },
2115     { 314, 463, 5, },
2116     { 315, 345, 5, },
2117     { 315, 464, 5, },
2118     { 316, 346, 5, },
2119     { 316, 465, 5, },
2120     { 317, 347, 5, },
2121     { 317, 466, 5, },
2122     { 318, 348, 5, },
2123     { 318, 467, 5, },
2124     { 319, 349, 5, },
2125     { 319, 468, 5, },
2126     { 320, 350, 5, },
2127     { 320, 469, 5, },
2128     { 321, 351, 5, },
2129     { 321, 470, 5, },
2130     { 322, 352, 5, },
2131     { 322, 471, 5, },
2132     { 323, 353, 5, },
2133     { 323, 472, 5, },
2134     { 324, 354, 5, },
2135     { 324, 473, 5, },
2136     { 325, 355, 5, },
2137     { 325, 474, 5, },
2138     { 326, 356, 5, },
2139     { 326, 475, 5, },
2140     { 327, 357, 5, },
2141     { 327, 476, 5, },
2142     { 328, 358, 5, },
2143     { 328, 477, 5, },
2144     { 329, 359, 5, },
2145     { 329, 478, 5, },
2146     { 330, 421, 5, },
2147     { 331, 422, 5, },
2148     { 332, 423, 5, },
2149     { 333, 424, 5, },
2150     { 334, 425, 5, },
2151     { 335, 426, 5, },
2152     { 336, 427, 5, },
2153     { 337, 428, 5, },
2154     { 338, 429, 5, },
2155     { 339, 430, 5, },
2156     { 340, 431, 5, },
2157     { 341, 432, 5, },
2158     { 342, 433, 5, },
2159     { 343, 434, 5, },
2160     { 344, 435, 5, },
2161     { 345, 436, 5, },
2162     { 346, 437, 5, },
2163     { 347, 438, 5, },
2164     { 348, 439, 5, },
2165     { 349, 440, 5, },
2166     { 350, 441, 5, },
2167     { 351, 442, 5, },
2168     { 352, 443, 5, },
2169     { 353, 444, 5, },
2170     { 354, 445, 5, },
2171     { 355, 446, 5, },
2172     { 356, 447, 5, },
2173     { 357, 448, 5, },
2174     { 358, 449, 5, },
2175     { 359, 420, 5, },
2176     { 360, 390, 5, },
2177     { 360, 447, 5, },
2178     { 360, 480, 5, },
2179     { 361, 391, 5, },
2180     { 361, 448, 5, },
2181     { 361, 481, 5, },
2182     { 362, 392, 5, },
2183     { 362, 449, 5, },
2184     { 362, 482, 5, },
2185     { 363, 393, 5, },
2186     { 363, 420, 5, },
2187     { 363, 483, 5, },
2188     { 364, 394, 5, },
2189     { 364, 421, 5, },
2190     { 364, 484, 5, },
2191     { 365, 395, 5, },
2192     { 365, 422, 5, },
2193     { 365, 485, 5, },
2194     { 366, 396, 5, },
2195     { 366, 423, 5, },
2196     { 366, 486, 5, },
2197     { 367, 397, 5, },
2198     { 367, 424, 5, },
2199     { 367, 487, 5, },
2200     { 368, 398, 5, },
2201     { 368, 425, 5, },
2202     { 368, 488, 5, },
2203     { 369, 399, 5, },
2204     { 369, 426, 5, },
2205     { 369, 489, 5, },
2206     { 370, 400, 6, },
2207     { 370, 427, 6, },
2208     { 370, 490, 6, },
2209     { 371, 401, 6, },
2210     { 371, 428, 6, },
2211     { 371, 491, 6, },
2212     { 372, 402, 6, },
2213     { 372, 429, 6, },
2214     { 372, 492, 6, },
2215     { 373, 403, 6, },
2216     { 373, 430, 6, },
2217     { 373, 493, 6, },
2218     { 374, 404, 6, },
2219     { 374, 431, 6, },
2220     { 374, 494, 6, },
2221     { 375, 405, 6, },
2222     { 375, 432, 6, },
2223     { 375, 495, 6, },
2224     { 376, 406, 6, },
2225     { 376, 433, 6, },
2226     { 376, 496, 6, },
2227     { 377, 407, 6, },
2228     { 377, 434, 6, },
2229     { 377, 497, 6, },
2230     { 378, 408, 6, },
2231     { 378, 435, 6, },
2232     { 378, 498, 6, },
2233     { 379, 409, 6, },
2234     { 379, 436, 6, },
2235     { 379, 499, 6, },
2236     { 380, 410, 6, },
2237     { 380, 437, 6, },
2238     { 380, 500, 6, },
2239     { 381, 411, 6, },
2240     { 381, 438, 6, },
2241     { 381, 501, 6, },
2242     { 382, 412, 6, },
2243     { 382, 439, 6, },
2244     { 382, 502, 6, },
2245     { 383, 413, 6, },
2246     { 383, 440, 6, },
2247     { 383, 503, 6, },
2248     { 384, 414, 6, },
2249     { 384, 441, 6, },
2250     { 384, 504, 6, },
2251     { 385, 415, 6, },
2252     { 385, 442, 6, },
2253     { 385, 505, 6, },
2254     { 386, 416, 6, },
2255     { 386, 443, 6, },
2256     { 386, 506, 6, },
2257     { 387, 417, 6, },
2258     { 387, 444, 6, },
2259     { 387, 507, 6, },
2260     { 388, 418, 6, },
2261     { 388, 445, 6, },
2262     { 388, 508, 6, },
2263     { 389, 419, 6, },
2264     { 389, 446, 6, },
2265     { 389, 509, 6, },
2266     { 390, 453, 6, },
2267     { 390, 510, 6, },
2268     { 391, 454, 6, },
2269     { 391, 511, 6, },
2270     { 392, 455, 6, },
2271     { 392, 512, 6, },
2272     { 393, 456, 6, },
2273     { 393, 513, 6, },
2274     { 394, 457, 6, },
2275     { 394, 514, 6, },
2276     { 395, 458, 6, },
2277     { 395, 515, 6, },
2278     { 396, 459, 6, },
2279     { 396, 516, 6, },
2280     { 397, 460, 6, },
2281     { 397, 517, 6, },
2282     { 398, 461, 6, },
2283     { 398, 518, 6, },
2284     { 399, 462, 6, },
2285     { 399, 519, 6, },
2286     { 400, 463, 6, },
2287     { 400, 520, 6, },
2288     { 401, 464, 6, },
2289     { 401, 521, 6, },
2290     { 402, 465, 6, },
2291     { 402, 522, 6, },
2292     { 403, 466, 6, },
2293     { 403, 523, 6, },
2294     { 404, 467, 6, },
2295     { 404, 524, 6, },
2296     { 405, 468, 6, },
2297     { 405, 525, 6, },
2298     { 406, 469, 6, },
2299     { 406, 526, 6, },
2300     { 407, 470, 6, },
2301     { 407, 527, 6, },
2302     { 408, 471, 6, },
2303     { 408, 528, 6, },
2304     { 409, 472, 6, },
2305     { 409, 529, 6, },
2306     { 410, 473, 6, },
2307     { 410, 530, 6, },
2308     { 411, 474, 6, },
2309     { 411, 531, 6, },
2310     { 412, 475, 6, },
2311     { 412, 532, 6, },
2312     { 413, 476, 6, },
2313     { 413, 533, 6, },
2314     { 414, 477, 6, },
2315     { 414, 534, 6, },
2316     { 415, 478, 6, },
2317     { 415, 535, 6, },
2318     { 416, 479, 6, },
2319     { 416, 536, 6, },
2320     { 417, 450, 6, },
2321     { 417, 537, 6, },
2322     { 418, 451, 6, },
2323     { 418, 538, 6, },
2324     { 419, 452, 6, },
2325     { 419, 539, 6, },
2326     { 420, 480, 6, },
2327     { 421, 481, 6, },
2328     { 422, 482, 6, },
2329     { 423, 483, 6, },
2330     { 424, 484, 6, },
2331     { 425, 485, 6, },
2332     { 426, 486, 6, },
2333     { 427, 487, 6, },
2334     { 428, 488, 6, },
2335     { 429, 489, 6, },
2336     { 430, 490, 6, },
2337     { 431, 491, 6, },
2338     { 432, 492, 6, },
2339     { 433, 493, 6, },
2340     { 434, 494, 6, },
2341     { 435, 495, 6, },
2342     { 436, 496, 6, },
2343     { 437, 497, 6, },
2344     { 438, 498, 6, },
2345     { 439, 499, 6, },
2346     { 440, 500, 6, },
2347     { 441, 501, 6, },
2348     { 442, 502, 6, },
2349     { 443, 503, 6, },
2350     { 444, 504, 6, },
2351     { 445, 505, 6, },
2352     { 446, 506, 6, },
2353     { 447, 507, 6, },
2354     { 448, 508, 6, },
2355     { 449, 509, 6, },
2356     { 450, 510, 7, },
2357     { 451, 511, 7, },
2358     { 452, 512, 7, },
2359     { 453, 513, 7, },
2360     { 454, 514, 7, },
2361     { 455, 515, 7, },
2362     { 456, 516, 7, },
2363     { 457, 517, 7, },
2364     { 458, 518, 7, },
2365     { 459, 519, 7, },
2366     { 460, 520, 7, },
2367     { 461, 521, 7, },
2368     { 462, 522, 7, },
2369     { 463, 523, 7, },
2370     { 464, 524, 7, },
2371     { 465, 525, 7, },
2372     { 466, 526, 7, },
2373     { 467, 527, 7, },
2374     { 468, 528, 7, },
2375     { 469, 529, 7, },
2376     { 470, 530, 7, },
2377     { 471, 531, 7, },
2378     { 472, 532, 7, },
2379     { 473, 533, 7, },
2380     { 474, 534, 7, },
2381     { 475, 535, 7, },
2382     { 476, 536, 7, },
2383     { 477, 537, 7, },
2384     { 478, 538, 7, },
2385     { 479, 539, 7, },
2386     { 480, 513, 7, },
2387     { 480, 597, 7, },
2388     { 481, 514, 7, },
2389     { 481, 598, 7, },
2390     { 482, 515, 7, },
2391     { 482, 599, 7, },
2392     { 483, 516, 7, },
2393     { 483, 570, 7, },
2394     { 484, 517, 7, },
2395     { 484, 571, 7, },
2396     { 485, 518, 7, },
2397     { 485, 572, 7, },
2398     { 486, 519, 7, },
2399     { 486, 573, 7, },
2400     { 487, 520, 7, },
2401     { 487, 574, 7, },
2402     { 488, 521, 7, },
2403     { 488, 575, 7, },
2404     { 489, 522, 7, },
2405     { 489, 576, 7, },
2406     { 490, 523, 7, },
2407     { 490, 577, 7, },
2408     { 491, 524, 7, },
2409     { 491, 578, 7, },
2410     { 492, 525, 7, },
2411     { 492, 579, 7, },
2412     { 493, 526, 7, },
2413     { 493, 580, 7, },
2414     { 494, 527, 7, },
2415     { 494, 581, 7, },
2416     { 495, 528, 7, },
2417     { 495, 582, 7, },
2418     { 496, 529, 7, },
2419     { 496, 583, 7, },
2420     { 497, 530, 7, },
2421     { 497, 584, 7, },
2422     { 498, 531, 7, },
2423     { 498, 585, 7, },
2424     { 499, 532, 7, },
2425     { 499, 586, 7, },
2426     { 500, 533, 7, },
2427     { 500, 587, 7, },
2428     { 501, 534, 7, },
2429     { 501, 588, 7, },
2430     { 502, 535, 7, },
2431     { 502, 589, 7, },
2432     { 503, 536, 7, },
2433     { 503, 590, 7, },
2434     { 504, 537, 7, },
2435     { 504, 591, 7, },
2436     { 505, 538, 7, },
2437     { 505, 592, 7, },
2438     { 506, 539, 7, },
2439     { 506, 593, 7, },
2440     { 507, 510, 7, },
2441     { 507, 594, 7, },
2442     { 508, 511, 7, },
2443     { 508, 595, 7, },
2444     { 509, 512, 7, },
2445     { 509, 596, 7, },
2446     { 510, 542, 7, },
2447     { 511, 543, 7, },
2448     { 512, 544, 7, },
2449     { 513, 545, 7, },
2450     { 514, 546, 7, },
2451     { 515, 547, 7, },
2452     { 516, 548, 7, },
2453     { 517, 549, 7, },
2454     { 518, 550, 7, },
2455     { 519, 551, 7, },
2456     { 520, 552, 7, },
2457     { 521, 553, 7, },
2458     { 522, 554, 7, },
2459     { 523, 555, 7, },
2460     { 524, 556, 7, },
2461     { 525, 557, 7, },
2462     { 526, 558, 7, },
2463     { 527, 559, 7, },
2464     { 528, 560, 7, },
2465     { 529, 561, 7, },
2466     { 530, 562, 7, },
2467     { 531, 563, 7, },
2468     { 532, 564, 7, },
2469     { 533, 565, 7, },
2470     { 534, 566, 7, },
2471     { 535, 567, 7, },
2472     { 536, 568, 7, },
2473     { 537, 569, 7, },
2474     { 538, 540, 7, },
2475     { 539, 541, 7, },
2476     { 540, 570, 7, },
2477     { 541, 571, 7, },
2478     { 542, 572, 7, },
2479     { 543, 573, 7, },
2480     { 544, 574, 7, },
2481     { 545, 575, 7, },
2482     { 546, 576, 7, },
2483     { 547, 577, 7, },
2484     { 548, 578, 7, },
2485     { 549, 579, 7, },
2486     { 550, 580, 7, },
2487     { 551, 581, 7, },
2488     { 552, 582, 7, },
2489     { 553, 583, 7, },
2490     { 554, 584, 7, },
2491     { 555, 585, 7, },
2492     { 556, 586, 7, },
2493     { 557, 587, 7, },
2494     { 558, 588, 7, },
2495     { 559, 589, 7, },
2496     { 560, 590, 7, },
2497     { 561, 591, 7, },
2498     { 562, 592, 7, },
2499     { 563, 593, 7, },
2500     { 564, 594, 7, },
2501     { 565, 595, 7, },
2502     { 566, 596, 7, },
2503     { 567, 597, 7, },
2504     { 568, 598, 7, },
2505     { 569, 599, 7, },
2506 };
2507