from __future__ import annotations import types from typing import Generator, Iterable def suffixes( iter_in: Iterable[ int ] ) \ -> Generator[ Iterable[ int ], None, None ]: list_in = list( iter_in ) for i in range( len( list_in ), -1, -1 ): yield list_in[ i : ] def suffix_sum( iter_in: Iterable[ int ] ) \ -> Generator[ int, None, None ]: count = 0 for item in reversed( list( iter_in ) ): count += item yield count import run_tests