#include <bits/stdc++.h>
using namespace std;
const int maxn=119;
vector<int>vec[maxn];
int have[maxn];
int c[maxn];
int n,m;
int out[maxn];
int t=0;
void bfs(int k)
{
have[k]=1;
for(vector<int> ::iterator it=vec[k].begin();it!=vec[k].end();it++)
if(!have[*it])
bfs(*it);
out[t++]=k;
}
int main()
{
while(scanf("%d%d",&n,&m)&&(n||m))
{t=0;
memset(have,0,sizeof(have));
memset(c,0,sizeof(c));
for(int i=1;i<=n;i++)vec[i].clear();
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
vec[y].push_back(x);
}
for(int i=1;i<=n;i++)
if(!have[i])
bfs(i);
for(int i=0;i<n;i++)
cout<<out[i]<<(i==n-1? '\n':' ');
}
return 0;
}
using namespace std;
const int maxn=119;
vector<int>vec[maxn];
int have[maxn];
int c[maxn];
int n,m;
int out[maxn];
int t=0;
void bfs(int k)
{
have[k]=1;
for(vector<int> ::iterator it=vec[k].begin();it!=vec[k].end();it++)
if(!have[*it])
bfs(*it);
out[t++]=k;
}
int main()
{
while(scanf("%d%d",&n,&m)&&(n||m))
{t=0;
memset(have,0,sizeof(have));
memset(c,0,sizeof(c));
for(int i=1;i<=n;i++)vec[i].clear();
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
vec[y].push_back(x);
}
for(int i=1;i<=n;i++)
if(!have[i])
bfs(i);
for(int i=0;i<n;i++)
cout<<out[i]<<(i==n-1? '\n':' ');
}
return 0;
}