/*UVa 10305 Ordering Tasks*/
import java.util.Arrays;
import java.util.Scanner;
class Main {
static final int MAXN = 105;
int[][] g = new int[MAXN][MAXN];
int[] vis = new int[MAXN];
int[] stack = new int[MAXN];
int t = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Main mm = new Main();
int m,n;
while(scanner.hasNextInt()) {
n = scanner.nextInt();
m = scanner.nextInt();
mm.t = n;
if(m == 0 && n== 0) return;
for(int i=0; i<MAXN; i++) {
Arrays.fill(mm.g[i], 0);
}
Arrays.fill(mm.vis, 0);
for(int i=0; i<m; i++) {
mm.g[scanner.nextInt()][scanner.nextInt()] = 1;
}
for(int i=1; i<=n; i++) {
if(mm.vis[i] == 0)
mm.dfs(i,n);
}
for(int i=mm.t+1; i<=n; i++) {
System.out.printf("%d ", mm.stack[i]);
}
System.out.println();
}
}
private void dfs(int u, int n) {
vis[u] = 1;
for(int v=1; v<=n; v++) {
if(g[u][v] == 1 && vis[v] == 0)
dfs(v,n);
}
stack[t--] = u;
}
}