public int firstMissingPositiveOld(int[] A) {
		if (A == null || A.length == 0)
			return 1;
		int k = partition(A);
		for (int i = 0; i < k; i++) {
			int cur = Math.abs(A[i]);
			if (cur < k + 1)
				A[cur - 1] = A[cur - 1] > 0 ? -A[cur - 1] : A[cur - 1];
		}
		for (int i = 0; i < k; i++) {
			if (A[i] > 0)
				return i + 1;
		}
		return k + 1;
	}