#include <stdio.h>

int a[16];

void swap (int x, int y) {
  int temp;
  temp = a[x];
  a[x] = a[y];
  a[y] = temp;
}
void pout(void) {
      for (int i=0;i<12;i++) { printf("%2d=%2d ",i,a[i]);
        }
      printf("\n");
}

void whack(void) {
    int p[4],d[16];
    p[0]=0;p[1]=0;p[2]=0;p[3]=0;
    for (int i=0;i<16;i++) {
      d[i] = a[i];
    }
    d[12] = d[10]; d[13] = d[11];
    d[10] = 0; d[11] = 0;
    d[14] = 0; d[15] = 0;
    for (int i=0;i<16;i++) {
      p[0] += d[i] * (i & 1); 
      p[1] += d[i] * (i & 2) / 2; 
      p[2] += d[i] * (i & 4) / 4; 
      p[3] += d[i] * (i & 8) / 8; 
    }
    if ((p[0]==p[1])
     &&(p[1]==p[2])
     &&(p[2]==p[3])
     &&(d[7]!=11)
     &&(d[5]==d[7]+1))
 {
//    printf("%d %d %d %d\n",p[0],p[1],p[2],p[3]);
      pout();
    }
}

void perm(int st) {
/*  if (st<8) {
    for (int l=0;l<st;l++) printf(" ");
    printf("%d\n",st);
  }
*/
  if ((st!=12)) {
    for (int i=st;i<12;i++) {
      swap(st,i);
      perm(st+1);
      swap(st,i);
    }
  } else {
    whack();
  }
}

void main (void) {
  
  for (int i=0;i<16;i++) a[i]=i;
  perm(2);
  for (int i=0;i<16;i++) a[i]=i+1;
  perm(2);
  for (int i=0;i<16;i++) a[i]=i+2;
  perm(2);
  for (int i=0;i<16;i++) a[i]=i+3;
  perm(2);
  for (int i=0;i<16;i++) a[i]=i+4;
  perm(2);
  for (int i=0;i<16;i++) a[i]=i+5;
  perm(2);

}
