package main
import "fmt"
func subset(x []int) [][]int {
y:=[][]int{[]int{}}
for i:=0; i<len(x); i++ {
if i<len(x)-1 {
xx:=subset(x[i+1:])
for j:=0; j<len(xx); j++ {
yy:=[]int{x[i]}
y=append(y,append(yy,xx[j]...))
}
} else {
y=append(y,[]int{x[i]})
}
}
return y
}
func main() {
x:=[]int{1,2,3,4}
y:=subset(x)
fmt.Print(y)
}