#include <iostream>
#include<unordered_map>
#include<vector>
#include<queue>
using namespace std;

// 注意 while 处理多个 case
        //directed acyclic diagram才有拓扑序
        //已经确定有向,则判断有没有环
        //任意有向无环图(DAG)都至少有一个入度为 0 的顶点。
        //反过来,如果在“剪枝”某一步没有任何入度为 0 的顶点,却仍有未处理的顶点,说明剩下的子图必有环。



int main() {
    int n,m;
    std::cin>>n>>m;
    std::vector<int> in(n+1,0);
    std::vector<std::vector<int>> router(n+1);
    //先记录入度与路由表
    int a,b;
    while(std::cin>>a>>b)
    {
        in[b]++;
        router[a].push_back(b);
    }
    //处理0入度节点
    std::queue<int> q;
    for(int i=1;i<in.size();i++)
    {
        if(in[i]==0) q.push(i);//记录符合要求的顶点
    }
    std::vector<int> topo;
    //通过0入度节点扩散检查
    while(!q.empty())
    {
        int u=q.front();
        q.pop();
        topo.push_back(u);
        for(int j=0;j<router[u].size();j++)
        {
            if(--in[router[u][j]]==0) q.push(router[u][j]);
        }
    }
    //检查是否有剩余节点
 if (topo.size() == (size_t)n) {
        for (int i = 0; i < n; ++i) {
            cout << topo[i] << (i+1 < n ? ' ' : '\n');
        }
    } else {
        cout << -1 << '\n';
    }


}
// 64 位输出请用 printf("%lld")