#include	<stdio.h>

#define	RECLEN	80

#define	CF	"centers.copy"
#define	LF	"lines.copy"
#define	AF	"areas.copy"

static char	rec[RECLEN+1];

main()
{
  FILE	*inf= stdin;
  FILE	*linef;
  FILE	*areaf;
  FILE	*centf;

  double x,y;
  int	id,
	start_node,
	end_node,
	left_area,
	right_area,
	nc,
	na,
	nt,
	nr_segm,
	nr_islands,
	attr1,
	attr2;
	
  if (! (linef= fopen(LF, "w"))) {
    fprintf(stderr, "Cannot output the .copy file!\n");
    perror(LF);
    exit(1);
  }
  if (! (areaf= fopen(AF, "w"))) {
    fprintf(stderr, "Cannot output the .copy file!\n");
    perror(AF);
    exit(1);
  }
  if (! (centf= fopen(CF, "w"))) {
    fprintf(stderr, "Cannot output the .copy file!\n");
    perror(CF);
    exit(1);
  }

  while (fread(rec, RECLEN, 1, inf) == 1) {

    if (rec[0] == 'L' && rec[1] == ' ') {

      sscanf(rec, "L%5d%6d%6d%6d%6d            %6d%6d%6d",
	&id, &start_node, &end_node, &left_area, &right_area,
	&nc, &na, &nt);

      if (nc >= 300)
	continue;

      fprintf(linef, "%d\t%d\t%d\t%d\t%d\t",
	id, start_node, end_node, left_area, right_area);

      fprintf(linef, "(%d:", nc);

      nc *= 2;

      for (; nc > 0; ) {
	double	f[6];
	int	i;

	if (fread(rec, RECLEN, 1, inf) != 1) {
	  fprintf(stderr, "Data format error !\n");
	  exit(1);
	}

	sscanf(rec, "%12lf%12lf%12lf%12lf%12lf%12lf",
	  f+0, f+1, f+2, f+3, f+4, f+5);
	
	for (i= 0; nc > 0 && i < 6; nc--, i++)
	  fprintf(linef, "%.2f%c", f[i], nc == 1 ? ')': ',');
      }

      if (fread(rec, RECLEN, 1, inf) != 1) {
	  fprintf(stderr, "Data format error !\n");
	  exit(1);
      }

      sscanf(rec, "%6d%6d", &attr1, &attr2);
      fprintf(linef, "\t%d\t%d\n", attr1, attr2);

    } else if (rec[0] == 'A' && rec[1] == ' ') {

      int in_island;

      sscanf(rec, "A%5d%12lf%12lf%*6c%6d%*6c%6d%6d%6d",
	&id, &x, &y, &nr_segm, &na, &nt, &nr_islands);

      if (nr_islands > 0)
	continue;

      if (nr_segm >= 300)
	continue;

      fprintf(centf, "%d\t(%f,%f)\t", id, x, y);

      for (in_island= 0; nr_segm > 0; ) {
	int	ii[12];
	int	i;

	if (fread(rec, RECLEN, 1, inf) != 1) {
	  fprintf(stderr, "Data format error !\n");
	  exit(1);
	}

	sscanf(rec, "%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d%6d",
	  ii+0, ii+1, ii+2, ii+3, ii+4, ii+5,
	  ii+6, ii+7, ii+8, ii+9, ii+10, ii+11);
	
	for (i= 0; nr_segm > 0 && i < 12; nr_segm--, i++) {
	  int neg= ii[i] < 0;
	  fprintf(areaf, "%d\t%d\t%c\te\n",
	    neg ? -ii[i]: ii[i], id, neg ? 'l': 'r');
	}
      }

      if (fread(rec, RECLEN, 1, inf) != 1) {
	  fprintf(stderr, "Data format error !\n");
	  exit(1);
      }

      sscanf(rec, "%6d%6d", &attr1, &attr2);
      fprintf(centf, "%d\t%d\n", attr1, attr2);
    }
  }
}
