class ImprovedFibonacci {
    /** Print out the first few Fibonacci
      * numbers, marking the evens with a '*' */
    static final int MAX_INDEX = 10;

    public static void main(String[] args) {

	FibonacciEntry[] fibs = new FibonacciEntry[MAX_INDEX];

	// fill array with fibonacci values
	int lo = 1;
	int hi = 1;

	fibs[0] = new FibonacciEntry();
	fibs[0].value = lo;

	for (int i = 1; i < fibs.length; i++) {
	    fibs[i] = new FibonacciEntry();
	    fibs[i].value = hi;
	    if (hi % 2 == 0)
		fibs[i].isEven = true;	// default isEven == false

	    hi = lo + hi;	// new hi
	    /* new lo is (sum - old lo) i.e., the old hi */
	    lo = hi - lo;
	}

	// print out contents of array
	String mark;

	for (int i = 0; i < fibs.length; i++) {
	    if (fibs[i].isEven)
		mark = " *";
	    else
		mark = "";
	    System.out.println((i + 1) + ": " + fibs[i].value + mark);
	}
    }
}

class FibonacciEntry {
    int      value;
    boolean  isEven;
}
