from operator import add
def _reduce(func, iterable):
iterable = iter(iterable)
value = next(iterable)
for element in iterable:
value = func(value, element)
return value
print(_reduce(add, [1,2,3,4]))
ZnJvbSBvcGVyYXRvciBpbXBvcnQgYWRkCgpkZWYgX3JlZHVjZShmdW5jLCBpdGVyYWJsZSk6CiAgICBpdGVyYWJsZSA9IGl0ZXIoaXRlcmFibGUpCiAgICB2YWx1ZSA9IG5leHQoaXRlcmFibGUpCiAgICBmb3IgZWxlbWVudCBpbiBpdGVyYWJsZToKICAgICAgICB2YWx1ZSA9IGZ1bmModmFsdWUsIGVsZW1lbnQpCiAgICByZXR1cm4gdmFsdWUKICAgIApwcmludChfcmVkdWNlKGFkZCwgWzEsMiwzLDRdKSk=