import java.util.*;
class Graph{
    ArrayList<ArrayList<Integer>> list;
    Graph(int v)
    {
       list =new ArrayList<>();
        for(int i=0;i<v;i++)
        {
            list.add(new ArrayList<Integer>());
        }
    }
void push(int u,int v)
{
    list.get(u).add(v);
    list.get(v).add(u);
}
 void bfs(int start)
{
   
    boolean vis[]=new boolean[list.size()];
    Queue<Integer>q=new LinkedList<>();
    vis[start]=true;
    q.add(start);
    while(!q.isEmpty())
    {
        int n=q.pop();
    System.out.print(n+" ");
    
    for(int i=0;i<list.get(n).size();i++)
    {
        int H=list.get(n).get(i);
        if(!vis[H])
        {
            vis[H]=true;
            q.add(H);
        }
    }
    }
}

public static void main(String[] args)
{
    Scanner scn=new Scanner(System.in);
    
        if(!scn.hasNextInt())
        {
            System.out.print("Invalid input");
            return;
        }
    int b=scn.nextInt();
    
        if(!scn.hasNextInt())
        {
            System.out.print("Invalid input");
            return;
        }
    int c=scn.nextInt();
    if(b<=0||c<=0)
    {
        System.out.print("Invalid input");
            return;
    }
    Graph G1=new Graph(c);
    for(int i=0;i<c;i++)
    {
        if(!scn.hasNextInt())
        {
            System.out.print("Invalid input");
            return;
        }
        int o=scn.nextInt();
         if(!scn.hasNextInt())
        {
            System.out.print("Invalid input");
            return;
        }
        int x=scn.nextInt();
        if(o>=c||x>=c||x<0||o<0)
        {
            System.out.print("Invalid input");
            return;
            
        }
        G1.push(o,x);
    }
    int start=scn.nextInt();
    if(start<0||start>=c){
         System.out.print("Invalid input");
            return;
    }
    
    G1.bfs(start);
}
}
