#include<bits//stdc++.h>
using namespace std;
int n;
vector <vector<bool> > gr(1001, vector <bool> (1001));
vector <bool> used(100001);
set <int> s;
bool isLoop;
void dfs(int v, int par)
{
	used[v] = true;
	for(int j = 0; j < n; j++)
	{
		if(par != j && gr[v][j])
		{
			if(used[j])
			{
				isLoop = true;
				s.insert(v);
			}
			else
			{
				dfs(j, v);
				s.insert(v);
			}
		}
	}
}
int main()
{
	int m;
	cin >> n >> m;
	while(m--)
	{
		int u, v;
		cin >> u >> v;
		u--;
		v--;
		gr[u][v] = true;
	}
	dfs(0, -1);
	for(int i = 0; i < n; i++)
	{
		if(isLoop)
		{
			cout << "YES\n";
			for(set <int>:: iterator it = s.begin(); it != s.end(); it++)
			{
				cout << *it + 1 << ' ';
			}
			cout << 1;
			return 0;
		}
		if(!used[i])
		{
			dfs(i, -1);
		}
	}
	cout << "NO";
	return 0;
}