#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 1e5 + 5;
int n, m;
vector<int> adj[N];
/* Kahn's algorithm */
int in_deg[N];
vector<int> topo;
void topoSort() {
queue<int> q;
for (int u = 1; u <= n; u++) {
if (in_deg[u] == 0) q.push(u);
}
while (!q.empty()) {
int u = q.front(); q.pop();
topo.push_back(u);
for (int v : adj[u]) {
in_deg[v]--;
if (in_deg[v] == 0) q.push(v);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
in_deg[v]++;
}
topoSort();
if (topo.size() < n) {
cout << "IMPOSSIBLE" << '\n';
return 0;
}
for (int u : topo) cout << u << ' ';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKCmNvbnN0IGludCBOID0gMWU1ICsgNTsgCgppbnQgbiwgbTsgIAp2ZWN0b3I8aW50PiBhZGpbTl07IAoKLyogS2FobidzIGFsZ29yaXRobSAqLwppbnQgaW5fZGVnW05dOyAgCnZlY3RvcjxpbnQ+IHRvcG87ICAgCgp2b2lkIHRvcG9Tb3J0KCkgewoJcXVldWU8aW50PiBxOyAgCglmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKCQlpZiAoaW5fZGVnW3VdID09IDApIHEucHVzaCh1KTsgCgl9CgoJd2hpbGUgKCFxLmVtcHR5KCkpIHsKCQlpbnQgdSA9IHEuZnJvbnQoKTsgcS5wb3AoKTsgCgoJCXRvcG8ucHVzaF9iYWNrKHUpOyAgIAoKCQlmb3IgKGludCB2IDogYWRqW3VdKSB7CgkJCWluX2RlZ1t2XS0tOyAKCQkJaWYgKGluX2RlZ1t2XSA9PSAwKSBxLnB1c2godik7IAoJCX0KCX0KfQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gbTsgCgoJZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKCQlpbnQgdSwgdjsgCgkJY2luID4+IHUgPj4gdjsgCgkJYWRqW3VdLnB1c2hfYmFjayh2KTsgCgkJaW5fZGVnW3ZdKys7IAoJfQoKCXRvcG9Tb3J0KCk7IAoKCWlmICh0b3BvLnNpemUoKSA8IG4pIHsKCQljb3V0IDw8ICJJTVBPU1NJQkxFIiA8PCAnXG4nOyAKCQlyZXR1cm4gMDsgCgl9CgoJZm9yIChpbnQgdSA6IHRvcG8pIGNvdXQgPDwgdSA8PCAnICc7IAp9