| 12345678910111213141516171819202122232425262728293031 | func makesquare(nums []int) bool {	n := len(nums)	if n < 4 {		return false	}	sum := 0	for _, i := range nums {		sum += i	}	if sum%4 != 0 {		return false	}	sort.Sort(sort.Reverse(sort.IntSlice(nums))) // It's super effective!	return dfs(nums, make([]int, 4), n, 0, sum/4)}func dfs(nums []int, sums []int, n int, idx int, target int) bool {	if idx == n {		return sums[0] == target && sums[1] == target && sums[2] == target	}	for i := 0; i < 4; i++ {		if sums[i]+nums[idx] <= target {			sums[i] += nums[idx]			if dfs(nums, sums, n, idx+1, target) {				return true			}			sums[i] -= nums[idx]		}	}	return false}
 |