static int find_biggest_n_1_product(List<Integer> A) {
		// Build forward product L, and backward product R.
		List<Integer> L = new ArrayList<Integer>(A.size()), R = new ArrayList<Integer>(A.size());
		fill(L, A.size(), 0);
		fill(R, A.size(), 0);
		partial_sum(A.iterator(), L.listIterator(), BinaryOperators.MULTIPLIES);
		partial_sum(revListIterator(A), revListIterator(R), BinaryOperators.MULTIPLIES);

		// Find the biggest product of (n - 1) numbers.
		int max_product = Integer.MIN_VALUE;
		for (int i = 0; i < A.size(); ++i) {
			int forward = i > 0 ? L.get(i - 1) : 1;
			int backward = i + 1 < A.size() ? R.get(i + 1) : 1;
			max_product = max(max_product, forward * backward);
		}
		return max_product;
	}