#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000007;
const double eps = 1e-10;
int n, m;
vector<int> v[30010];
struct Node {
  int val, next;
} node[30010];
int head;
int sz;
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < (m); ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    v[y].push_back(x);
  }
  for (int i = 1; i <= n; i++) sort(v[i].begin(), v[i].end());
  head = -1;
  sz = 0;
  for (int i = 1; i <= n; i++) {
    int pre = -1;
    for (int r = head; r != -1; r = node[r].next) {
      int x = node[r].val;
      if (!binary_search(v[i].begin(), v[i].end(), x)) break;
      pre = r;
    }
    node[sz].val = i;
    sz++;
    if (pre == -1) {
      node[sz - 1].next = head;
      head = sz - 1;
    } else {
      node[sz - 1].next = node[pre].next;
      node[pre].next = sz - 1;
    }
  }
  vector<int> vv;
  for (int r = head; r != -1; r = node[r].next) {
    vv.push_back(node[r].val);
  }
  reverse(vv.begin(), vv.end());
  for (int i = 0; i < n; i++) {
    if (i) printf(" ");
    printf("%d", vv[i]);
  }
  puts("");
  return 0;
}
