```
class Solution {
public:
int firstMissingPositive(int A[], int n) {
vector<bool> flg(n+1, false);
for(int i=0; i<n; i++) if(A[i]>0&&A[i]<=n) flg[A[i]]=true;
for(int i=1; i<=n; i++) if(!flg[i]) return i;
return n+1;
}
};
```