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

int remaining(int * a, int len, int * slots)
{
	int i = 0, j = 0;
	int other[10];

	memset(other, 0, sizeof(other));
	
	for(i = 0; i < len; i++)
	{
		if(a[i] < 10)
		{
			other[a[i]-1] = 1;
		}
	}
	for(i = 0; i < 10; i++)
	{
		if(other[i] == 0)
		{
			*(slots++) = i + 1;
		}
	}

	return 1;
}

int repeats(int * a, int len)
{
	int i, j;
	for(i = 0; i < len-1; i++)
	{
		if(a [i] > 10) return 1;
		for(j = i+1; j < len ;j++)
		{
			if(a[i] == a[j])
			{
				return 1;
			}
		}
	}
	if(a [len-1] > 10) return 1;
	return 0;
}
void solveEFG(int * slots, int *e, int *f, int *g)
{
	int i;
	int j;
	int k = 0;
	int pair[2];

	i = (slots[0] > slots[1]) ? 0 : 1;
	i = slots[i] > slots[2] ? i : 2;

	*g = slots[i];
	for(j = 0 ; j < 3; j++)
	{
		if(j !=i )pair[k++] = slots[j];
	}

	if(2 * pair[0] + 3 * pair[1] == 2 * slots[i])
	{
		*f = pair[0];
		*e = pair[1];
	}
	else if(2 * pair[1] + 3 * pair[0] == 2 * slots[i])
	{
		*f = pair[1];
		*e = pair[0];
	}
	else
	{
		fprintf(stderr, "Whoa ! there \n");
	}
}
int main()
{
	int i, k, a, b, c;
	int buf [10];
	int slots[10];
	int v1,v2 = 0;
	int t = 1;
	int p = 0;
	int e, f, g;

	for(a = 1; a < 11 ; a++)
	{
		for(i = 1; i < 11 && (t || (i != a)); i++)
		{
			for(k = 1; k < 11 && (t || (k != a && k!=i)); k++)
			{
				for(b = 1; b < 11 && (t || (b != a && b!= i && b!= k)); b++)
				{
					for(c = 1; c < 11 && (t || (c != a && c != i && c != k && c != b)); c++)
					{
						v1 = 4 * i + 6 * k + a;
						v2 = 6 * b + 4 * c;
						buf[0] = a;
						buf[1] = b;
						buf[2] = c;
						buf[3] = i;
						buf[4] = k;
						buf[5] = i + 2 * k; /* h */
						buf[6] = 2 * b + c; /* d */
						if(v1 == v2 && !repeats(buf, 7))
						{
							remaining(buf, 7, slots);
							if(slots[0] + slots[1] + slots[2] == 3 * b + 2 * c)
							{
								printf("6 * %d + 4 * %d == %d == %d + 4 * %d + 6 * %d\n",
									b, c, v1, a, i, k);
								/*
							printf("%d + %d + %d =? %d,%d ?= 3 * %d + 2 * %d\n",
										slots[0],
										slots[1],
										slots[2],
										slots[0] + slots[1] + slots[2],
										3 * b + 2 * c,
										b,
										c);
								*/
								solveEFG(slots, &e, &f, &g);
								printf("a = %d, b = %d, c = %d, d = %d, e= %d, f = %d, g= %d, h = %d, i = %d, k = %d\n", a, b, c, 2 * b + c , e, f, g, i + 2 * k, i, k);
							}
						}
					}
				}
			}
		}
	}
}
