function subsets(nums):
result = []
backtrack(0, [], result, nums)
return result
function backtrack(index, current, result, nums):
if index == length(nums):
result.append(copy of current)
return
# Include nums[index]
current.append(nums[index])
backtrack(index + 1, current, result, nums)
current.pop()
# Exclude nums[index]
backtrack(index + 1, current, result, nums)