#include <iostream>
#include <fstream>
#include <vector>
#include <stack>
#define NMax 50005
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int N,M;
vector<int> Graf[NMax];
bool mark[NMax];
stack<int> Sol;
void DFS(int nod)
{
mark[nod]=true;
for(size_t i=0;i<Graf[nod].size();i++)
if(!mark[Graf[nod][i]])
DFS(Graf[nod][i]);
Sol.push(nod);
}
int main()
{
fin>>N>>M;
for(int i=1;i<=M;i++)
{
int from,to;
fin>>from>>to;
Graf[from].push_back(to);
}
for(int i=1;i<=N;i++)
if(!mark[i])
DFS(i);
while(!Sol.empty())
fout<<Sol.top()<<" ",Sol.pop();
return 0;
}