这是一个可爱的链接
#include<bits/stdc++.h>
using namespace std;
const int maxn=10050;
vector<int> G[maxn];
int n,m,now;
int dfn[maxn],low[maxn];
bool cul[maxn];
int ans=0;
void insert(int a,int b){
G[a].push_back(b);
G[b].push_back(a);
}
void tarjan(int u,int f){
dfn[u]=low[u]=++now;
int son=0;
for(int i=0;i<G[u].size();i++){
int v=G[u][i];
if(v==f){
continue;
}
if(!dfn[v]){
tarjan(v,u);
low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u]&&u!=1){
cul[u]=1;
}
if(u==1){
son++;
}
}
low[u]=min(low[u],dfn[v]);
}
if(son>=2&&u==1){
cul[u]=1;
}
}
int main(){
cin >> n >> m;
while(m--){
int qwq,qwq2;
cin >> qwq >>qwq2;
insert(qwq,qwq2);
}
tarjan(1,-1);
for(int i=1;i<=n;i++){
if(cul[i]){
ans++;
}
}
/* for(int i=1;i<=n;i++){
cout << dfn[i] << " " << low[i] << endl;
}*/
cout << ans << endl;
for(int i=1;i<=n;i++){
if(cul[i]){
cout << i << " ";
}
}
return 0;
}