#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> G;
// bitset<100000> Seen;
bool Seen[100000]={0};
vector<int> ans;
int n, var=0;

bool dfs(int v){
    // cout<<"ZAY "<<v<<'\n';
    if (v==0 and Seen[0]){
        if (var==n){
            ans.push_back(v+1);
            return true;
        }
        else{
            // cout<<"Vyi\n";
            return false;
        }
    }
    if (Seen[v]){
        return false;
    }
    // cout<<"ZAY "<<v<<'\n';
    Seen[v]=true;
    ++var;
    for (auto x: G[v]){
        // cout<<v<<' '<<x<<'\n';
        if (dfs(x)){
            ans.push_back(v+1);
            return true;
        }
    }
    Seen[v]=false;
    --var;
    // cout<<"Vyi\n";
    return false;
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

	int m;
    cin>>n>>m;
    G.resize(n);
    int x,y;
    for (int i=0; i<m; ++i){
        cin>>x>>y;
        G[x-1].push_back(y-1);
        // cout<<x-1<<' '<<y-1<<'\n';
    }
    if (dfs(0)){
        cout<<"YES\n";
        for (int i=n; i>=0; --i){
            cout<<ans[i]<<' ';
        }
    }
    else{
        cout<<"NO\n";
    }
    return 0;
}
