#include<bits/stdc++.h>
#define lint unsigned long long
using namespace std;
struct node{
lint s,t;
}b[5005];
bool cmp(node x,node y){
return x.t <= y.t;
}
lint n,k,w[5005][5005],p[5005];
lint s[5005],a[100005],maxn = 0,maxi = 0;
lint cnt = 0;
int main(){
cin>>k;
for(lint i = 1;i <= k;i++){
cin>>p[i];
for(lint j = 1;j <= p[i];j++){
cin>>w[i][j];
}
cin>>s[i];
}
cin>>n;
for(lint i = 1;i <= n;i++){
cin>>a[i];
}
for(lint i = 1;i <= k;i++){
bool flag = 0;
for(lint j = 2;j <= p[i];j++){
if(a[w[i][j]] != a[w[i][1]]){
flag = 1;
break;
}
}
if(!flag){
cnt++;
b[cnt].t = a[w[i][1]];
b[cnt].s = s[i];
}
}
sort(b + 1,b + cnt + 1,cmp);
lint tot = 0;
for(lint i = 1;i <= n;i++){
if(b[i].t != b[i - 1].t){
if(tot > maxn){
maxn = tot;
maxi = b[i - 1].t;
}
tot = 0;
}
tot += b[i].s;
}
if(tot > maxn){
maxn = tot;
maxi = b[cnt].t;
}
cout<<maxn<<endl<<maxi<<endl;
return 0;
}