/*
#include <stdio.h>
int h[200000][2] = {0};
int num[200000] = {0};
int search[200000] = {0};
int searchNum = 0;
int i, j;
int n=0, m=0;
int count(int number, int line, int th)
{
search[searchNum++] = h[line][th];
//printf("%d> %d %d, %d\n", number, line, th, h[line][th]);
// if (c==0)
// {
// if (h[b][0]==n)
// {
// num[i]++;
// for (int k=0; k<m; k++)
// {
// count(h[b][1], k, 0);
// }
// }
// }
// else if(c==1)
// {
// if (h[b][1]==n)
// {
// num[i]++;
// for (int k=0; k<m; k++)
// {
// count(h[b][0], k, 1);
// }
// }
// }
if (h[line][th]==number)
{
for (int k=0; k<searchNum; k++)
{
if (number != search[k])
{
num[i]++;
for (int k=0; k<m; k++)
{
//printf("%d: %d %d\n", h[line][1-th], k, th);
count(h[line][1-th], k, th);
}
}
}
}
else return 0;
}
int main()
{
int numm=0;
scanf("%d", &n);
scanf("%d", &m);
for (int k=0; k<m; k++)
{
scanf("%d %d", &h[k][0], &h[k][1]);
}
for (i=1; i<=n; i++)
{
for (j=0; j<m; j++)
{
count(i, j, 0);
count(i, j, 1);
}
//printf("%d\n", num[i]);
}
// for (int k=0; k<m; k++)
// {
// for (int g=0; g<m; g++)
// {
// if (h[k][1]==h[g][1])
// {
// num[h[k][1]]--;
// }
// }
// }
for (int k=1; k<=n; k++)
{
printf("\n%d\n", num[k]);
if (num[k]==n-1)
{
numm++;
}
}
printf("%d", numm);
}
*/
#include <stdio.h>
int h[200000][2] = {0};
int map[501][501]={0};
int num[200000] = {0};
int count=0;
int n, m;
int count1(int k)
{
for (int i=1; i<=n; i++)
{
if (map[i][4]==1)
{
num[k]++;
count1(i);
}
}
}
int count2(int k)
{
for (int i=1; i<=n; i++)
{
if (map[4][i]==1)
{
num[k]++;
count2(i);
}
}
}
int main()
{
scanf("%d", &n);
scanf("%d", &m);
for (int k=0; k<m; k++)
{
scanf("%d %d", &h[k][0], &h[k][1]);
map[h[k][0]][h[k][1]] = 1;
}
for (int i=1; i<=n; i++)
{
count1(i);
count2(i);
}
for (int i=1; i<=n; i++)
{
printf("%d\n", num[i]);
if (num[i]==n-1)
{
count++;
}
}
printf("%d", count);
}



