포르투의 독서 모임은 해마다 책 교환 행사를 연다. 회원은 각자 아끼는 책을 한 권씩 들고 와서, 마음에 드는 다른 책을 찾아 그 책의 주인과 바꾼다.
예전에는 서로의 책을 마음에 들어 하는 두 사람만 책을 바꿨다. 회원 A가 들고 온 책을 회원 B가 마음에 들어 하고 B가 들고 온 책을 A가 마음에 들어 하면, 두 사람이 책을 맞바꾸는 식이다. 그래서 들고 온 책을 그대로 들고 돌아가는 회원이 많았다.
짝 대신 순환을 찾으면 교환이 더 늘어난다. A는 B의 책만 마음에 들어 하고, B는 C의 책만, C는 A의 책만 마음에 들어 한다고 하자. 이 세 사람이 책을 한 방향으로 돌리면 모두 새 책을 얻는다. 순환의 길이는 3보다 길어도 된다.
회원 수와 회원이 마음에 들어 하는 책이 주어진다. 모든 회원이 새 책을 받도록 책을 나눌 수 있는지 판정하는 프로그램을 작성하시오. 회원은 마음에 들어 하는 책을 받을 때만 자기 책을 내놓는다. 즉 모든 회원 i에게 서로 다른 책 p(i)를 하나씩 배정하되, 회원 i는 p(i)를 마음에 들어 해야 한다.
첫째 줄에 회원 수 N과 관심 표명의 수 M이 공백으로 구분되어 주어진다.
다음 M개 줄에는 각각 두 정수 A와 B가 주어진다. 회원 A가 회원 B의 책을 마음에 들어 한다는 뜻이다. A와 B는 항상 다르다. 회원이 자기가 들고 온 책을 마음에 들어 하는 일은 없다. 같은 (A,B) 쌍은 두 번 주어지지 않는다.
모든 회원이 새 책을 받도록 나눌 수 있으면 YES를, 그럴 수 없으면 NO를 출력한다.