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

using namespace std;

int numsm1[125];
int numsn1[125];
// unordered_map<char >

inline int calculate(int m1,int n1,int k1)
{
	return m1*k1*n1;    
}
    

int main()
{
    string str1;
    int n1;
    while (cin>>n1)
    {
        int ans1=0;
        vector<char> sm1;
        for(int i=0;i<n1;++i)
        {
            cin>>numsm1[i]>>numsn1[i];
        }
        cin>>str1;
        for(int i=0;i<str1.size(); )
        {
            if(str1[i]=='(')
            {
                sm1.push_back('(');
                ++i;
            }
            else if(str1[i]==')')
            {
                if(sm1[sm1.size()-2]=='(')
                {
                    char c=sm1[sm1.size()-1];
                    sm1.pop_back();
                    sm1.pop_back();
                    sm1.push_back(c);
                    ++i;
                    
                }
                else
                {
                    int m2,n2,k2;
                    int index1=sm1[sm1.size()-1]-'A';sm1.pop_back();
                    int index2=sm1[sm1.size()-1]-'A';sm1.pop_back();
                    m2=numsm1[index2];
                    n2=numsn1[index2];
                    k2=numsn1[index1];
                    ans1+=calculate(m2,n2,k2);
                    numsm1[n1]=m2;
                    numsn1[n1]=k2;
                    sm1.push_back(n1+'A');
                    ++n1;
                }

            }
            else
            {
                sm1.push_back(str1[i]);
                ++i;
            }
        }
        cout<<ans1<<endl;
    }
    
    return 0;
}