#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector<int> graf[50005];
int t[50005];
vector<int> solutie;
void toposort(int nod)
{
if(t[nod]==1)
return;
///dfs
for(auto a:graf[nod])
{
if(t[a]!=1)
toposort(a);
}
t[nod]=1;
solutie.push_back(nod);
}
int main()
{
int n,m,i,j,nod1,nod2;
fin>>n>>m;
for(i=1;i<=m;++i)
{
fin>>nod1>>nod2;
graf[nod1].push_back(nod2);
}
for(i=1;i<=n;++i)
{
if(t[i]==0)
{
toposort(i);
}
}
reverse(solutie.begin(),solutie.end());
for(auto a:solutie)
fout<<a<<' ';
return 0;
}