#include <bits/stdc++.h>
#define MAXN 50000
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector<int> adj[MAXN + 1];
bool visited[MAXN + 1];
vector<int> order;
void dfs(int u) {
visited[u] = true;
for (int v : adj[u])
if (!visited[v])
dfs(v);
order.push_back(u);
}
int main() {
int n, m;
fin >> n >> m;
for (int i = 0; i < m; i++) {
int x, y;
fin >> x >> y;
adj[x].push_back(y);
}
for (int u = 1; u <= n; u++)
if (!visited[u])
dfs(u);
for (int i = n - 1; i >= 0; i--)
fout << order[i] << ' ';
fout << '\n';
return 0;
}