import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            int n = in.nextInt();
            int[][] matrix = new int[n][2];
            for (int i = 0; i < n; i++) {
                matrix[i][0] = in.nextInt();
                matrix[i][1] = in.nextInt();
                in.nextLine();
            }
            char[] ex = in.nextLine().toCharArray();
            Deque<Integer> deque = new ArrayDeque<>();
            int index = 0;
            int sum = 0;
            for (int i = 0; i < ex.length; i++) {
                if (ex[i] == '(') { // 遇到左括号,跳过
                    continue;
                }
                if (Character.isLetter(ex[i])) { // 行列数入栈
                    deque.push(matrix[index][0]);
                    deque.push(matrix[index][1]);
                    index++;
                    if (i == ex.length - 1) { // 最后一个矩阵,结算
                        sum += compute(deque);
                        break;
                    }
                    if (i > 0 && Character.isLetter(ex[i - 1]) && Character.isLetter(ex[i + 1])) {
                        // 上一个符号与下一个符号都是矩阵符号,结算一次
                        sum += compute(deque);
                    }
                    continue;
                }
                if (ex[i] == ')' && deque.size() >= 4) {
                    sum += compute(deque); // 遇到右括号,若栈内有矩阵则结算一次
                }
            }
            while (deque.size() >= 4) { // 结算到栈中的矩阵小于两组为止
                sum += compute(deque);
            }
            System.out.println(sum);
        }
    }

    private static int compute(Deque<Integer> deque) {
        int y1 = deque.pop();
        int y0 = deque.pop();
        int x1 = deque.pop();
        int x0 = deque.pop();
        // 将计算后的行列数入栈
        deque.push(x0);
        deque.push(y1);
        return x0 * x1 * y1;
    }
}