def where_am_I(layers, distance_from_start):
    """
    distance_from_start is the distance from the start of layer 0.
    
    layers is a list of each layer; each element should be a Layer object.
    
    Return a dictionary {'current_layer':X, 'distance_into_layer':Y}.
    (Note: X is a Layer object, not an integer index.)
    """
    d = distance_from_start
    if distance_from_start < 0:
        raise ValueError('Point is outside all layers!')
    layer_index = 0
    while layer_index <= (len(layers) - 1):
        current_layer = layers[layer_index]
        if distance_from_start <= current_layer.thickness:
            return {'current_layer':current_layer,
                    'distance_into_layer':distance_from_start}
        else:
            distance_from_start -= current_layer.thickness
            layer_index += 1
    raise ValueError('Point is outside all layers! distance_from_start='
                       + str(d))