Пусть нам известны степени (количество ребер, инцидентных данной вершине) всех вершин неориентированного графа. Требуется построить неориентированный граф без петель и кратных ребер с заданными степенями вершин или сказать, что это невозможно.
Формат входных данных
Первая строка входного файла содержит натуральное число N (1 <= N <= 500), а во второй строке N чисел - степени вершин.
Формат выходных данных
В первой строке выходного файла выдать слово 'Yes', если граф построить можно, или 'No', если нет. Если построить возможно, то выдать в следующей строке количество ребер, далее список ребер, заданных парой вершин.
Примеры
№ | Входные данные | Выходные данные |
1
|
3
2 2 2
|
Yes
3
1 2
1 3
2 3
|