Книжный клуб Порто полон энтузиазма в связи с ежегодным мероприятием по обмену книгами! Каждый год участники приносят свою любимую книгу и пытаются найти другую понравившуюся книгу, которая принадлежит кому-то, кто готов с ними торговать.
Я был на этой книжной бирже раньше, и определенно не хочу пропустить ее в этом году. Но чувствую, что торговля должна быть улучшена. В прошлом пары участников, заинтересованные в книгах друг друга, просто обменивались: представьте, что человек a принес книгу, которая понравилась человеку b, и наоборот, тогда a и b обменяются своими книгами.
Затем я понял, что многие участники остались с той же книгой, с которой они пришли ... Если бы вместо поиска пар я стал искать тройки, то смог бы найти более стоящие обмены! Представьте, что участнику a нравится только книга участника b, в то время как b нравится только книга c, а c нравится книга a. Эти три человека могут обменять свои книги в цикле, и все будут счастливы!
Но зачем останавливаться на тройках? Циклы могут быть больше и больше! Не могли бы Вы помочь мне узнать, можно ли всем выйти с новой книгой? Будьте осторожны, потому что участники не отдадут свою книгу, не получив взамен понравившуюся.
Зная членов книжного клуба и книги, которые им нравятся, сможем ли мы найти циклы, чтобы каждый получил новую книгу?
В первой строке заданы два целых числа: n (2≤n≤10000) — количество человек и m (1≤m≤20000,m≤n2−n) — общее количество "деклараций интереса". Каждая из следующих m строк содержит два целых числа a и b, что указывает на то, что члену a нравится книга, которую принес член b (0≤a,b<n). Числа a и b никогда не будут одинаковыми (участнику никогда не нравится принесенная им же книга).
Выведите YES, если мы сможем найти новую книгу для каждого члена клуба, и NO если это невозможно.