n, m = map(int, input().split())
costs = list(map(int, input().split()))

# Находим минимальное и максимальное значение стоимости
min_cost = min(costs)
max_cost = max(costs)

# Функция для проверки, можно ли использовать данную стоимость для оплаты
def is_possible(cost):
    total = 0
    for c in costs:
        total += min(c, cost)
    return total >= n * cost

# Бинарный поиск по возможным стоимостям
left, right = min_cost, max_cost
possible_costs = set()

while left <= right:
    mid = (left + right) // 2
    if is_possible(mid):
        possible_costs.add(mid)
        left = mid + 1
    else:
        right = mid

# Вывод результатов
print(len(possible_costs))
print(*sorted(possible_costs))
