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

# Инициализация границ для бинарного поиска
left = 1  # Минимальная стоимость проживания
right = max(costs)  # Максимальная стоимость проживания

possible_costs = set()  # Множество для хранения возможных стоимостей

# Бинарный поиск
while left <= right:
    mid = (left + right) // 2

    total_cost = 0
    consecutive_days = 0

    for cost in costs:
        if cost <= mid:
            consecutive_days += 1
            if consecutive_days == n:
                total_cost += mid * n
                break
        else:
            total_cost += consecutive_days * mid
            consecutive_days = 0

    if total_cost >= mid * n:
        possible_costs.add(mid)
        left = mid + 1
    else:
        right = mid - 1

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