#include <iostream>
#include <cmath>
#include <iomanip>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
vector<int>siz;
void IS_CUTPOINT(int u){
cout << u << endl;
}
const int MAXN =20001;
vector<int> g[MAXN];
bool used[MAXN];
int timer, tin[MAXN], fup[MAXN];
void dfs (int v, int p = -1) {
used[v] = true;
tin[v] = fup[v] = timer++;
int children = 0;
for (size_t i=0; i<g[v].size(); ++i) {
int to = g[v][i];
if (to == p) continue;
if (used[to])
fup[v] = min (fup[v], tin[to]);
else {
dfs (to, v);
fup[v] = min (fup[v], fup[to]);
if (fup[to] >= tin[v] && p != -1)
IS_CUTPOINT(v);
++children;
}
}
if (p == -1 && children > 1)
IS_CUTPOINT(v);
}
int main() {
int n,m,a,b;
cin >> n >> m;
for(int i=0;i<m;i++){
cin >> a >>b;
g[a].push_back(b);
g[b].push_back(a);
}
for(int i=0;i<n;i++){
for(auto j:g[i]){
cout << j << " ";
}
cout << endl;
}
timer = 0;
for (int i=0; i<n; ++i)
used[i] = false;
dfs (0);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogICAgICAgICAgICAgICAgI2luY2x1ZGUgPGNtYXRoPgogICAgICAgICAgICAgICAgI2luY2x1ZGUgPGlvbWFuaXA+CiAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dmVjdG9yPgogICAgICAgICAgICAgICAgI2luY2x1ZGUgPHN0cmluZz4KICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzZXQ+CiAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bWFwPgogICAgICAgICAgICAgICAgI2luY2x1ZGUgPGFsZ29yaXRobT4KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICAgdmVjdG9yPGludD5zaXo7CiAgICAgdm9pZCBJU19DVVRQT0lOVChpbnQgdSl7CiAgICAgIGNvdXQgPDwgdSA8PCBlbmRsOyAgIAogICAgIH0KICAgICAKICAgICBjb25zdCBpbnQgTUFYTiA9MjAwMDE7CiAgIHZlY3RvcjxpbnQ+IGdbTUFYTl07CmJvb2wgdXNlZFtNQVhOXTsKaW50IHRpbWVyLCB0aW5bTUFYTl0sIGZ1cFtNQVhOXTsKIAp2b2lkIGRmcyAoaW50IHYsIGludCBwID0gLTEpIHsKCXVzZWRbdl0gPSB0cnVlOwoJdGluW3ZdID0gZnVwW3ZdID0gdGltZXIrKzsKCWludCBjaGlsZHJlbiA9IDA7Cglmb3IgKHNpemVfdCBpPTA7IGk8Z1t2XS5zaXplKCk7ICsraSkgewoJCWludCB0byA9IGdbdl1baV07CgkJaWYgKHRvID09IHApICBjb250aW51ZTsKCQlpZiAodXNlZFt0b10pCgkJCWZ1cFt2XSA9IG1pbiAoZnVwW3ZdLCB0aW5bdG9dKTsKCQllbHNlIHsKCQkJZGZzICh0bywgdik7CgkJCWZ1cFt2XSA9IG1pbiAoZnVwW3ZdLCBmdXBbdG9dKTsKCQkJaWYgKGZ1cFt0b10gPj0gdGluW3ZdICYmIHAgIT0gLTEpCgkJCQlJU19DVVRQT0lOVCh2KTsKCQkJKytjaGlsZHJlbjsKCQl9Cgl9CglpZiAocCA9PSAtMSAmJiBjaGlsZHJlbiA+IDEpCgkJSVNfQ1VUUE9JTlQodik7Cn0KIAppbnQgbWFpbigpIHsKCWludCBuLG0sYSxiOwoJY2luID4+IG4gPj4gbTsKCWZvcihpbnQgaT0wO2k8bTtpKyspewoJIGNpbiA+PiBhID4+YjsKCSBnW2FdLnB1c2hfYmFjayhiKTsKCSBnW2JdLnB1c2hfYmFjayhhKTsKCX0KCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCWZvcihhdXRvIGo6Z1tpXSl7CgkJY291dCA8PCBqIDw8ICIgIjsKCX0KCWNvdXQgPDwgZW5kbDsKCX0KCXRpbWVyID0gMDsKCWZvciAoaW50IGk9MDsgaTxuOyArK2kpCgkJdXNlZFtpXSA9IGZhbHNlOwoJZGZzICgwKTsKCQoJCgkKfQ==