#include<cstdio>
#include<iostream>
#include<fstream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<climits>
#include<string>
#include<stack>
#include<queue>
#include<map>
#include<list>
using namespace std;
vector<int> dependences;
class compare{
public:
bool operator()(const int &l , const int &r){
if(dependences[l] == dependences[r]){
return l > r;
}else if(dependences[l] > dependences[r]){
return true;
}else{
return false;
}
}
};
int main(){
int N , M;
scanf("%d %d" , &N , &M);
vector<list<int> > graph(N+1);
vector<list<int> > fathers(N+1);
dependences.resize(N+1);
priority_queue<int , vector<int> , compare> pq;
for(int i = 1;i<=N ;i++){
dependences[i] = 0;
}
for(int i = 0;i<M;i++){
int n , num;
scanf("%d %d", &n , &num);
while(num--){
int v;
scanf("%d" , &v);
graph[n].push_back(v);
fathers[v].push_back(n);
dependences[n]++;
}
}
for(int i = 1;i<= N;i++){
if(dependences[i] == 0){
pq.push(i);
}
}
for(int i = 1;i<= N;i++){
int v;
v = pq.top();
pq.pop();
printf("%d " , v);
for(list<int>::const_iterator it = fathers[v].begin() ; it != fathers[v].end() ; it++){
dependences[*it]--;
if(dependences[*it] == 0){
pq.push(*it);
}
}
}
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8ZnN0cmVhbT4KI2luY2x1ZGU8Y3N0cmluZz4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxjbGltaXRzPgojaW5jbHVkZTxzdHJpbmc+CiNpbmNsdWRlPHN0YWNrPgojaW5jbHVkZTxxdWV1ZT4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTxsaXN0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPGludD4gZGVwZW5kZW5jZXM7CgpjbGFzcyBjb21wYXJlewoJcHVibGljOgoJCWJvb2wgb3BlcmF0b3IoKShjb25zdCBpbnQgJmwgLCBjb25zdCBpbnQgJnIpewoJCQlpZihkZXBlbmRlbmNlc1tsXSA9PSBkZXBlbmRlbmNlc1tyXSl7CgkJCQlyZXR1cm4gbCA+IHI7IAoJCQl9ZWxzZSBpZihkZXBlbmRlbmNlc1tsXSA+IGRlcGVuZGVuY2VzW3JdKXsKCQkJCXJldHVybiB0cnVlOwoJCQl9ZWxzZXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoKCQl9Cn07CgppbnQgbWFpbigpewoJaW50IE4gLCBNOwoJc2NhbmYoIiVkICVkIiAsICZOICwgJk0pOwoJdmVjdG9yPGxpc3Q8aW50PiA+IGdyYXBoKE4rMSk7Cgl2ZWN0b3I8bGlzdDxpbnQ+ID4gZmF0aGVycyhOKzEpOwoJZGVwZW5kZW5jZXMucmVzaXplKE4rMSk7Cglwcmlvcml0eV9xdWV1ZTxpbnQgLCB2ZWN0b3I8aW50PiAsIGNvbXBhcmU+IHBxOwoJZm9yKGludCBpID0gMTtpPD1OIDtpKyspewoJCWRlcGVuZGVuY2VzW2ldID0gMDsKCX0KCWZvcihpbnQgaSA9IDA7aTxNO2krKyl7CgkJaW50IG4gLCBudW07CgkJc2NhbmYoIiVkICVkIiwgJm4gLCAmbnVtKTsKCQl3aGlsZShudW0tLSl7CgkJCWludCB2OwoJCQlzY2FuZigiJWQiICwgJnYpOwoJCQlncmFwaFtuXS5wdXNoX2JhY2sodik7CgkJCWZhdGhlcnNbdl0ucHVzaF9iYWNrKG4pOwoJCQlkZXBlbmRlbmNlc1tuXSsrOwoJCX0KCX0KCWZvcihpbnQgaSA9IDE7aTw9IE47aSsrKXsKCQlpZihkZXBlbmRlbmNlc1tpXSA9PSAwKXsKCQkJcHEucHVzaChpKTsKCQl9Cgl9Cglmb3IoaW50IGkgPSAxO2k8PSBOO2krKyl7CgkJaW50IHY7CgkJdiA9IHBxLnRvcCgpOwoJCXBxLnBvcCgpOwoJCXByaW50ZigiJWQgIiAsIHYpOwoJCWZvcihsaXN0PGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZmF0aGVyc1t2XS5iZWdpbigpIDsgaXQgIT0gZmF0aGVyc1t2XS5lbmQoKSA7IGl0KyspewoJCQlkZXBlbmRlbmNlc1sqaXRdLS07CgkJCWlmKGRlcGVuZGVuY2VzWyppdF0gPT0gMCl7CgkJCQlwcS5wdXNoKCppdCk7CgkJCX0KCQl9IAoJfSAKCn0K