#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<stack>

using namespace std;

int n;
int m;
int ini;
string ins;
map<string,long long> item;
vector<string> change[200];

int minmoney(string ss){
	int mm=item[ss];
	for(int i=0;i<m;i++){
		if(change[i][0]==ss){
			int cm=0;
			for(int j=1;j<change[i].size();j++){
				cm+=minmoney(change[i][j]);
			}
			if(cm<mm) item[ss]=cm;
		}
	}
	return item[ss];
}

int main(){

	
	

	while(1){

		cin>>n;
		if(n==0) break;

		if(!item.empty()) item.clear();
		for(int i=0;i<200;i++){
			if(!change[i].empty()) change[i].clear();
		}

		for(int i=0;i<n;i++){
			cin>>ins>>ini;
			item[ins]=ini;
		}

		cin>>m;

		for(int i=0;i<m;i++){
			cin>>ins;
			change[i].push_back(ins);
			cin>>ini;
			for(int j=0;j<ini;j++){
				cin>>ins;
				change[i].push_back(ins);
			}
		}

		cin>>ins;

		cout<<minmoney(ins)<<endl;

	}
}