#include<bits/stdc++.h>
using namespace std;
int main()
{
	while(true){
		int N;
		scanf("%d",&N);
		if(N==0)return 0;
		int price[100];
		map<string,int>Map;
		for(int i=0;i<N;i++){
			string S;
			cin >> S;
			Map[S]=i;
			int P;
			scanf("%d",&P);
			price[i]=P;
		}
		int M;
		scanf("%d",&M);
		int gou[100][100];
		int K[100];
		for(int i=0;i<N;i++){
			K[i]=-1;
		}
		for(int i=0;i<M;i++){
			string S;
			cin >> S;
			scanf("%d",&K[Map[S]]);
			for(int j=0;j<K[Map[S]];j++){
				string S1;
				cin >> S1;
				gou[Map[S]][j]=Map[S1];
			}
		}
		while(true){
			bool F=false;
			for(int i=0;i<N;i++){
				if(K[i]==-1)continue;
				int sum=0;
				for(int j=0;j<K[i];j++){
					sum+=price[gou[i][j]];
				}
				if(sum<price[i]){
					F=true;
					price[i]=sum;
				}
			}
			if(!F)break;
		}
		string S;
		cin >> S;
		printf("%d\n",price[Map[S]]);
	}
	return 0;
}