#include<bits/stdc++.h>
using namespace std;
const long long maxx=0x3f3f3f3f3f3f3f3f;
const long long minn=0xc0c0c0c0c0c0c0c0;
const double pi = 4.0*atan(1.0);
#define int long long
#define f(i,n,m) for(long long i=n;i<=m;++i)
#define unf(i,n,m) for(long long i=n;i>=m;--i)
#define kong NULL
#define debug cout<<"sss"<<endl;
int n,m,low[200100],dfn[200100];
vector<int>mp[200100];
int fact[200100];
int zhan[200100];
int cha[200100];
int top=0;
vector<int>zh;
int tim;
void dfs(int x,int fa){
tim++,low[x]=dfn[x]=tim;
int ch=0;
for(auto it:mp[x]){
if(!dfn[it]){
dfs(it,fa);
low[x]=min(low[x],low[it]);
if(low[it]>=dfn[x]&&x!=fa)fact[x]=1;
if(x==fa)ch++;
}
low[x]=min(low[x],dfn[it]);
}
if(ch>2&&x==fa)fact[x]=1;
}
void solve() {
memset(dfn,0,sizeof(dfn));
cin>>n>>m; f(i,1,n)mp[i].clear();
f(i,1,m){
int x,y;
cin>>x>>y;
mp[x].push_back(y);
mp[y].push_back(x);
}
f(i,1,n){
if(!dfn[i])dfs(i,i);
}
int ans=0;
f(i,1,n){
if(fact[i])ans++;
}
cout<<ans<<endl;
f(i,1,n){
if(fact[i])cout<<i<<" ";
}
}
signed main( )
{
ios::sync_with_stdio(false);
solve();
return 0;
}