a = [1, 2, 5, 6, 100, 101, 1000, 1001, 100000, 100002, 100004]
d = {}
for i in range(len(a)):
for j in range(i + 1, len(a)):
k = a[j] - a[i]
if k in d and a[i] - a[d[k][-1]["start"]] == k:
d[k][-1]["count"] += 1
else:
d[k] = d.get(k, []) + [{"start":i, "count": 1}]
flat = ((x[0], i) for x in d.iteritems() for i in x[1])
start = max(flat, key=lambda x: x[1]["count"])
diff, j = start[0], start[1]["start"]
result = [a[j]]
for i in range(j, len(a)):
if a[i] - a[j] == diff:
result.append(a[i])
j = i
print result
YSA9IFsxLCAyLCA1LCA2LCAxMDAsIDEwMSwgMTAwMCwgMTAwMSwgMTAwMDAwLCAxMDAwMDIsIDEwMDAwNF0KZCA9IHt9Cgpmb3IgaSBpbiByYW5nZShsZW4oYSkpOgogICAgZm9yIGogaW4gcmFuZ2UoaSArIDEsIGxlbihhKSk6CiAgICAgICAgayA9IGFbal0gLSBhW2ldCiAgICAgICAgaWYgayBpbiBkIGFuZCBhW2ldIC0gYVtkW2tdWy0xXVsic3RhcnQiXV0gPT0gazoKICAgICAgICAgICAgZFtrXVstMV1bImNvdW50Il0gKz0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRba10gPSBkLmdldChrLCBbXSkgKyBbeyJzdGFydCI6aSwgImNvdW50IjogMX1dCgpmbGF0ID0gKCh4WzBdLCBpKSBmb3IgeCBpbiBkLml0ZXJpdGVtcygpIGZvciBpIGluIHhbMV0pCnN0YXJ0ID0gbWF4KGZsYXQsIGtleT1sYW1iZGEgeDogeFsxXVsiY291bnQiXSkKZGlmZiwgaiA9IHN0YXJ0WzBdLCBzdGFydFsxXVsic3RhcnQiXQpyZXN1bHQgPSBbYVtqXV0KZm9yIGkgaW4gcmFuZ2UoaiwgbGVuKGEpKToKICAgIGlmIGFbaV0gLSBhW2pdID09IGRpZmY6CiAgICAgICAgcmVzdWx0LmFwcGVuZChhW2ldKQogICAgICAgIGogPSBpCgpwcmludCByZXN1bHQK