#include <bits/stdc++.h>
std::ifstream input("sortaret.in");
std::ofstream output("sortaret.out");
const int NMAX = 50005;
std::vector<int> v[NMAX];
bool vizitat[NMAX];
std::vector<int> rezultat;
void dfs(int nod) {
vizitat[nod] = true;
for (int vecin : v[nod]) {
if (!vizitat[vecin]) {
dfs(vecin);
}
}
rezultat.push_back(nod);
}
int main() {
int n, m, x, y;
input >> n >> m;
for (int i = 1;i <= m ;++i) {
input >> x >> y;
v[x].push_back(y);
}
for (int i = 1;i <= n;++i) {
if (!vizitat[i]) {
dfs(i);
}
}
reverse(rezultat.begin(), rezultat.end());
for (int nod : rezultat) {
output << nod << " ";
}
output << std::endl;
return 0;
}