#include <bits/stdc++.h>
using namespace std;
const int MAXN = 30007;
const int MAXM = 100007;
struct Point {
  int n, cnt;
  bool operator<(const Point &a) const { return cnt > a.cnt; }
};
int i, j, k, n, m, t, x, y, cnt;
int ans[MAXN];
bool hvf;
bool v[MAXN];
set<int> s;
Point a[MAXN];
void dfs(int k) {
  int i, j, t;
  v[k] = true;
  if (cnt == n - 1) {
    hvf = true;
    return;
  }
  for (i = 1; i <= n; i++) {
    if (!v[a[i].n] && s.find(k * MAXN + a[i].n) == s.end()) {
      ans[++cnt] = a[i].n;
      dfs(a[i].n);
      if (hvf) {
        return;
      } else {
        ans[cnt--] = 0;
      }
    }
  }
  v[k] = false;
}
int main() {
  while (cin >> n >> m) {
    memset(a, 0, sizeof(a));
    memset(ans, 0, sizeof(ans));
    s.clear();
    hvf = false;
    for (i = 1; i <= n; i++) {
      a[i].n = i;
    }
    for (i = 0; i < m; i++) {
      scanf("%d%d", &x, &y);
      s.insert(x * MAXN + y);
      a[y].cnt++;
    }
    sort(a + 1, a + n + 1);
    for (i = 1; i <= n; i++) {
      memset(v, 0, sizeof(v));
      if (!hvf) {
        cnt = 0;
        ans[cnt] = a[i].n;
        dfs(a[i].n);
        if (hvf) {
          break;
        }
      } else {
        break;
      }
      cout << endl;
    }
    if (!hvf) {
      cout << "-1" << endl;
    } else {
      for (i = 0; i < n; i++) {
        printf("%d ", ans[i]);
      }
      printf("\n");
    }
  }
  return 0;
}
