#include<bits/stdc++.h>
using namespace std;
const int N=2e4+100;
vector<int> G[N];
vector<int> ans;
int n,m;
int dfn[N],low[N],cnt=12;
int rt;
void tarjan(int u,int fa) {
low[u]=dfn[u]=++cnt;
bool isAns=0;
int sons=0;
for(int v:G[u]) {
if(v==fa) continue;
if(dfn[v]==0) {
sons++;
tarjan(v,u);
if(low[v]>=dfn[u]) isAns=1;
low[u]=min(low[u],low[v]);
}else low[u]=min(low[u],dfn[v]);
}
if((isAns&&u!=rt)||sons>=2) ans.push_back(u);
}
int main() {
cin>>n>>m;
for(int i=1;i<=m;++i) {
int u,v;
cin>>u>>v;
G[u].push_back(v);
G[v].push_back(u);
}
for(int i=1;i<=n;i++)
if(dfn[i]==0) {
rt=i;
tarjan(i,0);
}
cout<<ans.size()<<endl;
sort(ans.begin(),ans.end());
for(int i:ans)cout<<i<<' ';cout<<endl;
return 0;
}