#include <fstream>
#include <vector>
#include <queue>
#define MAXN 50100
using namespace std;
int n, m, Q[MAXN], deg[MAXN];
vector<int> graf[MAXN];
void read()
{
ifstream f("sortaret.in");
int i, a, b;
f >> n >> m;
for(i = 1; i <= m; i++)
{
f >> a >> b;
graf[a].push_back(b);
deg[b]++;
}
f.close();
}
void solve()
{
int i, x; vector<int>::iterator it;
for(i = 1; i <= n; i++)
if(!deg[i]) Q[++Q[0]] = i;
for(i = 1; i <= n; i++)
{
x = Q[i];
for(it = graf[x].begin(); it != graf[x].end(); ++it)
{
deg[*it]--;
if(!deg[*it]) Q[++Q[0]] = *it;
}
}
}
void write()
{
ofstream g("sortaret.out");
int i;
for(i = 1; i <= n; i++)
g << Q[i] << " ";
g.close();
}
int main()
{
read();
solve();
write();
return 0;
}