/*
1.00 1.00 1.38 4.38 2.25 1.00 4.88 1.13
0.88 2.00 1.13 2.00 2.13 3.50 2.50 2.75
1.00 1.00 1.13 3.50 2.50 4.63 2.25 1.00
5.88 1.00 1.38 1.38 2.38 1.00 1.13 2.88
4.88 1.00 1.13 1.00 1.25 1.38 5.25 1.13
*/
#include <stdio.h>
FILE *fp;
float a[8],b[8],x,y;
int   c[8],d[8];
int   i,j,k;
char  f[60];
main()
{
  fp=fopen("q.dat","r");
l10:
  fgets(f,60,fp); if(feof(fp))goto l20;
  sscanf(f,"%f %f %f %f %f %f %f %f",
     &a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7]);
    printf("-----------\n");
  for(i=0;i<8;i++)printf("%5.2f ",a[i]); printf("\n");
// 1st, no code >6.
  for(i=0;i<8;i++)if(a[i]>6.){
    x=(a[i]-6.)/2.;
    if(i-1>=0)a[i-1]+=x; if(i+1<8)a[i+1]+=x;
  }
// 2nd, fill 1
  if(a[0]<1.){ a[1]-=(1.-a[0])/2.; a[0]=1.; }
  if(a[7]<1.){ a[6]-=(1.-a[7])/2.; a[7]=1.; }
  for(i=1;i<7;i++)if(a[i]<1.){
    x=(1.-a[i])/2.; a[i-1]-=x; a[i+1]-=x; a[i]=1.;
  }
  y=0.15; j=0;
l30:     j++;
// back--, white++;
  for(i=0;i<8;i+=2){
    k=a[i]; x=(a[i]-k)/2.;
    if(x>0. && x<y){
      a[i]-=x+x;
      if(i-1>=0)a[i-1]+=x; if(i+1<8)a[i+1]+=x;
    }
  }
  for(i=0;i<8;i++)c[i]=a[i]+0.5;
  k=0; for(i=0;i<8;i++)k+=c[i];
  for(i=0;i<8;i++)printf("%5.2f ",a[i]); printf("  %d\n",k);
  if(k==17)goto l10;
//  fill white;
  k=a[7]+0.5; x=(k-a[7])/2.;
  if(x>0 && x<y){ a[7]+=x+x; a[6]-=x; }
  for(i=1;i<=5;i+=2){
    k=a[i]+0.5; x=(k-a[i])/2.;
    if(x>0 && x<y){ a[i]+=x+x; a[i-1]-=x; a[i+1]-=x; }
  }
  for(i=0;i<8;i++)c[i]=a[i]+0.5;
  k=0; for(i=0;i<8;i++)k+=c[i];
  for(i=0;i<8;i++)printf("%5.2f ",a[i]); printf("  %d\n",k);
  if(k==17)goto l10;
  if(j<4){ y+=0.05; goto l30; }  else goto l10;
l20:
  fclose(fp);
}
