#include<stdio.h> 
 #include<stdlib.h> 
 #include<string.h> 
 #include<math.h> 
 #include<iostream> 
 #include<algorithm> 
 using namespace std; 
 const int sizen=1000000; 
 struct ele 
 { 
     int to; 
     int next; 
 }p[sizen]; 
 bool Map[1000][1000]; 
 int degree[1000]; 
 int W,E,e; 
 int head[sizen]; 
 int a[sizen]; 
 void add(int x,int y) 
 { 
     p[e].to=y; 
     p[e].next=head[x]; 
     head[x]=e++; 
 } 
 void Tosort(int n) 
 { 
     int i,k; 
     int t=0; 
     for(i=1;i<=n;i++) 
         if(degree[i]==0) 
             a[t++]=i; 
     for(i=1;i<=n;i++) 
     { 
         for(k=head[a[i-1]];k!=-1;k=p[k].next) 
         { 
             degree[p[k].to]--; 
             if(degree[p[k].to]==0) 
                 a[t++]=p[k].to; 
         } 
     } 
     for(i=0;i<n-1;i++) 
         printf("%d ",a[i]); 
     printf("%d\n",a[n-1]); 
 } 
 int main() 
 { 
     int x,y; 
     int V,E; 
     while(scanf("%d%d",&V,&E)!=EOF) 
     { 
         e=0; 
         memset(a,0,sizeof(a)); 
         memset(Map,false,sizeof(Map)); 
         memset(degree,0,sizeof(degree)); 
         memset(head,-1,sizeof(head)); 
         while(E--) 
         { 
             scanf("%d%d",&x,&y); 
             add(x,y); 
             if(!Map[x][y]) 
             { 
                 Map[x][y]=true; 
                 degree[y]++; 
             } 
         } 
         Tosort(V); 
     } 
     return 0; 
 }