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

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

# Инициализируем множество возможных стоимостей первым днем
possible_costs.add(costs[0])

for i in range(1, m):
    # Создаем временное множество для текущего дня
    temp_set = set()

    # Для каждой возможной стоимости номера в предыдущий день
    for cost in possible_costs:
        # Проверяем, какую стоимость добавить во временное множество
        temp_set.add(cost + costs[i])
        temp_set.add(cost - costs[i])

    # Обновляем множество возможных стоимостей с учетом текущего дня
    possible_costs = temp_set

# Выводим количество возможных стоимостей и сами стоимости
print(len(possible_costs))
print(*sorted(possible_costs))
