#include<bits/stdc++.h>
using namespace std;
int main() {
int n; //矩阵的个数n
while(cin>>n) {
vector<pair<int, int>> matrix; //存放每个矩阵的行数和列数
for(int i=0;i<n;i++) { //依次输入n个矩阵的行数和列数,并保存在容器matrix中
int row,arrange;
cin>>row>>arrange;
matrix.push_back(make_pair(row, arrange));
}
string rule; //存放计算的法则
cin>>rule; //输入法则rule
stack<char> sign; //符号栈
stack<pair<int, int>> Stack_matrix; //矩阵栈
int count=0; //乘法次数
for(int i=0;i<rule.length();i++) { //按照计算法则求矩阵的乘法次数
if(rule[i]=='(') { //'('为待匹配的符号,压入符号栈中
sign.push(rule[i]);
}else if(rule[i]>='A' && rule[i]<='Z') { //如果为字母,将该字母对应的矩阵添加到矩阵栈中
Stack_matrix.push(matrix[rule[i]-'A']);
}else if(rule[i]==')') { //如果当前符号为')',将符号栈中的'('出栈
sign.pop();
pair<int, int> matrix2 = Stack_matrix.top(); //依次弹出矩阵栈的两个栈顶矩阵
Stack_matrix.pop();
pair<int, int> matrix1 = Stack_matrix.top();
Stack_matrix.pop();
count += matrix1.first*matrix1.second*matrix2.second; //累加乘法次数
Stack_matrix.push(make_pair(matrix1.first, matrix2.second)); //将矩阵相乘的结果重新压入栈中
}
}
cout<<count<<endl; //输出矩阵相乘的乘法总次数
}
return 0;
}