#include "stdio.h"


int main (int argc, const char * argv[]) {
    
	FILE *inf,*outf1,*outf2;
	int i,n,res;
	float x,y,z,w;
	float minx,maxx,miny,maxy,minz,maxz,minw,maxw;
	
	if(argc<3)
	{
		fprintf(stderr,"\nUsage: qhprep vertex_value_input_file vertex_temp_file | qdelaunay Qj -Fx i\n");
		exit(1);
	}
	
	
	inf = fopen(argv[1],"r");
	
	for(n=0;n<100000;n++)
	{
		res = fscanf(inf,"%f %f %f %f\n",&x,&y,&z,&w);
		if(res!=4) break;
		if(n==0)
		{
			minx=maxx=x;
			miny=maxy=y;
			minz=maxz=z;
			minw=maxw=w;
		}
		else
		{
			if(x<minx) minx=x;
			if(y<miny) miny=y;
			if(z<minz) minz=z;
			if(w<minw) minw=w;
			if(x>maxx) maxx=x;
			if(y>maxy) maxy=y;
			if(z>maxz) maxz=z;
			if(w>maxw) maxw=w;
		}
	} 
	rewind(inf);
	outf1 = stdout;
	outf2 = fopen(argv[2],"w");

	fprintf(outf1,"3\n%d\n",n+4);
	fprintf(outf2,"%d\n",n+4);
	for(i=0;i<n;i++)
	{
		fscanf(inf,"%f %f %f %f\n",&x,&y,&z,&w);
		fprintf(outf1,"%f %f %f\n",x,y,z);
		w = 65000.*(w-minw)/(maxw-minw)-32500.;
		fprintf(outf2,"%d\n",(int)w);
	}
	fprintf(outf1,"%f %f %f\n",1.01*minx-.01*maxx,1.01*miny-.01*maxy,1.01*minz-.01*maxz);
	fprintf(outf1,"%f %f %f\n",-2.02*minx+3.02*maxx,1.01*miny-.01*maxy,1.01*minz-.01*maxz);
	fprintf(outf1,"%f %f %f\n",1.01*minx-.01*maxx,-2.02*miny+3.02*maxy,1.01*minz-.01*maxz);
	fprintf(outf1,"%f %f %f\n",1.01*minx-.01*maxx,1.01*miny-.01*maxy,-2.02*minz+3.02*maxz);
	fprintf(outf2,"0\n0\n0\n0\n");
	fclose(inf);
	fclose(outf2);
	
    return 0;
}
