#include <iostream>
#include <queue>
#include <algorithm>
#include <set>
#include <map>
#include <stack>
#include <vector>
#include <string>
#include <deque>
#include <unordered_map>
#include <unordered_set>
#include <cmath>
#include <iomanip>
using namespace std;
#define ll long long
#define NMAX 50100
int n, e;
int visited[NMAX], deg[NMAX];
vector<int> graph[NMAX];
// Global variables
void ReadData() {
cin >> n >> e;
int a, b = 0;
for(int i = 1; i <= e; i++){
cin >> a >> b;
graph[a].push_back(b);
deg[b]++;
}
}
void Solve() {
for(int i = 1; i <= n; i++){
for (int j = 1; j <= n; j++){
if(!visited[j] && deg[j] == 0){
visited[j] = 1;
cout << j << " ";
for(int k = 0; k < graph[j].size(); k++)
deg[ graph[j][k] ]--;
break ;
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
int t = 1;
// cin >> t; // Uncomment for multiple test cases
while (t--) {
ReadData();
Solve();
}
return 0;
}