#include <stdio.h>
void initial(int N,int (*graph)[N+1], int (*dist)[N+1]){
int i,j;
for(i=0;i<=N;i++){
for(j=0;j<=N;j++){
graph[i][j]=0;
}
}
for(i=1;i<=N;i++){
graph[i][i]=1;
}
for(i=0;i<=N;i++){
for(j=0;j<=N;j++){
dist[i][j]=0;
}
}
dist[0][1]=1;
}
void judge_connect(int row,int n,int N,int (*dist)[N+1],int graph[][N+1]){
int i;
int Dist[N+1],Graph[N+1];
for(i=1;i<=N;i++){
Dist[i]=dist[row-1][i];
Graph[i]=graph[n][i];
}
for(i=1;i<=N;i++){
if(dist[row-1][i]>0){
dist[row][i]=dist[row-1][i];
continue;
}
if(graph[n][i]>0){
dist[row][i]+=dist[row-1][n]*graph[n][i];
dist[row][i]%=100003;
}
}
}
int main(void) {
int N, M;
scanf("%d %d",&N, &M);
int graph[N+1][N+1];
int dist[N+1][N+1];
int i, j;
int x,y;
initial(N, graph, dist);
for(i=1; i<=M; i++){
scanf("%d %d", &x, &y);
if(x!=y){
graph[x][y]++;
graph[y][x]++;
}
}
for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
if(dist[i-1][j]!=0){
judge_connect(i, j, N, dist, graph);
}
}
}
for(i=1;i<=N;i++){
printf("%d\n",dist[N][i]%100003);
}
return 0;
}