#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct __Stack_ts {
    int row;
    int col;
    struct __Stack_ts* next;
} Stack_ts;

Stack_ts* Stack_new(int row, int col)
{
    Stack_ts* result = NULL;

    result = (Stack_ts*)malloc(sizeof(Stack_ts));
    result->row = row;
    result->col = col;
    result->next = NULL;

    return result;
}

Stack_ts* Stack_push(Stack_ts* head, int row, int col)
{
    Stack_ts* result = NULL;
    Stack_ts* node = NULL;

    node = Stack_new(row, col);
    node->next = head;
    head = node;

    result = head;
    return result;
}

Stack_ts* Stack_pop(Stack_ts* head, int* row, int* col)
{
    Stack_ts* result = NULL;
    Stack_ts* node = NULL;

    if (head != NULL) {
        node = head;
        *row = node->row;
        *col = node->col;
        head = head->next;
        free(node);
    } else {}    

    result = head;
    return result;
}


int main() {
    int a[15][2] = {};
    int a1[2],a2[2];
    int n,i,length;
    char s[15+28+1] = {};
    int sum = 0;
    Stack_ts* num = NULL;

    scanf("%d", &n);
    for (i=0; i<n; ++i) {
        scanf("%d %d", &a[i][0], &a[i][1]);
    }
    scanf("%s", s);
    length = strlen(s);
    for (i=0; i<length; ++i) {
        if (s[i] == ')') {
            num = Stack_pop(num, &a2[0], &a2[1]);
            num = Stack_pop(num, &a1[0], &a1[1]);
            sum += a1[0]*a2[1]*a1[1];
            num = Stack_push(num, a1[0], a2[1]);
        } else if (s[i]>='A' && s[i]<='Z') {
            num = Stack_push(num, a[s[i]-'A'][0], a[s[i]-'A'][1]);
        } else {}
    }
    printf("%d", sum);

    return 0;
}