#include <bits/stdc++.h>
using namespace std;
int visit[300005], f[300005];
vector<int> graph[300005];
struct node {
  int idx;
  int value;
} recrd[300005];
int times = 1;
int comp(node a, node b) { return a.value > b.value; }
void dfs(int strt) {
  int h;
  visit[strt] = 1;
  times++;
  for (h = 0; h < graph[strt].size(); h++) {
    if (!visit[graph[strt][h]]) {
      dfs(graph[strt][h]);
    }
  }
  times++;
  f[strt] = times;
}
int main() {
  int n, m, i, j, t, chk[26][26] = {0};
  int x, y;
  scanf("%d", &n);
  scanf("%d", &m);
  for (i = 1; i <= m; i++) {
    scanf("%d %d", &x, &y);
    graph[y].push_back(x);
  }
  for (i = 1; i <= n; i++) {
    if (!visit[i]) {
      dfs(i);
    }
  }
  for (i = 1; i <= n; i++) {
    recrd[i].value = f[i];
    recrd[i].idx = i;
  }
  sort(recrd + 1, recrd + n + 1, comp);
  for (i = 1; i <= n; i++) {
    printf("%d ", recrd[i].idx);
  }
  return 0;
}
