def sum_even_fib_below(n):
    """
    Each new term in the Fibonacci sequence is generated by adding the
    previous two terms. By starting with 1 and 2, the first 10 terms will be:
                     1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
    :param n:
    :return: the sum of the even-valued terms
    """
    ans = 0
    x = 1  # Represents the current Fibonacci number being processed
    y = 2  # Represents the next Fibonacci number in the sequence
    while x <= n:
        if x % 2 == 0:
            ans += x
        x, y = y, x + y
    return ans


def problem002():
    """
    By considering the terms in the Fibonacci sequence whose values do not
    exceed four million, find the sum of the even-valued terms.
    """

    ans = sum_even_fib_below(4000000)
    return ans


if __name__ == "__main__":
    print(problem002())
