#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,head[10001],maxj,flag[10001],c;
struct Edge
{
int to,next;
}a[100001];
void AddEdge(int start,int end)
{
cnt++;
a[cnt].to=end;
a[cnt].next=head[start];
head[start]=cnt;
}
void dfs(int beg)
{
for(int i=head[beg];i;i=a[i].next)
{
flag[beg]=c;
int u=a[i].to;
dfs(u);
}
return;
}
int main()
{
int x,y;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
AddEdge(x,y);
}
for (int i=1;i<=n;i++)
{
if(flag[i]==0)
{
c++;
dfs(i);
}
}
int p=0;
for(int i=1;i<=n;i++)
{
for(int j=n;j>0;j--)
{
if(flag[i]==flag[j]&&p!=0)
{
cout<<" "<<j;
break;
}
else if(flag[i]==flag[j])
{
cout<<j;
p=1;
break;
}
}
}
}