C. Обмены
ограничение по времени на тест
2 seconds
ограничение по памяти на тест
256 megabytes
ввод
stdin
вывод
stdout

За круглым столом сидят n игроков. У всех них в сумме s карт n цветов, причем на начальный момент у первого человека карты только первого цвета, у второго — второго цвета и так далее. Они могут меняться картами, согласно следующим правилам:

  • человек может отдавать в процессе обмена карту только своего цвета;
  • игрок не может брать карту цвета, уже у него имеющегося (в частности, карты своего цвета он брать не может, независимо от того раздал он их все или нет);
  • в процессе одного обмена пара людей обменивается картами (каждый человек отдает одну карту и получает одну карту).

Цель всех n человек: каждый из них должен отдать все карты, которые были у него в начале (то есть все карты своего цвета). Ваша задача указать, возможна ли такая последовательность обменов. Если ответ положительный, нужно указать все обмены.

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

В первой строке записаны целые числа n (1 ≤ n ≤ 200000) и s (1 ≤ s ≤ 200000). Вторая строка содержит n чисел — количество карт у 1-го, 2-го, ..., n-го игрока на момент начала игры. Игрок может не иметь карт вообще на момент начала игры.

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

Выведите в первой строке «No», если такая последовательность обменов невозможна, и «Yes» в противном случае. Если ответ положительный, выведите далее число k — количество обменов. Далее в k строках опишите обмены — парой номеров меняющихся игроков. Обмены и номера в обменах выводите в любом порядке.

Примеры
Входные данные
4 8
2 2 2 2
Выходные данные
Yes
4
4 3
4 2
1 3
1 2
Входные данные
6 12
1 1 2 2 3 3
Выходные данные
Yes
6
6 5
6 4
6 3
5 4
5 3
2 1
Входные данные
5 5
0 0 0 0 5
Выходные данные
No