#include<stdio.h>
#define N 500
#define M 500
typedef struct{
int A[N][M];
int n,m;
}Graph;
typedef int ElementType;
typedef struct{
ElementType data[100];
int size;
}List;
void make_null(List *L ){
L->size=0;
}
void push_list(List *L, ElementType x){
L->data[L->size]=x;
L->size++;
}
void init_graph(Graph *G, int n, int m){
G->n=n;
G->m=m;
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
G->A[i][j]=0;
}
void add_graph(Graph *G, int e, int x, int y){
G->A[x][e]=1;
G->A[y][e]=1;
}
int adjacent(Graph *G, int x, int y){
int e;
for(e=1;e<=G->m;e++){
if(G->A[x][e]==1 && G->A[y][e]==1)
return 1;
}
return 0;
}
int degree(Graph *G, int x){
int e,deg=0;
for(e=1;e<=G->m;e++){
if(G->A[x][e]==1)
deg++;
}
return deg;
}
List neightbors(Graph *G, int x){
int i,j;
List L;
make_null(&L);
for(i=1;i<=G->n;i++){
for(j=1;j<=G->m;j++)
if(x!=i)
if(G->A[x][j]==1 && G->A[i][j]==1)
push_list(&L,i);
}
return L;
}
int main(){
Graph G;
int i,j,n,m,e,u,v;
// freopen("dt.txt","r",stdin);
scanf("%d%d",&n,&m);
init_graph(&G,n,m);
for(e=1;e<=G.m;e++){
scanf("%d%d",&u,&v);
add_graph(&G,e,u,v);
}
// for(i=1;i<=n;i++){
// for(j=1;j<=m;j++)
// printf("%d ",G.A[i][j]);
// printf("\n");
// }
List L1;
List L2;
int x,y;
List L3;
int dem=0;
scanf("%d%d",&x,&y);
L1=neightbors(&G,x);
L2=neightbors(&G,y);
for(i=0;i<L1.size;i++){
for(j=0;j<L2.size;j++)
if(L1.data[i]==L2.data[j]){
dem++;
push_list(&L3,L1.data[i]);
}
}
if(dem==0){
printf("KHONG CHUNG DOI THU");
}else
for(i=0;i<L3.size;i++){
printf("%d ",L3.data[i]);
}
return 0;
}