#include <vector>
#include <stdio.h>
using namespace std;

vector<vector<int>> use_mas;

void dfs(vector<vector<int>> &g, vector<int> use, int v)
{
    int f=0;
    for(int i=0;i<use.size();i++)
    {
        if(v==use[i])
        {
            use.push_back(v);
            if(v==0)use_mas.push_back(use);
            f++;
            break;
        }
    }
    if(f==0)
    {
        use.push_back(v);
        for(auto it: g[v])dfs(g, use, it);
    }
}

int main()
{
    int n, m;
    scanf("%i %i", &n, &m);
    vector<vector<int>> g(n);
    for(int i=0;i<m;i++)
    {
        int v, u;
        scanf("%i %i", &v, &u);
        v--;
        u--;
        g[v].push_back(u);
    }
    vector<int> use;
    dfs(g, use, 0);
    int f=0;
    for(auto it: use_mas)
    {
        if(it.size()==n+1 && it[0]==it[it.size()-1] && it[0]==0)
        {
            f++;
            printf("YES\n");
            for(int i=0;i<it.size();i++)printf("%i ",it[i]+1);
            break;
        }
    }
    if(f==0)printf("NO\n");

    for(auto it: use_mas)
    {
        for(int i=0;i<it.size();i++)printf("%i ",it[i]+1);
        printf("\n");
    }

}
