#include<bits/stdc++.h> using namespace std; const int N=2e4+10; const int M=6e4+10; int n,m,tot,num,top,root,cut[N],dfn[N],low[N],lin[N],Next[M<<1],ver[M<<1]; void add(int x,int y){ ver[++tot]=y;Next[tot]=lin[x];lin[x]=tot; } void tarjan(int x){ dfn[x]=low[x]=++num;bool flag=0; for(int i=lin[x];i;i=Next[i]){ int y=ver[i]; if(!dfn[y]){ tarjan(y); low[x]=min(low[x],low[y]); if(dfn[x]<=low[y]){ if(flag||root!=x){ if(!cut[x]) top++; cut[x]=1; } flag=1; } }else low[x]=min(low[x],dfn[y]); } } int main(){ scanf("%d",&n); int x,y; while(~scanf("%d%d",&x,&y)){ if(x!=y) add(x,y);add(y,x); } for(int i=1;i<=n;++i) if(!dfn[i]) root=i,tarjan(i); printf("%d\n",top); for(int i=1;i<=n;++i) if(cut[i]) printf("%d\n",i); return 0; }