from functools import lru_cache
@lru_cache(10000)
def sumandos(n):
res = []
for i in range(1,int((n)/2)+1):
if n-i == 1:
aux=[tuple([1])]
elif i*2 == n:
aux=[tuple([i])]
else:
aux = sumandos(n-i)
for j in aux:
tp=[i]
if i > j[0]:
continue
res.append(tuple(tp)+j)
if i*2 != n:
res.append(tuple([i,n-i]))
return res
n = 4
res = [[1,1,1,1],[1,1,2],[1,3],[2,2]]