public static int eggOnFloor (int f, int e, int[][] s, int[][] c ) {
		if ( s[f][e] != -9999999) {
			return s[f][e];
		}
		
		if ( f == 0 ) {
			return 0;
		}
		
		if ( e <= 0) {
			return 9999999;
		}
		
		int	min  =  99999999;
		for (int i = 1; i <= f; ++i) {
			int   tmp  =  Math.max(eggOnFloor(i-1, e-1, s, c), 
					eggOnFloor(f-i, e, s, c)) + 1;
			if ( tmp < min ) {
				c[f][e]  =  i;
				min  =  tmp;
			}
		}
		s[f][e]  =  min;
		System.out.println( String.format("floor: %d, egg: %d => %d", f, e, min));
		return min;
	}