

class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
ans = [nums]
for i in range(1, len(nums)):
m = len(ans)
for k in range(m):
for j in range(i):
ans.append(ans[k][:])
ans[-1][j], ans[-1][i] = ans[-1][i], ans[-1][j]
return ans


class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
ans = [nums]
for i in range(1, len(nums)):
m = len(ans)
for k in range(m):
for j in range(i - 1, -1, -1):
if ans[k][j] == ans[k][i]:
break
ans.append(ans[k][:])
val = ans[-1][j]
ans[-1][j] = ans[-1][i]
ans[-1][i] = val
return ans