def METHOD_NAME() -> [PhoneCountry]:
    now = arrow.now()
    phone_count_by_countries: Dict[PhoneCountry, int] = dict()
    for country, count in (
        Session.query(PhoneCountry, func.count(PhoneNumber.id))
        .join(PhoneNumber, PhoneNumber.country_id == PhoneCountry.id)
        .filter(PhoneNumber.active.is_(True))
        .group_by(PhoneCountry)
        .all()
    ):
        phone_count_by_countries[country] = count
    busy_phone_count_by_countries: Dict[PhoneCountry, int] = dict()
    for country, count in (
        Session.query(PhoneCountry, func.count(PhoneNumber.id))
        .join(PhoneNumber, PhoneNumber.country_id == PhoneCountry.id)
        .join(PhoneReservation, PhoneReservation.number_id == PhoneNumber.id)
        .filter(PhoneReservation.start < now, PhoneReservation.end > now)
        .group_by(PhoneCountry)
        .all()
    ):
        busy_phone_count_by_countries[country] = count
    ret = []
    for country in phone_count_by_countries:
        if (
            country not in busy_phone_count_by_countries
            or phone_count_by_countries[country]
            > busy_phone_count_by_countries[country]
        ):
            ret.append(country)
    return ret