def subset_with_values(target, lst):
    """Determines whether or not it is possible to create the target sum using
    values in the list. Values in the list can be positive, negative, or zero.
    The function returns a tuple of exactly two items. The first is a boolean,
    that indicates true if the sum is possible and false if it is not. The second
    element in the tuple is a list of all values that add up to make the target sum."""
    if target == 0:
        return(True, [])
    if lst == []:
        return(False, [])
    use_it = subset_with_values(target - lst[0], lst[1:])
    if use_it[0]:
        return(True, [lst[0]] + use_it[1])
    return subset_with_values(target, lst[1:])