import java.math.*;
public class Factorial {




	public static void main(String[] args) {

		/*
		System.out.println(isPalindrome("racecar"));

		System.out.println(factorialR(10));
		/*
		System.out.println(powF(2, 7500L));
		System.out.println(pow(2,  7500L));

		int[] arr = new int[0];

		System.out.println(sum(arr, 0));

		int[] numbers = {1, 2, 0, 6, 3, 4};
		int sum = sum(numbers);

		print(numbers, numbers.length);
		*/
		towersOfHanoi(10, "left", "right", "middle");

	}

	private static void print(int[] arr, int n) {

		if(n==0)
			return;

		print(arr, n-1);
		System.out.println(arr[n-1]);


	}

	public static BigInteger pow(long base, long exponent) {

		if(exponent==0)
			return BigInteger.ONE;

		return pow(base, exponent-1).multiply(new BigInteger(Long.toString(base)));

	}

	public static BigInteger powF(long base, long exponent) {

		if(exponent==0)
			return BigInteger.ONE;
		
		BigInteger ans;
		if(exponent%2==0) {
			ans = powF(base, exponent/2);
			ans = ans.multiply(ans);
		}else {
			ans = powF(base, (exponent-1)/2);
			ans = ans.multiply(ans);
			ans = ans.multiply(new BigInteger(Long.toString(base)));
		}
		return ans;
	}
				

	public static long powerFaster(int base, int exponent) {

		if(exponent==0)
			return 1;

		long answer = 0;
		if(exponent%2==0) {
			answer = powerFaster(base, exponent/2);
			answer*= answer;
		}else {
			answer = powerFaster(base, (exponent-1)/2);
			answer*=answer;
			answer*=base;
		}

		return answer;
	}
			

	public static long power(int base, int exponent) {
		
		if(exponent==0)
			return 1;


		return base * power(base, exponent-1);
	}

	
	private static boolean isPalindrome(String s) {
		
		
		if(s.length()<=1)
			return true;

		return s.charAt(0)==s.charAt(s.length()-1)
			&& isPalindrome(s.substring(1, s.length()-1));
	}
	

	private static long factorialR(int n) {

		if(n==0)
			return 1;
		else	
			return n * factorialR(n-1);
	}




	private static long factorial(int n) {

	long product = n;

	for(long num = n-1; num>=1; num--)

		product*=num;

	return product;



	}


	private static int sum(int[] arr) {

		return sum(arr, arr.length);
	}


	private static int sum(int[] arr, int n) {


		if(n==0)
			return 0;


		return arr[n-1] + sum(arr, n-1);
	}




	private static void towersOfHanoi(int n, String from, String to, String extra) {


		if(n==0)
			return;
	        
		towersOfHanoi(n-1, from, extra, to);

		System.out.println("move from " + from + " to " + to);

		towersOfHanoi(n-1, extra, to, from);



	}






















}
