
using namespace std;
const int maxn = 1e4 + 5;
vector<int> G[maxn];
int in[maxn],seq[maxn];
int n,m,cnt = 0;
void topology(){
for(int i = 1;i <= n;i++){
if(in[i] == 0) seq[++cnt] = i;
}
int head = 1;
while(head <= cnt){
int u = seq[head];
int ans = cnt;
for(int i = 0;i < G[u].size();i++){
int v = G[u][i];
in[v]--;
if(in[v] == 0) seq[++cnt] = v;
}
head++;
}
//当cnt不等于n时,说明这图有环
}
int main(){
scanf("%d %d",&n,&m);
for(int i = 1;i <= m;i++){
int x,y;
scanf("%d %d",&x,&y);
G[x].push_back(y);
in[y]++;;
}
topology();
for(int i = 1;i <= cnt;i++) printf("%d\n",seq[i]);
}