#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
int in[300];
int out[300];
int f[300];
int a[300][2000];
stack<int> s;
int main()
{
int m,n,k;
int x,y;
scanf("%d%d%d",&m,&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
in[x]++;
out[y]++;
a[y][out[y]]=x;
}
for(int i=1;i<=m;i++)
f[i]=k;
for(int i=1;i<=m;i++)
if(in[i]==0)
s.push(i);
int I=0;
while(I!=m)
{
int u=s.top();
s.pop();
I++;
for(int i=1;i<=out[u];i++)
{
in[a[u][i]]--;
f[a[u][i]]=max(f[a[u][i]],f[u]+1);//每次都要更新最值。
if(in[a[u][i]]==0)
{
s.push(a[u][i]);
in[a[u][i]]=0x7fffffff;
}
}
}
for(int i=1;i<=m;i++)
printf("%d\n",f[i]);
return 0;
}