#include <iostream>
#include <vector>

using namespace std;

struct E {
    int froms, tos;
    E() {
        froms = tos = 0;
    }
};

vector<E> G;

int m, n;
int main() {
    cin >> m >> n;
    G.clear(); G.resize(m+1);
    for (int i = 0; i < n; i++) {
        int a, b; cin >> a >> b;
        G[b].froms |= (1<<a);
        G[a].tos |= (1<<b);
    }
    vector<int> sG; // sorted Graph
    vector<int> S;
    for (int i = 1; i <= m; i++) {
        if (G[i].froms == 0) {
            S.push_back(i);
        }
    }
    while (!S.empty()) {
        int s = S.back(); S.pop_back();
        sG.push_back(s);
        for (int i = 1; i <= m; i++) {
            if (G[s].tos & (1<<i)) {
                G[s].tos &= (((1<<(m+1)) - 1) - (1<<i));
                G[i].froms &= ((1<<(m+1)) - 1 - (1<<s));
                if (G[i].froms == 0) {
                    S.push_back(i);
                }
            }
        }
    }
    for (int i = 0; i < sG.size(); i++) {
        cout << sG[i] << endl;
    }
    return 0;
}