#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector<vector<int>> vecini;
vector<bool> vizitat;
stack<int> stiva;
void DFS(int nod_curent) {
vizitat[nod_curent] = true;
for (auto v : vecini[nod_curent]) {
if (!vizitat[v]) {
DFS(v);
}
}
//cand e gata il bagam in stiva
stiva.push(nod_curent);
}
int main() {
int n, m;
fin >> n >> m;
vecini.resize(n + 1);
vizitat.resize(n + 1, false);
for (int i = 1; i <= m; i++) {
int x, y;
fin >> x >> y;
vecini[x].push_back(y);
}
for (int i = 1; i <= n; i++) {
if (!vizitat[i]) {
DFS(i);
}
}
while (!stiva.empty()) {
fout << stiva.top() << ' ';
stiva.pop();
}
}