#include <iostream>
#include <bits/stdc++.h>
#define maxn 100+10
using namespace std;
int n,m;
int topo[maxn];
int t;
int c[maxn];
int G[maxn][maxn];
bool dfs(int u)
{
c[u] = -1;
for(int i = 1; i<=n; i++)
{
if(G[u][i])
{
if(c[i]<0) return false;
else if(!c[i]) dfs(i);
}
}
c[u] = 1;
topo[--t] = u;
return true;
}
bool toposort()
{
t = n+1;
memset(c,0,sizeof(c));
for(int i = 1; i<=n; i++)
{
if(!c[i])
if(!dfs(i))
return false;
}
return true;
}
int main()
{
int a,b;
while(cin>>n>>m&&(n||m))
{
memset(G,0,sizeof(G));
for(int i = 0; i<m; i++)
{
cin>>a>>b;
G[a][b] = 1;
}
if(toposort())
{
for(int i = 1; i<n; i++)
{
cout<<topo[i]<<" ";
}
cout<<topo[n]<<endl;
}
}
return 0;
}
/**
5 4
1 2
2 3
1 3
1 5
0 0
**/