public int maxDonations(int[] d) {
		int N = d.length;
		int[] sum = new int[N];
		boolean[] fl = new boolean[N];
		sum[0] = d[0];
		fl[0] = true;
		for (int i = 1; i < N - 1; i++) {
			int j = i;
			j = i - 2;
			if (j < 0) 
				j = 0;
			else 
				j = sum[j];
			if (sum[i - 1] > j + d[i]) {
				sum[i] = sum[i - 1]; 
				fl[i] = fl[i - 1];
			}
			else {
				sum[i] = j + d[i];
				if (i >= 2)
					fl[i] = fl[i - 2];
			}
			System.out.print(sum[i] + " " + i + " ," );
		}
		if (N >= 3) {
			if (fl[N - 3]) {
				if (sum[N - 3] + d[N - 1] - sum[0] > sum[N - 2]) {
					sum[N - 1] = sum[N - 3] + d[N - 1] - sum[0];
				}
				else {
					sum[N - 1] = sum[N - 2];
				}
			}
			else {
				if (sum[N - 3] + d[N - 1]> sum[N - 2]) {
					sum[N - 1] = sum[N - 3] + d[N - 1];
				}
				else {
					sum[N - 1] = sum[N - 2];
				}
			}
		}
		else if (N == 2){
			sum[N - 1] = Math.max(d[0], d[1]);
		}
		return sum[N - 1];
	}