#include <bits/stdc++.h>
#define ll long long
#define en "\n"
#define matrix vector<vector<int>>
#define fi first
#define se second
#define pb push_back
#define elif else if
using namespace std;
const int MAXN = 1e5 + 5, INF = INT_MAX, MOD = 1e9 + 7;
ll n, t = 1, m, cnt, sccid;
vector<ll> a(MAXN), scc(MAXN), num(MAXN), low(MAXN), out_deg(MAXN);
matrix adj;
stack<int> st;
void dfs(int u){
low[u] = num[u] = ++cnt;
st.push(u);
for (int v : adj[u]){
if (!scc[v]){
if (num[v] == 0){
dfs(v);
low[u] = min(low[u], low[v]);
}
else low[u] = min(low[u], num[v]);
}
}
if (num[u] == low[u]){
++sccid;
while (1){
int v = st.top();
st.pop();
scc[v] = sccid;
if (v == u) break;
}
}
}
void input(){
cin >> n >> m;
adj.assign(n + 1, {});
while (m--){
int u, v;
cin >> u >> v;
adj[u].pb(v);
}
}
void solve(){
for (int i = 1; i <= n; i++)
if (!num[i]) dfs(i);
vector<int> out_scc(sccid + 1, 0);
for (int u = 1; u <= n; u++){
for (int v : adj[u]){
if (scc[u] != scc[v]){
out_scc[scc[u]]++;
}
}
}
int cnt_zero = 0;
int target_scc = -1;
for (int i = 1; i <= sccid; i++){
if (out_scc[i] == 0){
cnt_zero++;
target_scc = i;
}
}
if (cnt_zero != 1){
cout << 0;
} else {
vector<int> res;
for (int i = 1; i <= n; i++){
if (scc[i] == target_scc) res.pb(i);
}
cout << res.size() << en;
for (int x : res) cout << x << " ";
}
}
int main(){
//freopen("input.inp", "r", stdin);
//freopen("input.out", "w", stdout);
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
//cin >> t;
while (t--){
input();
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZW4gIlxuIgojZGVmaW5lIG1hdHJpeCB2ZWN0b3I8dmVjdG9yPGludD4+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBlbGlmIGVsc2UgaWYKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhOID0gMWU1ICsgNSwgSU5GID0gSU5UX01BWCwgTU9EID0gMWU5ICsgNzsKbGwgbiwgdCA9IDEsIG0sIGNudCwgc2NjaWQ7CnZlY3RvcjxsbD4gYShNQVhOKSwgc2NjKE1BWE4pLCBudW0oTUFYTiksIGxvdyhNQVhOKSwgb3V0X2RlZyhNQVhOKTsKbWF0cml4IGFkajsKc3RhY2s8aW50PiBzdDsKCnZvaWQgZGZzKGludCB1KXsKICAgIGxvd1t1XSA9IG51bVt1XSA9ICsrY250OwogICAgc3QucHVzaCh1KTsKICAgIGZvciAoaW50IHYgOiBhZGpbdV0pewogICAgICAgIGlmICghc2NjW3ZdKXsKICAgICAgICAgICAgaWYgKG51bVt2XSA9PSAwKXsKICAgICAgICAgICAgICAgIGRmcyh2KTsKICAgICAgICAgICAgICAgIGxvd1t1XSA9IG1pbihsb3dbdV0sIGxvd1t2XSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBsb3dbdV0gPSBtaW4obG93W3VdLCBudW1bdl0pOwogICAgICAgIH0KICAgIH0KICAgIGlmIChudW1bdV0gPT0gbG93W3VdKXsKICAgICAgICArK3NjY2lkOwogICAgICAgIHdoaWxlICgxKXsKICAgICAgICAgICAgaW50IHYgPSBzdC50b3AoKTsKICAgICAgICAgICAgc3QucG9wKCk7CiAgICAgICAgICAgIHNjY1t2XSA9IHNjY2lkOwogICAgICAgICAgICBpZiAodiA9PSB1KSBicmVhazsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgaW5wdXQoKXsKICAgIGNpbiA+PiBuID4+IG07CiAgICBhZGouYXNzaWduKG4gKyAxLCB7fSk7CiAgICB3aGlsZSAobS0tKXsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFkalt1XS5wYih2KTsKICAgIH0KfQoKdm9pZCBzb2x2ZSgpewogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIGlmICghbnVtW2ldKSBkZnMoaSk7CiAgICB2ZWN0b3I8aW50PiBvdXRfc2NjKHNjY2lkICsgMSwgMCk7IAogICAgZm9yIChpbnQgdSA9IDE7IHUgPD0gbjsgdSsrKXsKICAgICAgICBmb3IgKGludCB2IDogYWRqW3VdKXsKICAgICAgICAgICAgaWYgKHNjY1t1XSAhPSBzY2Nbdl0pewogICAgICAgICAgICAgICAgb3V0X3NjY1tzY2NbdV1dKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpbnQgY250X3plcm8gPSAwOwogICAgaW50IHRhcmdldF9zY2MgPSAtMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHNjY2lkOyBpKyspewogICAgICAgIGlmIChvdXRfc2NjW2ldID09IDApewogICAgICAgICAgICBjbnRfemVybysrOwogICAgICAgICAgICB0YXJnZXRfc2NjID0gaTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoY250X3plcm8gIT0gMSl7CiAgICAgICAgY291dCA8PCAwOwogICAgfSBlbHNlIHsKICAgICAgICB2ZWN0b3I8aW50PiByZXM7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICAgICAgaWYgKHNjY1tpXSA9PSB0YXJnZXRfc2NjKSByZXMucGIoaSk7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgcmVzLnNpemUoKSA8PCBlbjsKICAgICAgICBmb3IgKGludCB4IDogcmVzKSBjb3V0IDw8IHggPDwgIiAiOwogICAgfQp9CgppbnQgbWFpbigpewogICAgLy9mcmVvcGVuKCJpbnB1dC5pbnAiLCAiciIsIHN0ZGluKTsKICAgIC8vZnJlb3BlbigiaW5wdXQub3V0IiwgInciLCBzdGRvdXQpOwogICAgCiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7IGNvdXQudGllKG51bGxwdHIpOwogICAgCiAgICAvL2NpbiA+PiB0OwogICAgd2hpbGUgKHQtLSl7CiAgICAgICAgaW5wdXQoKTsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K