# the line below is required to use the List[] type in the type contract
from typing import List  


# In the type contract, List[int] means that the parameter is a list of ints.
def print_list(L: List[int]) -> None:
    """Print the elements of L, one per line.
  
    Do not write a return statement (notice the type contract indicates that 
    this function returns None).
    
    >>> print_list([1,2,3,4])
    1
    2
    3
    4
    
    You *must* use a while loop
    """
    
    # Add code below
    

def print_list_even(L: List[int]) -> None:
    """Print the elements of L at even indexes, one per line.
  
    Do not write a return statement (notice the type contract indicates that 
    this function returns None).
  
    >>> print_list_even([1,2,3,4])
    1
    3
  
    You *must* use a while loop.
    """
    
    # Add code below
         

def print_list_reverse(L: List[int]) -> None:
    """Print the elements of L in reverse order, one per line.
    
    Do not write a return statement (notice the type contract indicates that 
    this function returns None).
  
    >>> print_list_reverse([1,2,3,4])
    4
    3
    2
    1
  
    You *must* use a while loop.
    """
    
    # Add code below


def sum_elements(L: List[int]) -> int:
    """Return the sum of the elements of L, starting from the front of list, 
    until the sum is over 100 or the end of the list is reached.
    
    >>> sum_elements([2, 5, 7])
    14
    >>> sum_elements([40, 32, 17, 50, 99, 105, 3])
    139
    
    You *must* use a while loop.
    
    Hint: You will need to check that two different boolean values are True at 
    the same time in the while condition.
    """
  
    # Add code below
    
    