public int firstMissingPositive(int[] A) {
		if(A == null || A.length == 0) return 1;
		for(int i = 0; i < A.length; i++) {
			while(A[i] != i + 1) {
				if(A[i] > 0 && A[i] <= A.length && A[A[i]-1] != A[i]) {
					int temp = A[i];
					A[i] = A[A[i] - 1];
					A[temp-1] = temp;
				} else break;
			}
		}
		for(int i = 0; i < A.length; i++) {
			if(A[i] != i + 1) return i+1;
		}
		return A.length+1;
	}