def buscar_vuelos_escala(vuelos: dict, origen: str, destino: str) -> list:
    """ Buscar vuelos (con escala)
    Parámetros:
      vuelos (dict): Es un diccionario de diccionarios con la información de los vuelos.
      origen (str): El código del aeropuerto de origen
      destino (str): El código del aeropuerto de destino
    Retorno:
      list: Retorna una lista con los itinerarios posibles entre el origen y el destino. Cada itinerario debe
            ser una lista con los códigos de los vuelos que componen el itinerario. Si el itinerario no tiene
            escalas, tendrá un solo elemento (el código del vuelo directo). Si el itinerario tiene una escala
            tendrá dos códigos (el código del primer vuelo seguido del código del segundo vuelo).
    """
    lista = []
    if vuelos != {}:
        # Vuelos directos.
        for codigo_vuelo in vuelos:
            if vuelos[codigo_vuelo]['origen'] == origen and vuelos[codigo_vuelo]['destino'] == destino:
                lista.append([codigo_vuelo])
        # Vuelos con una escala
        codigos_origen = []
        codigos_destino = []
        for codigo_vuelo in vuelos:
            diccionario = vuelos[codigo_vuelo]
            if diccionario['origen'] == origen and diccionario['destino'] != destino:
                codigos_origen.append(codigo_vuelo)
            if diccionario['destino'] == destino and diccionario['origen'] != origen:
                codigos_destino.append(codigo_vuelo)
        for a in codigos_origen:
            for b in codigos_destino:
                llegada_a = (vuelos[a]['salida'] + vuelos[a]['duracion'] + vuelos[a]['retraso']) / 60
                salida_b = (vuelos[b]['salida']) / 60
                if llegada_a < salida_b:
                    if vuelos[a]['destino'] == vuelos[b]['origen']:
                        lista.append([a, b])
    return lista