#include <iostream>
#include <vector>
#include <forward_list>
#define MAXN 50000
#define MAXM 100000
std::vector<int> muchii[MAXM];
std::forward_list<int> ret;
bool viz[MAXN];
void
dfs (int nod) {
viz[nod] = true;
for (int la: muchii[nod]) {
if (!viz[la])
dfs(la);
}
ret.emplace_front(nod + 1);
}
int main () {
int n, m;
int i;
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
scanf("%d%d", &n, &m);
for (i = 0; i != m; ++ i) {
int de, la;
scanf("%d%d", &de, &la);
-- de, -- la;
muchii[de].emplace_back(la);
}
for (i = 0; i != n; ++ i)
if (!viz[i])
dfs(i);
for (int nod : ret)
printf("%d ", nod);
return 0;
}