from bisect import bisect_right
from operator import itemgetter
def out_of_sequence(seq, key = None):
if key is None: key = lambda x: x
lastoflength = [0] # end position of subsequence with given length
predecessor = [None] # penultimate element of l.i.s. ending at given position
for i in range(1, len(seq)):
# find length j of subsequence that seq[i] can extend
j = bisect_right([key(seq[k]) for k in lastoflength], key(seq[i]))
# update old subsequence or extend the longest
try: lastoflength[j] = i
except: lastoflength.append(i)
# record element preceding seq[i] in the subsequence for backtracking
predecessor.append(lastoflength[j-1] if j > 0 else None)
indices = set()
i = lastoflength[-1]
while i is not None:
indices.add(i)
i = predecessor[i]
return [e for i, e in enumerate(seq) if i not in indices]
print(out_of_sequence([991, 992, 993, 1, 2, 3, 4, 5, 994, 995, 996, 997, 998, 999]))
ZnJvbSBiaXNlY3QgaW1wb3J0IGJpc2VjdF9yaWdodApmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCgoKZGVmIG91dF9vZl9zZXF1ZW5jZShzZXEsIGtleSA9IE5vbmUpOgogIGlmIGtleSBpcyBOb25lOiBrZXkgPSBsYW1iZGEgeDogeCAKCiAgbGFzdG9mbGVuZ3RoID0gWzBdICMgZW5kIHBvc2l0aW9uIG9mIHN1YnNlcXVlbmNlIHdpdGggZ2l2ZW4gbGVuZ3RoCiAgcHJlZGVjZXNzb3IgPSBbTm9uZV0gIyBwZW51bHRpbWF0ZSBlbGVtZW50IG9mIGwuaS5zLiBlbmRpbmcgYXQgZ2l2ZW4gcG9zaXRpb24KCiAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKHNlcSkpOgogICAgIyBmaW5kIGxlbmd0aCBqIG9mIHN1YnNlcXVlbmNlIHRoYXQgc2VxW2ldIGNhbiBleHRlbmQKICAgIGogPSBiaXNlY3RfcmlnaHQoW2tleShzZXFba10pIGZvciBrIGluIGxhc3RvZmxlbmd0aF0sIGtleShzZXFbaV0pKQogICAgIyB1cGRhdGUgb2xkIHN1YnNlcXVlbmNlIG9yIGV4dGVuZCB0aGUgbG9uZ2VzdAogICAgdHJ5OiBsYXN0b2ZsZW5ndGhbal0gPSBpCiAgICBleGNlcHQ6IGxhc3RvZmxlbmd0aC5hcHBlbmQoaSkKICAgICMgcmVjb3JkIGVsZW1lbnQgcHJlY2VkaW5nIHNlcVtpXSBpbiB0aGUgc3Vic2VxdWVuY2UgZm9yIGJhY2t0cmFja2luZwogICAgcHJlZGVjZXNzb3IuYXBwZW5kKGxhc3RvZmxlbmd0aFtqLTFdIGlmIGogPiAwIGVsc2UgTm9uZSkKCiAgaW5kaWNlcyA9IHNldCgpCiAgaSA9IGxhc3RvZmxlbmd0aFstMV0KICB3aGlsZSBpIGlzIG5vdCBOb25lOgogICAgaW5kaWNlcy5hZGQoaSkKICAgIGkgPSBwcmVkZWNlc3NvcltpXQoKICByZXR1cm4gW2UgZm9yIGksIGUgaW4gZW51bWVyYXRlKHNlcSkgaWYgaSBub3QgaW4gaW5kaWNlc10KCnByaW50KG91dF9vZl9zZXF1ZW5jZShbOTkxLCA5OTIsIDk5MywgMSwgMiwgMywgNCwgNSwgOTk0LCA5OTUsIDk5NiwgOTk3LCA5OTgsIDk5OV0pKQo=