#include <iostream>
#include <vector>
#include <stack>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<vector<int>> attri(n, vector<int>(2));
    for (int i = 0; i < n; ++i) {
        cin >> attri[i][0] >> attri[i][1];
    }
    string str;
    cin >> str;
    stack<int> matrix;
    int left = 0, right = 0, sum = 0;
    vector<int> vec;
    for (int i = 0; i < str.length(); ++i) {
        if (str[i] != ')') {
            if (str[i] == '(')
                left++;
            else
                vec.push_back(str[i]-'A');
        } else {
            if (++right > left)
                break; //测试用例中有‘)’个数多于‘(’个数的情况,故加入该判断语句。
            int y = vec.back();
            vec.pop_back();
            int x = vec.back();
            vec.pop_back();
            sum += attri[x][0] * attri[x][1] * attri[y][1];
            attri[x][1] = attri[y][1];
            vec.push_back(x);
        }
    }
    cout << sum << endl;

    return 0;
}
// 64 位输出请用 printf("%lld")