#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;
}