← Home
```go
package main

import (
	"fmt"
)

func main() {
	var n, k int
	if _, err := fmt.Scan(&n, &k); err != nil {
		return
	}

	a := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Scan(&a[i])
	}

	sums := make(map[int][]int)
	sums[0] = []int{}
	count := 0

	var ans [][]int

	for i := 0; i < n; i++ {
		x := a[i]
		newSums := make(map[int][]int)
		for sum, subset := range sums {
			newSum := sum + x
			if _, exists := sums[newSum]; !exists {
				if _, exists2 := newSums[newSum]; !exists2 {
					newSubset := make([]int, len(subset), len(subset)+1)
					copy(newSubset, subset)
					newSubset = append(newSubset, x)
					newSums[newSum] = newSubset
					ans = append(ans, newSubset)
					count++
					if count == k {
						break
					}
				}
			}
		}
		for sum, subset := range newSums {
			sums[sum] = subset
		}
		if count == k {
			break
		}
	}

	for _, subset := range ans {
		fmt.Print(len(subset))
		for _, val := range subset {
			fmt.Printf(" %d", val)
		}
		fmt.Println()
	}
}
```