4B класс пошел в зоопарк со своей учительницей. К несчастью для неё, детей много, а она одна, поэтому ей сложно за всеми следить. Чтобы упростить себе задачу, она решила разбить детей на группы по 2 или 3 школьника. При этом каждый школьник должен оказаться ровно в одной группе! Задача осложняется тем, что дети не хотят находится в группах с теми, кого они не знают.
В 4B n учеников. Учительница знает, с кем дружит каждый ученик (ученики дружат в обе стороны!) и что каждый дружит хотя бы с ⌈n⁄2⌉ учениками, где ⌈x⌉ — минимальное целое число, большее или равное x. Помогите учительнице разбить детей на группы.
Исходные данные
В первой строке задано целое число n (2 ≤ n ≤ 1000).
Далее идут n строк, i-я из которых содержит через пробел числа mi, 1, mi, 2, …, mi, n, каждое из этих чисел — 0 или 1 (mi, j ∈ {0, 1}). Если mi, j = 1, то это означает, что i-й и j-й школьники дружат, иначе — что они не дружат. Гарантируется, что mi, j = mj, i и что mi, i = 0.
Результат
В первой строке выведите «YES
» (без кавычек), если школьников можно поделить на группы, иначе «NO
» (без кавычек).
В случае «NO
» дальше выводить ничего не нужно.
Во второй строке выведите число k — число групп, на которые можно разбить учеников.
В i-й из следующих k строк выведите ai — размер i-й группы. Далее в той же строке выведите ai чисел через пробел — номера учеников в i-й группе. Ученики нумеруются от 1 до n в том порядке, в котором они даны во входных данных.
Примеры
исходные данные | результат |
---|
2
0 1
1 0 | YES
1
2 1 2 |
5
0 1 0 1 1
1 0 1 0 1
0 1 0 1 1
1 0 1 0 1
1 1 1 1 0 | YES
2
3 1 2 5
2 3 4 |
Автор задачи: Семён Трифочкин
Источник задачи: Уральская командная олимпиада по программированию 2020