#include <bits/stdc++.h>
using namespace std;
int N ; int M ; const int Maxn=1000010;int x,y;
int lian[Maxn];int sum;int k[Maxn];
struct jxj
{ int to; int next; }e[Maxn];
void lianjie(int x, int y)
{
e[++sum]=(jxj){y,lian[x]};
/*++sum;
e[sum].to = y;
e[sum].next = lian[x];
lian[x]=sum;*/
lian[x]=sum;
}
int dfs(int u)
{
if(k[u]==1) return k[u];
k[u]=1;
for(int i=lian[u];i;i=e[i].next)
{
int s=e[i].to;
k[u]=max(k[u],dfs(s)+1);
}
return k[u];
}
int main()
{
memset(k,0,sizeof(k));
scanf("%d %d",&N,&M);
for(int i=1;i<=M;i+=1)//while(M --> 0)
{
cin>>x>>y;
lianjie(y,x);
}
for(int i=1;i<=N;i+=1)
printf("%d\n",dfs(i)) ; return 0;
}```