#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,res,fir[500005],dp[5005],in[5005],out[5005],cnt;
queue<int> q;
const int mod=80112002;
struct Node{
int to,nxt;
}edge[500005];
void addedge(int u,int v){
edge[++cnt]=(Node){v,fir[u]};
fir[u]=cnt;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>n>>m;
for (int i=1;i<=n;i++){
cin>>u>>v;
in[v]++;out[u]++;
addedge(u,v);
}
for (int i=1;i<=n;i++){
if (!in[i]) q.push(i),dp[i]=1;
}
while (!q.empty()){
u=q.front();
q.pop();
for (int i=fir[u];i;i=edge[i].nxt){
v=edge[i].to;
dp[v]=(dp[v]+dp[u])%mod;
in[v]--;
if (!in[v]) q.push(v);
}
}
for (int i=1;i<=n;i++) cout<<dp[i]<<" ";
cout<<res;
return 0;
}