C. Значения, которые возможно набрать
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Пари хочет купить у Ария дорогую шоколадку. У неё есть n монет, номинал i-й монеты равен ci. Шоколадка стоит k, поэтому Пари выберет некоторое подмножество монет стоимостью ровно k и отдаст его Арию.

Пари посмотрела на свои монеты и задалась следующим вопросом: после того как она отдаст Арию монеты за шоколадку, какие значения Арий сможет набрать? Пари не хочется, чтобы Арий мог набрать много разных значений. Для каждого x она хочет знать, правда ли, что существует способ заплатить Арию сумму k, так что используя эти монетки он сможет набрать данное x.

Формально, Пари хочет найти все такие x, что из какого-нибудь подмножества монет с суммой k можно выбрать подмножество монет с суммой x, то есть можно выбрать такое подмножество монет для оплаты шоколадки, что Арий сможет потом набрать сумму x.

Входные данные

В первой строке записаны два целых числа n и k (1  ≤  n, k  ≤  500) — количество монет и цена шоколадки соответственно.

В следующей строке записаны n целых чисел c1, c2, ..., cn (1 ≤ ci ≤ 500) — номиналы монет Пари.

Гарантируется, что можно набрать сумму k, используя данные монеты.

Выходные данные

В первой строке выведите единственное число q — количество подходящих x. Затем выведите в возрастающем порядке q целых чисел — суммы, которые Арий сможет набрать при каком-нибудь наборе монет, оплачивающем шоколадку.

Примеры
Входные данные
6 18
5 6 1 10 12 2
Выходные данные
16
0 1 2 3 5 6 7 8 10 11 12 13 15 16 17 18
Входные данные
3 50
25 25 50
Выходные данные
3
0 25 50