#include<iostream>
#include<cstring>
using namespace std;
const int N = 100010,M = 100010;
int h[N],e[2*M],nex[2*M],idx = 1;
bool istrue[N];
void add(int a,int b){
e[idx] = b;
nex[idx] = h[a];
h[a] = idx++;
}
void dfs(int u,int& MAX){
istrue[u] = true;
MAX = max(MAX,u);
for(int i = h[u]; i != -1 ; i = nex[i]){
int j = e[i];
if(!istrue [j]){
dfs(j,MAX);
}
}
}
int main(){
int n,m;
cin>>n>>m;
memset(h,-1,sizeof(h));
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
add(a,b);
}
for(int i=1;i<=n;i++){
memset(istrue,false,sizeof(istrue));
int MAX = 1;
dfs(i,MAX);
cout<<MAX<<' ';
}
return 0;
}