#include<stdio.h>
#include<string.h>
#define MN 10001
int V,E,G[MN][MN],i,j,s,e,F[MN]={0},Q[20001][2]={0},p,q;
int main()
{
	scanf("%d%d",&V,&E);
	for(i=0;i<E;i++)
	{
		scanf("%d%d",&s,&e);
		F[e]=1;
		G[s][e]=1;
	}
	for(i=0,q=0;i<V;i++)
		if(!F[i])
			Q[q++][0]=i;
	memset(F,0,sizeof(F));
	for(p=0;p<q;p++)
	{
		e=p%20001;
		s=Q[e][0];
		if(F[s]>Q[e][1])continue;
		for(i=0;i<V;i++)
			if(G[s][i]&&F[i]<F[s]+1)
			{
				F[i]=F[s]+1;
				Q[q%20001][0]=i;
				Q[q%20001][1]=F[i];
				q++;
			}
	}
	for(i=0;i<V;i++)
	{
		q=-1;
		for(j=0;j<V;j++)
			if(q==-1||F[q]>F[j])q=j;
		printf("%d\n",q);
		F[q]=MN;
	}
	return 0;
}