#include <stdio.h>

void getdigits(char buf[], int n)
{
    while (n) {
		*buf++ = n % 10;
		n /= 10;
	}
}

int is_vampire(const char n[4], const char i[2], const char j[2])
{
    	/* maybe a bit faster if unrolled manually */
    	if (i[0] == n[0]
    	 && i[1] == n[1]
    	 && j[0] == n[2]
    	 && j[1] == n[3])
		        return 1;

        if (i[0] == n[0]
         && i[1] == n[1]
         && j[0] == n[3]
         && j[1] == n[2])
                return 1;

        if (i[0] == n[0]
         && i[1] == n[2]
         && j[0] == n[1]
         && j[1] == n[3])
                return 1;

        if (i[0] == n[0]
         && i[1] == n[2]
         && j[0] == n[3]
         && j[1] == n[1])
                return 1;

        if (i[0] == n[0]
         && i[1] == n[3]
         && j[0] == n[1]
         && j[1] == n[2])
                return 1;

        if (i[0] == n[0]
         && i[1] == n[3]
         && j[0] == n[2]
         && j[1] == n[1])
                return 1;


        if (i[0] == n[1]
         && i[1] == n[0]
         && j[0] == n[2]
         && j[1] == n[3])
                return 1;

        if (i[0] == n[1]
         && i[1] == n[0]
         && j[0] == n[3]
         && j[1] == n[2])
                return 1;

        if (i[0] == n[1]
         && i[1] == n[2]
         && j[0] == n[0]
         && j[1] == n[3])
                return 1;

        if (i[0] == n[1]
         && i[1] == n[2]
         && j[0] == n[3]
         && j[1] == n[0])
                return 1;

        if (i[0] == n[1]
         && i[1] == n[3]
         && j[0] == n[0]
         && j[1] == n[2])
                return 1;

        if (i[0] == n[1]
         && i[1] == n[3]
         && j[0] == n[2]
         && j[1] == n[0])
                return 1;

        if (i[0] == n[2]
         && i[1] == n[0]
         && j[0] == n[1]
         && j[1] == n[3])
                return 1;

        if (i[0] == n[2]
         && i[1] == n[0]
         && j[0] == n[3]
         && j[1] == n[1])
                return 1;

        if (i[0] == n[2]
         && i[1] == n[1]
         && j[0] == n[0]
         && j[1] == n[3])
                return 1;

        if (i[0] == n[2]
         && i[1] == n[1]
         && j[0] == n[3]
         && j[1] == n[0])
                return 1;

        if (i[0] == n[2]
         && i[1] == n[3]
         && j[0] == n[0]
         && j[1] == n[1])
                return 1;

        if (i[0] == n[2]
         && i[1] == n[3]
         && j[0] == n[1]
         && j[1] == n[0])
                return 1;

        if (i[0] == n[3]
         && i[1] == n[0]
         && j[0] == n[1]
         && j[1] == n[2])
                return 1;

        if (i[0] == n[3]
         && i[1] == n[0]
         && j[0] == n[2]
         && j[1] == n[1])
                return 1;

        if (i[0] == n[3]
         && i[1] == n[1]
         && j[0] == n[0]
         && j[1] == n[2])
                return 1;

        if (i[0] == n[3]
         && i[1] == n[1]
         && j[0] == n[2]
         && j[1] == n[0])
                return 1;

        if (i[0] == n[3]
         && i[1] == n[2]
         && j[0] == n[0]
         && j[1] == n[1])
                return 1;

        if (i[0] == n[3]
         && i[1] == n[2]
         && j[0] == n[1]
         && j[1] == n[0])
                return 1;

	return 0;
}

int main()
{
	for (int i = 10; i < 100; i++) {
		for (int j = 10; j < 100; j++) {
			int n = i * j;
			if (n < 1000)
				continue;

			char ndigits[4];
			getdigits(ndigits, n);

			char idigits[2];
			char jdigits[2];
			getdigits(idigits, i);
			getdigits(jdigits, j);

			if (is_vampire(ndigits, idigits, jdigits))
				printf("%d * %d = %d\n", i, j, n);
		}
	}

	return 0;
}
