#include<bits/stdc++.h>
using namespace std;
int head[50001];
int anhead[50001];
int n,m;
struct edge{
int to,next=0;
}a[50001];
int cnt=1;
void add(int u,int v){
a[cnt].to=v;
a[cnt].next=head[u];
head[u]=cnt;
cnt++;
}
int ans[50001]={};
int main(){
cin>>n>>m;
int u,v;
for(int i=0;i<m;i++){
scanf("%d%d",&u,&v);
add(u,v);
//add(v,u);
}
for(int i=1;i<=n;i++){
anhead[i]=head[i];
ans[i]=i;
while(head[i]!=0){
if(a[head[i]].to>ans[i]){
ans[i]=a[head[i]].to;
}
head[i]=a[head[i]].next;
}
}
for(int i=1;i<n;i++){
while(anhead[i]!=0){
if(ans[a[anhead[i]].to]>ans[i]){
ans[i]=ans[a[anhead[i]].to];
}
anhead[i]=a[anhead[i]].next;
}
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
return 0;
}