#include <bits/stdc++.h>

using namespace std;

vector<int> g[100000], g2[100000];
set<int> relaxed[100000];
bool used[100000];
bool res=false, er=false;
int p[100000], entering[100000], fin, vis, n, m;

void dfs(int v)
{
    used[v]=true;
    vis++;
    if(vis==n)
    {
        for(auto i : g[v])
        {
            if(!i)
            {
                fin=v;
                res=true;
                return;
            }
        }
    }
    int w=0, l=0;
    for(auto i : g[v])
    {
        if(!used[i] && entering[i]==1)
        {
            w++;
            l=i;
        }
    }
    if(w>1)
    {
        er=true;
        //cout<<v<<'\n';
        return;
    }
    else if(w)
    {
        p[l]=v;
        dfs(l);
    }
    else
    {
        for(auto i : g[v])
        {
            if(!used[i])
            {
                p[i]=v;
                dfs(i);
            }
            if(res || er) return;
        }
    }
    used[v]=false;
    vis--;
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
    for(int i=0; i<m; i++)
    {
        int a, b;
        cin>>a>>b;
        g[a-1].push_back(b-1);
        //g2[a-1].push_back(b-1);
        //g2[b-1].push_back(a-1);
        entering[b-1]++;
    }
        dfs(0);
        if(res && !er)
        {
            cout<<"YES\n";
            vector<int> wae;
            p[0]=-1;
            wae.push_back(0);
            int v=fin;
            while(v+1)
            {
                wae.push_back(v);
                v=p[v];
            }
            reverse(wae.begin(), wae.end());
            for(auto i : wae)   cout<<i+1<<' ';
        }
        else cout<<"NO\n";
    return 0;
}
