import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Scanner;
public class Main{
static final int N=100005;
static int e[]=new int[N*2];//題目要求說了,可能出現重邊和自環
static int ne[]=new int[N*2];
static int h[]=new int[N];
static int d[]=new int[N];
static int v[]=new int[N];//存儲拓撲序列
static int n,m,idx;
static ArrayDeque<Integer> q=new ArrayDeque<Integer>();
static void add(int a,int b){
e[idx]=b;
ne[idx]=h[a];
h[a]=idx++;
}
static void topsort(){
int k=0;
for(int i=1;i<=n;i++)
if(d[i]==0) q.offer(i);
while(!q.isEmpty()){
int t=q.poll();
v[k++]=t;
for(int i=h[t];i!=-1;i=ne[i]){
int j=e[i];
d[j]--;//重路和自環均可以解決
if(d[j]==0) q.offer(j);
}
}
if(k==n)
for(int i=0;i<k;i++) System.out.print(v[i]+" ");
else
System.out.println("-1");
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
n=scan.nextInt();
m=scan.nextInt();
Arrays.fill(h, -1);
while(m-->0){
int a=scan.nextInt();
int b=scan.nextInt();
add(a,b);
d[b]++;
}
topsort();
}
}