#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")