#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n,m;
int a[100010]; // 记录结点能到达的最大点
vector<int> p[100010];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
a[i]=i; //初始化
}
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
p[y].push_back(x); //建反向边
}
for(int i=n;i>=1;i--){
for(int j=0;j<p[i].size();j++){
int k=p[i][j];
a[k]=max(a[i],a[k]);
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}