>>981
#include <stdio.h>

int a[5][5], chk[16];

void show(void) {
int i, j;
for(i = 4; i >= 0; i--) {
for(j = 4; j > i; j--) printf(" ");
for(j = i; j >= 0; j--) printf("%2d ", a[i][j]);
putchar('\n'); } }

void f(int y, int x) {
int i;
if(y == 5) { show(); return; }
if(x > y) f(y + 1, 0);
else if(x == 0) {
for(i = 1; i <= 15; i++) {
if(chk[i] == 0) { a[y][x] = i; chk[i] = 1; f(y, x + 1); chk[i] = 0; } } }
else {
i = a[y][x - 1] + a[y - 1][x - 1];
if(i <= 15 && chk[i] == 0) { a[y][x] = i; chk[i] = 1; f(y, x + 1); chk[i] = 0; }
i = a[y][x - 1] - a[y - 1][x - 1];
if(i > 0 && chk[i] == 0) { a[y][x] = i; chk[i] = 1; f(y, x + 1); chk[i] = 0; } } }

int main(void) {
f(0, 0);
return 0; }