#include <bits/stdc++.h>
using namespace std;
ifstream fin ("sortaret.in");
ofstream fout ("sortaret.out");
vector <int> gr[100005];
vector <int> rgr[100005];
vector <int> q;
vector <int> v;
int f[100005],fr[100005],dp[100005];
int main()
{
int n,m;
fin >> n >> m;
for (int i=1;i<=m;++i){
int x,y;
fin >> x >> y;
f[y]++;
fr[y]++;
gr[x].push_back(y);
rgr[y].push_back(x);
}
for (int i=1;i<=n;++i){
if (f[i]==0){
q.push_back(i);
dp[i] = 0;
}
}
while (q.size()>0){
int node = q.back();
v.push_back(node);
q.pop_back();
for (auto x:gr[node]){
f[x]--;
if (f[x]==0){
q.push_back(x);
}
}
}
for (auto x:v){
fout << x << ' ';
}
return 0;
}