var result9 [][]int
var track9 []int
func subsets(nums []int) [][]int {
result9=[][]int{}
track9=[]int{}
backtack(nums,0,track9)
return result9
}
func backtack(nums []int,startIndex int,track []int) {
tmp:=make([]int,len(track))
copy(tmp,track)
result9 = append(result9,tmp)
for i := startIndex; i <len(nums) ; i++ {
track =append(track,nums[i])
backtack(nums,i+1,track)
track=track[:len(track)-1]
}
}