def gen_tour_D(fest_D, art_L):
    '''
    INPUT: 
    - ``fest_D`` és un diccionari d'events musical on la *clau* és el nom de l'event i el *valor* eés una llista del *dies* on cada dia és una llista on el primer element és una data (tuple de 3 enters que corresponen a l'any, mes i any) i al resta són noms d'artistes (string) programats per aquell dia.
    - ``art_L`` és una llista de noms d'artistes (strings)

    OUTPUT: un diccionari on la *clau* són els elements d' ``art_L`` i *valor* és una llista de *bolos* on cada *bolo* és un tuple amb dos components: la *data* del bolo (en el mateix format que a l'entrada) i un nom d'event on és el bolo.
    '''
    tour_D = cnst_tour_D(fest_D, art_L)
    sort_tour_D(tour_D)
    return tour_D

def cnst_tour_D(fest_D, art_L):
    tour_D = {}
    for art in art_L:
        tour_D[art] = []
        for fest_name in fest_D:
            date = find_art(art, fest_D[fest_name])
            if date != ():
                tour_D[art].append((date, fest_name))
    return tour_D

def find_art(art, fest_dates_L):
    for fest_date in fest_dates_L:
        if art in fest_date[1:]:
            return fest_date[0]
    return ()

def sort_tour_D(tour_D):
    for k in tour_D:
        tour_D[k].sort()
