import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
public class Solutions {
static int N,M;
static List<Integer>[] list = null;
static Queue<Integer> q = new PriorityQueue<Integer>();
static int[] bfs = null;
static int[] dfs = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
bfs = new int[N+1];
dfs = new int[N+1];
list = new ArrayList[N+1];
for(int i=1;i<=N;i++) {
list[i] = new ArrayList();
}
for(int i=0;i<M;i++) {
int s = sc.nextInt();
int e = sc.nextInt();
list[s].add(e);
}
dfs(1);
System.out.println();
q.clear();
bfs(1);
}
public static void bfs(int s) {
bfs[s] = s;
System.out.print(s+" ");
q.add(s);
while(!q.isEmpty()) {
int node = q.poll();
for(int i=0;i<list[node].size();i++) {
int next = list[node].get(i);
if(bfs[next] == 0) {
q.add(next);
bfs[next] = next;
System.out.print(next+" ");
}
}
}
}
public static void dfs(int s) {
dfs[s]=s;
System.out.print(s+" ");
for(int i=0;i<list[s].size();i++) {
int next = list[s].get(i);
if(dfs[next] == 0) {
dfs[next] = next;
dfs(next);
}
}
}
}