#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 91
int v[MAXN], n, t, q[MAXN], G[MAXN][MAXN];
int dfs(int i){
v[i] = -1;
int j;
for(j=1; j<=n; j++) if(G[i][j]){
if(v[j]<0) return 0; //发现环
if(!v[j] && !dfs(j)) return 0;
}
q[t--] = i; v[i] = 1; //加到当前拓扑排序的首部
return 1;
}
int toposort(){
t = n;
int u;
memset(v, 0, sizeof(v));
for(u=1; u<=n; u++) if(!v[u]){
if(!dfs(u)) return 0;
}
return 1;
}
int main(){
freopen("d:\\my.txt", "r", stdin);
int m, i;
scanf("%d %d", &n, &m);
memset(G, 0, sizeof(G));
for(i=1; i<=m; i++){
int a, b;
scanf("%d %d", &a, &b);
G[a][b] = 1;
}
toposort();
for(i=1; i<=n; i++){
if(i != n) printf("%d ", q[i]);
else printf("%d\n", q[i]);
}
return 0;
}