#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
const ll mx = 1e5;
const int MOD = 1000000007;
const double eps = 1e-6;
bool loop = false;
int visited[mx+1];
vector<int> ans;
void dfs(vector<vector<int>> &adj,int node){
if(visited[node]==0){
visited[node]=1;
for(auto child:adj[node])dfs(adj,child);
visited[node]=2;
ans.push_back(node);
}else if(visited[node]==1){
loop = true;
return;
}
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(nullptr);
//freopen ("input.txt","r",stdin);
//freopen ("output.txt","w",stdout);
int n,k;cin>>n>>k;
vector<int> mainCourses(k);
for(auto &course:mainCourses)cin>>course;
vector<vector<int>> adj(n+1);
for(int i=1;i<=n;i++){
int num;cin>>num;
while(num--){
int temp;cin>>temp;
adj[i].push_back(temp);
}
}
for(auto course:mainCourses){
dfs(adj,course);
}
if(loop){
cout<<-1<<endl;
return 0;
}
cout<<ans.size()<<endl;
for(auto course:ans)cout<<course<<" ";
cout<<endl;
return 0;
}
1614B - Divan and a New Project | 791A - Bear and Big Brother |
1452A - Robot Program | 344A - Magnets |
96A - Football | 702B - Powers of Two |
1036A - Function Height | 443A - Anton and Letters |
1478B - Nezzar and Lucky Number | 228A - Is your horseshoe on the other hoof |
122A - Lucky Division | 1611C - Polycarp Recovers the Permutation |
432A - Choosing Teams | 758A - Holiday Of Equality |
1650C - Weight of the System of Nested Segments | 1097A - Gennady and a Card Game |
248A - Cupboards | 1641A - Great Sequence |
1537A - Arithmetic Array | 1370A - Maximum GCD |
149A - Business trip | 34A - Reconnaissance 2 |
59A - Word | 462B - Appleman and Card Game |
1560C - Infinity Table | 1605C - Dominant Character |
1399A - Remove Smallest | 208A - Dubstep |
1581A - CQXYM Count Permutations | 337A - Puzzles |