#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
const int N = 1e5 + 10;
int n , m;
int e[N] , ne[N] , h[N] ,idx , vis[N];
int ans[N];
int dfs(int p){
int res = 0;
for(int i = h[p]; i != -1; i =ne[i]){
int j = e[i];
if(!vis[i]){
vis[i] = 1;
res = max(res , dfs(j));
}
}
ans[p] = max(ans[p] , res);
return ans[p];
}
int main(){
cin >> n >> m;
memset(h,-1,sizeof(h));
for(int i = 0 ; i < m ; ++ i){
int a ,b;
cin >> a >> b;
e[idx] = b , ne[idx] = h[a] , h[a] = idx ++;
}
for(int i = 1 ; i <= n ; ++i)ans[i] = i;
for(int i = 1; i <= n ; ++i)cout << dfs(i) << " ";
return 0;
}