Перебираем очередное слагаемое в возрастающем порядке, ставим очередное слагаемое строго больше, чем предыдущее.
Чтобы оставить только хаотические, не ставим, чтобы предпоследнее слагаемое стало равно полусумме соседей.
a[i - 1] != (a[i - 2] + a[i]) / 2
2 * a[i - 1] != a[i - 2] + a[i]
a[i] != 2 * a[i - 1] - a[i - 2]
И получаем следующий код.
def search(n, prefix=[], x=0, y=0):
if n == 0:
return print(*prefix, sep='+')
for z in range((y + 1) if y else 1, n + 1):
if x and x + z == 2 * y:
continue
search(n - z, prefix + [z], y, z)
n = int(input())
search(n)