#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
int n;
main()
{
	while(cin>>n,n)
	{
		map<string,int>M;
		map<string,vector<string> >A;
		map<string,int>cnt;
		for(int i=0;i<n;i++)
		{
			string s;int a;cin>>s>>a;M[s]=a;
			cnt[s]=0;
		}
		int m;cin>>m;
		for(int i=0;i<m;i++)
		{
			string s;cin>>s;
			int k;cin>>k;
			for(;k--;)
			{
				string t;cin>>t;
				A[s].push_back(t);
				cnt[s]++;
			}
		}
		vector<pair<int,string> >a;
		for(pair<string,int>it:M)
		{
			a.push_back(make_pair(it.second,it.first));
		}
		sort(a.begin(),a.end());
		for(int i=0;i<n;i++)
		{
			string s=a[i].second;
			if(cnt[s]==0)continue;
			int now=0;
			for(int j=0;j<cnt[s];j++)now+=M[A[s][j]];
			M[s]=min(M[s],now);
		}
		string s;cin>>s;
		cout<<M[s]<<endl;
	}
}

