#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
#include <map>
#include <string>
#include <unordered_map>
#include <unordered_set>

struct node
{
	int i;
	std::vector<node*> a;
};

int main()
{
	int n, m;
	std::cin >> n >> m;
	std::vector<node> g(n + 1);
	for (int i = 0; i < m; i++)
	{
		int a, b;
		std::cin >> a >> b;
		g[a].a.push_back(&g[b]);
	}
	for (int i = 1; i < g.size(); i++)
	{
		auto& nn = g[i];
		nn.i = i;
		i++;
		if (nn.a.empty())
		{
			std::cout << "NO" << std::endl;
			return 0;
		}
	}

}
