#include <fstream>
#include <vector>
using namespace std;
const int MAXN = 50005;
vector<int> vecini[MAXN];
int grad[MAXN];//grad[i] = cate muchii "intra" in nodul i
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int n;
void citire()
{
int m;
in >> n >> m;
int a, b;
for (int i = 1;i <= m;++i)
{
in >> a >> b;
vecini[a].push_back(b);
grad[b]++;
}
}
int coada[MAXN];
int p,q;
int raspuns[MAXN];
void sortare_topologica()
{
p = 1;
q = 0;
for (int i = 1;i <= n;++i)
if (grad[i] == 0)
coada[++q] = i;
while (p <= q)
{
int nod = coada[p];
raspuns[p] = coada[p];
++p;
for (unsigned int i = 0;i < vecini[nod].size();++i)
{
--grad[vecini[nod][i]];
if (grad[vecini[nod][i]] == 0)
coada[++q] = vecini[nod][i];
}
}
}
void afisare()
{
for (int i = 1;i < n;++i)
out << raspuns[i] << ' ';
out << raspuns[n] << '\n';
}
int main()
{
citire();
sortare_topologica();
afisare();
return 0;
}