Изменения рейтингов за последние раунды временно удалены. Скоро они будут возвращены. ×

E. Дамский магазин
ограничение по времени на тест
8 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В городе Крайняя Туле открывается дамский магазин. Для подготовки к открытию дамского магазина было куплено n пакетов. Каждый пакет характеризуется суммарным весом предметов ai, которые можно туда положить. Довольно странно, но в такие пакеты нельзя положить набор предметов, суммарный вес которых строго меньше ai. Однако веса товаров, которые будут продаваться в магазине еще не определены. Их-то и требуется сейчас определить.

Нужно найти набор весов товаров p1, p2, ..., pk (1 ≤ p1 < p2 < ... < pk), такой, что:

  1. Любой пакет будет востребован. То есть, для любого i (1 ≤ i ≤ n) найдется набор товаров, такой, что их суммарный вес равен ai. Считается, что имеется неограниченное количество товара каждого веса. А в пакет можно класть несколько товаров одного веса.
  2. Для любого набора товаров с суммарным весом, меньшим либо равным m, существует пакет, в который можно положить этот набор. Аналогично, в набор товаров может входить несколько товаров одинакового веса.
  3. Из всех наборов весов товаров, удовлетворяющих пунктам 1 и 2, нужно найти минимальный набор по количеству весов. Другими словами, значение k должно быть как можно меньше.

Найдите и выведите любой подходящий набор.

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

В первой строке записаны через пробел целые числа n и m (1 ≤ n, m ≤ 106). Во второй строке записаны через пробел n различных целых чисел a1, a2, ..., an (1 ≤ a1 < a2 < ... < an ≤ m) — вместимости пакетов.

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

Выведите «NO» (без кавычек) в первой строке, если не существует набора pi, удовлетворяющего условиям.

Иначе в первой строке выведите «YES» (без кавычек), во второй — целое число k (количество чисел в минимальном по количеству элементов подходящем наборе), в третьей строке выведите через пробел k целых чисел p1, p2, ..., pk (1 ≤ p1 < p2 < ... < pk). Если решений несколько — выведите любое.

Примеры
Входные данные
6 10
5 6 7 8 9 10
Выходные данные
YES
5
5 6 7 8 9
Входные данные
1 10
1
Выходные данные
NO
Входные данные
1 10
6
Выходные данные
YES
1
6