def get_adopters_for_advertisement(adoption_center, list_of_adopters, n):
    """

    :param adoption_center: A single AdoptionCenter instance
    :param list_of_adopters: A list of Adopter (or a subclass of Adopter) instances.
    :param n: The number of adopters, up to a maximum of n, who will be sent advertisements.
    :return: a list of length up to n that represents the highest scoring Adopters/Adopter Subclasses
    for the specific AdoptionCenter (You want to find the top n best Adopter matches).
    """
    ranking = [(ad, ad.get_score(adoption_center)) for ad in list_of_adopters]
    # Sort by score first, in case of duplicates - sort by adopters's name
    ranking = sorted(ranking, key=lambda x: x[0].get_name())      # sort by name
    ranking = sorted(ranking, key=lambda x: x[1], reverse=True)   #sort by score
    return [x[0] for x in ranking[0:n]]