#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
static const int MAXN = 100000;
int n, m, t;
vector<int> g[MAXN+1], gr[MAXN+1], buc[MAXN+1];
int parent[MAXN+1], semi[MAXN+1], idom[MAXN+1], dsu[MAXN+1], label[MAXN+1], dfn[MAXN+1], revord[MAXN+1];
void dfs(int u) {
t++;
dfn[u] = t;
revord[t] = u;
label[u] = u;
semi[u] = t;
dsu[u] = u;
for (int w: g[u]) {
if (!dfn[w]) {
parent[w] = u;
dfs(w);
}
gr[w].push_back(u);
}
}
int findr(int v) {
if (dsu[v] == v) return v;
int p = findr(dsu[v]);
if (semi[label[dsu[v]]] < semi[label[v]]) label[v] = label[dsu[v]];
return dsu[v] = p;
}
void unite(int u, int v) {
dsu[v] = u;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; i++) {
int a, b;
cin >> a >> b;
g[a].push_back(b);
}
dfs(1);
for (int i = t; i >= 2; i--) {
int w = revord[i], p = parent[w];
for (int v: gr[w]) {
if (dfn[v]) {
findr(v);
if (semi[label[v]] < semi[w]) semi[w] = semi[label[v]];
}
}
buc[revord[semi[w]]].push_back(w);
unite(p, w);
for (int v: buc[p]) {
findr(v);
if (semi[label[v]] < semi[p]) idom[v] = label[v];
else idom[v] = p;
}
buc[p].clear();
}
for (int i = 2; i <= t; i++) {
int w = revord[i];
if (idom[w] != revord[semi[w]]) idom[w] = idom[idom[w]];
}
idom[1] = 1;
vector<bool> isDom(n+1,false);
int x = n;
while (x && !isDom[x]) {
isDom[x] = true;
x = idom[x];
if (x == 0) break;
}
vector<int> ans;
for (int i = 1; i <= n; i++) {
if (isDom[i]) ans.push_back(i);
}
cout << ans.size() << "\n";
for (int i = 0; i < (int)ans.size(); i++) {
cout << ans[i];
if (i+1 < (int)ans.size()) cout << " ";
}
cout << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RhdGljIGNvbnN0IGludCBNQVhOID0gMTAwMDAwOwppbnQgbiwgbSwgdDsKdmVjdG9yPGludD4gZ1tNQVhOKzFdLCBncltNQVhOKzFdLCBidWNbTUFYTisxXTsKaW50IHBhcmVudFtNQVhOKzFdLCBzZW1pW01BWE4rMV0sIGlkb21bTUFYTisxXSwgZHN1W01BWE4rMV0sIGxhYmVsW01BWE4rMV0sIGRmbltNQVhOKzFdLCByZXZvcmRbTUFYTisxXTsKCnZvaWQgZGZzKGludCB1KSB7CiAgICB0Kys7CiAgICBkZm5bdV0gPSB0OwogICAgcmV2b3JkW3RdID0gdTsKICAgIGxhYmVsW3VdID0gdTsKICAgIHNlbWlbdV0gPSB0OwogICAgZHN1W3VdID0gdTsKICAgIGZvciAoaW50IHc6IGdbdV0pIHsKICAgICAgICBpZiAoIWRmblt3XSkgewogICAgICAgICAgICBwYXJlbnRbd10gPSB1OwogICAgICAgICAgICBkZnModyk7CiAgICAgICAgfQogICAgICAgIGdyW3ddLnB1c2hfYmFjayh1KTsKICAgIH0KfQoKaW50IGZpbmRyKGludCB2KSB7CiAgICBpZiAoZHN1W3ZdID09IHYpIHJldHVybiB2OwogICAgaW50IHAgPSBmaW5kcihkc3Vbdl0pOwogICAgaWYgKHNlbWlbbGFiZWxbZHN1W3ZdXV0gPCBzZW1pW2xhYmVsW3ZdXSkgbGFiZWxbdl0gPSBsYWJlbFtkc3Vbdl1dOwogICAgcmV0dXJuIGRzdVt2XSA9IHA7Cn0KCnZvaWQgdW5pdGUoaW50IHUsIGludCB2KSB7CiAgICBkc3Vbdl0gPSB1Owp9CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICAgICAgaW50IGEsIGI7CiAgICAgICAgY2luID4+IGEgPj4gYjsKICAgICAgICBnW2FdLnB1c2hfYmFjayhiKTsKICAgIH0KCiAgICBkZnMoMSk7CiAgICBmb3IgKGludCBpID0gdDsgaSA+PSAyOyBpLS0pIHsKICAgICAgICBpbnQgdyA9IHJldm9yZFtpXSwgcCA9IHBhcmVudFt3XTsKICAgICAgICBmb3IgKGludCB2OiBnclt3XSkgewogICAgICAgICAgICBpZiAoZGZuW3ZdKSB7CiAgICAgICAgICAgICAgICBmaW5kcih2KTsKICAgICAgICAgICAgICAgIGlmIChzZW1pW2xhYmVsW3ZdXSA8IHNlbWlbd10pIHNlbWlbd10gPSBzZW1pW2xhYmVsW3ZdXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBidWNbcmV2b3JkW3NlbWlbd11dXS5wdXNoX2JhY2sodyk7CiAgICAgICAgdW5pdGUocCwgdyk7CiAgICAgICAgZm9yIChpbnQgdjogYnVjW3BdKSB7CiAgICAgICAgICAgIGZpbmRyKHYpOwogICAgICAgICAgICBpZiAoc2VtaVtsYWJlbFt2XV0gPCBzZW1pW3BdKSBpZG9tW3ZdID0gbGFiZWxbdl07CiAgICAgICAgICAgIGVsc2UgaWRvbVt2XSA9IHA7CiAgICAgICAgfQogICAgICAgIGJ1Y1twXS5jbGVhcigpOwogICAgfQogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gdDsgaSsrKSB7CiAgICAgICAgaW50IHcgPSByZXZvcmRbaV07CiAgICAgICAgaWYgKGlkb21bd10gIT0gcmV2b3JkW3NlbWlbd11dKSBpZG9tW3ddID0gaWRvbVtpZG9tW3ddXTsKICAgIH0KICAgIGlkb21bMV0gPSAxOwoKICAgIHZlY3Rvcjxib29sPiBpc0RvbShuKzEsZmFsc2UpOwogICAgaW50IHggPSBuOwogICAgd2hpbGUgKHggJiYgIWlzRG9tW3hdKSB7CiAgICAgICAgaXNEb21beF0gPSB0cnVlOwogICAgICAgIHggPSBpZG9tW3hdOwogICAgICAgIGlmICh4ID09IDApIGJyZWFrOwogICAgfQoKICAgIHZlY3RvcjxpbnQ+IGFuczsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGlmIChpc0RvbVtpXSkgYW5zLnB1c2hfYmFjayhpKTsKICAgIH0KICAgIGNvdXQgPDwgYW5zLnNpemUoKSA8PCAiXG4iOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KWFucy5zaXplKCk7IGkrKykgewogICAgICAgIGNvdXQgPDwgYW5zW2ldOwogICAgICAgIGlmIChpKzEgPCAoaW50KWFucy5zaXplKCkpIGNvdXQgPDwgIiAiOwogICAgfQogICAgY291dCA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9