
public class j196 {
	public static void main(String[] args)
	{
		for (int g=2 ; g<=36 ; g++)
		{
			for (long n=g ; n<=g*g*g ; n++)
			{
				do196(g,n);
			}
		}
	}
	static void do196(int g, long n)
	{
		long number = n;
		int i;
		for (i=0 ; i<1000 ; i++)
		{
			long reversed = reverse(g,number);
			if (reversed==number)
			{
				System.out.println("alg196("+g+","+Long.toString(n,g)+")="+Long.toString(number,g)+" in "+i+" steps");
				return;
			}
			number+=reversed;
			if (number > Long.MAX_VALUE/11)
				break;
		}
		System.out.println("alg196("+g+","+Long.toString(n,g)+") failed in "+i+" steps");
	}
/*
	static String asDigit(int n)
	{
		if (n<10)
			return '0'+n;
		else if (n<36)
			return 'A'+n-10;
		else
			return 'a'+n-10-26;
	}
	static String asString(int g, int i)
	{
		String result="";
		while (i!=0)
		{
			result = asDigit(i%g)+result;
			i/=g;
		}
		return result;
	}
*/
	static long reverse(int g, long i)
	{
		long res=0;
		while(i!=0)
		{
			res *= g;
			res += i%g;
			i /= g;
		}
		return res;
	}

}


