/*
	Finding the articulation point
	@Author: md.moniruzzaman
*/
#include<iostream.h>
#include<stdio.h>
#define LOW(a, b) (a>b?b:a)
#define INF 21474869

struct ss {
	int A[20];
	int ind;
};

ss edge[20];
int N, E, time;

struct xx {
	bool color, arti;
	int child;
	int parent;
	int dis;
	int low;
}node[20];


void Arti(int u) {
	int i, v;
	node[u].dis = time++;
	node[u].low = INF;
	node[u].color = true;
	node[u].arti = false;
	for(i = 0;i<edge[u].ind; i++) {
		v = edge[u].A[i];
		if(node[v].color == false) {
			node[u].child ++;
			node[v].parent = u;
			Arti(v);
			if(node[v].low>=node[u].dis && node[v].parent != -1)
				node[u].arti = true;
			node[u].low = LOW(node[u].low,node[v].low);
		}
		else {
			node[u].low = LOW(node[u].low,node[v].dis);
		}
	}
}

void Cal() {
	int i;
	for(i = 1; i<=N; i++)
		node[i].color = false;
	time = 1;
	for(i = 1; i<= N; i++) {
		if(node[i].color == false) {
			node[i].parent = -1;
			Arti(i);
			if(node[i].child >1) node[i].arti = true;
		}
	}
	cout<<"Articulation point:";
	for(i = 1; i<= N; i++){ 
		if(node[i].arti == true)
			cout<<" "<<i;
	}
	cout<<"\n";
}


void main() {
	int u, v;
//	freopen("h.txt","r",stdin);
	cin>>N>>E;
	while(E--) {
		cin>>u>>v;
		edge[u].A[edge[u].ind++] = v;
		edge[v].A[edge[v].ind++] = u;
	}
	Cal();
}