#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main(int argc, char* argv[])
{
  FILE *top,*out;
  long i,j;
  // pocet poli
  long npol;
  // pocet zadanych rezu
  long ncut;
  //cislo vertexu
  long ver;
  // x souradnice
  double **x;
  // y souradnice
  double **y;
  // z souradnice
  double **z;
  // typ pricneho rezu
  long *typecut;
  // vzepeti
  double *vzp;
  double vzepeti;
  
  double polx1;
  double polx2;
  
  
  
  top = fopen(argv[1],"r");
  fscanf(top,"%ld",&ncut);
  typecut = new long[ncut];
  vzp  = new double[ncut];
  x = new double*[ncut];
  y = new double*[ncut];
  z = new double*[ncut];
  for(i = 0; i < ncut; i++){
    x[i] = new double[28];
    y[i] = new double[28];
    z[i] = new double[28];
    fscanf(top,"%ld",&typecut[i]);
    for(j = 0; j < 28; j++){
      fscanf(top,"%lf",&x[i][j]);
      fscanf(top,"%lf",&y[i][j]);
      fscanf(top,"%lf",&z[i][j]);
    }
  }
  fclose(top);
  out = fopen(argv[2],"w");
  for(i = 0; i < ncut; i++){
    // prvni rez
    if(typecut[i] == 0){
      // prvni pole
      fprintf(out,"# prvni rez\n");
      for(j = 0; j < 28; j++){
	ver=j+1;
	fprintf(out,"vertex %ld xyz %lf %lf %lf\n",ver,x[0][j],y[0][j],z[0][j]);
      }
      fprintf(out,"\n");
      fprintf(out,"curve  1 vertex  1  2 count 3\n");
      fprintf(out,"curve  2 vertex  2  3 count 6\n");
      fprintf(out,"curve  3 vertex  3  4 count 5\n");
      fprintf(out,"curve  4 vertex  4  5 count 7\n");
      fprintf(out,"curve  5 vertex  5  6 count 5\n");
      fprintf(out,"curve  6 vertex  6  7 count 7\n");
      fprintf(out,"curve  7 vertex  7  8 count 5\n");
      fprintf(out,"curve  8 vertex  8  9 count 7\n");
      fprintf(out,"curve  9 vertex  9 10 count 5\n");
      fprintf(out,"curve 10 vertex 10 11 count 6\n");
      fprintf(out,"curve 11 vertex 11 12 count 3\n");
      fprintf(out,"curve 12 vertex 12 13 count 6\n");
      fprintf(out,"curve 13 vertex 13 14 count 5\n");
      fprintf(out,"curve 14 vertex 14 15 count 4\n");
      fprintf(out,"curve 15 vertex 15 16 count 5\n");
      fprintf(out,"curve 16 vertex 16 17 count 7\n");
      fprintf(out,"curve 17 vertex 17 18 count 5\n");
      fprintf(out,"curve 18 vertex 18 19 count 4\n");
      fprintf(out,"curve 19 vertex 19 20 count 5\n");
      fprintf(out,"curve 20 vertex 20  1 count 5\n");
      fprintf(out,"curve 21 vertex 21 22 count 5\n");
      fprintf(out,"curve 22 vertex 22 23 count 7\n");
      fprintf(out,"curve 23 vertex 23 24 count 5\n");
      fprintf(out,"curve 24 vertex 24 25 count 7\n");
      fprintf(out,"curve 25 vertex 25 26 count 5\n");
      fprintf(out,"curve 26 vertex 26 27 count 7\n");
      fprintf(out,"curve 27 vertex 27 28 count 5\n");
      fprintf(out,"curve 28 vertex 28 21 count 7\n");
      fprintf(out,"\n");
      fprintf(out,"curve 29 vertex  3 20 count 3 \n");
      fprintf(out,"curve 30 vertex  4 19 count 3 \n");
      fprintf(out,"curve 31 vertex 22 18 count 3 \n");
      fprintf(out,"curve 32 vertex 21 17 count 3 \n");
      fprintf(out,"curve 33 vertex  5 23 count 4 \n");
      fprintf(out,"curve 34 vertex  6 24 count 4 \n");
      fprintf(out,"curve 35 vertex  7 25 count 4 \n");
      fprintf(out,"curve 36 vertex  8 26 count 4 \n");
      fprintf(out,"curve 37 vertex 28 16 count 3 \n");
      fprintf(out,"curve 38 vertex 27 15 count 3 \n");
      fprintf(out,"curve 39 vertex  9 14 count 3 \n");
      fprintf(out,"curve 40 vertex 10 13 count 3 \n");
      fprintf(out,"\n");
      fprintf(out,"curve 41 vertex  4 22 count 4 \n");
      fprintf(out,"curve 42 vertex 27  9 count 4 \n");
      fprintf(out,"\n");
      fprintf(out,"surface 1 curve 1 2 29 20\n");
      fprintf(out,"surface 2 curve 29 3 30 19\n");
      fprintf(out,"surface 3 curve 30 41 31 18\n");
      fprintf(out,"surface 4 curve 41 4 33 22\n");
      fprintf(out,"surface 5 curve 31 21 32 17\n");
      fprintf(out,"surface 6 curve 33 5 34 23\n");
      fprintf(out,"surface 7 curve 34 6 35 24\n");
      fprintf(out,"surface 8 curve 32 28 37 16\n");
      fprintf(out,"surface 9 curve 35 7 36 25\n");
      fprintf(out,"surface 10 curve 36 8 42 26\n");
      fprintf(out,"surface 11 curve 37 27 38 15\n");
      fprintf(out,"surface 12 curve 38 42 39 14\n");
      fprintf(out,"surface 13 curve 39 9 40 13\n");
      fprintf(out,"surface 14 curve 40 10 11 12\n");
      fprintf(out,"\n");
    }
    if(typecut[i] == 1){
      fprintf(out,"#rez -  konec pole %ld\n",i);
      for(j = 0; j < 28; j++){
	ver=j+1+i*100;
	fprintf(out,"vertex %ld xyz %lf %lf %lf\n",ver,x[i][j],y[i][j],z[i][j]);
      }
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",1+i*100,1+i*100,2+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",2+i*100,2+i*100,3+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",3+i*100,3+i*100,4+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",4+i*100,4+i*100,5+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",5+i*100,5+i*100,6+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",6+i*100,6+i*100,7+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",7+i*100,7+i*100,8+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",8+i*100,8+i*100,9+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",9+i*100,9+i*100,10+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",10+i*100,10+i*100,11+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",11+i*100,11+i*100,12+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",12+i*100,12+i*100,13+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",13+i*100,13+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",14+i*100,14+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",15+i*100,15+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",16+i*100,16+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",17+i*100,17+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",18+i*100,18+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",19+i*100,19+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",20+i*100,20+i*100,1+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",21+i*100,21+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",22+i*100,22+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",23+i*100,23+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",24+i*100,24+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",25+i*100,25+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",26+i*100,26+i*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",27+i*100,27+i*100,28+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",28+i*100,28+i*100,21+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",29+i*100,3+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",30+i*100,4+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",31+i*100,22+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",32+i*100,21+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",33+i*100,5+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",34+i*100,6+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",35+i*100,7+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",36+i*100,8+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",37+i*100,28+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",38+i*100,27+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",39+i*100,9+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",40+i*100,10+i*100,13+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",41+i*100,4+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",42+i*100,27+i*100,9+i*100);
      fprintf(out,"\n");
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",1+i*100,1+i*100,2+i*100,29+i*100,20+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",2+i*100,29+i*100,3+i*100,30+i*100,19+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",3+i*100,30+i*100,41+i*100,31+i*100,18+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",4+i*100,41+i*100,4+i*100,33+i*100,22+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",5+i*100,31+i*100,21+i*100,32+i*100,17+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",6+i*100,33+i*100,5+i*100,34+i*100,23+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",7+i*100,34+i*100,6+i*100,35+i*100,24+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",8+i*100,32+i*100,28+i*100,37+i*100,16+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",9+i*100,35+i*100,7+i*100,36+i*100,25+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10+i*100,36+i*100,8+i*100,42+i*100,26+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",11+i*100,37+i*100,27+i*100,38+i*100,15+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",12+i*100,38+i*100,42+i*100,39+i*100,14+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",13+i*100,39+i*100,9+i*100,40+i*100,13+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",14+i*100,40+i*100,10+i*100,11+i*100,12+i*100);

            fprintf(out,"curve %ld vertex %ld %ld count 10\n",10001+i*100,1+(i-1)*100,1+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10002+i*100,2+(i-1)*100,2+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10003+i*100,3+(i-1)*100,3+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10004+i*100,4+(i-1)*100,4+i*100);
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10005+i*100,5+(i-1)*100,5+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][4]+(x[i][4]-x[i-1][4])/2,y[i][4],z[i-1][4]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10006+i*100,6+(i-1)*100,6+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][5]+(x[i][5]-x[i-1][5])/2,y[i][5],z[i-1][5]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10007+i*100,7+(i-1)*100,7+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][6]+(x[i][6]-x[i-1][6])/2,y[i][6],z[i-1][6]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10008+i*100,8+(i-1)*100,8+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][7]+(x[i][7]-x[i-1][7])/2,y[i][7],z[i-1][7]);
      
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10009+i*100,9+(i-1)*100,9+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10010+i*100,10+(i-1)*100,10+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10011+i*100,11+(i-1)*100,11+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10012+i*100,12+(i-1)*100,12+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10013+i*100,13+(i-1)*100,13+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10014+i*100,14+(i-1)*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10015+i*100,15+(i-1)*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10016+i*100,16+(i-1)*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10017+i*100,17+(i-1)*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10018+i*100,18+(i-1)*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10019+i*100,19+(i-1)*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10020+i*100,20+(i-1)*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10021+i*100,21+(i-1)*100,21+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10022+i*100,22+(i-1)*100,22+i*100);
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10023+i*100,23+(i-1)*100,23+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][22]+(x[i][22]-x[i-1][22])/2,y[i][22],z[i-1][22]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10024+i*100,24+(i-1)*100,24+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][23]+(x[i][23]-x[i-1][23])/2,y[i][23],z[i-1][23]);

      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10025+i*100,25+(i-1)*100,25+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][24]+(x[i][24]-x[i-1][24])/2,y[i][24],z[i-1][24]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10026+i*100,26+(i-1)*100,26+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][25]+(x[i][25]-x[i-1][25])/2,y[i][25],z[i-1][25]);      

      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10027+i*100,27+(i-1)*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10028+i*100,28+(i-1)*100,28+i*100);
      
      
      
      fprintf(out,"\n");
      for(j = 0; j < 28; j++){
	if(j != 19 && j != 27){
	  fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,j+10002+i*100,j+1+i*100,j+10001+i*100);
	}
	else{
	  if(j == 19){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10001+i*100,j+1+i*100,j+10001+i*100);
	  }
	  if(j == 27){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10021+i*100,j+1+i*100,j+10001+i*100);
	  }
	}
      }
      
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10029+i*100,(i-1)*100+29,10003+i*100,i*100+29,10020+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10030+i*100,(i-1)*100+30,10004+i*100,i*100+30,10019+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10031+i*100,(i-1)*100+31,10022+i*100,i*100+31,10018+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10032+i*100,(i-1)*100+32,10021+i*100,i*100+32,10017+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10033+i*100,(i-1)*100+33,10005+i*100,i*100+33,10023+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10034+i*100,(i-1)*100+34,10006+i*100,i*100+34,10024+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10035+i*100,(i-1)*100+35,10007+i*100,i*100+35,10025+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10036+i*100,(i-1)*100+36,10008+i*100,i*100+36,10026+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10037+i*100,(i-1)*100+37,10028+i*100,i*100+37,10016+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10038+i*100,(i-1)*100+38,10027+i*100,i*100+38,10015+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10039+i*100,(i-1)*100+39,10009+i*100,i*100+39,10014+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10040+i*100,(i-1)*100+40,10010+i*100,i*100+40,10013+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10041+i*100,(i-1)*100+41,10004+i*100,i*100+41,10022+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10042+i*100,(i-1)*100+42,10027+i*100,i*100+42,10009+i*100);
      fprintf(out,"\n");
      fprintf(out,"# definice regionu\n");
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",1+i*100,10001+i*100,10002+i*100,10029+i*100,10020+i*100,(i-1)*100+1,i*100+1);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",2+i*100,10029+i*100,10003+i*100,10030+i*100,10019+i*100,(i-1)*100+2,i*100+2);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",3+i*100,10030+i*100,10041+i*100,10031+i*100,10018+i*100, 3+(i-1)*100,3+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",4+i*100,10004+i*100,10033+i*100,10022+i*100,10041+i*100, 4+(i-1)*100,4+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",5+i*100,10031+i*100,10021+i*100,10032+i*100,10017+i*100,5+(i-1)*100,5+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",6+i*100,10005+i*100,10034+i*100,10023+i*100,10033+i*100,6+(i-1)*100,6+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",7+i*100,10034+i*100,10006+i*100,10035+i*100,10024+i*100,7+(i-1)*100,7+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",8+i*100,10032+i*100,10028+i*100,10037+i*100,10016+i*100,8+(i-1)*100,8+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",9+i*100,10035+i*100,10007+i*100,10036+i*100,10025+i*100,9+(i-1)*100,9+i*100 );
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld %ld %ld -%ld hexa map yes equidistant size def\n",10+i*100,10036+i*100,10008+i*100,10042+i*100,10026+i*100,10+(i-1)*100,10+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",11+i*100,10037+i*100,10027+i*100,10038+i*100,10015+i*100,11+(i-1)*100,11+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",12+i*100,10038+i*100,10042+i*100,10039+i*100,10014+i*100,12+(i-1)*100,12+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",13+i*100,10039+i*100,10009+i*100,10040+i*100,10013+i*100,13+(i-1)*100,13+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld -%ld %ld -%ld hexa map yes equidistant size def\n",14+i*100,10040+i*100,10010+i*100,10011+i*100,10012+i*100,14+(i-1)*100,14+i*100);
    }
    // zacatek ztuzidla
    if(typecut[i] == 2){
      fprintf(out,"# rez - zacatek ztuzidla\n");
      for(j = 0; j < 28; j++){
	ver=j+1+i*100;
	fprintf(out,"vertex %ld xyz %lf %lf %lf\n",ver,x[i][j],y[i][j],z[i][j]);
      }
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",1+i*100,1+i*100,2+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",2+i*100,2+i*100,3+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",3+i*100,3+i*100,4+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",4+i*100,4+i*100,5+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",5+i*100,5+i*100,6+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",6+i*100,6+i*100,7+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",7+i*100,7+i*100,8+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",8+i*100,8+i*100,9+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",9+i*100,9+i*100,10+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",10+i*100,10+i*100,11+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",11+i*100,11+i*100,12+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",12+i*100,12+i*100,13+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",13+i*100,13+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",14+i*100,14+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",15+i*100,15+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",16+i*100,16+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",17+i*100,17+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",18+i*100,18+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",19+i*100,19+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",20+i*100,20+i*100,1+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",21+i*100,21+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",22+i*100,22+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",23+i*100,23+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",24+i*100,24+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",25+i*100,25+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",26+i*100,26+i*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",27+i*100,27+i*100,28+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",28+i*100,28+i*100,21+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",29+i*100,3+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",30+i*100,4+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",31+i*100,22+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",32+i*100,21+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",33+i*100,5+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",34+i*100,6+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",35+i*100,7+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",36+i*100,8+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",37+i*100,28+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",38+i*100,27+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",39+i*100,9+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",40+i*100,10+i*100,13+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",41+i*100,4+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",42+i*100,27+i*100,9+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 12 \n",43+i*100,22+i*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 12 \n",44+i*100,23+i*100,26+i*100);
      fprintf(out,"\n");
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",1+i*100,1+i*100,2+i*100,29+i*100,20+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",2+i*100,29+i*100,3+i*100,30+i*100,19+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",3+i*100,30+i*100,41+i*100,31+i*100,18+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",4+i*100,41+i*100,4+i*100,33+i*100,22+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",5+i*100,31+i*100,21+i*100,32+i*100,17+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",6+i*100,33+i*100,5+i*100,34+i*100,23+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",7+i*100,34+i*100,6+i*100,35+i*100,24+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",8+i*100,32+i*100,28+i*100,37+i*100,16+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",9+i*100,35+i*100,7+i*100,36+i*100,25+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10+i*100,36+i*100,8+i*100,42+i*100,26+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",11+i*100,37+i*100,27+i*100,38+i*100,15+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",12+i*100,38+i*100,42+i*100,39+i*100,14+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",13+i*100,39+i*100,9+i*100,40+i*100,13+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",14+i*100,40+i*100,10+i*100,11+i*100,12+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",15+i*100,21+i*100,43+i*100,27+i*100,28+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",16+i*100,22+i*100,44+i*100,26+i*100,43+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",17+i*100,23+i*100,24+i*100,25+i*100,44+i*100);
      fprintf(out,"\n");
      fprintf(out,"# spojeni rezu 0 a 1 nebo 3 a 1 - linearni spojeni\n");
      for(j = 0; j < 28; j++){
	fprintf(out,"curve %ld vertex %ld %ld count 10\n",10001+j+i*100,j+1+(i-1)*100,j+1+i*100);
      }
      fprintf(out,"\n");
      for(j = 0; j < 28; j++){
	if(j != 19 && j != 27){
	  fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,j+10002+i*100,j+1+i*100,j+10001+i*100);
	}
	else{
	  if(j == 19){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10001+i*100,j+1+i*100,j+10001+i*100);
	  }
	  if(j == 27){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10021+i*100,j+1+i*100,j+10001+i*100);
	  }
	}
      }
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10029+i*100,(i-1)*100+29,10003+i*100,i*100+29,10020+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10030+i*100,(i-1)*100+30,10004+i*100,i*100+30,10019+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10031+i*100,(i-1)*100+31,10022+i*100,i*100+31,10018+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10032+i*100,(i-1)*100+32,10021+i*100,i*100+32,10017+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10033+i*100,(i-1)*100+33,10005+i*100,i*100+33,10023+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10034+i*100,(i-1)*100+34,10006+i*100,i*100+34,10024+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10035+i*100,(i-1)*100+35,10007+i*100,i*100+35,10025+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10036+i*100,(i-1)*100+36,10008+i*100,i*100+36,10026+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10037+i*100,(i-1)*100+37,10028+i*100,i*100+37,10016+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10038+i*100,(i-1)*100+38,10027+i*100,i*100+38,10015+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10039+i*100,(i-1)*100+39,10009+i*100,i*100+39,10014+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10040+i*100,(i-1)*100+40,10010+i*100,i*100+40,10013+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10041+i*100,(i-1)*100+41,10004+i*100,i*100+41,10022+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10042+i*100,(i-1)*100+42,10027+i*100,i*100+42,10009+i*100);
      fprintf(out,"\n");
      fprintf(out,"# definice regionu\n");
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",1+i*100,10001+i*100,10002+i*100,10029+i*100,10020+i*100,(i-1)*100+1,i*100+1);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",2+i*100,10029+i*100,10003+i*100,10030+i*100,10019+i*100,(i-1)*100+2,i*100+2);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",3+i*100,10030+i*100,10041+i*100,10031+i*100,10018+i*100, 3+(i-1)*100,3+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",4+i*100,10004+i*100,10033+i*100,10022+i*100,10041+i*100, 4+(i-1)*100,4+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",5+i*100,10031+i*100,10021+i*100,10032+i*100,10017+i*100,5+(i-1)*100,5+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",6+i*100,10005+i*100,10034+i*100,10023+i*100,10033+i*100,6+(i-1)*100,6+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",7+i*100,10034+i*100,10006+i*100,10035+i*100,10024+i*100,7+(i-1)*100,7+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",8+i*100,10032+i*100,10028+i*100,10037+i*100,10016+i*100,8+(i-1)*100,8+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",9+i*100,10035+i*100,10007+i*100,10036+i*100,10025+i*100,9+(i-1)*100,9+i*100 );
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld %ld %ld -%ld hexa map yes equidistant size def\n",10+i*100,10036+i*100,10008+i*100,10042+i*100,10026+i*100,10+(i-1)*100,10+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",11+i*100,10037+i*100,10027+i*100,10038+i*100,10015+i*100,11+(i-1)*100,11+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",12+i*100,10038+i*100,10042+i*100,10039+i*100,10014+i*100,12+(i-1)*100,12+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",13+i*100,10039+i*100,10009+i*100,10040+i*100,10013+i*100,13+(i-1)*100,13+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld -%ld %ld -%ld hexa map yes equidistant size def\n",14+i*100,10040+i*100,10010+i*100,10011+i*100,10012+i*100,14+(i-1)*100,14+i*100);

    }
    // konec ztuzidla
    if(typecut[i] == 3){
          fprintf(out,"#rez - konec ztuzidla \n");
      fprintf(out,"# konec zarodku - zacatek noveho pole\n");
      for(j = 0; j < 28; j++){
	ver=j+1+i*100;
	fprintf(out,"vertex %ld xyz %lf %lf %lf\n",ver,x[i][j],y[i][j],z[i][j]);
      }
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",1+i*100,1+i*100,2+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",2+i*100,2+i*100,3+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",3+i*100,3+i*100,4+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",4+i*100,4+i*100,5+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",5+i*100,5+i*100,6+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",6+i*100,6+i*100,7+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",7+i*100,7+i*100,8+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",8+i*100,8+i*100,9+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",9+i*100,9+i*100,10+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",10+i*100,10+i*100,11+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",11+i*100,11+i*100,12+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",12+i*100,12+i*100,13+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",13+i*100,13+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",14+i*100,14+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",15+i*100,15+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",16+i*100,16+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",17+i*100,17+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",18+i*100,18+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",19+i*100,19+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",20+i*100,20+i*100,1+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",21+i*100,21+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",22+i*100,22+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",23+i*100,23+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",24+i*100,24+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",25+i*100,25+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",26+i*100,26+i*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",27+i*100,27+i*100,28+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",28+i*100,28+i*100,21+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",29+i*100,3+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",30+i*100,4+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",31+i*100,22+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",32+i*100,21+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",33+i*100,5+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",34+i*100,6+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",35+i*100,7+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",36+i*100,8+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",37+i*100,28+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",38+i*100,27+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",39+i*100,9+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",40+i*100,10+i*100,13+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",41+i*100,4+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",42+i*100,27+i*100,9+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 12 \n",43+i*100,22+i*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 12 \n",44+i*100,23+i*100,26+i*100);
      fprintf(out,"\n");
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",1+i*100,1+i*100,2+i*100,29+i*100,20+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",2+i*100,29+i*100,3+i*100,30+i*100,19+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",3+i*100,30+i*100,41+i*100,31+i*100,18+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",4+i*100,41+i*100,4+i*100,33+i*100,22+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",5+i*100,31+i*100,21+i*100,32+i*100,17+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",6+i*100,33+i*100,5+i*100,34+i*100,23+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",7+i*100,34+i*100,6+i*100,35+i*100,24+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",8+i*100,32+i*100,28+i*100,37+i*100,16+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",9+i*100,35+i*100,7+i*100,36+i*100,25+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10+i*100,36+i*100,8+i*100,42+i*100,26+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",11+i*100,37+i*100,27+i*100,38+i*100,15+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",12+i*100,38+i*100,42+i*100,39+i*100,14+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",13+i*100,39+i*100,9+i*100,40+i*100,13+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",14+i*100,40+i*100,10+i*100,11+i*100,12+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",15+i*100,21+i*100,43+i*100,27+i*100,28+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",16+i*100,22+i*100,44+i*100,26+i*100,43+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",17+i*100,23+i*100,24+i*100,25+i*100,44+i*100);
      fprintf(out,"\n");
      fprintf(out,"# spojeni rezu 0 a 1 nebo 3 a 1 - linearni spojeni\n");
      for(j = 0; j < 28; j++){
	fprintf(out,"curve %ld vertex %ld %ld count 10\n",10001+j+i*100,j+1+(i-1)*100,j+1+i*100);
      }
      fprintf(out,"\n");
      for(j = 0; j < 28; j++){
	if(j != 19 && j != 27){
	  fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,j+10002+i*100,j+1+i*100,j+10001+i*100);
	}
	else{
	  if(j == 19){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10001+i*100,j+1+i*100,j+10001+i*100);
	  }
	  if(j == 27){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10021+i*100,j+1+i*100,j+10001+i*100);
	  }
	}
      }
      
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10029+i*100,(i-1)*100+29,10003+i*100,i*100+29,10020+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10030+i*100,(i-1)*100+30,10004+i*100,i*100+30,10019+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10031+i*100,(i-1)*100+31,10022+i*100,i*100+31,10018+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10032+i*100,(i-1)*100+32,10021+i*100,i*100+32,10017+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10033+i*100,(i-1)*100+33,10005+i*100,i*100+33,10023+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10034+i*100,(i-1)*100+34,10006+i*100,i*100+34,10024+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10035+i*100,(i-1)*100+35,10007+i*100,i*100+35,10025+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10036+i*100,(i-1)*100+36,10008+i*100,i*100+36,10026+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10037+i*100,(i-1)*100+37,10028+i*100,i*100+37,10016+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10038+i*100,(i-1)*100+38,10027+i*100,i*100+38,10015+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10039+i*100,(i-1)*100+39,10009+i*100,i*100+39,10014+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10040+i*100,(i-1)*100+40,10010+i*100,i*100+40,10013+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10041+i*100,(i-1)*100+41,10004+i*100,i*100+41,10022+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10042+i*100,(i-1)*100+42,10027+i*100,i*100+42,10009+i*100);
      fprintf(out,"\n");
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10043+i*100,(i-1)*100+43,10027+i*100,i*100+43,10022+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10044+i*100,(i-1)*100+44,10026+i*100,i*100+44,10023+i*100);
      fprintf(out,"# definice regionu\n");
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",1+i*100,10001+i*100,10002+i*100,10029+i*100,10020+i*100,(i-1)*100+1,i*100+1);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",2+i*100,10029+i*100,10003+i*100,10030+i*100,10019+i*100,(i-1)*100+2,i*100+2);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",3+i*100,10030+i*100,10041+i*100,10031+i*100,10018+i*100, 3+(i-1)*100,3+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",4+i*100,10004+i*100,10033+i*100,10022+i*100,10041+i*100, 4+(i-1)*100,4+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",5+i*100,10031+i*100,10021+i*100,10032+i*100,10017+i*100,5+(i-1)*100,5+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",6+i*100,10005+i*100,10034+i*100,10023+i*100,10033+i*100,6+(i-1)*100,6+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",7+i*100,10034+i*100,10006+i*100,10035+i*100,10024+i*100,7+(i-1)*100,7+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",8+i*100,10032+i*100,10028+i*100,10037+i*100,10016+i*100,8+(i-1)*100,8+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",9+i*100,10035+i*100,10007+i*100,10036+i*100,10025+i*100,9+(i-1)*100,9+i*100 );
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld %ld %ld -%ld hexa map yes equidistant size def\n",10+i*100,10036+i*100,10008+i*100,10042+i*100,10026+i*100,10+(i-1)*100,10+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",11+i*100,10037+i*100,10027+i*100,10038+i*100,10015+i*100,11+(i-1)*100,11+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",12+i*100,10038+i*100,10042+i*100,10039+i*100,10014+i*100,12+(i-1)*100,12+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",13+i*100,10039+i*100,10009+i*100,10040+i*100,10013+i*100,13+(i-1)*100,13+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld -%ld %ld -%ld hexa map yes equidistant size def\n",14+i*100,10040+i*100,10010+i*100,10011+i*100,10012+i*100,14+(i-1)*100,14+i*100);
      fprintf(out,"region %ld boundary surface %ld -%ld -%ld -%ld -%ld -%ld hexa map yes equidistant\n",15+i*100,15+(i-1)*100,15+i*100,10021+i*100,10028+i*100,10027+i*100,10043+i*100);
      fprintf(out,"region %ld boundary surface %ld -%ld -%ld -%ld -%ld %ld hexa map yes equidistant\n",16+i*100,16+(i-1)*100,16+i*100,10022+i*100,10044+i*100,10026+i*100,10043+i*100);
      fprintf(out,"region %ld boundary surface %ld -%ld -%ld -%ld -%ld %ld hexa map yes equidistant\n",17+i*100,17+(i-1)*100,17+i*100,10023+i*100,10024+i*100,10025+i*100,10044+i*100);
    }
    // konec zarodku - zacatek noveho pole
    if(typecut[i] == 4){
      fprintf(out,"# \n");
      fprintf(out,"# konec zarodku - zacatek noveho pole\n");
      for(j = 0; j < 28; j++){
	ver=j+1+i*100;
	fprintf(out,"vertex %ld xyz %lf %lf %lf\n",ver,x[i][j],y[i][j],z[i][j]);
      }
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",1+i*100,1+i*100,2+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",2+i*100,2+i*100,3+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",3+i*100,3+i*100,4+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",4+i*100,4+i*100,5+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",5+i*100,5+i*100,6+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",6+i*100,6+i*100,7+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",7+i*100,7+i*100,8+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",8+i*100,8+i*100,9+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",9+i*100,9+i*100,10+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",10+i*100,10+i*100,11+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",11+i*100,11+i*100,12+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",12+i*100,12+i*100,13+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",13+i*100,13+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",14+i*100,14+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",15+i*100,15+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",16+i*100,16+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",17+i*100,17+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",18+i*100,18+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",19+i*100,19+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",20+i*100,20+i*100,1+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",21+i*100,21+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",22+i*100,22+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",23+i*100,23+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",24+i*100,24+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",25+i*100,25+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",26+i*100,26+i*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",27+i*100,27+i*100,28+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",28+i*100,28+i*100,21+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",29+i*100,3+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",30+i*100,4+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",31+i*100,22+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",32+i*100,21+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",33+i*100,5+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",34+i*100,6+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",35+i*100,7+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",36+i*100,8+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",37+i*100,28+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",38+i*100,27+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",39+i*100,9+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",40+i*100,10+i*100,13+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",41+i*100,4+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",42+i*100,27+i*100,9+i*100);
      fprintf(out,"\n");
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",1+i*100,1+i*100,2+i*100,29+i*100,20+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",2+i*100,29+i*100,3+i*100,30+i*100,19+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",3+i*100,30+i*100,41+i*100,31+i*100,18+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",4+i*100,41+i*100,4+i*100,33+i*100,22+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",5+i*100,31+i*100,21+i*100,32+i*100,17+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",6+i*100,33+i*100,5+i*100,34+i*100,23+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",7+i*100,34+i*100,6+i*100,35+i*100,24+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",8+i*100,32+i*100,28+i*100,37+i*100,16+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",9+i*100,35+i*100,7+i*100,36+i*100,25+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10+i*100,36+i*100,8+i*100,42+i*100,26+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",11+i*100,37+i*100,27+i*100,38+i*100,15+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",12+i*100,38+i*100,42+i*100,39+i*100,14+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",13+i*100,39+i*100,9+i*100,40+i*100,13+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",14+i*100,40+i*100,10+i*100,11+i*100,12+i*100);
      fprintf(out,"\n");
      fprintf(out,"# spojeni rezu 0 a 1 nebo 3 a 1 - linearni spojeni\n");
      for(j = 0; j < 28; j++){
	fprintf(out,"curve %ld vertex %ld %ld count 10\n",10001+j+i*100,j+1+(i-1)*100,j+1+i*100);
      }
      fprintf(out,"\n");
      for(j = 0; j < 28; j++){
	if(j != 19 && j != 27){
	  fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,j+10002+i*100,j+1+i*100,j+10001+i*100);
	}
	else{
	  if(j == 19){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10001+i*100,j+1+i*100,j+10001+i*100);
	  }
	  if(j == 27){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10021+i*100,j+1+i*100,j+10001+i*100);
	  }
	}
      }
      
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10029+i*100,(i-1)*100+29,10003+i*100,i*100+29,10020+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10030+i*100,(i-1)*100+30,10004+i*100,i*100+30,10019+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10031+i*100,(i-1)*100+31,10022+i*100,i*100+31,10018+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10032+i*100,(i-1)*100+32,10021+i*100,i*100+32,10017+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10033+i*100,(i-1)*100+33,10005+i*100,i*100+33,10023+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10034+i*100,(i-1)*100+34,10006+i*100,i*100+34,10024+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10035+i*100,(i-1)*100+35,10007+i*100,i*100+35,10025+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10036+i*100,(i-1)*100+36,10008+i*100,i*100+36,10026+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10037+i*100,(i-1)*100+37,10028+i*100,i*100+37,10016+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10038+i*100,(i-1)*100+38,10027+i*100,i*100+38,10015+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10039+i*100,(i-1)*100+39,10009+i*100,i*100+39,10014+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10040+i*100,(i-1)*100+40,10010+i*100,i*100+40,10013+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10041+i*100,(i-1)*100+41,10004+i*100,i*100+41,10022+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10042+i*100,(i-1)*100+42,10027+i*100,i*100+42,10009+i*100);
      fprintf(out,"\n");
      fprintf(out,"# definice regionu\n");
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",1+i*100,10001+i*100,10002+i*100,10029+i*100,10020+i*100,(i-1)*100+1,i*100+1);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",2+i*100,10029+i*100,10003+i*100,10030+i*100,10019+i*100,(i-1)*100+2,i*100+2);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",3+i*100,10030+i*100,10041+i*100,10031+i*100,10018+i*100, 3+(i-1)*100,3+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",4+i*100,10004+i*100,10033+i*100,10022+i*100,10041+i*100, 4+(i-1)*100,4+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",5+i*100,10031+i*100,10021+i*100,10032+i*100,10017+i*100,5+(i-1)*100,5+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",6+i*100,10005+i*100,10034+i*100,10023+i*100,10033+i*100,6+(i-1)*100,6+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",7+i*100,10034+i*100,10006+i*100,10035+i*100,10024+i*100,7+(i-1)*100,7+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",8+i*100,10032+i*100,10028+i*100,10037+i*100,10016+i*100,8+(i-1)*100,8+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",9+i*100,10035+i*100,10007+i*100,10036+i*100,10025+i*100,9+(i-1)*100,9+i*100 );
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld %ld %ld -%ld hexa map yes equidistant size def\n",10+i*100,10036+i*100,10008+i*100,10042+i*100,10026+i*100,10+(i-1)*100,10+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",11+i*100,10037+i*100,10027+i*100,10038+i*100,10015+i*100,11+(i-1)*100,11+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",12+i*100,10038+i*100,10042+i*100,10039+i*100,10014+i*100,12+(i-1)*100,12+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",13+i*100,10039+i*100,10009+i*100,10040+i*100,10013+i*100,13+(i-1)*100,13+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld -%ld %ld -%ld hexa map yes equidistant size def\n",14+i*100,10040+i*100,10010+i*100,10011+i*100,10012+i*100,14+(i-1)*100,14+i*100);
    }
    // rez uprostred pole
    if(typecut[i] == 5){
      fprintf(out,"# \n");
      fprintf(out,"# rez uprostred pole\n");
      for(j = 0; j < 28; j++){
	ver=j+1+i*100;
	fprintf(out,"vertex %ld xyz %lf %lf %lf\n",ver,x[i][j],y[i][j],z[i][j]);
      }
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",1+i*100,1+i*100,2+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",2+i*100,2+i*100,3+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",3+i*100,3+i*100,4+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",4+i*100,4+i*100,5+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",5+i*100,5+i*100,6+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",6+i*100,6+i*100,7+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",7+i*100,7+i*100,8+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",8+i*100,8+i*100,9+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",9+i*100,9+i*100,10+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",10+i*100,10+i*100,11+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3\n",11+i*100,11+i*100,12+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 6\n",12+i*100,12+i*100,13+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",13+i*100,13+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",14+i*100,14+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",15+i*100,15+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",16+i*100,16+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",17+i*100,17+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4\n",18+i*100,18+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",19+i*100,19+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",20+i*100,20+i*100,1+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",21+i*100,21+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",22+i*100,22+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",23+i*100,23+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",24+i*100,24+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",25+i*100,25+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",26+i*100,26+i*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 5\n",27+i*100,27+i*100,28+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 7\n",28+i*100,28+i*100,21+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",29+i*100,3+i*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",30+i*100,4+i*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",31+i*100,22+i*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",32+i*100,21+i*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",33+i*100,5+i*100,23+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",34+i*100,6+i*100,24+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",35+i*100,7+i*100,25+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",36+i*100,8+i*100,26+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",37+i*100,28+i*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",38+i*100,27+i*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",39+i*100,9+i*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 3 \n",40+i*100,10+i*100,13+i*100);
      fprintf(out,"\n");
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",41+i*100,4+i*100,22+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 4 \n",42+i*100,27+i*100,9+i*100);
      fprintf(out,"\n");
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",1+i*100,1+i*100,2+i*100,29+i*100,20+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",2+i*100,29+i*100,3+i*100,30+i*100,19+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",3+i*100,30+i*100,41+i*100,31+i*100,18+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",4+i*100,41+i*100,4+i*100,33+i*100,22+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",5+i*100,31+i*100,21+i*100,32+i*100,17+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",6+i*100,33+i*100,5+i*100,34+i*100,23+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",7+i*100,34+i*100,6+i*100,35+i*100,24+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",8+i*100,32+i*100,28+i*100,37+i*100,16+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",9+i*100,35+i*100,7+i*100,36+i*100,25+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10+i*100,36+i*100,8+i*100,42+i*100,26+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",11+i*100,37+i*100,27+i*100,38+i*100,15+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",12+i*100,38+i*100,42+i*100,39+i*100,14+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",13+i*100,39+i*100,9+i*100,40+i*100,13+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",14+i*100,40+i*100,10+i*100,11+i*100,12+i*100);
      fprintf(out,"\n");
      fprintf(out,"# spojeni rezu 1 a 2\n");
      
      
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10001+i*100,1+(i-1)*100,1+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10002+i*100,2+(i-1)*100,2+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10003+i*100,3+(i-1)*100,3+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10004+i*100,4+(i-1)*100,4+i*100);
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10005+i*100,5+(i-1)*100,5+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][4]+(x[i][4]-x[i-1][4])/2,y[i][4],z[i][4]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10006+i*100,6+(i-1)*100,6+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][5]+(x[i][5]-x[i-1][5])/2,y[i][5],z[i][5]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10007+i*100,7+(i-1)*100,7+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][6]+(x[i][6]-x[i-1][6])/2,y[i][6],z[i][6]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10008+i*100,8+(i-1)*100,8+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][7]+(x[i][7]-x[i-1][7])/2,y[i][7],z[i][7]);
      
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10009+i*100,9+(i-1)*100,9+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10010+i*100,10+(i-1)*100,10+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10011+i*100,11+(i-1)*100,11+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10012+i*100,12+(i-1)*100,12+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10013+i*100,13+(i-1)*100,13+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10014+i*100,14+(i-1)*100,14+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10015+i*100,15+(i-1)*100,15+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10016+i*100,16+(i-1)*100,16+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10017+i*100,17+(i-1)*100,17+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10018+i*100,18+(i-1)*100,18+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10019+i*100,19+(i-1)*100,19+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10020+i*100,20+(i-1)*100,20+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10021+i*100,21+(i-1)*100,21+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10022+i*100,22+(i-1)*100,22+i*100);
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10023+i*100,23+(i-1)*100,23+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][22]+(x[i][22]-x[i-1][22])/2,y[i][22],z[i][22]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10024+i*100,24+(i-1)*100,24+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][23]+(x[i][23]-x[i-1][23])/2,y[i][23],z[i][23]);

      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10025+i*100,25+(i-1)*100,25+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][24]+(x[i][24]-x[i-1][24])/2,y[i][24],z[i][24]);
      
      fprintf(out,"curve %ld order 3 vertex %ld %ld count 10\n",10026+i*100,26+(i-1)*100,26+i*100);
      fprintf(out,"polygon 1 xyz %lf %lf %lf weight 1\n",x[i-1][25]+(x[i][25]-x[i-1][25])/2,y[i][25],z[i][25]);      

      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10027+i*100,27+(i-1)*100,27+i*100);
      fprintf(out,"curve %ld vertex %ld %ld count 10\n",10028+i*100,28+(i-1)*100,28+i*100);
      
      
      fprintf(out,"\n");
      for(j = 0; j < 28; j++){
	if(j != 19 && j != 27){
	  fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,j+10002+i*100,j+1+i*100,j+10001+i*100);
	}
	else{
	  if(j == 19){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10001+i*100,j+1+i*100,j+10001+i*100);
	  }
	  if(j == 27){
	    fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",j+10001+i*100,j+1+(i-1)*100,10021+i*100,j+1+i*100,j+10001+i*100);
	  }
	}
      }
      
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10029+i*100,(i-1)*100+29,10003+i*100,i*100+29,10020+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10030+i*100,(i-1)*100+30,10004+i*100,i*100+30,10019+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10031+i*100,(i-1)*100+31,10022+i*100,i*100+31,10018+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10032+i*100,(i-1)*100+32,10021+i*100,i*100+32,10017+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10033+i*100,(i-1)*100+33,10005+i*100,i*100+33,10023+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10034+i*100,(i-1)*100+34,10006+i*100,i*100+34,10024+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10035+i*100,(i-1)*100+35,10007+i*100,i*100+35,10025+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10036+i*100,(i-1)*100+36,10008+i*100,i*100+36,10026+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10037+i*100,(i-1)*100+37,10028+i*100,i*100+37,10016+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10038+i*100,(i-1)*100+38,10027+i*100,i*100+38,10015+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10039+i*100,(i-1)*100+39,10009+i*100,i*100+39,10014+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10040+i*100,(i-1)*100+40,10010+i*100,i*100+40,10013+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10041+i*100,(i-1)*100+41,10004+i*100,i*100+41,10022+i*100);
      fprintf(out,"surface %ld curve %ld %ld %ld %ld\n",10042+i*100,(i-1)*100+42,10027+i*100,i*100+42,10009+i*100);
      fprintf(out,"\n");
      fprintf(out,"# definice regionu\n");
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",1+i*100,10001+i*100,10002+i*100,10029+i*100,10020+i*100,(i-1)*100+1,i*100+1);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",2+i*100,10029+i*100,10003+i*100,10030+i*100,10019+i*100,(i-1)*100+2,i*100+2);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",3+i*100,10030+i*100,10041+i*100,10031+i*100,10018+i*100, 3+(i-1)*100,3+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",4+i*100,10004+i*100,10033+i*100,10022+i*100,10041+i*100, 4+(i-1)*100,4+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",5+i*100,10031+i*100,10021+i*100,10032+i*100,10017+i*100,5+(i-1)*100,5+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld  hexa map yes equidistant size def\n",6+i*100,10005+i*100,10034+i*100,10023+i*100,10033+i*100,6+(i-1)*100,6+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",7+i*100,10034+i*100,10006+i*100,10035+i*100,10024+i*100,7+(i-1)*100,7+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",8+i*100,10032+i*100,10028+i*100,10037+i*100,10016+i*100,8+(i-1)*100,8+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld %ld %ld -%ld hexa map yes equidistant size def\n",9+i*100,10035+i*100,10007+i*100,10036+i*100,10025+i*100,9+(i-1)*100,9+i*100 );
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld %ld %ld -%ld hexa map yes equidistant size def\n",10+i*100,10036+i*100,10008+i*100,10042+i*100,10026+i*100,10+(i-1)*100,10+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",11+i*100,10037+i*100,10027+i*100,10038+i*100,10015+i*100,11+(i-1)*100,11+i*100);
      fprintf(out,"region %ld boundary surface -%ld %ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",12+i*100,10038+i*100,10042+i*100,10039+i*100,10014+i*100,12+(i-1)*100,12+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld %ld -%ld %ld -%ld hexa map yes equidistant size def\n",13+i*100,10039+i*100,10009+i*100,10040+i*100,10013+i*100,13+(i-1)*100,13+i*100);
      fprintf(out,"region %ld boundary surface -%ld -%ld -%ld -%ld %ld -%ld hexa map yes equidistant size def\n",14+i*100,10040+i*100,10010+i*100,10011+i*100,10012+i*100,14+(i-1)*100,14+i*100);
    }
  
  }
  
}
