#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
vector<vector<int>> adj;
vector<int> topologie;
vector<int> grad_intern;
int n,m;
void grad_int()
{
for(int i=1;i<=n;i++)
{
for(auto& vecin:adj[i])
{
grad_intern[vecin]++;
}
}
}
void sortare_topologica(){
queue<int> q;
for(int i=1;i<=n;i++)
if(grad_intern[i]==0)
q.push(i);
while(!q.empty())
{
int nod=q.front();
topologie.push_back(nod);
q.pop();
for(auto& vecin:adj[nod])
{
grad_intern[vecin]--;
if(grad_intern[vecin]==0)
q.push(vecin);
}
}
}
int main()
{
f>>n>>m;
adj.resize(n+1);
grad_intern.resize(n+1);
for(int i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
adj[x].push_back(y);
}
grad_int();
sortare_topologica();
for(auto& nod:topologie)
g<<nod<<" ";
return 0;
}