#include<stdio.h>
#include<string.h>
int n,m,k;
int i,j;
int rec[100][101];
int ck[100];
typedef struct{
	char name[101];
	int price;
}item;
item it[100];
int min(int a,int b){return a<b?a:b;}
int main(){
	while(1){
		scanf("%d",&n);
		if(n==0)return 0;
		for(i=0;i<n;i++)scanf("%s %d",it[i].name,&it[i].price);
		scanf("%d",&m);
		for(i=0;i<m;i++)ck[i]=0;
		for(i=0;i<m;i++){
			char s[101];
			scanf("%s",s);
			for(j=0;j<n;j++)if(strcmp(s,it[j].name)==0){
				rec[i][ck[i]++]=j;
				break;
			}
			scanf("%d",&k);
			for(j=0;j<k;j++){
				scanf("%s",s);
				for(int l=0;l<n;l++)if(strcmp(s,it[l].name)==0){
					rec[i][ck[i]++]=l;
				}
			}
		}
		int res;
		for(i=0;i<n;i++){
			for(j=0;j<m;j++){
				res=0;
				for(int l=1;l<ck[j];l++)res+=it[rec[j][l]].price;
				it[rec[j][0]].price=min(it[rec[j][0]].price,res);
			}
		}
		char ans[101];
		scanf("%s",ans);
		for(i=0;i<n;i++)if(strcmp(ans,it[i].name)==0)break;
		printf("%d\n",it[i].price);
	}
}