#include <bits/stdc++.h>
#define NMAX 50002
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n, m;
vector<int> g[NMAX];
vector<int> viz, sort_topologica;
void dfs(int nod)
{
viz[nod] = 1;
for (int i = 0; i < g[nod].size(); i++)
{
int vecin = g[nod][i];
if (!viz[vecin])
dfs(vecin);
}
sort_topologica.push_back(nod);
}
int main()
{
fin >> n >> m;
viz.resize(n + 1);
for (int i = 0; i < m; i++)
{
int x, y;
fin >> x >> y;
g[x].push_back(y);
}
for (int i = 1; i <= n; i++)
if (!viz[i])
dfs(i);
reverse(sort_topologica.begin(), sort_topologica.end());
for (int i = 0; i < sort_topologica.size(); i++)
fout << sort_topologica[i] << " ";
return 0;
}