#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3")
#pragma GCC optimize("-Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,sse4.2,popcnt,abm,mmx,avx2,tune=native")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-funroll-all-loops,-fpeel-loops,-funswitch-loops")
typedef long long ll;
typedef unsigned long long ull;
#define int ll
#define forn(i, x, n) for (int i = x; i <= n; i++)
#define forn(i, n) for (int i = 0; i < n; i++)
#define cin(fib, n) forn(i, n) cin >> fib[i]
#define cout(fib, n) forn(i, n) cout << fib[i] << ' '
#define FastIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define all(fib) fib.begin(), fib.end()
#define alln(fib, n) fib, fib + n
#define rall(fib) fib.rbegin(), fib.rend()
#define yes cout << "YES"
#define no cout << "NO"
#define yn(b) (b ? yes : no)
#define pb push_back
#define nl cout << "\n"
#define minPQ priority_queue<int, vector<int>, greater<int>>
#define vi vector<int>
#define vs vector<string>
const int mod = 1000000007;
const int N = 1000010;
const int oo = LONG_LONG_MAX;
void solve() {
bool vis[N]={0};
int n,m;
cin>>n>>m;
int q; cin>>q;
forn(i,q)
{
int x; cin>>x;
vis[x]=1;
}
vector<vector<int>>ans;
for(int i=1 ; i<= n ; i++)
{
vi a;
int t; cin>>t;
bool flg=1;
while(t--)
{
int x; cin>>x;
if(!vis[x])
flg=0;
a.pb(x);
}
if(flg)
ans.pb(a);
else
ans.pb({});
}
int frq[N]={0};
for(auto &v : ans)
for(auto u: v)
frq[u]++;
vi vv;
int idx=1;
forn(i,n) {
for (auto u: ans[i])
if (frq[u] == 1) {
vv.pb(i+1);
break;
}
}
cout<<vv.size()<<endl;
cout(vv,vv.size());
}
signed main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
FastIO;
int t = 1;
//cin>>t;
while (t--)
{
solve();
nl;
}
return 0;
}
Copy