#include <bits/stdc++.h>

using namespace std;

#define fr first
#define sc second

typedef long long ll;
const ll INF = 100000000007, DIM = 200007, MAXN = 100000;

ll tt, a[DIM], used[DIM], cnt[DIM], x, b[DIM], t[DIM], v,u,n,m,res, c, l, r;
string s;
vector<ll> g[DIM], path;

// void dfs(ll v) {
// 	path.push_back(v);
// 	used[v]=1;
// 	for(auto u : g[v]) {
// 		if(used[u]==1&&u==1&&path.size()==n){
// 			cout<<"YES\n";
// 			for(auto u : path)cout<<u<<" ";
// 			cout<<"1\n";
// 			exit(0);
// 		}
// 		if(used[u]!=1){
// 			dfs(u);
// 		}
// 	}
// 	used[v]=2;
// 	path.pop_back();
// }

// ll dfs2(ll v) {
//     used[v]=1;
//     if(g[v].size()==1)x=v;
//     for(auto u : g[v]){
//         if(!used[u]){
//             c=dfs2(u);
//             if(g[v].size() ==1 && x!=-1){
//                 g[v].clear();
//                 g[v].push_back(x);
//             }
//             x=max(c,x);
//         }
//     }
//     if(g[v].size()!=1)return -1;
//     return x;
// }

void solve(){
	cin>>n>>m;
	for(int i=1;i<=m;++i){
		cin>>v>>u;
		g[v].push_back(u);
	}
    cout<<"YES\n";
    for(int i=1;i<=n;++i)cout<<i<<" ";
    cout<<"1";
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	tt=1;
	//cin>>tt;
	while(tt--)
		solve();
	return 0;
}