#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;

vector<string> recipe[101];
map<string,int> items;
map<string,int> links;

int check(string name){
  if(recipe[links[name]].size()<1)
    return items[name];
  int sum=0;
  for(int i=0;i<recipe[links[name]].size();i++)
    {
      sum+=check(recipe[links[name]][i]);
    }
  return min(items[name],sum);
}

int main()
{
  int n;
  for(;cin>>n,n;)
    {
      for(int i=0;i<101;i++)
	recipe[i].clear();	      
      items.clear();
      links.clear();
      
      for(int i=0;i<n;i++)
	{
	  int a;
	  string b;
	  cin>>b>>a;
	  items.insert(make_pair(b,a));
	  links.insert(make_pair(b,i));
	}
      int m;
      
      cin>>m;
      for(int i=0;i<m;i++)
	{
	  string o;
	  int k;
	  cin>>o>>k;
	  for(int j=0;j<k;j++)
	    {
	      string tmp;
	      cin>>tmp;
	      recipe[links[o]].push_back(tmp);
	    }
	}
      string iname;
      cin>>iname;
      cout<<check(iname)<<endl;
      
    }
}