#include <bits/stdc++.h>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n,m;
vector<int>adj[100005];
vector<int>rez;
queue<int>q;
int gradint[100001];
int main()
{
int x,y,i,j;
f >> n >> m;
for(i = 1; i <= m; i++)
{
f >> x >> y;
adj[x].push_back(y);
gradint[y]++;
}
for(i = 1; i <= n; i++)
{
if(gradint[i] == 0)
q.push(i);
}
while(!q.empty())
{
int nod_curent = q.front();
q.pop();
rez.push_back(nod_curent);
for(i = 0; i < adj[nod_curent].size(); i++)
{
int vecin = adj[nod_curent][i];
gradint[vecin]--;
if(gradint[vecin] == 0)
{
q.push(vecin);
}
}
}
for(i = 0; i < rez.size(); i++)
g << rez[i] << " ";
return 0;
}