#include <bits/stdc++.h>
#define fst ios_base::sync_with_stdio(0); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define PI acos(-1.0)
#define rd freopen("ip.txt","r",stdin)
#define wr freopen("op.txt", "w", stdout)
#define wis(x) cerr << #x << " is " << x << endl;
#define mem(array,int) memset(array,int,sizeof(array))
#define lld long long int
#define nl cout<<endl;
#define mx 200009
#define MOD 1000000007
#define pii pair<int,int>
#define INF 1000009
using namespace std;

//const int mx = 1e5+5;




vector<int>G[mx],city;

int color[mx] ,vis[mx],par[mx],dist[mx],N,E;



void DFS(int n){


    color[n] = 1;
    vis[n]++;

    for (int i=0; i<G[n].size(); i++) {
        int x = G[n][i];

        if (color[x] == 0) {
            DFS(x);
        }
    }
    // color[n] = 2;
    //cout<<n<<" ";

}



int main()
{

  //  rd;
    //wr;
    fst;

    

    while(cin>>N>>E)
    {
        
        for(int i=0;i<E;i++)
        {
            int u,v;
            cin >> u >> v;
            G[u].push_back(v);
           // G[v].push_back(u);
        }
        
        for (int i = 1; i <= N; ++i)
        {
            DFS(i);
            mem(color,0);
           // nl;
        }

       // int lim = sizeof(vis)/sizeof(*vis);
        for (int i = 1; i <= N ; ++i)
        {
            if (vis[i] == N)
            {
                city.push_back(i);
            }
          //  printf("%d == %d\n",i,vis[i] );
        }
        int lim = city.size();
        //cout<<lim<<endl;

        printf("%d\n",lim );
        for (int i = 0; i < lim; ++i)
        {
           // cout<<city[i]<<" ";
            printf("%d ",city[i] );
        }
        nl;
        mem(vis,0);
        mem(color,0);
        for (int i = 0; i < mx; ++i)
        {
            G[i].clear();
        }


    }

    
    return 0;
}