from pprint import pprint numbers = [9,8,15,10,14,17,11] result_sets = [] numbers.sort() for i, num in enumerate(numbers): result_set = [num] for n in numbers[i + 1:]: if sum(result_set) + n <= 30: result_set.append(n) print n, result_set, sum(result_set) + n if sum(result_set) == 30: print sum(result_set) result_sets.append(result_set) pprint(result_sets, indent=2)