#include <fstream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <iostream>
#include <set>
#include <stack>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int v,m;
vector<set<int>>g;
vector<bool>vizitat;
stack<int>s;
void dfs(int nodstart){
vizitat[nodstart]=true;
for(const int& vecin:g[nodstart]){
if(vizitat[vecin]==0){
dfs(vecin);
}
}
s.push(nodstart);
}
int main()
{
int a,b,mini;
in>>v>>m;
g=vector<set<int>>(v+1);
vizitat=vector<bool>(v+1,0);
for(int i=0;i<m;i++){
in>>a>>b;
g[a].insert(b);
}
for(int i=1;i<v;i++){
if(vizitat[i]==0){
dfs(i);
}
}
while(!s.empty()){
out<<s.top()<<" ";
s.pop();
}
return 0;
}