A.sort() k=1 B=[A[0]] for i inrange(1,N): if A[i]==A[i-1]: k+=1 else: k=1 if k<=2or k<=3and A[i]==0: B.append(A[i]) A=B N=len(A) for i,a inenumerate(A): D[a]=i for i inrange(N): for j inrange(i+1,N): C=-(A[i]+A[j]) # complement if C in D and D[C]!=i and D[C]!=j: S.add(tuple(sorted([A[i],A[j],C]))) ret=[] for l in S: ret.append(l) return ret