import java.io.*;
import java.util.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
static matrix[] m;
public static void main(String[] args) throws IOException {
int n,i,x,y,number;
String[] S;
String str;
n = Integer.parseInt(br.readLine());
m = new matrix[n];
for(i = 0 ; i < n ; i++){
S = br.readLine().split(" ");
x = Integer.parseInt(S[1]);
y = Integer.parseInt(S[2]);
matrix mar = new matrix(x , y);
m[i] = mar;
}
while(!(str = br.readLine()).isEmpty()){
number = Plus(str);
if(number == -1){
out.write("error\n");
}
else{
out.write(number + "\n");
}
}
out.flush();
out.close();
br.close();
}
private static int Plus(String str){
if(str.length() == 1){
return 0;
}
int sum = 0;
Deque<matrix> deque = new LinkedList<>();
Deque<Character> parenthesis = new LinkedList<>();
for(int i = 0 ; i < str.length() ; i++){
char ch = str.charAt(i);
if(ch == '('){
parenthesis.offer(ch);
}
else if(ch >= 'A' && ch <= 'Z'){
deque.offer(m[ch-'A']);
}
else if(ch == ')'){
parenthesis.pollLast();
matrix t1 = deque.pollLast();
matrix t2 = deque.pollLast();
if(t2.n != t1.m){
return -1;
}
sum += t2.m * t2.n * t1.n;
matrix t3 = new matrix(t2.m , t1.n);
deque.offer(t3);
}
}
return sum;
}
}
class matrix{
int m;
int n;
public matrix(int m, int n) {
this.m = m;
this.n = n;
}
}
第一次知道了原来的Java的无限输入是这样的啊