/*
  Copyright 2011 Marek "p2004a" Rusinowski
  Kahn algorithm
*/
#include <cstdio>
#include <vector>
#include <queue>

#define MAXN 1000000

std::vector<int> edges[MAXN];
int indeg[MAXN];

int main() {
  int a, b, n, m;
  scanf("%d %d", &n, &m);
  for (int i = 0; i < m; ++i) {
    scanf("%d %d", &a, &b);
    edges[--a].push_back(--b);
    ++indeg[b];
  }
  std::queue<int> q;
  for (int i = 0; i < n; ++i) {
    if (!indeg[i]) {
      q.push(i);
    }
  }
  while (!q.empty()) {
    int v = q.front();
    printf("%d ", v + 1);
    q.pop();
    for (unsigned i = 0; i < edges[v].size(); ++i) {
      --indeg[edges[v][i]];
      if (!indeg[edges[v][i]]) {
        q.push(edges[v][i]);
      }
    }
  }
  printf("\n");
  return 0;
}
