그래프의 정점들을 색칠하는 보통의 coloring 문제는 많이 알려져 있다. 하지만 형진이는 그것이 지루해져, 새로운 방식의 색칠법인 super coloring을 고안했다.
어떤 그래프의 super coloring은 각 정점에 색을 칠하는 방법으로, 서로 다른 두 정점 에 대해 다음 조건을 만족해야 한다.
- 와 가 간선으로 연결되어 있으면, 두 정점의 색은 서로 달라야 한다.
- 와 가 간선으로 연결되어 있지 않으면, 두 정점의 색은 서로 같아야 한다.
이후 형진이는 그래프 자체도 새롭게 정의해 보기로 했다. 주어진 그래프에서 원래 있던 모든 간선은 제거하고, 원래 없던 모든 간선은 새로 추가한 그래프를 반대 그래프라고 하자. 단, 자기 자신으로 가는 간선은 고려하지 않는다.
형진이는 주어진 그래프의 반대 그래프가 개의 색만으로 super coloring 가능한지 궁금해졌다.
반대 그래프를 개의 색으로 super coloring할 수 있는지 판별하고, 가능하다면 그 색칠 방법도 함께 출력하여라.
Input
입력은 다음과 같은 형식으로 주어진다.
주어지는 그래프는 개의 정점과 개의 간선을 가진 단순 무방향 그래프이다. 정점은 번부터 번까지 번호가 매겨져 있다.
Output
반대 그래프의 super coloring이 가능하다면 첫째 줄에 yes를 출력한다. 불가능하다면 첫째 줄에 no를 출력한다.
가능한 경우, 둘째 줄에 개의 정수 을 공백으로 구분하여 출력한다. 는 번 정점의 색이며, , , 중 하나여야 한다.
가능한 색칠 방법이 여러 가지라면 아무거나 출력해도 된다.
Constraints
- .
- .
- .
- .
- 같은 간선은 두 번 이상 주어지지 않는다.
Subtasks
Samples
반대 그래프에서 간선으로 연결된 정점들은 서로 다른 색이고, 간선으로 연결되지 않은 정점들은 서로 같은 색이다.
조건을 만족하는 색칠 방법이 존재하지 않는다.
원래 그래프에 간선이 없으므로, 반대 그래프는 개의 정점으로 이루어진 완전 그래프이다. 서로 다른 개의 색이 필요하므로 개의 색만으로는 불가능하다.
해설
관리자가 작성한 해설을 별도 페이지에서 볼 수 있어요.