def r(a,c=[],z=[]): a.sort() for i,v in enumerate(a):z+=[c+[v]]if v+sum(c)==10*0**(c+[v]in z)else r(a[i+1:],c+[v],z)*0 return z res = r( [1,4,5,5,2,3,1,4] ) print( res )