#include <stdio.h>
#include <string.h>
int counter(int *arr);
void sort(int *arr, int n);
int dfs(int *visited, int start,int currentNodeIdx, int cnt, int end);
int arr[100][100] = {0};
int main()
{
//100,000
int n,m,start;
int u,v, l, value;
int visited[999] = {0};
scanf("%d %d %d", &n, &m, &start);
getchar();
for (int i=0; i<n; i++){
scanf("%d %d", &u,&v);
arr[u][counter(arr[u])] = v;
arr[v][counter(arr[v])] = u;
}
for (int i=0; i<n; i++) {
if (arr[i] !=0 ) {
sort(arr[i], counter(arr[i]));
}
}
for (int i=1; i<=n; i++) {
l=1;
while (visited[l]!=0) {
visited[l] = 0;
l++;
}
printf("dfs: %d\n", dfs(visited,start,start,0,i)+1);
}
for (int i=0; i<=n; i++) {
for (int j=0; j<n; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
// 0, 1,1,0,i
int dfs(int *visited, int start,int currentNodeIdx, int cnt, int end) {
visited[currentNodeIdx] = 1;
//printf("currentNodeIdx: %d end %d, cnt: %d\n",currentNodeIdx, end, cnt);
if (end==currentNodeIdx) {
return cnt;
}
for (int i=1; i<=5; i++) {
printf("%d ", visited[i]);
}
printf("\n");
for (int i=0; i<counter(arr[currentNodeIdx]); i++) {
// printf("visited: %d\n", visited[2]);
if (visited[arr[currentNodeIdx][i]]!=1) {
// printf("작동\n");
return dfs(visited,start,arr[currentNodeIdx][i],cnt+1,end);
}
}
return 0;
}
void sort(int *arr, int n) {
int temp;
for (int i=0; i<n; i++) {
for (int j=i+1; j<n; j++) {
if (arr[i]>arr[j]) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}
int counter(int *arr) {
int j=0;
while (arr[j]!=0) {
j++;
}
return j;
}



