/*By Terje Vernly (terjeve@ifi.uio.no)*/
#include <stdio.h>
#include <stdlib.h>

#define BUFSIZE 100*1024

SkipBlanks(FILE *f)
{
  int c=0;

  while (c!=' ' && c!='\t' && c!='\r' && c!='\n') c=fgetc(f);
  ungetc(c,f);
}

convert(FILE *f)
{
  int maxX, maxY, maxval;
  int bytes_read;
  char *buffer;

  SkipBlanks(f);
  fscanf(f,"%d",&maxX);
  SkipBlanks(f);
  fscanf(f,"%d",&maxY);
  SkipBlanks(f);
  fscanf(f,"%d",&maxval);
  fgetc(f);
  printf("%d %d\n",maxX,maxY);

  if ((buffer=(char *) malloc(BUFSIZE))==NULL) {
    fprintf(stderr,"Not enough memory.\n");
    exit(1);
  }

  do {
    bytes_read=fread(buffer,1,BUFSIZE,f);
    fwrite(buffer,bytes_read,1,stdout);
  } while (bytes_read==BUFSIZE);
}

main(int argc, char **argv)
{
  FILE *fd;
  int x,y;

  if (argc!=2) {
    fd=stdin;
  } else {
    if ((fd=fopen(argv[1],"rb"))==NULL) {
      fprintf(stderr,"%s: File not found\n",argv[0]);
      exit(1);
    }
  }

  setvbuf(stdout, (char *) NULL, _IOFBF, 100*1024);
  
  x=fgetc(fd);
  y=fgetc(fd);
  if (!((x=='P') && (y=='6'))) {
    fprintf(stderr,"Not a RAWBITS ppm-image.\n");
    exit(1);
  }

  convert(fd);
  fclose(fd);
  return 0;
}
