func firstMissingPositive(nums []int) int {
for i:=0;i<len(nums);{
if nums[i] <= 0 || nums[i]>len(nums)|| nums[i] -1 == i{
i++
} else {
if nums[i] != nums[nums[i] -1]{
nums[i],nums[nums[i]-1] = nums[nums[i]-1], nums[i]
}else{
i++
}
}
}
var i int
for i=0; i<len(nums);i++ {
if nums[i] != i+1{
break
}
}
return i+1
}