import java.math.*;

public class FibonacciTest
{
	private static myStack SysStack=new myStack();

    	public static BigInteger fibonacci(int n)
	{
	System.out.println();
	System.out.println("fibonacci("+n+") has been called...");
	
	SysStack.push(n);
		
    	if((n == 0) || (n == 1))
		{
			System.out.println();
                        System.out.println("fibonacci("+n+") returning value...");
			int garbage=SysStack.pop();
			return new BigInteger ("1");
		}
		else 
		{
			BigInteger number1 = fibonacci(n-1);
			BigInteger number2 = fibonacci(n-2);
					
			System.out.println();
			System.out.println("fibonacci("+n+") returning value...");
			int moregrabage=SysStack.pop();
			return number1.add(number2);
		}
	}

        public static void main(String[] args)
	{
		
		if(args.length == 0)
		{
			System.out.println("Usage: java Fibonacci <number>");
			return;
		}
		
		int number = Integer.parseInt (args [0]);
		
		if (number<0) {
			System.out.println ("Incorrect number entered.");
			return;
		}
		

		BigInteger num = fibonacci (number);
			
		
	} // end of main	
} // end of class

