# your code goes here
lst = (1, (2, 3), (4, 5), ((6, 7)), (8))
def gen(lst):
for l in lst:
(yield from gen(l)) if isinstance(l, tuple) else (yield l)
def serial(lst):
prev = 0
for i in gen(lst):
yield i, prev
prev = i
print(list(serial(lst)))
def parse(l, *rest, prev=0):
ret = parse(*l, prev=prev) if isinstance(l, tuple) else [(l, prev)]
ret += parse(*rest, prev=ret[-1][0]) if rest else []
return ret
#return ([i for j in l for i, last in recurse(j)], last) if isinstance(l, tuple) else [l], last
print(parse(lst))
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCmxzdCA9ICgxLCAoMiwgMyksICg0LCA1KSwgKCg2LCA3KSksICg4KSkKZGVmIGdlbihsc3QpOgoJZm9yIGwgaW4gbHN0OgoJCSh5aWVsZCBmcm9tIGdlbihsKSkgaWYgaXNpbnN0YW5jZShsLCB0dXBsZSkgZWxzZSAoeWllbGQgbCkKCmRlZiBzZXJpYWwobHN0KToKCXByZXYgPSAwCglmb3IgaSBpbiBnZW4obHN0KToKCQl5aWVsZCBpLCBwcmV2CgkJcHJldiA9IGkKCQkKcHJpbnQobGlzdChzZXJpYWwobHN0KSkpCgpkZWYgcGFyc2UobCwgKnJlc3QsIHByZXY9MCk6CglyZXQgPSBwYXJzZSgqbCwgcHJldj1wcmV2KSBpZiBpc2luc3RhbmNlKGwsIHR1cGxlKSBlbHNlIFsobCwgcHJldildCglyZXQgKz0gcGFyc2UoKnJlc3QsIHByZXY9cmV0Wy0xXVswXSkgaWYgcmVzdCBlbHNlIFtdCglyZXR1cm4gcmV0CgkKI3JldHVybiAoW2kgZm9yIGogaW4gbCBmb3IgaSwgbGFzdCBpbiByZWN1cnNlKGopXSwgbGFzdCkgaWYgaXNpbnN0YW5jZShsLCB0dXBsZSkgZWxzZSBbbF0sIGxhc3QKcHJpbnQocGFyc2UobHN0KSk=
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 4), (6, 5), (7, 6), (8, 7)]
[(1, 0), (2, 1), (3, 2), (4, 3), (5, 4), (6, 5), (7, 6), (8, 7)]