#include <bits/stdc++.h>
using namespace std;
struct node{
int to,next;
}a[2000010],k;
priority_queue<pair<int,int> > q;
bool f[1000010];
int head[1000010],dis[1000010],sum[1000010]={0,1},cnt;
void add(int u,int v)
{
a[++cnt].to=v;
a[cnt].next=head[u];
head[u]=cnt;
}
int main()
{
int n,m,u,v,w,mn,x;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>u>>v;
if(u==v)
continue;
add(u,v);
add(v,u);
}
for(int i=2;i<=n;i++)
dis[i]=INT_MAX;
q.push(make_pair(0,1));
while(!q.empty())
{
x=q.top().second;
q.pop();
if(f[x])
continue;
f[x]=1;
for(int i=head[x];i;i=a[i].next)
{
if(dis[a[i].to]>dis[x]+1)
{
dis[a[i].to]=dis[x]+1;
sum[a[i].to]=sum[x];
q.push(make_pair(-a[i].to,a[i].to));
}else if(dis[a[i].to]==dis[x]+1)
sum[a[i].to]=(sum[a[i].to]+sum[x])%100003;
}
}
/*
for(int i=1;i<=n;i++)
{
mn=INT_MAX;
x=1;
for(int j=1;j<=n;j++)
{
if(!f[j]&&mn>dis[j])
{
mn=dis[j];
x=j;
}
}
f[x]=1;
for(int j=head[x];j;j=a[j].next)
{
if(dis[a[j].to]>dis[x]+1)
{
dis[a[j].to]=dis[x]+1;
sum[a[j].to]=1;
}
else if(dis[a[j].to]==dis[x]+1)
sum[a[j].to]=(sum[a[j].to]+sum[x])%100003;
}
}
*/
for(int i=1;i<=n;i++)
cout<<sum[i]<<endl;
return 0;
}