int firstMissingPositive(int A[], int n) {
for(int i = 0; i < n; ) {
if(A[i] <= 0 || A[i] > n || A[A[i]-1] == A[i])
i++;
else
swap(A[i], A[A[i]-1]);
}
for(int i = 0; i < n; ) {
if(A[i] == i+1)
i++;
else
return i+1;
}
return n+1;
}