#include<bits/stdc++.h>
using namespace std;
int N,M;//点数和边数
const int maxn=1e5;
struct Node{
int next,to;
}E[maxn];
int maxp=-9999;
int Ecnt;
int head[maxn];
void addEdge(int u,int v){
E[v].next=head[u];
E[v].to=v;
head[u]=Ecnt;
Ecnt++;
return ;
}
int vis[maxn];
int dfs(int u){
vis[u]=1;
for(int i=head[u];i!=-1;i=E[i].next){
maxp=max(i,maxp);
vis[i]=1;
dfs(i);
}
return maxp;
}
int main(){
cin>>N>>M;
memset(head,-1,sizeof head);
int u,v;
for(int i=1;i<=M;i++){
cin>>u>>v;
addEdge(u,v);
}
for(int i=1;i<=N;i++){
maxp=i;
cout<<dfs(i)<<" ";
memset(vis,0,sizeof(vis));
maxp=i;
}
return 0;
}