
'''simple docstring'''





from __future__ import annotations

def      A (       A_							:					list[int]    ,							A_							:					int       ):
      snake_case       :     list[list[int]] =    []
      snake_case       :     list[int] =    []
      snake_case       :     int =    0
      snake_case       :     int =    sum(A_       )
      create_state_space_tree(A_    ,							A_    ,							A_    ,							A_    ,							A_    ,							A_       )
      return result

def      A (       A_							:					list[int]    ,							A_							:					int    ,							A_							:					int    ,							A_							:					list[int]    ,							A_							:					list[list[int]]    ,							A_							:					int    ,							):
      if sum(A_       ) > max_sum or (remaining_nums_sum + sum(A_       )) < max_sum:
            return
      if sum(A_       ) == max_sum:
            result.append(A_       )
            return
      for index in range(A_    ,							len(A_       )       ):
            create_state_space_tree(
                A_    ,							A_    ,							index + 1    ,							[*path, nums[index]]    ,							A_    ,							remaining_nums_sum - nums[index]    ,							)
UpperCAmelCase    					=   [3, 34, 4, 12, 5, 2]
UpperCAmelCase    					=   9
UpperCAmelCase    					=   generate_sum_of_subsets_soln(nums, max_sum)





print(*result)



'''simple docstring'''





from __future__ import annotations

def      A (       A_							:					list[int]    ,							A_							:					int       ):
						snake_case       :     list[list[int]] =    []
						snake_case       :     list[int] =    []
						snake_case       :     int =    0
						snake_case       :     int =    sum(A_       )
						create_state_space_tree(A_    ,							A_    ,							A_    ,							A_    ,							A_    ,							A_       )
						return result

def      A (       A_							:					list[int]    ,							A_							:					int    ,							A_							:					int    ,							A_							:					list[int]    ,							A_							:					list[list[int]]    ,							A_							:					int    ,							):
						if sum(A_       ) > max_sum or (remaining_nums_sum + sum(A_       )) < max_sum:
												return
						if sum(A_       ) == max_sum:
												result.append(A_       )
												return
						for index in range(A_    ,							len(A_       )       ):
												create_state_space_tree(
												    A_    ,							A_    ,							index + 1    ,							[*path, nums[index]]    ,							A_    ,							remaining_nums_sum - nums[index]    ,							)
UpperCAmelCase    					=   [3, 34, 4, 12, 5, 2]
UpperCAmelCase    					=   9
UpperCAmelCase    					=   generate_sum_of_subsets_soln(nums, max_sum)





print(*result)

