package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param target int整型 
 * @param nums int整型一维数组 
 * @return int整型二维数组
*/
func combinationCount( target int ,  nums []int ) [][]int {
    // write code here
	res := make([][]int, 0)
	var dfs func(start int, tmpSum int, tmp []int)
	dfs = func(start int, tmpSum int, tmp []int) {
		if tmpSum == target {
			res = append(res, append([]int(nil), tmp...))
			return
		}
		if tmpSum > target {
			return
		}
		for i := start; i < len(nums); i++ {
			tmp = append(tmp, nums[i])
			dfs(i, tmpSum+nums[i], tmp)
			tmp = tmp[:len(tmp)-1]
		}
	}
	dfs(0, 0, []int{})
	return res
}