문 닫는 집사

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

당신은 큰 저택의 집사다. 방이 너무 많아서 방마다 이름 대신 번호만 붙어 있다(0번 방, 1번 방, 2번 방, 3번 방 등등). 주인은 유난히 덤벙거리는 사람이라 저택의 한 층을 돌아다니며 문을 열어 놓고 다닌다. 당신은 오랜 세월 동안 어질러진 방을 한 번의 경로로 지나가면서 지나온 문을 바로 닫는 요령을 익혔다.

가장 어려운 부분은 다음 세 조건을 모두 지키는 경로가 있는지 판단하는 것이다.

  1. 문을 지나간 직후에 그 문을 항상 닫는다.
  2. 닫힌 문은 절대 열지 않는다.
  3. 모든 문이 닫힌 상태로 자기 방인 0번 방에서 끝난다.

이 문제에서는 방 목록과 방 사이에 열려 있는 문, 그리고 출발하는 방이 주어진다. 실제 경로를 찾을 필요는 없고 그런 경로가 있는지만 판단하면 된다.

입력

입력은 데이터 집합 1개 이상 100개 이하로 이루어진다. 각 데이터 집합은 아래 형식을 따르고, 집합 사이에 빈 줄은 없다.

데이터 집합 하나는 세 부분으로 나뉜다.

  1. 시작 줄: "START M N" 한 줄이다. M은 집사가 출발하는 방 번호이고, N은 저택의 방 개수다(1N201 \le N \le 20).
  2. 방 목록: N개의 줄이다. 각 줄에는 그 방에서 자기보다 번호가 큰 방으로 열려 있는 문을 모두 적는다. 예를 들어 3번 방에서 1번, 5번, 7번 방으로 문이 열려 있다면 3번 방의 줄은 "5 7"이다. 목록의 첫 줄은 0번 방, 둘째 줄은 1번 방이고, 마지막 줄은 N1N-1번 방이다. 줄이 비어 있기도 하다. 특히 마지막 줄은 번호가 가장 큰 방이라 항상 비어 있다. 한 줄 안에서 이웃한 방 번호는 항상 오름차순으로 나온다. 두 방이 여러 개의 문으로 이어져 있기도 하다.
  3. 끝 줄: "END" 한 줄이다.

마지막 데이터 집합 다음에는 "ENDOFINPUT" 한 줄이 온다.

한 데이터 집합에 들어 있는 문은 100개를 넘지 않는다.

출력

데이터 집합마다 정확히 한 줄을 출력한다. 위 규칙을 지키면서 집사가 자기 방으로 걸어 들어가 마지막 남은 열린 문까지 닫을 수 있으면 "YES X"를 출력한다. X는 집사가 닫은 문의 개수다. 그렇지 않으면 "NO"를 출력한다.

열린 문이 하나도 없고 집사가 이미 0번 방에 있으면 문을 0개 닫은 채로 조건을 모두 만족하므로 "YES 0"을 출력한다.