BFS
#include<cstdio>
#include<queue>
using namespace std;
queue<int> f;
struct node{int x,y,next;} a[100000];
int n,m,len=0,t=0;
int last[2000],ans[2000],du[2000];
bool bz[1500][1500];
void ins(int x,int y)
{
a[++len].x=x;a[len].y=y;a[len].next=last[x];last[x]=len;
}
int AOV()
{
for(int i=1;i<=n;i++)
if(!du[i]) f.push(i);
while(!f.empty())
{
int x=f.front();
ans[++t]=x;
f.pop();
for(int i=last[x];i;i=a[i].next)
{
int y=a[i].y;
du[y]--;
if(!du[y]) f.push(y);
}
}
}
int main()
{
int x,y;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
ins(x,y);
du[y]++;
}
AOV();
for(int i=1;i<=t;i++)
printf("%d ",ans[i]);
}